From dab8d58edb82f6a58a9e79d777b047bcb78910b7 Mon Sep 17 00:00:00 2001 From: Olusesan Ameye Date: Sat, 11 Jan 2020 09:50:39 -0500 Subject: [PATCH] first commit --- coregrade/build/configure | 74 + coregrade/build/interswitch | 37 + .../email/ACCOUNT/member_pending.mailfile | 48 + .../email/ACCOUNT/member_welcome.mailfile | 46 + coregrade/email/GROUP/group_added.mailfile | 46 + .../email/GROUP/group_member_added.mailfile | 46 + coregrade/email/alert_accountcreated.mailfile | 91 + .../email/alert_balance_updated.mailfile | 53 + coregrade/email/balance_updated.mailfile | 49 + coregrade/email/bonus_balance.mailfile | 41 + coregrade/email/complete_losspass.mailfile | 43 + coregrade/email/promo/promotion1.mailfile | 41 + coregrade/email/promo/promotion2.mailfile | 41 + coregrade/email/start_losspass.mailfile | 53 + coregrade/email/test.mailfile | 136 + .../email/topup_bonus_completed-bak.mailfile | 43 + .../email/topup_bonus_completed.mailfile | 49 + coregrade/email/topup_completed.mailfile | 51 + coregrade/email/topup_payment.mailfile | 54 + coregrade/email/topup_payment_alert.mailfile | 60 + coregrade/email/virtualtopup.mailfile | 136 + coregrade/email/welcome.mailfile | 48 + coregrade/etc/coregrade_api.conf | 81 + coregrade/src/.deps | 0 coregrade/src/Makefile | 246 + coregrade/src/Makefile.fragments | 0 coregrade/src/Makefile.global | 123 + coregrade/src/Makefile.objects | 78 + coregrade/src/acinclude.m4 | 2973 ++ coregrade/src/aclocal.m4 | 11587 +++++++ coregrade/src/build/libtool.m4 | 8614 +++++ coregrade/src/build/mkdep.awk | 75 + coregrade/src/build/scan_makefile_in.awk | 32 + coregrade/src/build/shtool | 1807 + coregrade/src/confdefs.h | 20 + coregrade/src/config.guess | 1558 + coregrade/src/config.h | 63 + coregrade/src/config.h.in | 62 + coregrade/src/config.log | 761 + coregrade/src/config.m4 | 31 + coregrade/src/config.nice | 7 + coregrade/src/config.status | 1855 ++ coregrade/src/config.sub | 1791 + coregrade/src/configure | 17887 ++++++++++ coregrade/src/configure.in | 202 + coregrade/src/core/XmlElements.cc | 283 + coregrade/src/core/XmlParser.cc | 971 + coregrade/src/core/cfg.cc | 58 + coregrade/src/core/cgi.cc | 1946 ++ coregrade/src/core/clog.cc | 42 + coregrade/src/core/coregrade.cc | 75 + coregrade/src/core/coregrade_api.cc | 266 + coregrade/src/core/cvariables.cc | 415 + coregrade/src/core/exceptions.cc | 16 + coregrade/src/core/hmac_sha2.cc | 544 + coregrade/src/core/input.cc | 71 + coregrade/src/core/list.cc | 82 + coregrade/src/core/pgsql.cc | 216 + coregrade/src/core/pgsql_wrapper.cc | 352 + coregrade/src/core/safestring.cc | 179 + coregrade/src/core/sha2.cc | 950 + coregrade/src/core/sha512.cc | 262 + coregrade/src/core/smtp.cc | 165 + coregrade/src/core/timer.cc | 49 + coregrade/src/core/util.cc | 135 + coregrade/src/core/vars.cc | 372 + coregrade/src/include/XmlElements.h | 235 + coregrade/src/include/XmlFwdDecls.h | 33 + coregrade/src/include/XmlParser.h | 282 + coregrade/src/include/account.h | 23 + coregrade/src/include/cfg.h | 11 + coregrade/src/include/cgi.h | 280 + coregrade/src/include/clog.h | 191 + coregrade/src/include/config.h | 59 + coregrade/src/include/coregrade.h | 20 + coregrade/src/include/coregrade_api.h | 103 + coregrade/src/include/coregrade_api_main.h | 8 + coregrade/src/include/cvariables.h | 61 + coregrade/src/include/email.h | 35 + coregrade/src/include/envH.h | 378 + coregrade/src/include/envStub.h | 163 + coregrade/src/include/exceptions.h | 20 + coregrade/src/include/groups.h | 13 + coregrade/src/include/hmac_sha2.h | 140 + coregrade/src/include/input.h | 15 + coregrade/src/include/interswitch.h | 37 + coregrade/src/include/interswitch.nsmap | 12 + ...ttpBinding_USCOREQuickTellerServiceProxy.h | 171 + coregrade/src/include/interswitchH.h | 5242 +++ coregrade/src/include/interswitchStub.h | 2730 ++ coregrade/src/include/interswitch_sendmoney.h | 28 + coregrade/src/include/list.h | 21 + coregrade/src/include/paylid.h | 13 + coregrade/src/include/paylid.nsmap | 11 + coregrade/src/include/paylidH.h | 730 + coregrade/src/include/paylidStub.h | 334 + .../include/paylidpaylidwsdlBindingProxy.h | 78 + coregrade/src/include/pgsql.h | 28 + coregrade/src/include/pgsql_wrapper.h | 41 + coregrade/src/include/php_coregrade_api.h | 18 + coregrade/src/include/php_coregrade_api_ns.h | 1 + coregrade/src/include/php_coregrade_config.h | 1 + coregrade/src/include/php_coregrade_log.h | 1 + coregrade/src/include/php_filelog_max_level.h | 1 + coregrade/src/include/php_tmpl_prefix.h | 1 + coregrade/src/include/safestring.h | 49 + coregrade/src/include/sha2.h | 108 + coregrade/src/include/sha512.h | 10 + coregrade/src/include/smtp.h | 10 + coregrade/src/include/storeface.h | 15 + coregrade/src/include/timer.h | 20 + coregrade/src/include/topups.h | 15 + coregrade/src/include/util.h | 10 + coregrade/src/include/vars.h | 125 + coregrade/src/install-sh | 0 .../.deps/libconfig___la-grammar.Plo | 85 + .../.deps/libconfig___la-libconfig.Plo | 116 + .../.deps/libconfig___la-libconfigcpp.Plo | 332 + .../.deps/libconfig___la-scanner.Plo | 102 + .../.deps/libconfig_la-grammar.Plo | 85 + .../.deps/libconfig_la-libconfig.Plo | 116 + .../.deps/libconfig_la-scanner.Plo | 102 + coregrade/src/libconfig-1.3.1/AUTHORS | 5 + coregrade/src/libconfig-1.3.1/COPYING.LIB | 510 + coregrade/src/libconfig-1.3.1/ChangeLog | 339 + coregrade/src/libconfig-1.3.1/INSTALL | 231 + coregrade/src/libconfig-1.3.1/Makefile.am | 115 + coregrade/src/libconfig-1.3.1/Makefile.in | 1003 + coregrade/src/libconfig-1.3.1/NEWS | 0 coregrade/src/libconfig-1.3.1/README | 44 + coregrade/src/libconfig-1.3.1/TODO | 16 + coregrade/src/libconfig-1.3.1/ac_config.h | 81 + coregrade/src/libconfig-1.3.1/ac_config.h.in | 80 + coregrade/src/libconfig-1.3.1/aclocal.m4 | 7537 +++++ .../libconfig-1.3.1/autom4te.cache/output.0 | 23163 +++++++++++++ .../libconfig-1.3.1/autom4te.cache/requests | 67 + .../libconfig-1.3.1/autom4te.cache/traces.0 | 731 + coregrade/src/libconfig-1.3.1/compile | 140 + coregrade/src/libconfig-1.3.1/config.guess | 1516 + coregrade/src/libconfig-1.3.1/config.sub | 1626 + coregrade/src/libconfig-1.3.1/configure | 23192 +++++++++++++ coregrade/src/libconfig-1.3.1/configure.ac | 111 + .../src/libconfig-1.3.1/debian/changelog | 17 + coregrade/src/libconfig-1.3.1/debian/compat | 1 + coregrade/src/libconfig-1.3.1/debian/control | 38 + .../src/libconfig-1.3.1/debian/copyright | 31 + .../debian/libconfigduo2-dev.docs | 4 + .../debian/libconfigduo2-dev.install | 6 + .../debian/libconfigduo2.install | 1 + .../debian/libconfigduo2.postinst | 4 + coregrade/src/libconfig-1.3.1/debian/rules | 109 + coregrade/src/libconfig-1.3.1/debian/shlibs | 2 + coregrade/src/libconfig-1.3.1/depcomp | 522 + coregrade/src/libconfig-1.3.1/doc/LGPL.texi | 590 + coregrade/src/libconfig-1.3.1/doc/Makefile.am | 7 + coregrade/src/libconfig-1.3.1/doc/Makefile.in | 587 + .../src/libconfig-1.3.1/doc/libconfig.info | 2147 ++ .../src/libconfig-1.3.1/doc/libconfig.texi | 1578 + coregrade/src/libconfig-1.3.1/doc/texinfo.tex | 7086 ++++ coregrade/src/libconfig-1.3.1/grammar.c | 1928 ++ coregrade/src/libconfig-1.3.1/grammar.h | 105 + coregrade/src/libconfig-1.3.1/grammar.y | 372 + coregrade/src/libconfig-1.3.1/install-sh | 316 + coregrade/src/libconfig-1.3.1/libconfig++.pc | 14 + .../src/libconfig-1.3.1/libconfig++.pc.in | 14 + .../src/libconfig-1.3.1/libconfig++.vcproj | 229 + .../libconfig-1.3.1/libconfig++_stub.vcproj | 184 + coregrade/src/libconfig-1.3.1/libconfig.c | 1373 + coregrade/src/libconfig-1.3.1/libconfig.h | 253 + coregrade/src/libconfig-1.3.1/libconfig.h++ | 428 + coregrade/src/libconfig-1.3.1/libconfig.hh | 23 + coregrade/src/libconfig-1.3.1/libconfig.pc | 14 + coregrade/src/libconfig-1.3.1/libconfig.pc.in | 14 + coregrade/src/libconfig-1.3.1/libconfig.sln | 38 + coregrade/src/libconfig-1.3.1/libconfig.spec | 84 + .../src/libconfig-1.3.1/libconfig.spec.in | 84 + .../src/libconfig-1.3.1/libconfig.vcproj | 212 + .../src/libconfig-1.3.1/libconfig_stub.vcproj | 184 + .../src/libconfig-1.3.1/libconfigcpp.c++ | 1112 + coregrade/src/libconfig-1.3.1/libconfigcpp.cc | 23 + coregrade/src/libconfig-1.3.1/ltmain.sh | 6930 ++++ coregrade/src/libconfig-1.3.1/missing | 360 + coregrade/src/libconfig-1.3.1/mkinstalldirs | 150 + coregrade/src/libconfig-1.3.1/private.h | 37 + .../src/libconfig-1.3.1/samples/Makefile.am | 8 + .../src/libconfig-1.3.1/samples/Makefile.in | 496 + .../samples/c++/.deps/sample1.Po | 296 + .../samples/c++/.deps/sample2.Po | 296 + .../samples/c++/.deps/sample3.Po | 296 + .../samples/c++/.deps/stubcpp.Po | 318 + .../libconfig-1.3.1/samples/c++/Makefile.am | 14 + .../libconfig-1.3.1/samples/c++/Makefile.in | 478 + .../libconfig-1.3.1/samples/c++/sample1.cpp | 47 + .../libconfig-1.3.1/samples/c++/sample2.cpp | 43 + .../libconfig-1.3.1/samples/c++/sample3.cpp | 54 + .../libconfig-1.3.1/samples/c++/stubcpp.cpp | 161 + .../src/libconfig-1.3.1/samples/c++/test.cfg | 82 + .../samples/c/.deps/sample1.Po | 41 + .../samples/c/.deps/sample2.Po | 41 + .../samples/c/.deps/sample3.Po | 41 + .../libconfig-1.3.1/samples/c/.deps/stub.Po | 77 + .../src/libconfig-1.3.1/samples/c/Makefile.am | 15 + .../src/libconfig-1.3.1/samples/c/Makefile.in | 478 + .../src/libconfig-1.3.1/samples/c/sample1.c | 55 + .../src/libconfig-1.3.1/samples/c/sample2.c | 52 + .../src/libconfig-1.3.1/samples/c/sample3.c | 104 + .../src/libconfig-1.3.1/samples/c/stub.c | 86 + coregrade/src/libconfig-1.3.1/scanner.c | 2366 ++ coregrade/src/libconfig-1.3.1/scanner.h | 326 + coregrade/src/libconfig-1.3.1/scanner.l | 222 + coregrade/src/libconfig-1.3.1/stamp-h1 | 1 + coregrade/src/libconfig-1.3.1/test.cfg | 82 + coregrade/src/libconfig-1.3.1/wincompat.h | 85 + coregrade/src/libconfig-1.3.1/ylwrap | 222 + coregrade/src/libtool | 10240 ++++++ coregrade/src/ltmain.sh | 9655 ++++++ coregrade/src/mailsend/Makefile | 51 + coregrade/src/mailsend/libs/libmsock/Makefile | 43 + coregrade/src/mailsend/libs/libmsock/msock.c | 337 + coregrade/src/mailsend/libs/libmsock/msock.h | 79 + .../src/mailsend/libs/libmutils/Makefile | 34 + coregrade/src/mailsend/libs/libmutils/README | 9 + .../src/mailsend/libs/libmutils/md5test.c | 20 + coregrade/src/mailsend/libs/libmutils/mime.c | 120 + .../src/mailsend/libs/libmutils/mutils.c | 1345 + .../src/mailsend/libs/libmutils/mutils.h | 148 + .../src/mailsend/libs/libmutils/string.c | 510 + coregrade/src/mailsend/libs/libmutils/test.c | 17 + .../src/mailsend/libs/libmutils/testb64.c | 40 + coregrade/src/mailsend/libs/libsll/Makefile | 43 + coregrade/src/mailsend/libs/libsll/sll.c | 419 + coregrade/src/mailsend/libs/libsll/sll.h | 100 + coregrade/src/mailsend/mailsend | Bin 0 -> 185752 bytes coregrade/src/mailsend/mailsend.h | 228 + coregrade/src/mailsend/main.c | 948 + coregrade/src/mailsend/setget.c | 465 + coregrade/src/mailsend/smtp.c | 1282 + coregrade/src/mailsend/utils.c | 646 + coregrade/src/missing | 0 coregrade/src/mkinstalldirs | 0 coregrade/src/run-tests.php | 2798 ++ coregrade/src/shared_tool/account.cc | 752 + .../src/shared_tool/coregrade_api_main.cc | 925 + coregrade/src/shared_tool/email.cc | 666 + coregrade/src/shared_tool/envC.cc | 1388 + coregrade/src/shared_tool/groups.cc | 130 + coregrade/src/shared_tool/interswitch.cc | 1555 + ...tpBinding_USCOREQuickTellerServiceProxy.cc | 2116 ++ coregrade/src/shared_tool/interswitchC.cc | 27239 ++++++++++++++++ .../src/shared_tool/interswitch_sendmoney.cc | 593 + coregrade/src/shared_tool/namespaces.cc | 4 + coregrade/src/shared_tool/paylid.cc | 550 + .../src/shared_tool/paylid/PaylidService.h | 875 + coregrade/src/shared_tool/paylid/paylid.nsmap | 11 + coregrade/src/shared_tool/paylid/paylidC.cpp | 3806 +++ coregrade/src/shared_tool/paylid/paylidH.h | 730 + coregrade/src/shared_tool/paylid/paylidStub.h | 334 + .../paylid/paylidpaylidwsdlBindingProxy.cpp | 534 + .../paylid/paylidpaylidwsdlBindingProxy.h | 78 + ...lidwsdlBinding.checkTransferStatus.req.xml | 15 + ...lidwsdlBinding.checkTransferStatus.res.xml | 15 + .../paylidwsdlBinding.currentXrate.req.xml | 15 + .../paylidwsdlBinding.currentXrate.res.xml | 15 + ...ylidwsdlBinding.directAirTimeTopUp.req.xml | 15 + ...ylidwsdlBinding.directAirTimeTopUp.res.xml | 15 + .../paylidwsdlBinding.getAccount.req.xml | 15 + .../paylidwsdlBinding.getAccount.res.xml | 15 + ...aylidwsdlBinding.getAccountBalance.req.xml | 14 + ...aylidwsdlBinding.getAccountBalance.res.xml | 15 + ...aylidwsdlBinding.getSupportedBanks.req.xml | 15 + ...aylidwsdlBinding.getSupportedBanks.res.xml | 15 + .../paylidwsdlBinding.getTrxStatus.req.xml | 15 + .../paylidwsdlBinding.getTrxStatus.res.xml | 15 + .../paylidwsdlBinding.transferFund.req.xml | 15 + .../paylidwsdlBinding.transferFund.res.xml | 15 + coregrade/src/shared_tool/paylidC.cc | 3806 +++ .../paylidpaylidwsdlBindingProxy.cc | 534 + .../src/shared_tool/soap/QuickTellerService.h | 1 + .../src/shared_tool/soap/interswitch.nsmap | 12 + ...pBinding_USCOREQuickTellerServiceProxy.cpp | 2116 ++ ...ttpBinding_USCOREQuickTellerServiceProxy.h | 171 + .../src/shared_tool/soap/interswitchC.cpp | 27239 ++++++++++++++++ coregrade/src/shared_tool/soap/interswitchH.h | 5242 +++ .../src/shared_tool/soap/interswitchStub.h | 2730 ++ coregrade/src/shared_tool/soapTest/build.sh | 26 + .../src/shared_tool/soapTest/namespaces.cc | 4 + coregrade/src/shared_tool/storeface.cc | 124 + coregrade/src/shared_tool/topups.cc | 278 + www/.editorconfig | 15 + www/.gitignore | 31 + www/application/.htaccess | 6 + www/application/cache/index.html | 11 + www/application/config/autoload.php | 135 + www/application/config/config.php | 523 + www/application/config/constants.php | 85 + www/application/config/database.php | 96 + www/application/config/doctypes.php | 24 + www/application/config/foreign_chars.php | 103 + www/application/config/hooks.php | 13 + www/application/config/index.html | 11 + www/application/config/memcached.php | 19 + www/application/config/migration.php | 84 + www/application/config/mimes.php | 183 + www/application/config/profiler.php | 14 + www/application/config/routes.php | 54 + www/application/config/smileys.php | 64 + www/application/config/user_agents.php | 214 + www/application/controllers/Welcome.php | 25 + www/application/controllers/index.html | 11 + www/application/core/index.html | 11 + www/application/helpers/index.html | 11 + www/application/hooks/index.html | 11 + www/application/index.html | 11 + www/application/language/english/index.html | 11 + www/application/language/index.html | 11 + www/application/libraries/index.html | 11 + www/application/logs/index.html | 11 + www/application/models/index.html | 11 + www/application/third_party/index.html | 11 + .../views/errors/cli/error_404.php | 8 + www/application/views/errors/cli/error_db.php | 8 + .../views/errors/cli/error_exception.php | 21 + .../views/errors/cli/error_general.php | 8 + .../views/errors/cli/error_php.php | 21 + www/application/views/errors/cli/index.html | 11 + .../views/errors/html/error_404.php | 64 + .../views/errors/html/error_db.php | 64 + .../views/errors/html/error_exception.php | 32 + .../views/errors/html/error_general.php | 64 + .../views/errors/html/error_php.php | 33 + www/application/views/errors/html/index.html | 11 + www/application/views/errors/index.html | 11 + www/application/views/home/home.php | 387 + www/application/views/index.html | 11 + www/application/views/welcome_message.php | 89 + www/assets/css/animate.min.css | 6 + www/assets/css/bootstrap.min.css | 6 + www/assets/css/default.css | 259 + www/assets/css/font-awesome.min.css | 4 + www/assets/css/owl.carousel.min.css | 6 + www/assets/css/owl.theme.min.css | 5 + www/assets/css/responsive-blue.css | 256 + www/assets/css/responsive-dark.css | 265 + www/assets/css/responsive.css | 276 + www/assets/css/style.blue.css | 700 + www/assets/css/style.css | 686 + www/assets/css/style.dark.css | 736 + www/assets/css/typography.css | 261 + www/assets/fonts/FontAwesome.otf | Bin 0 -> 106260 bytes www/assets/fonts/fontawesome-webfont.eot | Bin 0 -> 68875 bytes www/assets/fonts/fontawesome-webfont.svg | 640 + www/assets/fonts/fontawesome-webfont.ttf | Bin 0 -> 138204 bytes www/assets/fonts/fontawesome-webfont.woff | Bin 0 -> 81284 bytes www/assets/fonts/fontawesome-webfont.woff2 | Bin 0 -> 64464 bytes .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes .../fonts/glyphicons-halflings-regular.svg | 288 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes www/assets/img/amazon-store.png | Bin 0 -> 4229 bytes www/assets/img/app-icon.png | Bin 0 -> 1699 bytes www/assets/img/app-store.png | Bin 0 -> 3511 bytes www/assets/img/ball.png | Bin 0 -> 14589 bytes www/assets/img/bg.jpg | Bin 0 -> 67590 bytes www/assets/img/coffee.png | Bin 0 -> 143988 bytes www/assets/img/dark-bg.jpg | Bin 0 -> 36655 bytes www/assets/img/dark-hero-bg.jpg | Bin 0 -> 118773 bytes www/assets/img/dark-mobile-1.png | Bin 0 -> 65854 bytes www/assets/img/dark-slide-1.png | Bin 0 -> 7231 bytes www/assets/img/dark-slide-2.png | Bin 0 -> 8099 bytes www/assets/img/dark-slide-3.png | Bin 0 -> 8619 bytes www/assets/img/dark-slide-4.png | Bin 0 -> 7596 bytes www/assets/img/dark-slide-5.png | Bin 0 -> 8163 bytes www/assets/img/dark-slide-6.png | Bin 0 -> 8585 bytes www/assets/img/footer-bg.jpg | Bin 0 -> 25229 bytes www/assets/img/glass.png | Bin 0 -> 29165 bytes www/assets/img/google-store.png | Bin 0 -> 4195 bytes www/assets/img/iphone-mockup-1.png | Bin 0 -> 59641 bytes www/assets/img/iphone-mockup-2.png | Bin 0 -> 60167 bytes www/assets/img/iphone-mockup-3.png | Bin 0 -> 60078 bytes www/assets/img/iphone-mockup-4.png | Bin 0 -> 59874 bytes www/assets/img/logo-blue.png | Bin 0 -> 6185 bytes www/assets/img/logo-dark.png | Bin 0 -> 6512 bytes www/assets/img/logo-sm.png | Bin 0 -> 4368 bytes www/assets/img/logo.png | Bin 0 -> 5888 bytes www/assets/img/mobile-mockup.png | Bin 0 -> 5673 bytes www/assets/img/mobile-slide-1.png | Bin 0 -> 7098 bytes www/assets/img/mobile-slide-2.png | Bin 0 -> 7917 bytes www/assets/img/mobile-slide-3.png | Bin 0 -> 8343 bytes www/assets/img/mobile-slide-4.png | Bin 0 -> 7430 bytes www/assets/img/mobile-slide-5.png | Bin 0 -> 7933 bytes www/assets/img/mobile-slide-6.png | Bin 0 -> 8369 bytes www/assets/img/paper.png | Bin 0 -> 186207 bytes www/assets/img/plant.png | Bin 0 -> 71806 bytes www/assets/img/shape.png | Bin 0 -> 21758 bytes www/assets/img/square.png | Bin 0 -> 1096 bytes www/assets/img/subscribe-bg.jpg | Bin 0 -> 28486 bytes www/assets/img/tab-slide-1.png | Bin 0 -> 7194 bytes www/assets/img/tab-slide-2.png | Bin 0 -> 8069 bytes www/assets/img/tab-slide-3.png | Bin 0 -> 8533 bytes www/assets/img/tab-slide-4.png | Bin 0 -> 7562 bytes www/assets/img/tic.png | Bin 0 -> 1111 bytes www/assets/img/windows-store.png | Bin 0 -> 3622 bytes www/assets/js/bootstrap.min.js | 7 + www/assets/js/html5shiv-printshiv.js | 524 + www/assets/js/html5shiv.js | 326 + www/assets/js/jquery-1.11.3.min.js | 5 + www/assets/js/jquery.flipster.min.js | 2 + www/assets/js/owl.carousel.min.js | 7 + www/assets/js/theme.js | 195 + www/assets/js/typed.min.js | 1 + www/assets/js/wow.min.js | 2 + www/composer.json | 23 + www/contributing.md | 95 + www/i.php | 1 + www/index.php | 315 + www/license.txt | 21 + www/readme.rst | 70 + www/system/.htaccess | 6 + www/system/core/Benchmark.php | 133 + www/system/core/CodeIgniter.php | 559 + www/system/core/Common.php | 849 + www/system/core/Config.php | 379 + www/system/core/Controller.php | 96 + www/system/core/Exceptions.php | 274 + www/system/core/Hooks.php | 266 + www/system/core/Input.php | 895 + www/system/core/Lang.php | 203 + www/system/core/Loader.php | 1415 + www/system/core/Log.php | 296 + www/system/core/Model.php | 76 + www/system/core/Output.php | 842 + www/system/core/Router.php | 515 + www/system/core/Security.php | 1080 + www/system/core/URI.php | 643 + www/system/core/Utf8.php | 164 + www/system/core/compat/hash.php | 254 + www/system/core/compat/index.html | 11 + www/system/core/compat/mbstring.php | 149 + www/system/core/compat/password.php | 251 + www/system/core/compat/standard.php | 182 + www/system/core/index.html | 11 + www/system/database/DB.php | 218 + www/system/database/DB_cache.php | 221 + www/system/database/DB_driver.php | 1991 ++ www/system/database/DB_forge.php | 1030 + www/system/database/DB_query_builder.php | 2803 ++ www/system/database/DB_result.php | 665 + www/system/database/DB_utility.php | 424 + .../database/drivers/cubrid/cubrid_driver.php | 405 + .../database/drivers/cubrid/cubrid_forge.php | 230 + .../database/drivers/cubrid/cubrid_result.php | 177 + .../drivers/cubrid/cubrid_utility.php | 79 + www/system/database/drivers/cubrid/index.html | 11 + .../database/drivers/ibase/ibase_driver.php | 413 + .../database/drivers/ibase/ibase_forge.php | 251 + .../database/drivers/ibase/ibase_result.php | 161 + .../database/drivers/ibase/ibase_utility.php | 69 + www/system/database/drivers/ibase/index.html | 11 + www/system/database/drivers/index.html | 11 + www/system/database/drivers/mssql/index.html | 11 + .../database/drivers/mssql/mssql_driver.php | 518 + .../database/drivers/mssql/mssql_forge.php | 151 + .../database/drivers/mssql/mssql_result.php | 198 + .../database/drivers/mssql/mssql_utility.php | 77 + www/system/database/drivers/mysql/index.html | 11 + .../database/drivers/mysql/mysql_driver.php | 494 + .../database/drivers/mysql/mysql_forge.php | 243 + .../database/drivers/mysql/mysql_result.php | 199 + .../database/drivers/mysql/mysql_utility.php | 211 + www/system/database/drivers/mysqli/index.html | 11 + .../database/drivers/mysqli/mysqli_driver.php | 544 + .../database/drivers/mysqli/mysqli_forge.php | 244 + .../database/drivers/mysqli/mysqli_result.php | 232 + .../drivers/mysqli/mysqli_utility.php | 211 + www/system/database/drivers/oci8/index.html | 11 + .../database/drivers/oci8/oci8_driver.php | 688 + .../database/drivers/oci8/oci8_forge.php | 187 + .../database/drivers/oci8/oci8_result.php | 229 + .../database/drivers/oci8/oci8_utility.php | 68 + www/system/database/drivers/odbc/index.html | 11 + .../database/drivers/odbc/odbc_driver.php | 425 + .../database/drivers/odbc/odbc_forge.php | 86 + .../database/drivers/odbc/odbc_result.php | 268 + .../database/drivers/odbc/odbc_utility.php | 63 + www/system/database/drivers/pdo/index.html | 11 + .../database/drivers/pdo/pdo_driver.php | 329 + www/system/database/drivers/pdo/pdo_forge.php | 65 + .../database/drivers/pdo/pdo_result.php | 198 + .../database/drivers/pdo/pdo_utility.php | 63 + .../drivers/pdo/subdrivers/index.html | 11 + .../drivers/pdo/subdrivers/pdo_4d_driver.php | 200 + .../drivers/pdo/subdrivers/pdo_4d_forge.php | 217 + .../pdo/subdrivers/pdo_cubrid_driver.php | 209 + .../pdo/subdrivers/pdo_cubrid_forge.php | 230 + .../pdo/subdrivers/pdo_dblib_driver.php | 353 + .../pdo/subdrivers/pdo_dblib_forge.php | 149 + .../pdo/subdrivers/pdo_firebird_driver.php | 279 + .../pdo/subdrivers/pdo_firebird_forge.php | 237 + .../drivers/pdo/subdrivers/pdo_ibm_driver.php | 244 + .../drivers/pdo/subdrivers/pdo_ibm_forge.php | 154 + .../pdo/subdrivers/pdo_informix_driver.php | 309 + .../pdo/subdrivers/pdo_informix_forge.php | 163 + .../pdo/subdrivers/pdo_mysql_driver.php | 374 + .../pdo/subdrivers/pdo_mysql_forge.php | 256 + .../drivers/pdo/subdrivers/pdo_oci_driver.php | 326 + .../drivers/pdo/subdrivers/pdo_oci_forge.php | 176 + .../pdo/subdrivers/pdo_odbc_driver.php | 229 + .../drivers/pdo/subdrivers/pdo_odbc_forge.php | 70 + .../pdo/subdrivers/pdo_pgsql_driver.php | 384 + .../pdo/subdrivers/pdo_pgsql_forge.php | 210 + .../pdo/subdrivers/pdo_sqlite_driver.php | 219 + .../pdo/subdrivers/pdo_sqlite_forge.php | 238 + .../pdo/subdrivers/pdo_sqlsrv_driver.php | 369 + .../pdo/subdrivers/pdo_sqlsrv_forge.php | 149 + .../database/drivers/postgre/index.html | 11 + .../drivers/postgre/postgre_driver.php | 620 + .../drivers/postgre/postgre_forge.php | 205 + .../drivers/postgre/postgre_result.php | 182 + .../drivers/postgre/postgre_utility.php | 78 + www/system/database/drivers/sqlite/index.html | 11 + .../database/drivers/sqlite/sqlite_driver.php | 330 + .../database/drivers/sqlite/sqlite_forge.php | 205 + .../database/drivers/sqlite/sqlite_result.php | 164 + .../drivers/sqlite/sqlite_utility.php | 61 + .../database/drivers/sqlite3/index.html | 11 + .../drivers/sqlite3/sqlite3_driver.php | 350 + .../drivers/sqlite3/sqlite3_forge.php | 225 + .../drivers/sqlite3/sqlite3_result.php | 194 + .../drivers/sqlite3/sqlite3_utility.php | 61 + www/system/database/drivers/sqlsrv/index.html | 11 + .../database/drivers/sqlsrv/sqlsrv_driver.php | 543 + .../database/drivers/sqlsrv/sqlsrv_forge.php | 149 + .../database/drivers/sqlsrv/sqlsrv_result.php | 193 + .../drivers/sqlsrv/sqlsrv_utility.php | 77 + www/system/database/index.html | 11 + www/system/fonts/index.html | 11 + www/system/fonts/texb.ttf | Bin 0 -> 143830 bytes www/system/helpers/array_helper.php | 115 + www/system/helpers/captcha_helper.php | 341 + www/system/helpers/cookie_helper.php | 113 + www/system/helpers/date_helper.php | 742 + www/system/helpers/directory_helper.php | 101 + www/system/helpers/download_helper.php | 158 + www/system/helpers/email_helper.php | 84 + www/system/helpers/file_helper.php | 453 + www/system/helpers/form_helper.php | 1055 + www/system/helpers/html_helper.php | 410 + www/system/helpers/index.html | 11 + www/system/helpers/inflector_helper.php | 276 + www/system/helpers/language_helper.php | 75 + www/system/helpers/number_helper.php | 94 + www/system/helpers/path_helper.php | 82 + www/system/helpers/security_helper.php | 137 + www/system/helpers/smiley_helper.php | 255 + www/system/helpers/string_helper.php | 304 + www/system/helpers/text_helper.php | 567 + www/system/helpers/typography_helper.php | 104 + www/system/helpers/url_helper.php | 569 + www/system/helpers/xml_helper.php | 90 + www/system/index.html | 11 + www/system/language/english/calendar_lang.php | 84 + www/system/language/english/date_lang.php | 94 + www/system/language/english/db_lang.php | 63 + www/system/language/english/email_lang.php | 58 + .../language/english/form_validation_lang.php | 68 + www/system/language/english/ftp_lang.php | 51 + www/system/language/english/imglib_lang.php | 57 + www/system/language/english/index.html | 11 + .../language/english/migration_lang.php | 47 + www/system/language/english/number_lang.php | 44 + .../language/english/pagination_lang.php | 43 + www/system/language/english/profiler_lang.php | 60 + .../language/english/unit_test_lang.php | 58 + www/system/language/english/upload_lang.php | 55 + www/system/language/index.html | 11 + www/system/libraries/Cache/Cache.php | 255 + .../libraries/Cache/drivers/Cache_apc.php | 217 + .../libraries/Cache/drivers/Cache_dummy.php | 172 + .../libraries/Cache/drivers/Cache_file.php | 286 + .../Cache/drivers/Cache_memcached.php | 313 + .../libraries/Cache/drivers/Cache_redis.php | 328 + .../Cache/drivers/Cache_wincache.php | 217 + www/system/libraries/Cache/drivers/index.html | 11 + www/system/libraries/Cache/index.html | 11 + www/system/libraries/Calendar.php | 546 + www/system/libraries/Cart.php | 567 + www/system/libraries/Driver.php | 342 + www/system/libraries/Email.php | 2470 ++ www/system/libraries/Encrypt.php | 521 + www/system/libraries/Encryption.php | 941 + www/system/libraries/Form_validation.php | 1587 + www/system/libraries/Ftp.php | 667 + www/system/libraries/Image_lib.php | 1839 ++ www/system/libraries/Javascript.php | 856 + www/system/libraries/Javascript/Jquery.php | 1076 + www/system/libraries/Javascript/index.html | 11 + www/system/libraries/Migration.php | 477 + www/system/libraries/Pagination.php | 704 + www/system/libraries/Parser.php | 248 + www/system/libraries/Profiler.php | 574 + www/system/libraries/Session/Session.php | 983 + .../Session/SessionHandlerInterface.php | 59 + .../libraries/Session/Session_driver.php | 191 + .../drivers/Session_database_driver.php | 420 + .../Session/drivers/Session_files_driver.php | 406 + .../drivers/Session_memcached_driver.php | 378 + .../Session/drivers/Session_redis_driver.php | 399 + .../libraries/Session/drivers/index.html | 11 + www/system/libraries/Session/index.html | 11 + www/system/libraries/Table.php | 538 + www/system/libraries/Trackback.php | 556 + www/system/libraries/Typography.php | 424 + www/system/libraries/Unit_test.php | 406 + www/system/libraries/Upload.php | 1326 + www/system/libraries/User_agent.php | 681 + www/system/libraries/Xmlrpc.php | 1920 ++ www/system/libraries/Xmlrpcs.php | 619 + www/system/libraries/Zip.php | 532 + www/system/libraries/index.html | 11 + 620 files changed, 355397 insertions(+) create mode 100755 coregrade/build/configure create mode 100755 coregrade/build/interswitch create mode 100644 coregrade/email/ACCOUNT/member_pending.mailfile create mode 100644 coregrade/email/ACCOUNT/member_welcome.mailfile create mode 100644 coregrade/email/GROUP/group_added.mailfile create mode 100644 coregrade/email/GROUP/group_member_added.mailfile create mode 100644 coregrade/email/alert_accountcreated.mailfile create mode 100644 coregrade/email/alert_balance_updated.mailfile create mode 100644 coregrade/email/balance_updated.mailfile create mode 100644 coregrade/email/bonus_balance.mailfile create mode 100644 coregrade/email/complete_losspass.mailfile create mode 100644 coregrade/email/promo/promotion1.mailfile create mode 100644 coregrade/email/promo/promotion2.mailfile create mode 100644 coregrade/email/start_losspass.mailfile create mode 100644 coregrade/email/test.mailfile create mode 100644 coregrade/email/topup_bonus_completed-bak.mailfile create mode 100644 coregrade/email/topup_bonus_completed.mailfile create mode 100644 coregrade/email/topup_completed.mailfile create mode 100644 coregrade/email/topup_payment.mailfile create mode 100644 coregrade/email/topup_payment_alert.mailfile create mode 100644 coregrade/email/virtualtopup.mailfile create mode 100644 coregrade/email/welcome.mailfile create mode 100644 coregrade/etc/coregrade_api.conf create mode 100644 coregrade/src/.deps create mode 100644 coregrade/src/Makefile create mode 100644 coregrade/src/Makefile.fragments create mode 100644 coregrade/src/Makefile.global create mode 100644 coregrade/src/Makefile.objects create mode 100644 coregrade/src/acinclude.m4 create mode 100644 coregrade/src/aclocal.m4 create mode 100644 coregrade/src/build/libtool.m4 create mode 100644 coregrade/src/build/mkdep.awk create mode 100644 coregrade/src/build/scan_makefile_in.awk create mode 100755 coregrade/src/build/shtool create mode 100644 coregrade/src/confdefs.h create mode 100755 coregrade/src/config.guess create mode 100644 coregrade/src/config.h create mode 100644 coregrade/src/config.h.in create mode 100644 coregrade/src/config.log create mode 100644 coregrade/src/config.m4 create mode 100755 coregrade/src/config.nice create mode 100755 coregrade/src/config.status create mode 100755 coregrade/src/config.sub create mode 100755 coregrade/src/configure create mode 100644 coregrade/src/configure.in create mode 100644 coregrade/src/core/XmlElements.cc create mode 100644 coregrade/src/core/XmlParser.cc create mode 100644 coregrade/src/core/cfg.cc create mode 100644 coregrade/src/core/cgi.cc create mode 100644 coregrade/src/core/clog.cc create mode 100644 coregrade/src/core/coregrade.cc create mode 100644 coregrade/src/core/coregrade_api.cc create mode 100644 coregrade/src/core/cvariables.cc create mode 100644 coregrade/src/core/exceptions.cc create mode 100644 coregrade/src/core/hmac_sha2.cc create mode 100644 coregrade/src/core/input.cc create mode 100644 coregrade/src/core/list.cc create mode 100644 coregrade/src/core/pgsql.cc create mode 100644 coregrade/src/core/pgsql_wrapper.cc create mode 100644 coregrade/src/core/safestring.cc create mode 100644 coregrade/src/core/sha2.cc create mode 100644 coregrade/src/core/sha512.cc create mode 100644 coregrade/src/core/smtp.cc create mode 100644 coregrade/src/core/timer.cc create mode 100644 coregrade/src/core/util.cc create mode 100644 coregrade/src/core/vars.cc create mode 100644 coregrade/src/include/XmlElements.h create mode 100644 coregrade/src/include/XmlFwdDecls.h create mode 100644 coregrade/src/include/XmlParser.h create mode 100644 coregrade/src/include/account.h create mode 100644 coregrade/src/include/cfg.h create mode 100644 coregrade/src/include/cgi.h create mode 100644 coregrade/src/include/clog.h create mode 100644 coregrade/src/include/config.h create mode 100644 coregrade/src/include/coregrade.h create mode 100644 coregrade/src/include/coregrade_api.h create mode 100644 coregrade/src/include/coregrade_api_main.h create mode 100644 coregrade/src/include/cvariables.h create mode 100644 coregrade/src/include/email.h create mode 100644 coregrade/src/include/envH.h create mode 100644 coregrade/src/include/envStub.h create mode 100644 coregrade/src/include/exceptions.h create mode 100644 coregrade/src/include/groups.h create mode 100644 coregrade/src/include/hmac_sha2.h create mode 100644 coregrade/src/include/input.h create mode 100644 coregrade/src/include/interswitch.h create mode 100644 coregrade/src/include/interswitch.nsmap create mode 100644 coregrade/src/include/interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.h create mode 100644 coregrade/src/include/interswitchH.h create mode 100644 coregrade/src/include/interswitchStub.h create mode 100644 coregrade/src/include/interswitch_sendmoney.h create mode 100644 coregrade/src/include/list.h create mode 100644 coregrade/src/include/paylid.h create mode 100644 coregrade/src/include/paylid.nsmap create mode 100644 coregrade/src/include/paylidH.h create mode 100644 coregrade/src/include/paylidStub.h create mode 100644 coregrade/src/include/paylidpaylidwsdlBindingProxy.h create mode 100644 coregrade/src/include/pgsql.h create mode 100644 coregrade/src/include/pgsql_wrapper.h create mode 100644 coregrade/src/include/php_coregrade_api.h create mode 100644 coregrade/src/include/php_coregrade_api_ns.h create mode 100644 coregrade/src/include/php_coregrade_config.h create mode 100644 coregrade/src/include/php_coregrade_log.h create mode 100644 coregrade/src/include/php_filelog_max_level.h create mode 100644 coregrade/src/include/php_tmpl_prefix.h create mode 100644 coregrade/src/include/safestring.h create mode 100644 coregrade/src/include/sha2.h create mode 100644 coregrade/src/include/sha512.h create mode 100644 coregrade/src/include/smtp.h create mode 100644 coregrade/src/include/storeface.h create mode 100644 coregrade/src/include/timer.h create mode 100644 coregrade/src/include/topups.h create mode 100644 coregrade/src/include/util.h create mode 100644 coregrade/src/include/vars.h create mode 100644 coregrade/src/install-sh create mode 100644 coregrade/src/libconfig-1.3.1/.deps/libconfig___la-grammar.Plo create mode 100644 coregrade/src/libconfig-1.3.1/.deps/libconfig___la-libconfig.Plo create mode 100644 coregrade/src/libconfig-1.3.1/.deps/libconfig___la-libconfigcpp.Plo create mode 100644 coregrade/src/libconfig-1.3.1/.deps/libconfig___la-scanner.Plo create mode 100644 coregrade/src/libconfig-1.3.1/.deps/libconfig_la-grammar.Plo create mode 100644 coregrade/src/libconfig-1.3.1/.deps/libconfig_la-libconfig.Plo create mode 100644 coregrade/src/libconfig-1.3.1/.deps/libconfig_la-scanner.Plo create mode 100644 coregrade/src/libconfig-1.3.1/AUTHORS create mode 100644 coregrade/src/libconfig-1.3.1/COPYING.LIB create mode 100644 coregrade/src/libconfig-1.3.1/ChangeLog create mode 100644 coregrade/src/libconfig-1.3.1/INSTALL create mode 100644 coregrade/src/libconfig-1.3.1/Makefile.am create mode 100644 coregrade/src/libconfig-1.3.1/Makefile.in create mode 100644 coregrade/src/libconfig-1.3.1/NEWS create mode 100644 coregrade/src/libconfig-1.3.1/README create mode 100644 coregrade/src/libconfig-1.3.1/TODO create mode 100644 coregrade/src/libconfig-1.3.1/ac_config.h create mode 100644 coregrade/src/libconfig-1.3.1/ac_config.h.in create mode 100644 coregrade/src/libconfig-1.3.1/aclocal.m4 create mode 100644 coregrade/src/libconfig-1.3.1/autom4te.cache/output.0 create mode 100644 coregrade/src/libconfig-1.3.1/autom4te.cache/requests create mode 100644 coregrade/src/libconfig-1.3.1/autom4te.cache/traces.0 create mode 100755 coregrade/src/libconfig-1.3.1/compile create mode 100755 coregrade/src/libconfig-1.3.1/config.guess create mode 100755 coregrade/src/libconfig-1.3.1/config.sub create mode 100755 coregrade/src/libconfig-1.3.1/configure create mode 100644 coregrade/src/libconfig-1.3.1/configure.ac create mode 100644 coregrade/src/libconfig-1.3.1/debian/changelog create mode 100644 coregrade/src/libconfig-1.3.1/debian/compat create mode 100644 coregrade/src/libconfig-1.3.1/debian/control create mode 100644 coregrade/src/libconfig-1.3.1/debian/copyright create mode 100644 coregrade/src/libconfig-1.3.1/debian/libconfigduo2-dev.docs create mode 100644 coregrade/src/libconfig-1.3.1/debian/libconfigduo2-dev.install create mode 100644 coregrade/src/libconfig-1.3.1/debian/libconfigduo2.install create mode 100644 coregrade/src/libconfig-1.3.1/debian/libconfigduo2.postinst create mode 100755 coregrade/src/libconfig-1.3.1/debian/rules create mode 100644 coregrade/src/libconfig-1.3.1/debian/shlibs create mode 100755 coregrade/src/libconfig-1.3.1/depcomp create mode 100644 coregrade/src/libconfig-1.3.1/doc/LGPL.texi create mode 100644 coregrade/src/libconfig-1.3.1/doc/Makefile.am create mode 100644 coregrade/src/libconfig-1.3.1/doc/Makefile.in create mode 100644 coregrade/src/libconfig-1.3.1/doc/libconfig.info create mode 100644 coregrade/src/libconfig-1.3.1/doc/libconfig.texi create mode 100644 coregrade/src/libconfig-1.3.1/doc/texinfo.tex create mode 100644 coregrade/src/libconfig-1.3.1/grammar.c create mode 100644 coregrade/src/libconfig-1.3.1/grammar.h create mode 100644 coregrade/src/libconfig-1.3.1/grammar.y create mode 100755 coregrade/src/libconfig-1.3.1/install-sh create mode 100644 coregrade/src/libconfig-1.3.1/libconfig++.pc create mode 100644 coregrade/src/libconfig-1.3.1/libconfig++.pc.in create mode 100644 coregrade/src/libconfig-1.3.1/libconfig++.vcproj create mode 100644 coregrade/src/libconfig-1.3.1/libconfig++_stub.vcproj create mode 100644 coregrade/src/libconfig-1.3.1/libconfig.c create mode 100644 coregrade/src/libconfig-1.3.1/libconfig.h create mode 100644 coregrade/src/libconfig-1.3.1/libconfig.h++ create mode 100644 coregrade/src/libconfig-1.3.1/libconfig.hh create mode 100644 coregrade/src/libconfig-1.3.1/libconfig.pc create mode 100644 coregrade/src/libconfig-1.3.1/libconfig.pc.in create mode 100644 coregrade/src/libconfig-1.3.1/libconfig.sln create mode 100644 coregrade/src/libconfig-1.3.1/libconfig.spec create mode 100644 coregrade/src/libconfig-1.3.1/libconfig.spec.in create mode 100644 coregrade/src/libconfig-1.3.1/libconfig.vcproj create mode 100644 coregrade/src/libconfig-1.3.1/libconfig_stub.vcproj create mode 100644 coregrade/src/libconfig-1.3.1/libconfigcpp.c++ create mode 100644 coregrade/src/libconfig-1.3.1/libconfigcpp.cc create mode 100644 coregrade/src/libconfig-1.3.1/ltmain.sh create mode 100755 coregrade/src/libconfig-1.3.1/missing create mode 100755 coregrade/src/libconfig-1.3.1/mkinstalldirs create mode 100644 coregrade/src/libconfig-1.3.1/private.h create mode 100644 coregrade/src/libconfig-1.3.1/samples/Makefile.am create mode 100644 coregrade/src/libconfig-1.3.1/samples/Makefile.in create mode 100644 coregrade/src/libconfig-1.3.1/samples/c++/.deps/sample1.Po create mode 100644 coregrade/src/libconfig-1.3.1/samples/c++/.deps/sample2.Po create mode 100644 coregrade/src/libconfig-1.3.1/samples/c++/.deps/sample3.Po create mode 100644 coregrade/src/libconfig-1.3.1/samples/c++/.deps/stubcpp.Po create mode 100644 coregrade/src/libconfig-1.3.1/samples/c++/Makefile.am create mode 100644 coregrade/src/libconfig-1.3.1/samples/c++/Makefile.in create mode 100644 coregrade/src/libconfig-1.3.1/samples/c++/sample1.cpp create mode 100644 coregrade/src/libconfig-1.3.1/samples/c++/sample2.cpp create mode 100644 coregrade/src/libconfig-1.3.1/samples/c++/sample3.cpp create mode 100644 coregrade/src/libconfig-1.3.1/samples/c++/stubcpp.cpp create mode 100644 coregrade/src/libconfig-1.3.1/samples/c++/test.cfg create mode 100644 coregrade/src/libconfig-1.3.1/samples/c/.deps/sample1.Po create mode 100644 coregrade/src/libconfig-1.3.1/samples/c/.deps/sample2.Po create mode 100644 coregrade/src/libconfig-1.3.1/samples/c/.deps/sample3.Po create mode 100644 coregrade/src/libconfig-1.3.1/samples/c/.deps/stub.Po create mode 100644 coregrade/src/libconfig-1.3.1/samples/c/Makefile.am create mode 100644 coregrade/src/libconfig-1.3.1/samples/c/Makefile.in create mode 100644 coregrade/src/libconfig-1.3.1/samples/c/sample1.c create mode 100644 coregrade/src/libconfig-1.3.1/samples/c/sample2.c create mode 100644 coregrade/src/libconfig-1.3.1/samples/c/sample3.c create mode 100644 coregrade/src/libconfig-1.3.1/samples/c/stub.c create mode 100644 coregrade/src/libconfig-1.3.1/scanner.c create mode 100644 coregrade/src/libconfig-1.3.1/scanner.h create mode 100644 coregrade/src/libconfig-1.3.1/scanner.l create mode 100644 coregrade/src/libconfig-1.3.1/stamp-h1 create mode 100644 coregrade/src/libconfig-1.3.1/test.cfg create mode 100644 coregrade/src/libconfig-1.3.1/wincompat.h create mode 100755 coregrade/src/libconfig-1.3.1/ylwrap create mode 100755 coregrade/src/libtool create mode 100644 coregrade/src/ltmain.sh create mode 100644 coregrade/src/mailsend/Makefile create mode 100644 coregrade/src/mailsend/libs/libmsock/Makefile create mode 100644 coregrade/src/mailsend/libs/libmsock/msock.c create mode 100644 coregrade/src/mailsend/libs/libmsock/msock.h create mode 100644 coregrade/src/mailsend/libs/libmutils/Makefile create mode 100644 coregrade/src/mailsend/libs/libmutils/README create mode 100644 coregrade/src/mailsend/libs/libmutils/md5test.c create mode 100644 coregrade/src/mailsend/libs/libmutils/mime.c create mode 100644 coregrade/src/mailsend/libs/libmutils/mutils.c create mode 100644 coregrade/src/mailsend/libs/libmutils/mutils.h create mode 100644 coregrade/src/mailsend/libs/libmutils/string.c create mode 100644 coregrade/src/mailsend/libs/libmutils/test.c create mode 100644 coregrade/src/mailsend/libs/libmutils/testb64.c create mode 100644 coregrade/src/mailsend/libs/libsll/Makefile create mode 100644 coregrade/src/mailsend/libs/libsll/sll.c create mode 100644 coregrade/src/mailsend/libs/libsll/sll.h create mode 100755 coregrade/src/mailsend/mailsend create mode 100644 coregrade/src/mailsend/mailsend.h create mode 100644 coregrade/src/mailsend/main.c create mode 100644 coregrade/src/mailsend/setget.c create mode 100644 coregrade/src/mailsend/smtp.c create mode 100644 coregrade/src/mailsend/utils.c create mode 100644 coregrade/src/missing create mode 100644 coregrade/src/mkinstalldirs create mode 100644 coregrade/src/run-tests.php create mode 100644 coregrade/src/shared_tool/account.cc create mode 100644 coregrade/src/shared_tool/coregrade_api_main.cc create mode 100644 coregrade/src/shared_tool/email.cc create mode 100644 coregrade/src/shared_tool/envC.cc create mode 100644 coregrade/src/shared_tool/groups.cc create mode 100644 coregrade/src/shared_tool/interswitch.cc create mode 100644 coregrade/src/shared_tool/interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.cc create mode 100644 coregrade/src/shared_tool/interswitchC.cc create mode 100644 coregrade/src/shared_tool/interswitch_sendmoney.cc create mode 100644 coregrade/src/shared_tool/namespaces.cc create mode 100644 coregrade/src/shared_tool/paylid.cc create mode 100644 coregrade/src/shared_tool/paylid/PaylidService.h create mode 100644 coregrade/src/shared_tool/paylid/paylid.nsmap create mode 100644 coregrade/src/shared_tool/paylid/paylidC.cpp create mode 100644 coregrade/src/shared_tool/paylid/paylidH.h create mode 100644 coregrade/src/shared_tool/paylid/paylidStub.h create mode 100644 coregrade/src/shared_tool/paylid/paylidpaylidwsdlBindingProxy.cpp create mode 100644 coregrade/src/shared_tool/paylid/paylidpaylidwsdlBindingProxy.h create mode 100644 coregrade/src/shared_tool/paylid/paylidwsdlBinding.checkTransferStatus.req.xml create mode 100644 coregrade/src/shared_tool/paylid/paylidwsdlBinding.checkTransferStatus.res.xml create mode 100644 coregrade/src/shared_tool/paylid/paylidwsdlBinding.currentXrate.req.xml create mode 100644 coregrade/src/shared_tool/paylid/paylidwsdlBinding.currentXrate.res.xml create mode 100644 coregrade/src/shared_tool/paylid/paylidwsdlBinding.directAirTimeTopUp.req.xml create mode 100644 coregrade/src/shared_tool/paylid/paylidwsdlBinding.directAirTimeTopUp.res.xml create mode 100644 coregrade/src/shared_tool/paylid/paylidwsdlBinding.getAccount.req.xml create mode 100644 coregrade/src/shared_tool/paylid/paylidwsdlBinding.getAccount.res.xml create mode 100644 coregrade/src/shared_tool/paylid/paylidwsdlBinding.getAccountBalance.req.xml create mode 100644 coregrade/src/shared_tool/paylid/paylidwsdlBinding.getAccountBalance.res.xml create mode 100644 coregrade/src/shared_tool/paylid/paylidwsdlBinding.getSupportedBanks.req.xml create mode 100644 coregrade/src/shared_tool/paylid/paylidwsdlBinding.getSupportedBanks.res.xml create mode 100644 coregrade/src/shared_tool/paylid/paylidwsdlBinding.getTrxStatus.req.xml create mode 100644 coregrade/src/shared_tool/paylid/paylidwsdlBinding.getTrxStatus.res.xml create mode 100644 coregrade/src/shared_tool/paylid/paylidwsdlBinding.transferFund.req.xml create mode 100644 coregrade/src/shared_tool/paylid/paylidwsdlBinding.transferFund.res.xml create mode 100644 coregrade/src/shared_tool/paylidC.cc create mode 100644 coregrade/src/shared_tool/paylidpaylidwsdlBindingProxy.cc create mode 100644 coregrade/src/shared_tool/soap/QuickTellerService.h create mode 100644 coregrade/src/shared_tool/soap/interswitch.nsmap create mode 100644 coregrade/src/shared_tool/soap/interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.cpp create mode 100644 coregrade/src/shared_tool/soap/interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.h create mode 100644 coregrade/src/shared_tool/soap/interswitchC.cpp create mode 100644 coregrade/src/shared_tool/soap/interswitchH.h create mode 100644 coregrade/src/shared_tool/soap/interswitchStub.h create mode 100755 coregrade/src/shared_tool/soapTest/build.sh create mode 100644 coregrade/src/shared_tool/soapTest/namespaces.cc create mode 100644 coregrade/src/shared_tool/storeface.cc create mode 100644 coregrade/src/shared_tool/topups.cc create mode 100644 www/.editorconfig create mode 100644 www/.gitignore create mode 100644 www/application/.htaccess create mode 100644 www/application/cache/index.html create mode 100644 www/application/config/autoload.php create mode 100644 www/application/config/config.php create mode 100644 www/application/config/constants.php create mode 100644 www/application/config/database.php create mode 100644 www/application/config/doctypes.php create mode 100644 www/application/config/foreign_chars.php create mode 100644 www/application/config/hooks.php create mode 100644 www/application/config/index.html create mode 100644 www/application/config/memcached.php create mode 100644 www/application/config/migration.php create mode 100644 www/application/config/mimes.php create mode 100644 www/application/config/profiler.php create mode 100644 www/application/config/routes.php create mode 100644 www/application/config/smileys.php create mode 100644 www/application/config/user_agents.php create mode 100644 www/application/controllers/Welcome.php create mode 100644 www/application/controllers/index.html create mode 100644 www/application/core/index.html create mode 100644 www/application/helpers/index.html create mode 100644 www/application/hooks/index.html create mode 100644 www/application/index.html create mode 100644 www/application/language/english/index.html create mode 100644 www/application/language/index.html create mode 100644 www/application/libraries/index.html create mode 100644 www/application/logs/index.html create mode 100644 www/application/models/index.html create mode 100644 www/application/third_party/index.html create mode 100644 www/application/views/errors/cli/error_404.php create mode 100644 www/application/views/errors/cli/error_db.php create mode 100644 www/application/views/errors/cli/error_exception.php create mode 100644 www/application/views/errors/cli/error_general.php create mode 100644 www/application/views/errors/cli/error_php.php create mode 100644 www/application/views/errors/cli/index.html create mode 100644 www/application/views/errors/html/error_404.php create mode 100644 www/application/views/errors/html/error_db.php create mode 100644 www/application/views/errors/html/error_exception.php create mode 100644 www/application/views/errors/html/error_general.php create mode 100644 www/application/views/errors/html/error_php.php create mode 100644 www/application/views/errors/html/index.html create mode 100644 www/application/views/errors/index.html create mode 100644 www/application/views/home/home.php create mode 100644 www/application/views/index.html create mode 100644 www/application/views/welcome_message.php create mode 100644 www/assets/css/animate.min.css create mode 100644 www/assets/css/bootstrap.min.css create mode 100644 www/assets/css/default.css create mode 100644 www/assets/css/font-awesome.min.css create mode 100644 www/assets/css/owl.carousel.min.css create mode 100644 www/assets/css/owl.theme.min.css create mode 100644 www/assets/css/responsive-blue.css create mode 100644 www/assets/css/responsive-dark.css create mode 100644 www/assets/css/responsive.css create mode 100644 www/assets/css/style.blue.css create mode 100644 www/assets/css/style.css create mode 100644 www/assets/css/style.dark.css create mode 100644 www/assets/css/typography.css create mode 100644 www/assets/fonts/FontAwesome.otf create mode 100644 www/assets/fonts/fontawesome-webfont.eot create mode 100644 www/assets/fonts/fontawesome-webfont.svg create mode 100644 www/assets/fonts/fontawesome-webfont.ttf create mode 100644 www/assets/fonts/fontawesome-webfont.woff create mode 100644 www/assets/fonts/fontawesome-webfont.woff2 create mode 100644 www/assets/fonts/glyphicons-halflings-regular.eot create mode 100644 www/assets/fonts/glyphicons-halflings-regular.svg create mode 100644 www/assets/fonts/glyphicons-halflings-regular.ttf create mode 100644 www/assets/fonts/glyphicons-halflings-regular.woff create mode 100644 www/assets/fonts/glyphicons-halflings-regular.woff2 create mode 100644 www/assets/img/amazon-store.png create mode 100644 www/assets/img/app-icon.png create mode 100644 www/assets/img/app-store.png create mode 100644 www/assets/img/ball.png create mode 100644 www/assets/img/bg.jpg create mode 100644 www/assets/img/coffee.png create mode 100644 www/assets/img/dark-bg.jpg create mode 100644 www/assets/img/dark-hero-bg.jpg create mode 100644 www/assets/img/dark-mobile-1.png create mode 100644 www/assets/img/dark-slide-1.png create mode 100644 www/assets/img/dark-slide-2.png create mode 100644 www/assets/img/dark-slide-3.png create mode 100644 www/assets/img/dark-slide-4.png create mode 100644 www/assets/img/dark-slide-5.png create mode 100644 www/assets/img/dark-slide-6.png create mode 100644 www/assets/img/footer-bg.jpg create mode 100644 www/assets/img/glass.png create mode 100644 www/assets/img/google-store.png create mode 100644 www/assets/img/iphone-mockup-1.png create mode 100644 www/assets/img/iphone-mockup-2.png create mode 100644 www/assets/img/iphone-mockup-3.png create mode 100644 www/assets/img/iphone-mockup-4.png create mode 100644 www/assets/img/logo-blue.png create mode 100644 www/assets/img/logo-dark.png create mode 100644 www/assets/img/logo-sm.png create mode 100644 www/assets/img/logo.png create mode 100644 www/assets/img/mobile-mockup.png create mode 100644 www/assets/img/mobile-slide-1.png create mode 100644 www/assets/img/mobile-slide-2.png create mode 100644 www/assets/img/mobile-slide-3.png create mode 100644 www/assets/img/mobile-slide-4.png create mode 100644 www/assets/img/mobile-slide-5.png create mode 100644 www/assets/img/mobile-slide-6.png create mode 100644 www/assets/img/paper.png create mode 100644 www/assets/img/plant.png create mode 100644 www/assets/img/shape.png create mode 100644 www/assets/img/square.png create mode 100644 www/assets/img/subscribe-bg.jpg create mode 100644 www/assets/img/tab-slide-1.png create mode 100644 www/assets/img/tab-slide-2.png create mode 100644 www/assets/img/tab-slide-3.png create mode 100644 www/assets/img/tab-slide-4.png create mode 100644 www/assets/img/tic.png create mode 100644 www/assets/img/windows-store.png create mode 100644 www/assets/js/bootstrap.min.js create mode 100644 www/assets/js/html5shiv-printshiv.js create mode 100644 www/assets/js/html5shiv.js create mode 100644 www/assets/js/jquery-1.11.3.min.js create mode 100644 www/assets/js/jquery.flipster.min.js create mode 100644 www/assets/js/owl.carousel.min.js create mode 100644 www/assets/js/theme.js create mode 100644 www/assets/js/typed.min.js create mode 100644 www/assets/js/wow.min.js create mode 100644 www/composer.json create mode 100644 www/contributing.md create mode 100644 www/i.php create mode 100644 www/index.php create mode 100644 www/license.txt create mode 100644 www/readme.rst create mode 100644 www/system/.htaccess create mode 100644 www/system/core/Benchmark.php create mode 100644 www/system/core/CodeIgniter.php create mode 100644 www/system/core/Common.php create mode 100644 www/system/core/Config.php create mode 100644 www/system/core/Controller.php create mode 100644 www/system/core/Exceptions.php create mode 100644 www/system/core/Hooks.php create mode 100644 www/system/core/Input.php create mode 100644 www/system/core/Lang.php create mode 100644 www/system/core/Loader.php create mode 100644 www/system/core/Log.php create mode 100644 www/system/core/Model.php create mode 100644 www/system/core/Output.php create mode 100644 www/system/core/Router.php create mode 100644 www/system/core/Security.php create mode 100644 www/system/core/URI.php create mode 100644 www/system/core/Utf8.php create mode 100644 www/system/core/compat/hash.php create mode 100644 www/system/core/compat/index.html create mode 100644 www/system/core/compat/mbstring.php create mode 100644 www/system/core/compat/password.php create mode 100644 www/system/core/compat/standard.php create mode 100644 www/system/core/index.html create mode 100644 www/system/database/DB.php create mode 100644 www/system/database/DB_cache.php create mode 100644 www/system/database/DB_driver.php create mode 100644 www/system/database/DB_forge.php create mode 100644 www/system/database/DB_query_builder.php create mode 100644 www/system/database/DB_result.php create mode 100644 www/system/database/DB_utility.php create mode 100644 www/system/database/drivers/cubrid/cubrid_driver.php create mode 100644 www/system/database/drivers/cubrid/cubrid_forge.php create mode 100644 www/system/database/drivers/cubrid/cubrid_result.php create mode 100644 www/system/database/drivers/cubrid/cubrid_utility.php create mode 100644 www/system/database/drivers/cubrid/index.html create mode 100644 www/system/database/drivers/ibase/ibase_driver.php create mode 100644 www/system/database/drivers/ibase/ibase_forge.php create mode 100644 www/system/database/drivers/ibase/ibase_result.php create mode 100644 www/system/database/drivers/ibase/ibase_utility.php create mode 100644 www/system/database/drivers/ibase/index.html create mode 100644 www/system/database/drivers/index.html create mode 100644 www/system/database/drivers/mssql/index.html create mode 100644 www/system/database/drivers/mssql/mssql_driver.php create mode 100644 www/system/database/drivers/mssql/mssql_forge.php create mode 100644 www/system/database/drivers/mssql/mssql_result.php create mode 100644 www/system/database/drivers/mssql/mssql_utility.php create mode 100644 www/system/database/drivers/mysql/index.html create mode 100644 www/system/database/drivers/mysql/mysql_driver.php create mode 100644 www/system/database/drivers/mysql/mysql_forge.php create mode 100644 www/system/database/drivers/mysql/mysql_result.php create mode 100644 www/system/database/drivers/mysql/mysql_utility.php create mode 100644 www/system/database/drivers/mysqli/index.html create mode 100644 www/system/database/drivers/mysqli/mysqli_driver.php create mode 100644 www/system/database/drivers/mysqli/mysqli_forge.php create mode 100644 www/system/database/drivers/mysqli/mysqli_result.php create mode 100644 www/system/database/drivers/mysqli/mysqli_utility.php create mode 100644 www/system/database/drivers/oci8/index.html create mode 100644 www/system/database/drivers/oci8/oci8_driver.php create mode 100644 www/system/database/drivers/oci8/oci8_forge.php create mode 100644 www/system/database/drivers/oci8/oci8_result.php create mode 100644 www/system/database/drivers/oci8/oci8_utility.php create mode 100644 www/system/database/drivers/odbc/index.html create mode 100644 www/system/database/drivers/odbc/odbc_driver.php create mode 100644 www/system/database/drivers/odbc/odbc_forge.php create mode 100644 www/system/database/drivers/odbc/odbc_result.php create mode 100644 www/system/database/drivers/odbc/odbc_utility.php create mode 100644 www/system/database/drivers/pdo/index.html create mode 100644 www/system/database/drivers/pdo/pdo_driver.php create mode 100644 www/system/database/drivers/pdo/pdo_forge.php create mode 100644 www/system/database/drivers/pdo/pdo_result.php create mode 100644 www/system/database/drivers/pdo/pdo_utility.php create mode 100644 www/system/database/drivers/pdo/subdrivers/index.html create mode 100644 www/system/database/drivers/pdo/subdrivers/pdo_4d_driver.php create mode 100644 www/system/database/drivers/pdo/subdrivers/pdo_4d_forge.php create mode 100644 www/system/database/drivers/pdo/subdrivers/pdo_cubrid_driver.php create mode 100644 www/system/database/drivers/pdo/subdrivers/pdo_cubrid_forge.php create mode 100644 www/system/database/drivers/pdo/subdrivers/pdo_dblib_driver.php create mode 100644 www/system/database/drivers/pdo/subdrivers/pdo_dblib_forge.php create mode 100644 www/system/database/drivers/pdo/subdrivers/pdo_firebird_driver.php create mode 100644 www/system/database/drivers/pdo/subdrivers/pdo_firebird_forge.php create mode 100644 www/system/database/drivers/pdo/subdrivers/pdo_ibm_driver.php create mode 100644 www/system/database/drivers/pdo/subdrivers/pdo_ibm_forge.php create mode 100644 www/system/database/drivers/pdo/subdrivers/pdo_informix_driver.php create mode 100644 www/system/database/drivers/pdo/subdrivers/pdo_informix_forge.php create mode 100644 www/system/database/drivers/pdo/subdrivers/pdo_mysql_driver.php create mode 100644 www/system/database/drivers/pdo/subdrivers/pdo_mysql_forge.php create mode 100644 www/system/database/drivers/pdo/subdrivers/pdo_oci_driver.php create mode 100644 www/system/database/drivers/pdo/subdrivers/pdo_oci_forge.php create mode 100644 www/system/database/drivers/pdo/subdrivers/pdo_odbc_driver.php create mode 100644 www/system/database/drivers/pdo/subdrivers/pdo_odbc_forge.php create mode 100644 www/system/database/drivers/pdo/subdrivers/pdo_pgsql_driver.php create mode 100644 www/system/database/drivers/pdo/subdrivers/pdo_pgsql_forge.php create mode 100644 www/system/database/drivers/pdo/subdrivers/pdo_sqlite_driver.php create mode 100644 www/system/database/drivers/pdo/subdrivers/pdo_sqlite_forge.php create mode 100644 www/system/database/drivers/pdo/subdrivers/pdo_sqlsrv_driver.php create mode 100644 www/system/database/drivers/pdo/subdrivers/pdo_sqlsrv_forge.php create mode 100644 www/system/database/drivers/postgre/index.html create mode 100644 www/system/database/drivers/postgre/postgre_driver.php create mode 100644 www/system/database/drivers/postgre/postgre_forge.php create mode 100644 www/system/database/drivers/postgre/postgre_result.php create mode 100644 www/system/database/drivers/postgre/postgre_utility.php create mode 100644 www/system/database/drivers/sqlite/index.html create mode 100644 www/system/database/drivers/sqlite/sqlite_driver.php create mode 100644 www/system/database/drivers/sqlite/sqlite_forge.php create mode 100644 www/system/database/drivers/sqlite/sqlite_result.php create mode 100644 www/system/database/drivers/sqlite/sqlite_utility.php create mode 100644 www/system/database/drivers/sqlite3/index.html create mode 100644 www/system/database/drivers/sqlite3/sqlite3_driver.php create mode 100644 www/system/database/drivers/sqlite3/sqlite3_forge.php create mode 100644 www/system/database/drivers/sqlite3/sqlite3_result.php create mode 100644 www/system/database/drivers/sqlite3/sqlite3_utility.php create mode 100644 www/system/database/drivers/sqlsrv/index.html create mode 100644 www/system/database/drivers/sqlsrv/sqlsrv_driver.php create mode 100644 www/system/database/drivers/sqlsrv/sqlsrv_forge.php create mode 100644 www/system/database/drivers/sqlsrv/sqlsrv_result.php create mode 100644 www/system/database/drivers/sqlsrv/sqlsrv_utility.php create mode 100644 www/system/database/index.html create mode 100644 www/system/fonts/index.html create mode 100644 www/system/fonts/texb.ttf create mode 100644 www/system/helpers/array_helper.php create mode 100644 www/system/helpers/captcha_helper.php create mode 100644 www/system/helpers/cookie_helper.php create mode 100644 www/system/helpers/date_helper.php create mode 100644 www/system/helpers/directory_helper.php create mode 100644 www/system/helpers/download_helper.php create mode 100644 www/system/helpers/email_helper.php create mode 100644 www/system/helpers/file_helper.php create mode 100644 www/system/helpers/form_helper.php create mode 100644 www/system/helpers/html_helper.php create mode 100644 www/system/helpers/index.html create mode 100644 www/system/helpers/inflector_helper.php create mode 100644 www/system/helpers/language_helper.php create mode 100644 www/system/helpers/number_helper.php create mode 100644 www/system/helpers/path_helper.php create mode 100644 www/system/helpers/security_helper.php create mode 100644 www/system/helpers/smiley_helper.php create mode 100644 www/system/helpers/string_helper.php create mode 100644 www/system/helpers/text_helper.php create mode 100644 www/system/helpers/typography_helper.php create mode 100644 www/system/helpers/url_helper.php create mode 100644 www/system/helpers/xml_helper.php create mode 100644 www/system/index.html create mode 100644 www/system/language/english/calendar_lang.php create mode 100644 www/system/language/english/date_lang.php create mode 100644 www/system/language/english/db_lang.php create mode 100644 www/system/language/english/email_lang.php create mode 100644 www/system/language/english/form_validation_lang.php create mode 100644 www/system/language/english/ftp_lang.php create mode 100644 www/system/language/english/imglib_lang.php create mode 100644 www/system/language/english/index.html create mode 100644 www/system/language/english/migration_lang.php create mode 100644 www/system/language/english/number_lang.php create mode 100644 www/system/language/english/pagination_lang.php create mode 100644 www/system/language/english/profiler_lang.php create mode 100644 www/system/language/english/unit_test_lang.php create mode 100644 www/system/language/english/upload_lang.php create mode 100644 www/system/language/index.html create mode 100644 www/system/libraries/Cache/Cache.php create mode 100644 www/system/libraries/Cache/drivers/Cache_apc.php create mode 100644 www/system/libraries/Cache/drivers/Cache_dummy.php create mode 100644 www/system/libraries/Cache/drivers/Cache_file.php create mode 100644 www/system/libraries/Cache/drivers/Cache_memcached.php create mode 100644 www/system/libraries/Cache/drivers/Cache_redis.php create mode 100644 www/system/libraries/Cache/drivers/Cache_wincache.php create mode 100644 www/system/libraries/Cache/drivers/index.html create mode 100644 www/system/libraries/Cache/index.html create mode 100644 www/system/libraries/Calendar.php create mode 100644 www/system/libraries/Cart.php create mode 100644 www/system/libraries/Driver.php create mode 100644 www/system/libraries/Email.php create mode 100644 www/system/libraries/Encrypt.php create mode 100644 www/system/libraries/Encryption.php create mode 100644 www/system/libraries/Form_validation.php create mode 100644 www/system/libraries/Ftp.php create mode 100644 www/system/libraries/Image_lib.php create mode 100644 www/system/libraries/Javascript.php create mode 100644 www/system/libraries/Javascript/Jquery.php create mode 100644 www/system/libraries/Javascript/index.html create mode 100644 www/system/libraries/Migration.php create mode 100644 www/system/libraries/Pagination.php create mode 100644 www/system/libraries/Parser.php create mode 100644 www/system/libraries/Profiler.php create mode 100644 www/system/libraries/Session/Session.php create mode 100644 www/system/libraries/Session/SessionHandlerInterface.php create mode 100644 www/system/libraries/Session/Session_driver.php create mode 100644 www/system/libraries/Session/drivers/Session_database_driver.php create mode 100644 www/system/libraries/Session/drivers/Session_files_driver.php create mode 100644 www/system/libraries/Session/drivers/Session_memcached_driver.php create mode 100644 www/system/libraries/Session/drivers/Session_redis_driver.php create mode 100644 www/system/libraries/Session/drivers/index.html create mode 100644 www/system/libraries/Session/index.html create mode 100644 www/system/libraries/Table.php create mode 100644 www/system/libraries/Trackback.php create mode 100644 www/system/libraries/Typography.php create mode 100644 www/system/libraries/Unit_test.php create mode 100644 www/system/libraries/Upload.php create mode 100644 www/system/libraries/User_agent.php create mode 100644 www/system/libraries/Xmlrpc.php create mode 100644 www/system/libraries/Xmlrpcs.php create mode 100644 www/system/libraries/Zip.php create mode 100644 www/system/libraries/index.html diff --git a/coregrade/build/configure b/coregrade/build/configure new file mode 100755 index 0000000..494b811 --- /dev/null +++ b/coregrade/build/configure @@ -0,0 +1,74 @@ +#!/bin/sh +# +BUILD_DIR=`dirname $0` +# Get coregrade_api root directory +cd .. +WORK_DIR=`pwd` +MAILSEND="$WORK_DIR/src/mailsend" +LIBCONFIG="$WORK_DIR/src/libconfig-1.3.1" +# Checking user +if [ "$USER" = "root" ] +then + echo "Configuring as root" + LIBCONFIG_PREFIX="/usr" + echo "Building $LIBCONFIG ..." + cd $LIBCONFIG + #echo `pwd` $LIBCONFIG_PREFIX + CFLAGS=-fPIC CXXFLAGS=-fPIC ./configure --prefix=$LIBCONFIG_PREFIX + make + make install +fi +mkdir $WORK_DIR/logs +chmod a+w $WORK_DIR/logs +mkdir $WORK_DIR/src/modules +# Building mailsend +cd $MAILSEND +make +# Configure extension +cd $WORK_DIR/src/ + +#####echo "Generating interswitch proxy..." +#####cd shared_tool/soap +#####wsdl2h -ninterswitch -Ninterswitch -qinterswitch -o QuickTellerService.h https://stageserv.interswitchng.com/uat_quicktellerservice/quickteller.svc?wsdl +#wsdl2h -o QuickTellerService.h https://stageserv.interswitchng.com/uat_quicktellerservice/quickteller.svc?wsdl +#####soapcpp2 -n -pinterswitch -qinterswitch -1 -C -i -I/usr/share/gsoap/import/ QuickTellerService.h +#soapcpp2 -C -i -I/usr/share/gsoap/import/ QuickTellerService.h +## copy C++ +#cp soapC.cpp ../soapC.cc +#cp soapBasicHttpBinding_USCOREQuickTellerServiceProxy.cpp ../soapBasicHttpBinding_USCOREQuickTellerServiceProxy.cc +## copy headers +#cp soapH.h ../../include/ +#cp soapBasicHttpBinding_USCOREQuickTellerServiceProxy.h ../../include/ +#cp BasicHttpBinding_USCOREQuickTellerService.nsmap ../../include/ +#cp soapStub.h ../../include/ +# copy C++ +#####cp interswitchC.cpp ../interswitchC.cc +#####cp interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.cpp ../interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.cc +# copy headers +#####cp interswitchH.h ../../include/ +#####cp interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.h ../../include/ +#####cp interswitch.nsmap ../../include/ +#####cp interswitchStub.h ../../include/ +#####cd ../.. +echo "Generating paylid proxy..." +cd shared_tool/paylid +wsdl2h -npaylid -Npaylid -qpaylid -o PaylidService.h http://www.paylid.com/rsl/service.php?wsdl +soapcpp2 -n -ppaylid -qpaylid -1 -C -i -I/usr/share/gsoap/import/ PaylidService.h +# copy C++ +cp paylidC.cpp ../paylidC.cc +cp paylidpaylidwsdlBindingProxy.cpp ../paylidpaylidwsdlBindingProxy.cc +# copy headers +cp paylidH.h ../../include/ +cp paylidStub.h ../../include/ +cp paylid.nsmap ../../include/ +cp paylidpaylidwsdlBindingProxy.h ../../include/ +cd ../.. + +# Generate extension +phpize +./configure --enable-coregrade_api +echo "done." +cd $BUILD_DIR +echo $BUILD_DIR +echo $WORK_DIR +echo $USER diff --git a/coregrade/build/interswitch b/coregrade/build/interswitch new file mode 100755 index 0000000..69b88c3 --- /dev/null +++ b/coregrade/build/interswitch @@ -0,0 +1,37 @@ +#!/bin/sh +# +# Get coregrade_api root directory +cd .. +WORK_DIR=`pwd` +# Checking user +if [ "$USER" = "root" ] +then + echo "Do not run as root!" + exit 1 +fi +# Configure extension +cd $WORK_DIR/src/ + +echo "Generating interswitch proxy..." +cd shared_tool/soap +wsdl2h -ninterswitch -Ninterswitch -qinterswitch -o QuickTellerService.h https://stageserv.interswitchng.com/uat_quicktellerservice/quickteller.svc?wsdl +#wsdl2h -o QuickTellerService.h https://stageserv.interswitchng.com/uat_quicktellerservice/quickteller.svc?wsdl +soapcpp2 -n -pinterswitch -qinterswitch -1 -C -i -I/usr/share/gsoap/import/ QuickTellerService.h +#soapcpp2 -C -i -I/usr/share/gsoap/import/ QuickTellerService.h +## copy C++ +#cp soapC.cpp ../soapC.cc +#cp soapBasicHttpBinding_USCOREQuickTellerServiceProxy.cpp ../soapBasicHttpBinding_USCOREQuickTellerServiceProxy.cc +## copy headers +#cp soapH.h ../../include/ +#cp soapBasicHttpBinding_USCOREQuickTellerServiceProxy.h ../../include/ +#cp BasicHttpBinding_USCOREQuickTellerService.nsmap ../../include/ +#cp soapStub.h ../../include/ +# copy C++ +cp interswitchC.cpp ../interswitchC.cc +cp interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.cpp ../interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.cc +# copy headers +cp interswitchH.h ../../include/ +cp interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.h ../../include/ +cp interswitch.nsmap ../../include/ +cp interswitchStub.h ../../include/ +cd ../.. diff --git a/coregrade/email/ACCOUNT/member_pending.mailfile b/coregrade/email/ACCOUNT/member_pending.mailfile new file mode 100644 index 0000000..4e3abd1 --- /dev/null +++ b/coregrade/email/ACCOUNT/member_pending.mailfile @@ -0,0 +1,48 @@ +To: {{email}} +Subject: {{site_name}} - Pending Signup - Verify {{email}} + + + + +
+
+ + + + + + +
{{site_name}}
+Dear {{firstname}}, +
+Welcome to {{site_name}}!. In order to complete your registration , click or copy the link below into the browser to set your password. +
+Click Link : https://{{server_name}}/vemail.html?vlnk={{verify_link}} +
+{{site_name}} gives empowers you to form, find and join one or more groups. As a group member you will receive the benefit of wholesale prices on leading brands from reputable sellers on the purchases you need for your home, your business or your life! +
+ +
+Get in touch if you need further support at http://{{server_name}}/contact.html?vlnk=PLK-000634115584-000836017814-000634115584 +
+{{site_name}} Team +
+{{server_name}} +
+To learn more about Groups click here +
+To learn more about Group Rewards click here +
+To see Offers click here +
+ +
+
+
+ +
+ + + + + diff --git a/coregrade/email/ACCOUNT/member_welcome.mailfile b/coregrade/email/ACCOUNT/member_welcome.mailfile new file mode 100644 index 0000000..6f2d155 --- /dev/null +++ b/coregrade/email/ACCOUNT/member_welcome.mailfile @@ -0,0 +1,46 @@ +To: {{email}} +Subject: Welcome to {{site_name}} + + + + +
+
+ + + + + + +
{{site_name}}
+Dear {{firstname}}, +
+Welcome to {{site_name}}!. +
+{{site_name}} gives empowers you to form, find and join one or more groups. As a group member you will receive the benefit of wholesale prices on leading brands from reputable sellers on the purchases you need for your home, your business or your life! +
+ +
+Get in touch if you need further support at http://{{server_name}}/contact.html?vlnk=PLK-000634115584-000836017814-000634115584 +
+{{site_name}} Team +
+{{server_name}} +
+To learn more about Groups click here +
+To learn more about Group Rewards click here +
+To see Offers click here +
+ +
+
+
+ +
+ + + + + diff --git a/coregrade/email/GROUP/group_added.mailfile b/coregrade/email/GROUP/group_added.mailfile new file mode 100644 index 0000000..3087a43 --- /dev/null +++ b/coregrade/email/GROUP/group_added.mailfile @@ -0,0 +1,46 @@ +To: {{email}} +Subject: {{group_name}} - Group Added + + + + +
+
+ + + + + + +
{{site_name}}
+You have created {{group_name}} , +
+{{description}} +
+{{site_name}} gives empowers you to form, find and join one or more groups. As a group member you will receive the benefit of wholesale prices on leading brands from reputable sellers on the purchases you need for your home, your business or your life! +
+ +
+Get in touch if you need further support at http://{{server_name}}/contact.html?vlnk=PLK-000634115584-000836017814-000634115584 +
+{{site_name}} Team +
+{{server_name}} +
+To learn more about Groups click here +
+To learn more about Group Rewards click here +
+To see Offers click here +
+ +
+
+
+ +
+ + + + + diff --git a/coregrade/email/GROUP/group_member_added.mailfile b/coregrade/email/GROUP/group_member_added.mailfile new file mode 100644 index 0000000..eda39ee --- /dev/null +++ b/coregrade/email/GROUP/group_member_added.mailfile @@ -0,0 +1,46 @@ +To: {{email}} +Subject: Welcome to Group : {{group_name}} + + + + +
+
+ + + + + + +
{{site_name}}
+Dear {{firstname}}, +
+Welcome to {{site_name}}!. +
+{{site_name}} gives empowers you to form, find and join one or more groups. As a group member you will receive the benefit of wholesale prices on leading brands from reputable sellers on the purchases you need for your home, your business or your life! +
+ +
+Get in touch if you need further support at http://{{server_name}}/contact.html?vlnk=PLK-000634115584-000836017814-000634115584 +
+{{site_name}} Team +
+{{server_name}} +
+To learn more about Groups click here +
+To learn more about Group Rewards click here +
+To see Offers click here +
+ +
+
+
+ +
+ + + + + diff --git a/coregrade/email/alert_accountcreated.mailfile b/coregrade/email/alert_accountcreated.mailfile new file mode 100644 index 0000000..c77f3ce --- /dev/null +++ b/coregrade/email/alert_accountcreated.mailfile @@ -0,0 +1,91 @@ +To: {{email}} +Subject: PayQuic Account Created Alert + + + + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

Customer

Firstname{{firstname}}
Lastname{{lastname}}
Email{{email2}}
Balance Naira{{balance2}} Naira
Balance Dollars{{dollar_balance2}} Dollars
FaceBook{{fbid}}
Country{{country}}
+
+ IP - Intelligence + + + + + + + + + + + + + + + + +
VARVALUE
IP{{loc}}
country_code{{country_code}}
country_name{{country_name}}
continent_code{{continent_code}}
continent_name{{continent_name}}
+ + +
+ + + + +
+ + + diff --git a/coregrade/email/alert_balance_updated.mailfile b/coregrade/email/alert_balance_updated.mailfile new file mode 100644 index 0000000..81d3e8e --- /dev/null +++ b/coregrade/email/alert_balance_updated.mailfile @@ -0,0 +1,53 @@ +To: {{email}} +Subject: PayQuic Alerts Completed Balance Update [{{appramt2}} Naira] for {{firstname}}, {{lastname}} + + + + +
+
+		
+
+		
+        
+	
+		
+				
+									
+		
+	         
+		
+		
PayQuic
+ + + + + + +
Date and time :{{balance_date}}
Amount : N{{appramt2}}
Current Balance : N{{balance2}}
Transaction Fee : N0:00
+
+
+
+
+ IP - Intelligence + + + + + + + + + + + + + + + + +
VARVALUE
IP{{loc}}
country_code{{country_code}}
country_name{{country_name}}
continent_code{{continent_code}}
continent_name{{continent_name}}
+
+ + + diff --git a/coregrade/email/balance_updated.mailfile b/coregrade/email/balance_updated.mailfile new file mode 100644 index 0000000..55400b6 --- /dev/null +++ b/coregrade/email/balance_updated.mailfile @@ -0,0 +1,49 @@ +To: {{email}} +Subject: PayQuic We have Completed Your Balance Update [{{appramt2}} Naira] + + + + +
+
+		
+
+		
+        
+				
+									
+		
+				
+									
+		
+				
+									
+		
+				
+									
+			         
+		
+		
PayQuic
+ Dear {{firstname}}, {{lastname}} +
+ Thank you for using PayQuic Services. We have completed processing your balance update as shown below: +
+ + + + + + +
Date and time :{{balance_date}}
Amount : N{{appramt2}}
Current Balance : N{{balance2}}
Transaction Fee : N0:00
+
+
+ For further support go to our website at www.payquic.com or call 08188697770 between the hours of 10:00 AM and 5:00 PM. + Thank you for choosing PayQuic. + PayQuic Team. +
+
+ +
+ + + diff --git a/coregrade/email/bonus_balance.mailfile b/coregrade/email/bonus_balance.mailfile new file mode 100644 index 0000000..304b04b --- /dev/null +++ b/coregrade/email/bonus_balance.mailfile @@ -0,0 +1,41 @@ +To: {{email}} +Subject: PayQuic Welcome Airtime Gift for {{email}} + + + + +
+
+
+		
+
+ +Dear {{firstname}}, +
+Thank you for signing up for PayQuic. As a reward for signing up, we are giving you N100 gift to use top up any phone as you please by November 7th, 2014. + +Simply login to your PayQuic account and you will see N100 in your PayQuic balance. Use the balance by midnight on November 7th to instantly top up any phone. Enter the phone number and amount of N100 as shown in the graphic below. + +To redeem your N100 gift NOW, click here. +
+For further support go to our website at www.payquic.com or call 0909003208 between the hours of 8am and 5pm on weekdays. +
+Thank you for choosing PayQuic.
+PayQuic Team. +
+
+ + +image topup with payquic +
+ + + + + + + + + + + \ No newline at end of file diff --git a/coregrade/email/complete_losspass.mailfile b/coregrade/email/complete_losspass.mailfile new file mode 100644 index 0000000..9d2ed16 --- /dev/null +++ b/coregrade/email/complete_losspass.mailfile @@ -0,0 +1,43 @@ +To: {{email}} +Subject: PayQuic - Password Reset for {{email}} with {{lost_added}} + + + + +
+
+
+
+		
+							
+
+		
+							
+	
+
+		
+							
+	         
+
+
PayQuic
+Dear {{firstname}} +
+As you requested, your password has been reset. + +
+If it was not at your request, then please contact PayQuic support immediately. + +For further support go to our website at www.PayQuic.com or call 08188697770 between the hours of 10:00 AM and 5:00 PM. +Thank you for choosing PayQuic. +PayQuic Team. + +
+
+ +
+ + + + + + \ No newline at end of file diff --git a/coregrade/email/promo/promotion1.mailfile b/coregrade/email/promo/promotion1.mailfile new file mode 100644 index 0000000..a5ed450 --- /dev/null +++ b/coregrade/email/promo/promotion1.mailfile @@ -0,0 +1,41 @@ +To: {{email}} +Subject: payQuic bonus offer on airtime top-ups + + + + +
+
+
+
+
+
+		
+							
+
+		
+							
+
+
+		
+							
+	         
+
+
PayQuic
+Dear {{firstname}}, {{lastname}} +
+It's election weekend. Take advantage of payQuic's bonus offer on airtime top-ups. + +Get 10% bonus when you buy airtime for yourself or top-up for friends and family this weekend. + +This offer is valid until Sunday March 29th at 11pm Nigeria time. It's quick and easy! +
+For further information go to our website at www.payquic.com +Thank you for choosing PayQuic - your quick airtime purchase center. +PayQuic Team +
+
+ +
+ + diff --git a/coregrade/email/promo/promotion2.mailfile b/coregrade/email/promo/promotion2.mailfile new file mode 100644 index 0000000..d4926e3 --- /dev/null +++ b/coregrade/email/promo/promotion2.mailfile @@ -0,0 +1,41 @@ +To: {{email}} +Subject: PayQuic topUp with SMS + + + + +
+
+
+
+
+
+		
+							
+
+		
+							
+
+
+		
+							
+	         
+
+
PayQuic
+Dear {{firstname}}, {{lastname}} +
+Do you know you can topup your phone quickly by adding money to your payquic balance. + +Then topup any phone number by sending Q#PIN#MSISDN#amount to 38123 from your Etisalat line. + +Top up on the go any time. Set up your pin by visiting PayQuic portal today. +
+For further information go to our website at www.payquic.com +Thank you for choosing PayQuic - your quick airtime purchase center. +PayQuic Team +
+
+ +
+ + \ No newline at end of file diff --git a/coregrade/email/start_losspass.mailfile b/coregrade/email/start_losspass.mailfile new file mode 100644 index 0000000..6147210 --- /dev/null +++ b/coregrade/email/start_losspass.mailfile @@ -0,0 +1,53 @@ +To: {{email}} +Subject: PayQuic - Password Reset for {{email}} + + + + +
+
+
+
+
+
+		
+							
+
+		
+							
+
+	
+							
+
+		
+							
+	         
+
+
PayQuic
+Dear {{firstname}} +
+We have initiated your password reset process as requested as by you on {{lost_added}}: +
+ + + + +
Click the linkhttps://{{site}}/creset.html?rlink={{reset_link}}
Link will expire{{expire}}
+
+
+If it was not at your request, then please contact PayQuic support immediately. + +For further support go to our website at www.PayQuic.com or call 08188697770 between the hours of 10:00 AM and 5:00 PM. +Thank you for choosing PayQuic. +PayQuic Team. + +
+
+ +
+ + + + + + \ No newline at end of file diff --git a/coregrade/email/test.mailfile b/coregrade/email/test.mailfile new file mode 100644 index 0000000..c90cd34 --- /dev/null +++ b/coregrade/email/test.mailfile @@ -0,0 +1,136 @@ +To: {{email}} +Subject: JubaBox-Welcome to JubaBox + + + +
+When space travel became a profitable enterprise due to
+asteroid mining and production in a vacuum-environment, it
+took no time at all for humanity to settle down on most of the
+planets and moons of our solar system. The ensuing economic
+boom allowed for great advances in technological research. Soon it
+became possible to travel vast distances in space. In the beginning,
+before warp (space-bending) technology, the distance between two
+star systems seemed an unconquerable obstacle. Later, jump gates,
+merging gravity with negative energy, created stable wormholes
+which made travel between two distant places of space feasible
+within moments. Humanity swarmed out to distant star systems at
+an increasing rate.
+The next breakthrough was the development of jump drives based
+on warp technology. The early versions of jump drives were only
+capable of handling short distances, but later it became possible to
+jump between star systems without the need for jump gates. This
+enabled human expansion to spread across the universe like a viral
+outbreak. Soon, human settlements appeared in hundreds of star
+systems, dozens of which grew into huge colonies. Unfortunately,
+the process of expansion became more and more difficult due to
+bureaucracy. Almost every star system within jump range was now
+sold out before the actual colonization took place. Many had to wait
+years for their chance at a new home on a new world.
+This all changed suddenly when a new, natural wormhole was
+discovered near the Canopus system. Although this phenomena had
+already been proven to exist, this was the first occasion such a
+miracle had been found. The probes sent into the wormhole showed
+that the passage through it was stable, and that a new galaxy awaited
+explorers on the other side. Speculation was endless. This could be a
+galaxy far from our Milky Way, a galaxy clear across the universe,
+maybe another dimension, or even a parallel universe.
+The wormhole was called EVE, because new worlds meant new
+beginnings for many. A decision was made to build jump gates on
+both sides of EVE, but travel would be restricted only to special,
+reinforced ships fit to travel through the wormhole. Then came the
+news that scientists predicted EVE would close within a few
+decades. To maximize the opportunities EVE offered, people and
+equipment were transported to the other side and bases were
+established in the new system.
+The system on the other side of EVE was appropriately dubbed
+New Eden. The two gates built on either side of EVE had to be
+huge, since the nature of the wormhole was rather unpredictable.
+These were the greatest structures mankind had ever built. It took
+two hundred years even with the new, greater economic potential of
+humanity to construct them. New Eden was declared free for
+everyone who could venture there. Those who reached unclaimed
+spots first got the right to build a base there. Hundreds of
+companies started their own exploration and colonizing ventures to
+the new worlds as soon as the gates opened.
+Although EVE closed while construction of New Eden was still in
+progress, the gates remained operational, but after 70 years of
+flawless operation, tragedy struck. An unexplained phenomenon
+destroyed the gates and caused a severe magneto-gravitational
+anomaly. The phenomenon made the gates useless, but, worse, it
+collapsed the fragile stability of the newly prospering society in New
+Eden. The EVE gates still exist, but ships daring to fly close to them
+are destroyed by the harmful gravitational storms.
+The effect of this catastrophe was instant and dramatic. Every
+settlement that was dependent on the highly developed industry of
+New Eden or on the Old World, found itself isolated. Most of the
+colonies, due to their relative newness, were not yet self-sustainable.
+The lack of oxygen, food and water sentenced many of the colonies
+to extinction. Those few settlements which survived slowly lost their
+knowledge and ability to produce hi-tech industry, because they
+lacked the tools or equipment to sustain it.
+The surviving enclaves lived separately from each other for eons.
+As time passed, environmental influences caused minor changes in
+their appearance and made them different from each other.
+Eventually, the survivors reclaimed space travel and reentered the
+cosmos of New Eden.
+The world of EVE is inhabited by five
+major races: Amarr, Caldari, Minmatar,
+Gallente and Jove. All of these races are of
+human origin; their ancestors entered this little
+part of the universe thousands of years ago
+through the natural wormhole. Though most
+of the first settlements collapsed when the
+wormhole suddenly closed, a few survived.
+Today.s races are the descendants of those scattered colonies.
+The largest of the five main empires, the Amarr Empire is a
+sprawling patchwork of feudal-like provinces held together by the
+might of the Emperor. spanning 40% of the inhabited solar
+systems. Religion has always played a big part in Amarrian politics
+and the Amarrians believe they are the rightful masters of the
+universe, souring their relations with their neighbours. Another
+source of ill-feeling on the part of the other empires is the fact that
+the Amarrians embrace slavery. The Amarr Emperor is the head of a
+ritualistic, authoritarian imperial state, and below him are the Five
+Heirs, the heads of the five royal families from which a new
+emperor is chosen. The Emperor.s authority is unquestioned and
+absolute, but the archaic and bureaucratic system of government
+makes it difficult for him to exert his rule unless directly in person.
+Otherwise, the Five Heirs rule in his name, dividing the huge
+empire between them. The Emperor and the Five Heirs can expect
+to live for at least 500 years. Extensive cyber-implants keep their
+frail bodies alive, even when their organs begin to fail. These cyber
+enhancements date back many millennia, and have become a
+symbol of royal divinity in the eyes of the Amarrians.
+Always a deeply religious people, religion remains of great
+importance to every Amarrian, a fervour which, at various times,
+has been responsible both for great good and great evil. Shortly after
+recovering from the closure of EVE, they began to expand their
+realm at the expense of neighbouring states. The nations they
+conquered were enslaved, a practice justified by their religion. Ever
+since, the Amarrians have enslaved every nation and race they have
+encountered and today slavery is an essential part of Amarr society.
+This has, of course, tainted their relations with other races,
+especially the individualistic Gallenteans.
+The Amarrians were the first of the races in EVE to re-discover
+warp technology, notably jump gate technology. After accomplishing
+this more than 2,000 years ago, they immediately began expanding to
+nearby solar systems, slowly building up their empire in the process.
+On the way, they encountered two human races, both of whom
+suffered the fate of being enslaved by the far more powerful
+Amarrians. In recent years however, the Amarrians have begun to run
+into serious opposition. First they met the Gallente Federation.
+Although smaller, the Amarrians soon found the economic and
+military might of the Gallenteans to be a match for their own.
+Soon after, the Jovians arrived on the scene and the Amarrians
+made a futile attempt to subjugate them, resulting in a humiliating
+defeat. To make matters worse, the Minmatars, enslaved for centuries
+by the Amarrians, used the opportunity to rebel against their masters.
+Since these fateful events two centuries ago, the Amarrians have
+learned restraint. They have slowed down their expansion and are less
+forceful in their dealings with other races, but still view themselves as
+the most powerful race in EVE, if only because of their sheer numbers.
+
+ + + diff --git a/coregrade/email/topup_bonus_completed-bak.mailfile b/coregrade/email/topup_bonus_completed-bak.mailfile new file mode 100644 index 0000000..dce2b47 --- /dev/null +++ b/coregrade/email/topup_bonus_completed-bak.mailfile @@ -0,0 +1,43 @@ +To: {{email}} +Subject: PayQuic - We have Completed Your Bonus TopUp of {{recipient_no}} with {{amount2}} Naira + + + + +
+
+
+
+Dear {{firstname}} {{lastname}}
+							
+
+
+ 
+In fulfillment of our airtime gift offer, we have just credited your mobile number {{recipient_no}} with N{{amount2}}.
+Thank you for using PayQuic and come back and shop soon.
+
+							
+
+
+ 
+You can add balance to your PayQuic account, using your debit card, that way your subsequent transactions go even faster. 
+
+							
+
+
+Tell your friends about PayQuic. It's quick and easy to use. To buy airtime now, click here.
+
+PayQuic Team 
+
+							
+
+
PayQuic
+
+ +
+ + diff --git a/coregrade/email/topup_bonus_completed.mailfile b/coregrade/email/topup_bonus_completed.mailfile new file mode 100644 index 0000000..53dae43 --- /dev/null +++ b/coregrade/email/topup_bonus_completed.mailfile @@ -0,0 +1,49 @@ +To: {{email}} +Subject: PayQuic - We have Completed Your Bonus TopUp of {{recipient_no}} with {{amount2}} Naira + + + + +
+
+
+
+		
+							
+
+		
+							
+
+
+		
+							
+
+
+
+
+		
+							
+	         
+
+
PayQuic
+Dear {{firstname}} {{lastname}} +
+ +In fulfillment of our airtime gift offer, we have just credited your mobile number {{recipient_no}} with N{{amount2}}. +Thank you for using PayQuic and come back and shop soon. + +
+ +You can add balance to your PayQuic account, using your debit card, that way your subsequent transactions go even faster. + +
+ Tell your friends about PayQuic. It's quick and easy to use. To buy airtime now, click here. + + PayQuic Team + +
+
+ +
+ + diff --git a/coregrade/email/topup_completed.mailfile b/coregrade/email/topup_completed.mailfile new file mode 100644 index 0000000..9dd4019 --- /dev/null +++ b/coregrade/email/topup_completed.mailfile @@ -0,0 +1,51 @@ +To: {{email}} +Subject: PayQuic - We have Completed Your TopUp of {{recipient_no}} with {{amount2}} Naira + + + + +
+
+
+
+		
+							
+
+		
+							
+
+		
+							
+
+		
+							
+	         
+
+
PayQuic
+Dear {{firstname}} +
+Thank you for using PayQuic. We have completed your top up transaction: +
+ + + + + + +
Date and time :{{trans_date}}
Amount : N{{amount2}}
Recipient : {{recipient_no}}
Order No : {{orderid}}
+
+
+This is your confirmation email that the airtime topup has been completed. We appreciate your business. +For further support go to our website at www.PayQuic.com or call 08188697770 between the hours of 10:00 AM and 5:00 PM. +Thank you for choosing PayQuic. + +
+
+ +
+ + + + + + \ No newline at end of file diff --git a/coregrade/email/topup_payment.mailfile b/coregrade/email/topup_payment.mailfile new file mode 100644 index 0000000..108fa01 --- /dev/null +++ b/coregrade/email/topup_payment.mailfile @@ -0,0 +1,54 @@ +To: {{email}} +Subject: PayQuic - We are Processing Your TopUp of {{recipient_no}} with {{amount2}} Naira + + + + +
+
+
+
+		
+							
+
+		
+							
+
+		
+							
+
+		
+							
+	         
+
+
PayQuic
+Dear {{firstname}} +
+Thank you for using PayQuic TopUp. We have received your request for airtime top up as shown below: +
+ + + + + + + + +
Date and time :{{trans_date}}
Amount : N{{amount2}}
Recipient : {{recipient_no}}
Order No : {{orderid}}
Payment Reference : {{payref}}
+
+
+You will receive a confirmation email as soon as the top up has been delivered. +For further support go to our website at www.PayQuic.com or call 08188697770 between the hours of 10:00 AM and 5:00 PM. +Thank you for choosing PayQuic. +PayQuic Team. + +
+
+ +
+ + + + + + \ No newline at end of file diff --git a/coregrade/email/topup_payment_alert.mailfile b/coregrade/email/topup_payment_alert.mailfile new file mode 100644 index 0000000..976f1b5 --- /dev/null +++ b/coregrade/email/topup_payment_alert.mailfile @@ -0,0 +1,60 @@ +To: {{email}} +Subject: PayQuic Alert Processing TopUp Payment Order No {{orderid}} of {{recipient_no}} with {{amount2}} Naira + + + + +
+
+
+
+
+
+		
+							
+
+	         
+
+
PayQuic
+ + + + + + + + + + + +
Firstname :{{firstname}}
Lastname :{{lastname}}
Email :{{email2}}
Date and time :{{trans_date}}
Amount : N{{amount2}}
Recipient : {{recipient_no}}
Order No : {{orderid}}
Payment Reference : {{payref}}
+
+
+ +
+ IP - Intelligence + + + + + + + + + + + + + + + + +
VARVALUE
IP{{loc}}
country_code{{country_code}}
country_name{{country_name}}
continent_code{{continent_code}}
continent_name{{continent_name}}
+ +
+ + + + + + \ No newline at end of file diff --git a/coregrade/email/virtualtopup.mailfile b/coregrade/email/virtualtopup.mailfile new file mode 100644 index 0000000..ff9fdcb --- /dev/null +++ b/coregrade/email/virtualtopup.mailfile @@ -0,0 +1,136 @@ +To: {{email}} +Subject: PayQuic Transaction Notification Airtime Top up + + + + + +
+
+	
+		
+			
+				
+				
+				
+			
+		
+		
+
+		            		
+						
+										
+						
+		            		
+						
+										
+										
+							
+						
+										
+						
+				    		
+						
+										
+						
+					
+						
+						
+										
+						
+				    		
+						
+						
+						
+										
+						
+						
+										
+						
+				    		
+						
+										
+						
+																		  
+				    		
+						
+										
+						
+					
+				     		
+						
+										
+					
+					
+							
+						
+										
+					
+					  		
+						
+						
+													
+	  			    		
+						
+										
+						
+		  			    		
+						
+										
+						
+	   
+	 
+		
+	
Payment Mode{{paymode}}
Delivery Status{{completed}} - PaymentCode : {{paymentcode}}, ResponseCode : {{responsecode}}, TransRef: {{transactionref}}
Order Number{{orderid}}
Date{{added}}
Order Number{{orderid}}

Customer

Firstname{{firstname}}
Lastname{{lastname}}
Email{{email2}}
Balance{{balance2}} Naira
Country{{country}} Naira

Recipient

Recipient{{recipient_no}}
Amount{{amount2}} Naira
+
+ +
+ IP - Intelligence + + + + + + + + + + + + + + + + +
VARVALUE
IP{{loc}}
country_code{{country_code}}
country_name{{country_name}}
continent_code{{continent_code}}
continent_name{{continent_name}}
+ +Note:
+ + + + + + + + + + + + + + + + + +

You can get here with a card only if we have taken payment

Delivery status blank - we did not deliver the aritime successfully

If the payment is balance , we automatically return the payment , with card we have to handle this

+ +
+ + + diff --git a/coregrade/email/welcome.mailfile b/coregrade/email/welcome.mailfile new file mode 100644 index 0000000..3b01688 --- /dev/null +++ b/coregrade/email/welcome.mailfile @@ -0,0 +1,48 @@ +To: {{email}} +Subject: Welcome to PayQuic + + + + +
+
+		
+
+		
+        
+				
+									
+		
+				
+									
+		
+				
+									
+		
+				
+									
+			         
+		
+		
PayQuic
+ Dear {{firstname}}, {{lastname}} +
+ Welcome to PayQuic. You have successfully signed up for a PayQuic account. + From your account you can: +
+   *Buy airtime instantly to specified recipients +   *Add balance to your account for even quicker airtime refills in the future +   *Use different funding options - e.g debit cards, balance, bank transfer etc. +   *Manage and track transactions. You can also view transaction history including purchases, bill payment and funding history. +   *Pay for services and pay bills for yourself and other recipients. +
+ Use your username, {{email2}}, and the password you provided at account creation to login to PayQuic portal anytime. + For further support go to our website at www.payquic.com or call 08188697770 between the hours of 10:00 AM and 5:00 PM EST + Thank you for choosing PayQuic - your quick airtime purchase center. + PayQuic Team +
+
+ +
+ + + diff --git a/coregrade/etc/coregrade_api.conf b/coregrade/etc/coregrade_api.conf new file mode 100644 index 0000000..05e4ec3 --- /dev/null +++ b/coregrade/etc/coregrade_api.conf @@ -0,0 +1,81 @@ +# COREGRADE API configuration file +version = "1.0"; + +system: +{ + live = "0"; +}; + + +database: +{ + host = "127.0.0.1"; + name = "coregrade_test"; + user = "coregrade"; + pass = "coregrade"; + port = 5432; +}; + +mailsend: +{ + from = "demo@coregrade.com"; + server = "virtualmail.chiefsoft.com"; + domain = "coregrade.com"; + user = "demo@coregrade.com"; + pass = "demo001"; + name = "CoreGrade Support"; +}; + + +interswitch: +{ + soap_endpoint = "https://stageserv.interswitchng.com/uat_quicktellerservice/quickteller.svc"; + entity_code = "MBA"; + terminal_id = "3MBA0001"; + master_key = "2D1A2518252A1B1A2A23281F242518212123221D272C1C26"; + pin = "2009"; + prefix = "1176"; + keyfile = "/etc/paylid/paylid_test.pem"; + password = "password"; + cacert = "/etc/paylid/stageserv.interswitchng.com.pem"; + version = 0; +}; + +interswitch_orig: +{ + soap_endpoint = "http://stageserv.interswitchng.com/uat_quicktellerservice/quickteller.svc"; + entity_code = "PLI"; + terminal_id = "3PLI0001"; + master_key = "2D1A2518252A1B1A2A23281F242518212123221D272C1C26"; + pin = "2009"; + keyfile = "/etc/paylid/paylid.pem"; + password = "password"; + cacert = "/etc/paylid/services.interswitchng.com.pem"; + version = 0; +}; + +paylid: +{ + soap_endpoint = "https://oameye.works.storeface.com/rsl/service.php"; + terminal_id = "INTERRA001"; + master_key = "29832d0e1a51eff1cb673feda90293abec053aa5b81f9649d9ed53de86f79ed7"; +}; + +transnotif: +{ +topupemail = "ses66181@gmail.com,oladeji@gmail.com,ameye@chiefsoft.com"; +topalert = "demo@coregrade.com"; +}; + +webpay: +{ + url = "https://stageserv.interswitchng.com/test_paydirect/pay"; + status_url = "https://stageserv.interswitchng.com/test_paydirect/api/v1/gettransaction.json"; + product_id= "4012"; + pay_item_id = "4012"; + mac = "CAEEA12CBE1121AE6E9CB6BC87F9B8B47DECD10668B703B7CC0CEDC90DAE30DADC9548541373FF554DAFD18A7ECED00465195E688159A3955E5B38764A341722"; + return_url = "tranx_noti.php"; + topup_return_url = "tranx_topup.php"; +}; + + diff --git a/coregrade/src/.deps b/coregrade/src/.deps new file mode 100644 index 0000000..e69de29 diff --git a/coregrade/src/Makefile b/coregrade/src/Makefile new file mode 100644 index 0000000..9e009d4 --- /dev/null +++ b/coregrade/src/Makefile @@ -0,0 +1,246 @@ +srcdir = /home/oameye/coregrade/coregrade/src +builddir = /home/oameye/coregrade/coregrade/src +top_srcdir = /home/oameye/coregrade/coregrade/src +top_builddir = /home/oameye/coregrade/coregrade/src +EGREP = /bin/grep -E +SED = /bin/sed +CONFIGURE_COMMAND = './configure' '--enable-coregrade_api' +CONFIGURE_OPTIONS = '--enable-coregrade_api' +SHLIB_SUFFIX_NAME = so +SHLIB_DL_SUFFIX_NAME = so +ZEND_EXT_TYPE = zend_extension +RE2C = exit 0; +AWK = gawk +COREGRADE_API_SHARED_LIBADD = -Wl,-rpath,/usr/lib64 -L/usr/lib64 -lpq -lstdc++ -lcurl -lconfig++ -lgsoapssl++ -lssl -lz +shared_objects_coregrade_api = core/XmlElements.lo core/XmlParser.lo core/cfg.lo core/cgi.lo core/clog.lo core/coregrade.lo core/coregrade_api.lo core/cvariables.lo core/exceptions.lo core/hmac_sha2.lo core/input.lo core/list.lo core/pgsql.lo core/pgsql_wrapper.lo core/safestring.lo core/sha2.lo core/sha512.lo core/smtp.lo core/timer.lo core/util.lo core/vars.lo shared_tool/account.lo shared_tool/coregrade_api_main.lo shared_tool/email.lo shared_tool/envC.lo shared_tool/groups.lo shared_tool/interswitch.lo shared_tool/interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.lo shared_tool/interswitchC.lo shared_tool/interswitch_sendmoney.lo shared_tool/namespaces.lo shared_tool/paylid.lo shared_tool/paylidC.lo shared_tool/paylidpaylidwsdlBindingProxy.lo shared_tool/storeface.lo shared_tool/topups.lo +PHP_PECL_EXTENSION = coregrade_api +PHP_MODULES = $(phplibdir)/coregrade_api.la +PHP_ZEND_EX = +all_targets = $(PHP_MODULES) $(PHP_ZEND_EX) +install_targets = install-modules install-headers +prefix = /usr +exec_prefix = $(prefix) +libdir = ${exec_prefix}/lib +prefix = /usr +phplibdir = /home/oameye/coregrade/coregrade/src/modules +phpincludedir = /usr/include/php +CC = cc +CFLAGS = -g -O2 +CFLAGS_CLEAN = $(CFLAGS) +CPP = cc -E +CPPFLAGS = -DHAVE_CONFIG_H +CXX = g++ +CXXFLAGS = -g -O2 +CXXFLAGS_CLEAN = $(CXXFLAGS) +EXTENSION_DIR = /usr/lib64/php/modules +PHP_EXECUTABLE = /usr/bin/php +EXTRA_LDFLAGS = +EXTRA_LIBS = +INCLUDES = -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -I/usr/include/pgsql +LFLAGS = +LDFLAGS = -Wl,-rpath,/home/oameye/coregrade/coregrade/src/libconfig-1.3.1/.libs/ -L/home/oameye/coregrade/coregrade/src/libconfig-1.3.1/.libs/ +SHARED_LIBTOOL = +LIBTOOL = $(SHELL) $(top_builddir)/libtool +SHELL = /bin/sh +INSTALL_HEADERS = +mkinstalldirs = $(top_srcdir)/build/shtool mkdir -p +INSTALL = $(top_srcdir)/build/shtool install -c +INSTALL_DATA = $(INSTALL) -m 644 + +DEFS = -DPHP_ATOM_INC -I$(top_builddir)/include -I$(top_builddir)/main -I$(top_srcdir) +COMMON_FLAGS = $(DEFS) $(INCLUDES) $(EXTRA_INCLUDES) $(CPPFLAGS) $(PHP_FRAMEWORKPATH) + +all: $(all_targets) + @echo + @echo "Build complete." + @echo "Don't forget to run 'make test'." + @echo + +build-modules: $(PHP_MODULES) $(PHP_ZEND_EX) + +build-binaries: $(PHP_BINARIES) + +libphp$(PHP_MAJOR_VERSION).la: $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS) + $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -rpath $(phptempdir) $(EXTRA_LDFLAGS) $(LDFLAGS) $(PHP_RPATHS) $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS) $(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) -o $@ + -@$(LIBTOOL) --silent --mode=install cp $@ $(phptempdir)/$@ >/dev/null 2>&1 + +libs/libphp$(PHP_MAJOR_VERSION).bundle: $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS) + $(CC) $(MH_BUNDLE_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) $(EXTRA_LDFLAGS) $(PHP_GLOBAL_OBJS:.lo=.o) $(PHP_SAPI_OBJS:.lo=.o) $(PHP_FRAMEWORKS) $(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) -o $@ && cp $@ libs/libphp$(PHP_MAJOR_VERSION).so + +install: $(all_targets) $(install_targets) + +install-sapi: $(OVERALL_TARGET) + @echo "Installing PHP SAPI module: $(PHP_SAPI)" + -@$(mkinstalldirs) $(INSTALL_ROOT)$(bindir) + -@if test ! -r $(phptempdir)/libphp$(PHP_MAJOR_VERSION).$(SHLIB_DL_SUFFIX_NAME); then \ + for i in 0.0.0 0.0 0; do \ + if test -r $(phptempdir)/libphp$(PHP_MAJOR_VERSION).$(SHLIB_DL_SUFFIX_NAME).$$i; then \ + $(LN_S) $(phptempdir)/libphp$(PHP_MAJOR_VERSION).$(SHLIB_DL_SUFFIX_NAME).$$i $(phptempdir)/libphp$(PHP_MAJOR_VERSION).$(SHLIB_DL_SUFFIX_NAME); \ + break; \ + fi; \ + done; \ + fi + @$(INSTALL_IT) + +install-binaries: build-binaries $(install_binary_targets) + +install-modules: build-modules + @test -d modules && \ + $(mkinstalldirs) $(INSTALL_ROOT)$(EXTENSION_DIR) + @echo "Installing shared extensions: $(INSTALL_ROOT)$(EXTENSION_DIR)/" + @rm -f modules/*.la >/dev/null 2>&1 + @$(INSTALL) modules/* $(INSTALL_ROOT)$(EXTENSION_DIR) + +install-headers: + -@if test "$(INSTALL_HEADERS)"; then \ + for i in `echo $(INSTALL_HEADERS)`; do \ + i=`$(top_srcdir)/build/shtool path -d $$i`; \ + paths="$$paths $(INSTALL_ROOT)$(phpincludedir)/$$i"; \ + done; \ + $(mkinstalldirs) $$paths && \ + echo "Installing header files: $(INSTALL_ROOT)$(phpincludedir)/" && \ + for i in `echo $(INSTALL_HEADERS)`; do \ + if test "$(PHP_PECL_EXTENSION)"; then \ + src=`echo $$i | $(SED) -e "s#ext/$(PHP_PECL_EXTENSION)/##g"`; \ + else \ + src=$$i; \ + fi; \ + if test -f "$(top_srcdir)/$$src"; then \ + $(INSTALL_DATA) $(top_srcdir)/$$src $(INSTALL_ROOT)$(phpincludedir)/$$i; \ + elif test -f "$(top_builddir)/$$src"; then \ + $(INSTALL_DATA) $(top_builddir)/$$src $(INSTALL_ROOT)$(phpincludedir)/$$i; \ + else \ + (cd $(top_srcdir)/$$src && $(INSTALL_DATA) *.h $(INSTALL_ROOT)$(phpincludedir)/$$i; \ + cd $(top_builddir)/$$src && $(INSTALL_DATA) *.h $(INSTALL_ROOT)$(phpincludedir)/$$i) 2>/dev/null || true; \ + fi \ + done; \ + fi + +PHP_TEST_SETTINGS = -d 'open_basedir=' -d 'output_buffering=0' -d 'memory_limit=-1' +PHP_TEST_SHARED_EXTENSIONS = ` \ + if test "x$(PHP_MODULES)" != "x"; then \ + for i in $(PHP_MODULES)""; do \ + . $$i; $(top_srcdir)/build/shtool echo -n -- " -d extension=$$dlname"; \ + done; \ + fi; \ + if test "x$(PHP_ZEND_EX)" != "x"; then \ + for i in $(PHP_ZEND_EX)""; do \ + . $$i; $(top_srcdir)/build/shtool echo -n -- " -d $(ZEND_EXT_TYPE)=$(top_builddir)/modules/$$dlname"; \ + done; \ + fi` +PHP_DEPRECATED_DIRECTIVES_REGEX = '^(magic_quotes_(gpc|runtime|sybase)?|(zend_)?extension(_debug)?(_ts)?)[\t\ ]*=' + +test: all + -@if test ! -z "$(PHP_EXECUTABLE)" && test -x "$(PHP_EXECUTABLE)"; then \ + INI_FILE=`$(PHP_EXECUTABLE) -d 'display_errors=stderr' -r 'echo php_ini_loaded_file();' 2> /dev/null`; \ + if test "$$INI_FILE"; then \ + $(EGREP) -h -v $(PHP_DEPRECATED_DIRECTIVES_REGEX) "$$INI_FILE" > $(top_builddir)/tmp-php.ini; \ + else \ + echo > $(top_builddir)/tmp-php.ini; \ + fi; \ + INI_SCANNED_PATH=`$(PHP_EXECUTABLE) -d 'display_errors=stderr' -r '$$a = explode(",\n", trim(php_ini_scanned_files())); echo $$a[0];' 2> /dev/null`; \ + if test "$$INI_SCANNED_PATH"; then \ + INI_SCANNED_PATH=`$(top_srcdir)/build/shtool path -d $$INI_SCANNED_PATH`; \ + $(EGREP) -h -v $(PHP_DEPRECATED_DIRECTIVES_REGEX) "$$INI_SCANNED_PATH"/*.ini >> $(top_builddir)/tmp-php.ini; \ + fi; \ + TEST_PHP_EXECUTABLE=$(PHP_EXECUTABLE) \ + TEST_PHP_SRCDIR=$(top_srcdir) \ + CC="$(CC)" \ + $(PHP_EXECUTABLE) -n -c $(top_builddir)/tmp-php.ini $(PHP_TEST_SETTINGS) $(top_srcdir)/run-tests.php -n -c $(top_builddir)/tmp-php.ini -d extension_dir=$(top_builddir)/modules/ $(PHP_TEST_SHARED_EXTENSIONS) $(TESTS); \ + rm $(top_builddir)/tmp-php.ini; \ + else \ + echo "ERROR: Cannot run tests without CLI sapi."; \ + fi + +clean: + find . -name \*.gcno -o -name \*.gcda | xargs rm -f + find . -name \*.lo -o -name \*.o | xargs rm -f + find . -name \*.la -o -name \*.a | xargs rm -f + find . -name \*.so | xargs rm -f + find . -name .libs -a -type d|xargs rm -rf + rm -f libphp$(PHP_MAJOR_VERSION).la $(SAPI_CLI_PATH) $(OVERALL_TARGET) modules/* libs/* + +distclean: clean + rm -f Makefile config.cache config.log config.status Makefile.objects Makefile.fragments libtool main/php_config.h stamp-h sapi/apache/libphp$(PHP_MAJOR_VERSION).module buildmk.stamp + $(EGREP) define'.*include/php' $(top_srcdir)/configure | $(SED) 's/.*>//'|xargs rm -f + +.PHONY: all clean install distclean test +.NOEXPORT: +core/XmlElements.lo: /home/oameye/coregrade/coregrade/src/core/XmlElements.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/XmlElements.cc -o core/XmlElements.lo +core/XmlParser.lo: /home/oameye/coregrade/coregrade/src/core/XmlParser.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/XmlParser.cc -o core/XmlParser.lo +core/cfg.lo: /home/oameye/coregrade/coregrade/src/core/cfg.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/cfg.cc -o core/cfg.lo +core/cgi.lo: /home/oameye/coregrade/coregrade/src/core/cgi.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/cgi.cc -o core/cgi.lo +core/clog.lo: /home/oameye/coregrade/coregrade/src/core/clog.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/clog.cc -o core/clog.lo +core/coregrade.lo: /home/oameye/coregrade/coregrade/src/core/coregrade.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/coregrade.cc -o core/coregrade.lo +core/coregrade_api.lo: /home/oameye/coregrade/coregrade/src/core/coregrade_api.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/coregrade_api.cc -o core/coregrade_api.lo +core/cvariables.lo: /home/oameye/coregrade/coregrade/src/core/cvariables.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/cvariables.cc -o core/cvariables.lo +core/exceptions.lo: /home/oameye/coregrade/coregrade/src/core/exceptions.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/exceptions.cc -o core/exceptions.lo +core/hmac_sha2.lo: /home/oameye/coregrade/coregrade/src/core/hmac_sha2.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/hmac_sha2.cc -o core/hmac_sha2.lo +core/input.lo: /home/oameye/coregrade/coregrade/src/core/input.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/input.cc -o core/input.lo +core/list.lo: /home/oameye/coregrade/coregrade/src/core/list.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/list.cc -o core/list.lo +core/pgsql.lo: /home/oameye/coregrade/coregrade/src/core/pgsql.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/pgsql.cc -o core/pgsql.lo +core/pgsql_wrapper.lo: /home/oameye/coregrade/coregrade/src/core/pgsql_wrapper.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/pgsql_wrapper.cc -o core/pgsql_wrapper.lo +core/safestring.lo: /home/oameye/coregrade/coregrade/src/core/safestring.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/safestring.cc -o core/safestring.lo +core/sha2.lo: /home/oameye/coregrade/coregrade/src/core/sha2.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/sha2.cc -o core/sha2.lo +core/sha512.lo: /home/oameye/coregrade/coregrade/src/core/sha512.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/sha512.cc -o core/sha512.lo +core/smtp.lo: /home/oameye/coregrade/coregrade/src/core/smtp.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/smtp.cc -o core/smtp.lo +core/timer.lo: /home/oameye/coregrade/coregrade/src/core/timer.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/timer.cc -o core/timer.lo +core/util.lo: /home/oameye/coregrade/coregrade/src/core/util.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/util.cc -o core/util.lo +core/vars.lo: /home/oameye/coregrade/coregrade/src/core/vars.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/vars.cc -o core/vars.lo +shared_tool/account.lo: /home/oameye/coregrade/coregrade/src/shared_tool/account.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/account.cc -o shared_tool/account.lo +shared_tool/coregrade_api_main.lo: /home/oameye/coregrade/coregrade/src/shared_tool/coregrade_api_main.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/coregrade_api_main.cc -o shared_tool/coregrade_api_main.lo +shared_tool/email.lo: /home/oameye/coregrade/coregrade/src/shared_tool/email.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/email.cc -o shared_tool/email.lo +shared_tool/envC.lo: /home/oameye/coregrade/coregrade/src/shared_tool/envC.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/envC.cc -o shared_tool/envC.lo +shared_tool/groups.lo: /home/oameye/coregrade/coregrade/src/shared_tool/groups.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/groups.cc -o shared_tool/groups.lo +shared_tool/interswitch.lo: /home/oameye/coregrade/coregrade/src/shared_tool/interswitch.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/interswitch.cc -o shared_tool/interswitch.lo +shared_tool/interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.lo: /home/oameye/coregrade/coregrade/src/shared_tool/interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.cc -o shared_tool/interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.lo +shared_tool/interswitchC.lo: /home/oameye/coregrade/coregrade/src/shared_tool/interswitchC.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/interswitchC.cc -o shared_tool/interswitchC.lo +shared_tool/interswitch_sendmoney.lo: /home/oameye/coregrade/coregrade/src/shared_tool/interswitch_sendmoney.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/interswitch_sendmoney.cc -o shared_tool/interswitch_sendmoney.lo +shared_tool/namespaces.lo: /home/oameye/coregrade/coregrade/src/shared_tool/namespaces.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/namespaces.cc -o shared_tool/namespaces.lo +shared_tool/paylid.lo: /home/oameye/coregrade/coregrade/src/shared_tool/paylid.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/paylid.cc -o shared_tool/paylid.lo +shared_tool/paylidC.lo: /home/oameye/coregrade/coregrade/src/shared_tool/paylidC.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/paylidC.cc -o shared_tool/paylidC.lo +shared_tool/paylidpaylidwsdlBindingProxy.lo: /home/oameye/coregrade/coregrade/src/shared_tool/paylidpaylidwsdlBindingProxy.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/paylidpaylidwsdlBindingProxy.cc -o shared_tool/paylidpaylidwsdlBindingProxy.lo +shared_tool/storeface.lo: /home/oameye/coregrade/coregrade/src/shared_tool/storeface.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/storeface.cc -o shared_tool/storeface.lo +shared_tool/topups.lo: /home/oameye/coregrade/coregrade/src/shared_tool/topups.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/topups.cc -o shared_tool/topups.lo +$(phplibdir)/coregrade_api.la: ./coregrade_api.la + $(LIBTOOL) --mode=install cp ./coregrade_api.la $(phplibdir) + +./coregrade_api.la: $(shared_objects_coregrade_api) $(COREGRADE_API_SHARED_DEPENDENCIES) + $(LIBTOOL) --mode=link $(CC) $(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) -o $@ -export-dynamic -avoid-version -prefer-pic -module -rpath $(phplibdir) $(EXTRA_LDFLAGS) $(shared_objects_coregrade_api) $(COREGRADE_API_SHARED_LIBADD) + diff --git a/coregrade/src/Makefile.fragments b/coregrade/src/Makefile.fragments new file mode 100644 index 0000000..e69de29 diff --git a/coregrade/src/Makefile.global b/coregrade/src/Makefile.global new file mode 100644 index 0000000..b30c318 --- /dev/null +++ b/coregrade/src/Makefile.global @@ -0,0 +1,123 @@ +mkinstalldirs = $(top_srcdir)/build/shtool mkdir -p +INSTALL = $(top_srcdir)/build/shtool install -c +INSTALL_DATA = $(INSTALL) -m 644 + +DEFS = -DPHP_ATOM_INC -I$(top_builddir)/include -I$(top_builddir)/main -I$(top_srcdir) +COMMON_FLAGS = $(DEFS) $(INCLUDES) $(EXTRA_INCLUDES) $(CPPFLAGS) $(PHP_FRAMEWORKPATH) + +all: $(all_targets) + @echo + @echo "Build complete." + @echo "Don't forget to run 'make test'." + @echo + +build-modules: $(PHP_MODULES) $(PHP_ZEND_EX) + +build-binaries: $(PHP_BINARIES) + +libphp$(PHP_MAJOR_VERSION).la: $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS) + $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -rpath $(phptempdir) $(EXTRA_LDFLAGS) $(LDFLAGS) $(PHP_RPATHS) $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS) $(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) -o $@ + -@$(LIBTOOL) --silent --mode=install cp $@ $(phptempdir)/$@ >/dev/null 2>&1 + +libs/libphp$(PHP_MAJOR_VERSION).bundle: $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS) + $(CC) $(MH_BUNDLE_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) $(EXTRA_LDFLAGS) $(PHP_GLOBAL_OBJS:.lo=.o) $(PHP_SAPI_OBJS:.lo=.o) $(PHP_FRAMEWORKS) $(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) -o $@ && cp $@ libs/libphp$(PHP_MAJOR_VERSION).so + +install: $(all_targets) $(install_targets) + +install-sapi: $(OVERALL_TARGET) + @echo "Installing PHP SAPI module: $(PHP_SAPI)" + -@$(mkinstalldirs) $(INSTALL_ROOT)$(bindir) + -@if test ! -r $(phptempdir)/libphp$(PHP_MAJOR_VERSION).$(SHLIB_DL_SUFFIX_NAME); then \ + for i in 0.0.0 0.0 0; do \ + if test -r $(phptempdir)/libphp$(PHP_MAJOR_VERSION).$(SHLIB_DL_SUFFIX_NAME).$$i; then \ + $(LN_S) $(phptempdir)/libphp$(PHP_MAJOR_VERSION).$(SHLIB_DL_SUFFIX_NAME).$$i $(phptempdir)/libphp$(PHP_MAJOR_VERSION).$(SHLIB_DL_SUFFIX_NAME); \ + break; \ + fi; \ + done; \ + fi + @$(INSTALL_IT) + +install-binaries: build-binaries $(install_binary_targets) + +install-modules: build-modules + @test -d modules && \ + $(mkinstalldirs) $(INSTALL_ROOT)$(EXTENSION_DIR) + @echo "Installing shared extensions: $(INSTALL_ROOT)$(EXTENSION_DIR)/" + @rm -f modules/*.la >/dev/null 2>&1 + @$(INSTALL) modules/* $(INSTALL_ROOT)$(EXTENSION_DIR) + +install-headers: + -@if test "$(INSTALL_HEADERS)"; then \ + for i in `echo $(INSTALL_HEADERS)`; do \ + i=`$(top_srcdir)/build/shtool path -d $$i`; \ + paths="$$paths $(INSTALL_ROOT)$(phpincludedir)/$$i"; \ + done; \ + $(mkinstalldirs) $$paths && \ + echo "Installing header files: $(INSTALL_ROOT)$(phpincludedir)/" && \ + for i in `echo $(INSTALL_HEADERS)`; do \ + if test "$(PHP_PECL_EXTENSION)"; then \ + src=`echo $$i | $(SED) -e "s#ext/$(PHP_PECL_EXTENSION)/##g"`; \ + else \ + src=$$i; \ + fi; \ + if test -f "$(top_srcdir)/$$src"; then \ + $(INSTALL_DATA) $(top_srcdir)/$$src $(INSTALL_ROOT)$(phpincludedir)/$$i; \ + elif test -f "$(top_builddir)/$$src"; then \ + $(INSTALL_DATA) $(top_builddir)/$$src $(INSTALL_ROOT)$(phpincludedir)/$$i; \ + else \ + (cd $(top_srcdir)/$$src && $(INSTALL_DATA) *.h $(INSTALL_ROOT)$(phpincludedir)/$$i; \ + cd $(top_builddir)/$$src && $(INSTALL_DATA) *.h $(INSTALL_ROOT)$(phpincludedir)/$$i) 2>/dev/null || true; \ + fi \ + done; \ + fi + +PHP_TEST_SETTINGS = -d 'open_basedir=' -d 'output_buffering=0' -d 'memory_limit=-1' +PHP_TEST_SHARED_EXTENSIONS = ` \ + if test "x$(PHP_MODULES)" != "x"; then \ + for i in $(PHP_MODULES)""; do \ + . $$i; $(top_srcdir)/build/shtool echo -n -- " -d extension=$$dlname"; \ + done; \ + fi; \ + if test "x$(PHP_ZEND_EX)" != "x"; then \ + for i in $(PHP_ZEND_EX)""; do \ + . $$i; $(top_srcdir)/build/shtool echo -n -- " -d $(ZEND_EXT_TYPE)=$(top_builddir)/modules/$$dlname"; \ + done; \ + fi` +PHP_DEPRECATED_DIRECTIVES_REGEX = '^(magic_quotes_(gpc|runtime|sybase)?|(zend_)?extension(_debug)?(_ts)?)[\t\ ]*=' + +test: all + -@if test ! -z "$(PHP_EXECUTABLE)" && test -x "$(PHP_EXECUTABLE)"; then \ + INI_FILE=`$(PHP_EXECUTABLE) -d 'display_errors=stderr' -r 'echo php_ini_loaded_file();' 2> /dev/null`; \ + if test "$$INI_FILE"; then \ + $(EGREP) -h -v $(PHP_DEPRECATED_DIRECTIVES_REGEX) "$$INI_FILE" > $(top_builddir)/tmp-php.ini; \ + else \ + echo > $(top_builddir)/tmp-php.ini; \ + fi; \ + INI_SCANNED_PATH=`$(PHP_EXECUTABLE) -d 'display_errors=stderr' -r '$$a = explode(",\n", trim(php_ini_scanned_files())); echo $$a[0];' 2> /dev/null`; \ + if test "$$INI_SCANNED_PATH"; then \ + INI_SCANNED_PATH=`$(top_srcdir)/build/shtool path -d $$INI_SCANNED_PATH`; \ + $(EGREP) -h -v $(PHP_DEPRECATED_DIRECTIVES_REGEX) "$$INI_SCANNED_PATH"/*.ini >> $(top_builddir)/tmp-php.ini; \ + fi; \ + TEST_PHP_EXECUTABLE=$(PHP_EXECUTABLE) \ + TEST_PHP_SRCDIR=$(top_srcdir) \ + CC="$(CC)" \ + $(PHP_EXECUTABLE) -n -c $(top_builddir)/tmp-php.ini $(PHP_TEST_SETTINGS) $(top_srcdir)/run-tests.php -n -c $(top_builddir)/tmp-php.ini -d extension_dir=$(top_builddir)/modules/ $(PHP_TEST_SHARED_EXTENSIONS) $(TESTS); \ + rm $(top_builddir)/tmp-php.ini; \ + else \ + echo "ERROR: Cannot run tests without CLI sapi."; \ + fi + +clean: + find . -name \*.gcno -o -name \*.gcda | xargs rm -f + find . -name \*.lo -o -name \*.o | xargs rm -f + find . -name \*.la -o -name \*.a | xargs rm -f + find . -name \*.so | xargs rm -f + find . -name .libs -a -type d|xargs rm -rf + rm -f libphp$(PHP_MAJOR_VERSION).la $(SAPI_CLI_PATH) $(OVERALL_TARGET) modules/* libs/* + +distclean: clean + rm -f Makefile config.cache config.log config.status Makefile.objects Makefile.fragments libtool main/php_config.h stamp-h sapi/apache/libphp$(PHP_MAJOR_VERSION).module buildmk.stamp + $(EGREP) define'.*include/php' $(top_srcdir)/configure | $(SED) 's/.*>//'|xargs rm -f + +.PHONY: all clean install distclean test +.NOEXPORT: diff --git a/coregrade/src/Makefile.objects b/coregrade/src/Makefile.objects new file mode 100644 index 0000000..bb33822 --- /dev/null +++ b/coregrade/src/Makefile.objects @@ -0,0 +1,78 @@ +core/XmlElements.lo: /home/oameye/coregrade/coregrade/src/core/XmlElements.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/XmlElements.cc -o core/XmlElements.lo +core/XmlParser.lo: /home/oameye/coregrade/coregrade/src/core/XmlParser.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/XmlParser.cc -o core/XmlParser.lo +core/cfg.lo: /home/oameye/coregrade/coregrade/src/core/cfg.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/cfg.cc -o core/cfg.lo +core/cgi.lo: /home/oameye/coregrade/coregrade/src/core/cgi.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/cgi.cc -o core/cgi.lo +core/clog.lo: /home/oameye/coregrade/coregrade/src/core/clog.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/clog.cc -o core/clog.lo +core/coregrade.lo: /home/oameye/coregrade/coregrade/src/core/coregrade.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/coregrade.cc -o core/coregrade.lo +core/coregrade_api.lo: /home/oameye/coregrade/coregrade/src/core/coregrade_api.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/coregrade_api.cc -o core/coregrade_api.lo +core/cvariables.lo: /home/oameye/coregrade/coregrade/src/core/cvariables.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/cvariables.cc -o core/cvariables.lo +core/exceptions.lo: /home/oameye/coregrade/coregrade/src/core/exceptions.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/exceptions.cc -o core/exceptions.lo +core/hmac_sha2.lo: /home/oameye/coregrade/coregrade/src/core/hmac_sha2.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/hmac_sha2.cc -o core/hmac_sha2.lo +core/input.lo: /home/oameye/coregrade/coregrade/src/core/input.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/input.cc -o core/input.lo +core/list.lo: /home/oameye/coregrade/coregrade/src/core/list.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/list.cc -o core/list.lo +core/pgsql.lo: /home/oameye/coregrade/coregrade/src/core/pgsql.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/pgsql.cc -o core/pgsql.lo +core/pgsql_wrapper.lo: /home/oameye/coregrade/coregrade/src/core/pgsql_wrapper.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/pgsql_wrapper.cc -o core/pgsql_wrapper.lo +core/safestring.lo: /home/oameye/coregrade/coregrade/src/core/safestring.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/safestring.cc -o core/safestring.lo +core/sha2.lo: /home/oameye/coregrade/coregrade/src/core/sha2.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/sha2.cc -o core/sha2.lo +core/sha512.lo: /home/oameye/coregrade/coregrade/src/core/sha512.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/sha512.cc -o core/sha512.lo +core/smtp.lo: /home/oameye/coregrade/coregrade/src/core/smtp.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/smtp.cc -o core/smtp.lo +core/timer.lo: /home/oameye/coregrade/coregrade/src/core/timer.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/timer.cc -o core/timer.lo +core/util.lo: /home/oameye/coregrade/coregrade/src/core/util.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/util.cc -o core/util.lo +core/vars.lo: /home/oameye/coregrade/coregrade/src/core/vars.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/core/vars.cc -o core/vars.lo +shared_tool/account.lo: /home/oameye/coregrade/coregrade/src/shared_tool/account.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/account.cc -o shared_tool/account.lo +shared_tool/coregrade_api_main.lo: /home/oameye/coregrade/coregrade/src/shared_tool/coregrade_api_main.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/coregrade_api_main.cc -o shared_tool/coregrade_api_main.lo +shared_tool/email.lo: /home/oameye/coregrade/coregrade/src/shared_tool/email.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/email.cc -o shared_tool/email.lo +shared_tool/envC.lo: /home/oameye/coregrade/coregrade/src/shared_tool/envC.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/envC.cc -o shared_tool/envC.lo +shared_tool/groups.lo: /home/oameye/coregrade/coregrade/src/shared_tool/groups.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/groups.cc -o shared_tool/groups.lo +shared_tool/interswitch.lo: /home/oameye/coregrade/coregrade/src/shared_tool/interswitch.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/interswitch.cc -o shared_tool/interswitch.lo +shared_tool/interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.lo: /home/oameye/coregrade/coregrade/src/shared_tool/interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.cc -o shared_tool/interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.lo +shared_tool/interswitchC.lo: /home/oameye/coregrade/coregrade/src/shared_tool/interswitchC.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/interswitchC.cc -o shared_tool/interswitchC.lo +shared_tool/interswitch_sendmoney.lo: /home/oameye/coregrade/coregrade/src/shared_tool/interswitch_sendmoney.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/interswitch_sendmoney.cc -o shared_tool/interswitch_sendmoney.lo +shared_tool/namespaces.lo: /home/oameye/coregrade/coregrade/src/shared_tool/namespaces.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/namespaces.cc -o shared_tool/namespaces.lo +shared_tool/paylid.lo: /home/oameye/coregrade/coregrade/src/shared_tool/paylid.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/paylid.cc -o shared_tool/paylid.lo +shared_tool/paylidC.lo: /home/oameye/coregrade/coregrade/src/shared_tool/paylidC.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/paylidC.cc -o shared_tool/paylidC.lo +shared_tool/paylidpaylidwsdlBindingProxy.lo: /home/oameye/coregrade/coregrade/src/shared_tool/paylidpaylidwsdlBindingProxy.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/paylidpaylidwsdlBindingProxy.cc -o shared_tool/paylidpaylidwsdlBindingProxy.lo +shared_tool/storeface.lo: /home/oameye/coregrade/coregrade/src/shared_tool/storeface.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/storeface.cc -o shared_tool/storeface.lo +shared_tool/topups.lo: /home/oameye/coregrade/coregrade/src/shared_tool/topups.cc + $(LIBTOOL) --mode=compile $(CXX) -I/home/oameye/coregrade/coregrade/src/libconfig-1.3.1 -I. -I/home/oameye/coregrade/coregrade/src $(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) -c /home/oameye/coregrade/coregrade/src/shared_tool/topups.cc -o shared_tool/topups.lo +$(phplibdir)/coregrade_api.la: ./coregrade_api.la + $(LIBTOOL) --mode=install cp ./coregrade_api.la $(phplibdir) + +./coregrade_api.la: $(shared_objects_coregrade_api) $(COREGRADE_API_SHARED_DEPENDENCIES) + $(LIBTOOL) --mode=link $(CC) $(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) -o $@ -export-dynamic -avoid-version -prefer-pic -module -rpath $(phplibdir) $(EXTRA_LDFLAGS) $(shared_objects_coregrade_api) $(COREGRADE_API_SHARED_LIBADD) + diff --git a/coregrade/src/acinclude.m4 b/coregrade/src/acinclude.m4 new file mode 100644 index 0000000..ed7d1ea --- /dev/null +++ b/coregrade/src/acinclude.m4 @@ -0,0 +1,2973 @@ +dnl +dnl $Id$ +dnl +dnl This file contains local autoconf functions. +dnl + +dnl ------------------------------------------------------------------------- +dnl Output stylize macros for configure (help/runtime) +dnl ------------------------------------------------------------------------- + +dnl +dnl PHP_HELP_SEPARATOR(title) +dnl +dnl Adds separator title into the configure --help display. +dnl +AC_DEFUN([PHP_HELP_SEPARATOR],[ +AC_ARG_ENABLE([],[ +$1 +],[]) +]) + +dnl +dnl PHP_CONFIGURE_PART(title) +dnl +dnl Adds separator title configure output (idea borrowed from mm) +dnl +AC_DEFUN([PHP_CONFIGURE_PART],[ + AC_MSG_RESULT() + AC_MSG_RESULT([${T_MD}$1${T_ME}]) +]) + +dnl ------------------------------------------------------------------------- +dnl Build system helper macros +dnl ------------------------------------------------------------------------- + +dnl +dnl PHP_DEF_HAVE(what) +dnl +dnl Generates 'AC_DEFINE(HAVE_WHAT, 1, [ ])' +dnl +AC_DEFUN([PHP_DEF_HAVE],[AC_DEFINE([HAVE_]translit($1,a-z_.-,A-Z___), 1, [ ])]) + +dnl +dnl PHP_RUN_ONCE(namespace, variable, code) +dnl +dnl execute code, if variable is not set in namespace +dnl +AC_DEFUN([PHP_RUN_ONCE],[ + changequote({,}) + unique=`echo $2|$SED 's/[^a-zA-Z0-9]/_/g'` + changequote([,]) + cmd="echo $ac_n \"\$$1$unique$ac_c\"" + if test -n "$unique" && test "`eval $cmd`" = "" ; then + eval "$1$unique=set" + $3 + fi +]) + +dnl +dnl PHP_EXPAND_PATH(path, variable) +dnl +dnl expands path to an absolute path and assigns it to variable +dnl +AC_DEFUN([PHP_EXPAND_PATH],[ + if test -z "$1" || echo "$1" | grep '^/' >/dev/null ; then + $2=$1 + else + changequote({,}) + ep_dir="`echo $1|$SED 's%/*[^/][^/]*/*$%%'`" + changequote([,]) + ep_realdir="`(cd \"$ep_dir\" && pwd)`" + $2="$ep_realdir/`basename \"$1\"`" + fi +]) + +dnl +dnl PHP_DEFINE(WHAT [, value[, directory]]) +dnl +dnl Creates builddir/include/what.h and in there #define WHAT value +dnl +AC_DEFUN([PHP_DEFINE],[ + [echo "#define ]$1[]ifelse([$2],,[ 1],[ $2])[" > ]ifelse([$3],,[include],[$3])[/php_]translit($1,A-Z,a-z)[.h] +]) + +dnl +dnl PHP_SUBST(varname) +dnl +dnl Adds variable with it's value into Makefile, e.g.: +dnl CC = gcc +dnl +AC_DEFUN([PHP_SUBST],[ + PHP_VAR_SUBST="$PHP_VAR_SUBST $1" +]) + +dnl +dnl PHP_SUBST_OLD(varname) +dnl +dnl Same as PHP_SUBST() but also substitutes all @VARNAME@ +dnl instances in every file passed to AC_OUTPUT() +dnl +AC_DEFUN([PHP_SUBST_OLD],[ + PHP_SUBST($1) + AC_SUBST($1) +]) + +dnl +dnl PHP_OUTPUT(file) +dnl +dnl Adds "file" to the list of files generated by AC_OUTPUT +dnl This macro can be used several times. +dnl +AC_DEFUN([PHP_OUTPUT],[ + PHP_OUTPUT_FILES="$PHP_OUTPUT_FILES $1" +]) + + +dnl ------------------------------------------------------------------------- +dnl Build system base macros +dnl ------------------------------------------------------------------------- + +dnl +dnl PHP_CANONICAL_HOST_TARGET +dnl +AC_DEFUN([PHP_CANONICAL_HOST_TARGET],[ + AC_REQUIRE([AC_CANONICAL_HOST])dnl + AC_REQUIRE([AC_CANONICAL_TARGET])dnl + dnl Make sure we do not continue if host_alias is empty. + if test -z "$host_alias" && test -n "$host"; then + host_alias=$host + fi + if test -z "$host_alias"; then + AC_MSG_ERROR([host_alias is not set!]) + fi +]) + +dnl +dnl PHP_INIT_BUILD_SYSTEM +dnl +AC_DEFUN([PHP_INIT_BUILD_SYSTEM],[ +AC_REQUIRE([PHP_CANONICAL_HOST_TARGET])dnl +test -d include || $php_shtool mkdir include +> Makefile.objects +> Makefile.fragments +dnl We need to play tricks here to avoid matching the grep line itself +pattern=define +$EGREP $pattern'.*include/php' $srcdir/configure|$SED 's/.*>//'|xargs touch 2>/dev/null +]) + +dnl +dnl PHP_GEN_GLOBAL_MAKEFILE +dnl +dnl Generates the global makefile. +dnl +AC_DEFUN([PHP_GEN_GLOBAL_MAKEFILE],[ + cat >Makefile <> Makefile + done + + cat $abs_srcdir/Makefile.global Makefile.fragments Makefile.objects >> Makefile +]) + +dnl +dnl PHP_ADD_MAKEFILE_FRAGMENT([srcfile [, ext_srcdir [, ext_builddir]]]) +dnl +dnl Processes a file called Makefile.frag in the source directory +dnl of the most recently added extension. $(srcdir) and $(builddir) +dnl are substituted with the proper paths. Can be used to supply +dnl custom rules and/or additional targets. +dnl +AC_DEFUN([PHP_ADD_MAKEFILE_FRAGMENT],[ + ifelse($1,,src=$ext_srcdir/Makefile.frag,src=$1) + ifelse($2,,ac_srcdir=$ext_srcdir,ac_srcdir=$2) + ifelse($3,,ac_builddir=$ext_builddir,ac_builddir=$3) + test -f "$src" && $SED -e "s#\$(srcdir)#$ac_srcdir#g" -e "s#\$(builddir)#$ac_builddir#g" $src >> Makefile.fragments +]) + +dnl +dnl PHP_ADD_SOURCES(source-path, sources [, special-flags [, type]]) +dnl +dnl Adds sources which are located relative to source-path to the +dnl array of type type. Sources are processed with optional +dnl special-flags which are passed to the compiler. Sources +dnl can be either written in C or C++ (filenames shall end in .c +dnl or .cpp, respectively). +dnl +dnl Note: If source-path begins with a "/", the "/" is removed and +dnl the path is interpreted relative to the top build-directory. +dnl +dnl which array to append to? +AC_DEFUN([PHP_ADD_SOURCES],[ + PHP_ADD_SOURCES_X($1, $2, $3, ifelse($4,sapi,PHP_SAPI_OBJS,PHP_GLOBAL_OBJS)) +]) + +dnl +dnl _PHP_ASSIGN_BUILD_VARS(type) +dnl internal, don't use +AC_DEFUN([_PHP_ASSIGN_BUILD_VARS],[ +ifelse($1,shared,[ + b_c_pre=$shared_c_pre + b_cxx_pre=$shared_cxx_pre + b_c_meta=$shared_c_meta + b_cxx_meta=$shared_cxx_meta + b_c_post=$shared_c_post + b_cxx_post=$shared_cxx_post +],[ + b_c_pre=$php_c_pre + b_cxx_pre=$php_cxx_pre + b_c_meta=$php_c_meta + b_cxx_meta=$php_cxx_meta + b_c_post=$php_c_post + b_cxx_post=$php_cxx_post +])dnl + b_lo=[$]$1_lo +]) + +dnl +dnl PHP_ADD_SOURCES_X(source-path, sources[, special-flags[, target-var[, shared[, special-post-flags]]]]) +dnl +dnl Additional to PHP_ADD_SOURCES (see above), this lets you set the +dnl name of the array target-var directly, as well as whether +dnl shared objects will be built from the sources. +dnl +dnl Should not be used directly. +dnl +AC_DEFUN([PHP_ADD_SOURCES_X],[ +dnl relative to source- or build-directory? +dnl ac_srcdir/ac_bdir include trailing slash + case $1 in + ""[)] ac_srcdir="$abs_srcdir/"; unset ac_bdir; ac_inc="-I. -I$abs_srcdir" ;; + /*[)] ac_srcdir=`echo "$1"|cut -c 2-`"/"; ac_bdir=$ac_srcdir; ac_inc="-I$ac_bdir -I$abs_srcdir/$ac_bdir" ;; + *[)] ac_srcdir="$abs_srcdir/$1/"; ac_bdir="$1/"; ac_inc="-I$ac_bdir -I$ac_srcdir" ;; + esac + +dnl how to build .. shared or static? + ifelse($5,yes,_PHP_ASSIGN_BUILD_VARS(shared),_PHP_ASSIGN_BUILD_VARS(php)) + +dnl iterate over the sources + old_IFS=[$]IFS + for ac_src in $2; do + +dnl remove the suffix + IFS=. + set $ac_src + ac_obj=[$]1 + IFS=$old_IFS + +dnl append to the array which has been dynamically chosen at m4 time + $4="[$]$4 [$]ac_bdir[$]ac_obj.lo" + +dnl choose the right compiler/flags/etc. for the source-file + case $ac_src in + *.c[)] ac_comp="$b_c_pre $3 $ac_inc $b_c_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $6$b_c_post" ;; + *.s[)] ac_comp="$b_c_pre $3 $ac_inc $b_c_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $6$b_c_post" ;; + *.S[)] ac_comp="$b_c_pre $3 $ac_inc $b_c_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $6$b_c_post" ;; + *.cpp|*.cc|*.cxx[)] ac_comp="$b_cxx_pre $3 $ac_inc $b_cxx_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $6$b_cxx_post" ;; + esac + +dnl create a rule for the object/source combo + cat >>Makefile.objects< conftest.c + cmd='$CC $1 -c conftest.c' + if eval $cmd 2>&1 | $EGREP -e $1 >/dev/null ; then + ac_result=no + else + ac_result=yes + fi + eval $gcc_arg_name=$ac_result + rm -f conftest.* + ]) + if eval test "\$$gcc_arg_name" = "yes"; then + $2 + else + : + $3 + fi +]) + +dnl +dnl PHP_LIBGCC_LIBPATH(gcc) +dnl +dnl Stores the location of libgcc in libgcc_libpath +dnl +AC_DEFUN([PHP_LIBGCC_LIBPATH],[ + changequote({,}) + libgcc_libpath=`$1 --print-libgcc-file-name|$SED 's%/*[^/][^/]*$%%'` + changequote([,]) +]) + +dnl ------------------------------------------------------------------------- +dnl Macros to modify LIBS, INCLUDES, etc. variables +dnl ------------------------------------------------------------------------- + +dnl +dnl PHP_REMOVE_USR_LIB(NAME) +dnl +dnl Removes all -L/usr/$PHP_LIBDIR entries from variable NAME +dnl +AC_DEFUN([PHP_REMOVE_USR_LIB],[ + unset ac_new_flags + for i in [$]$1; do + case [$]i in + -L/usr/$PHP_LIBDIR|-L/usr/$PHP_LIBDIR/[)] ;; + *[)] ac_new_flags="[$]ac_new_flags [$]i" ;; + esac + done + $1=[$]ac_new_flags +]) + +dnl +dnl PHP_EVAL_LIBLINE(libline, SHARED-LIBADD) +dnl +dnl Use this macro, if you need to add libraries and or library search +dnl paths to the PHP build system which are only given in compiler +dnl notation. +dnl +AC_DEFUN([PHP_EVAL_LIBLINE],[ + for ac_i in $1; do + case $ac_i in + -pthread[)] + if test "$ext_shared" = "yes"; then + $2="[$]$2 -pthread" + else + PHP_RUN_ONCE(EXTRA_LDFLAGS, [$ac_i], [EXTRA_LDFLAGS="$EXTRA_LDFLAGS $ac_i"]) + fi + ;; + -l*[)] + ac_ii=`echo $ac_i|cut -c 3-` + PHP_ADD_LIBRARY($ac_ii,1,$2) + ;; + -L*[)] + ac_ii=`echo $ac_i|cut -c 3-` + PHP_ADD_LIBPATH($ac_ii,$2) + ;; + esac + done +]) + +dnl +dnl PHP_EVAL_INCLINE(headerline) +dnl +dnl Use this macro, if you need to add header search paths to the PHP +dnl build system which are only given in compiler notation. +dnl +AC_DEFUN([PHP_EVAL_INCLINE],[ + for ac_i in $1; do + case $ac_i in + -I*[)] + ac_ii=`echo $ac_i|cut -c 3-` + PHP_ADD_INCLUDE($ac_ii) + ;; + esac + done +]) + +dnl internal, don't use +AC_DEFUN([_PHP_ADD_LIBPATH_GLOBAL],[ + PHP_RUN_ONCE(LIBPATH, $1, [ + test -n "$ld_runpath_switch" && LDFLAGS="$LDFLAGS $ld_runpath_switch$1" + LDFLAGS="$LDFLAGS -L$1" + PHP_RPATHS="$PHP_RPATHS $1" + ]) +])dnl +dnl +dnl +dnl PHP_ADD_LIBPATH(path [, SHARED-LIBADD]) +dnl +dnl Adds a path to linkpath/runpath (LDFLAGS) +dnl +AC_DEFUN([PHP_ADD_LIBPATH],[ + if test "$1" != "/usr/$PHP_LIBDIR" && test "$1" != "/usr/lib"; then + PHP_EXPAND_PATH($1, ai_p) + ifelse([$2],,[ + _PHP_ADD_LIBPATH_GLOBAL([$ai_p]) + ],[ + if test "$ext_shared" = "yes"; then + $2="-L$ai_p [$]$2" + test -n "$ld_runpath_switch" && $2="$ld_runpath_switch$ai_p [$]$2" + else + _PHP_ADD_LIBPATH_GLOBAL([$ai_p]) + fi + ]) + fi +]) + +dnl +dnl PHP_UTILIZE_RPATHS() +dnl +dnl builds RPATHS/LDFLAGS from PHP_RPATHS +dnl +AC_DEFUN([PHP_UTILIZE_RPATHS],[ + OLD_RPATHS=$PHP_RPATHS + unset PHP_RPATHS + + for i in $OLD_RPATHS; do +dnl Can be passed to native cc/libtool + PHP_LDFLAGS="$PHP_LDFLAGS -L$i" +dnl Libtool-specific + PHP_RPATHS="$PHP_RPATHS -R $i" +dnl cc-specific + NATIVE_RPATHS="$NATIVE_RPATHS $ld_runpath_switch$i" + done + + if test "$PHP_RPATH" = "no"; then + unset PHP_RPATHS + unset NATIVE_RPATHS + fi +]) + +dnl +dnl PHP_ADD_INCLUDE(path [,before]) +dnl +dnl add an include path. +dnl if before is 1, add in the beginning of INCLUDES. +dnl +AC_DEFUN([PHP_ADD_INCLUDE],[ + if test "$1" != "/usr/include"; then + PHP_EXPAND_PATH($1, ai_p) + PHP_RUN_ONCE(INCLUDEPATH, $ai_p, [ + if test "$2"; then + INCLUDES="-I$ai_p $INCLUDES" + else + INCLUDES="$INCLUDES -I$ai_p" + fi + ]) + fi +]) + +dnl internal, don't use +AC_DEFUN([_PHP_X_ADD_LIBRARY],[dnl + ifelse([$2],,$3="-l$1 [$]$3", $3="[$]$3 -l$1") dnl +])dnl +dnl +dnl internal, don't use +AC_DEFUN([_PHP_ADD_LIBRARY_SKELETON],[ + case $1 in + c|c_r|pthread*[)] ;; + *[)] ifelse($3,,[ + _PHP_X_ADD_LIBRARY($1,$2,$5) + ],[ + if test "$ext_shared" = "yes"; then + _PHP_X_ADD_LIBRARY($1,$2,$3) + else + $4($1,$2) + fi + ]) ;; + esac +])dnl +dnl +dnl +dnl PHP_ADD_LIBRARY(library[, append[, shared-libadd]]) +dnl +dnl add a library to the link line +dnl +AC_DEFUN([PHP_ADD_LIBRARY],[ + _PHP_ADD_LIBRARY_SKELETON([$1],[$2],[$3],[PHP_ADD_LIBRARY],[LIBS]) +]) + +dnl +dnl PHP_ADD_LIBRARY_DEFER(library[, append[, shared-libadd]]) +dnl +dnl add a library to the link line (deferred, not used during configure) +dnl +AC_DEFUN([PHP_ADD_LIBRARY_DEFER],[ + _PHP_ADD_LIBRARY_SKELETON([$1],[$2],[$3],[PHP_ADD_LIBRARY_DEFER],[DLIBS]) +]) + +dnl +dnl PHP_ADD_LIBRARY_WITH_PATH(library, path[, shared-libadd]) +dnl +dnl add a library to the link line and path to linkpath/runpath. +dnl if shared-libadd is not empty and $ext_shared is yes, +dnl shared-libadd will be assigned the library information +dnl +AC_DEFUN([PHP_ADD_LIBRARY_WITH_PATH],[ +ifelse($3,,[ + if test -n "$2"; then + PHP_ADD_LIBPATH($2) + fi + PHP_ADD_LIBRARY($1) +],[ + if test "$ext_shared" = "yes"; then + $3="-l$1 [$]$3" + if test -n "$2"; then + PHP_ADD_LIBPATH($2,$3) + fi + else + PHP_ADD_LIBRARY_WITH_PATH($1,$2) + fi +]) +]) + +dnl +dnl PHP_ADD_LIBRARY_DEFER_WITH_PATH(library, path[, shared-libadd]) +dnl +dnl add a library to the link line (deferred) +dnl and path to linkpath/runpath (not deferred) +dnl if shared-libadd is not empty and $ext_shared is yes, +dnl shared-libadd will be assigned the library information +dnl +AC_DEFUN([PHP_ADD_LIBRARY_DEFER_WITH_PATH],[ +ifelse($3,,[ + if test -n "$2"; then + PHP_ADD_LIBPATH($2) + fi + PHP_ADD_LIBRARY_DEFER($1) +],[ + if test "$ext_shared" = "yes"; then + $3="-l$1 [$]$3" + if test -n "$2"; then + PHP_ADD_LIBPATH($2,$3) + fi + else + PHP_ADD_LIBRARY_DEFER_WITH_PATH($1,$2) + fi +]) +]) + +dnl +dnl PHP_ADD_FRAMEWORK(framework [,before]) +dnl +dnl add a (Darwin / Mac OS X) framework to the link +dnl line. if before is 1, the framework is added +dnl to the beginning of the line. +dnl +AC_DEFUN([PHP_ADD_FRAMEWORK], [ + PHP_RUN_ONCE(FRAMEWORKS, $1, [ + if test "$2"; then + PHP_FRAMEWORKS="-framework $1 $PHP_FRAMEWORKS" + else + PHP_FRAMEWORKS="$PHP_FRAMEWORKS -framework $1" + fi + ]) +]) + +dnl +dnl PHP_ADD_FRAMEWORKPATH(path [,before]) +dnl +dnl add a (Darwin / Mac OS X) framework path to the link +dnl and include lines. default paths include (but are +dnl not limited to) /Local/Library/Frameworks and +dnl /System/Library/Frameworks, so these don't need +dnl to be specifically added. if before is 1, the +dnl framework path is added to the beginning of the +dnl relevant lines. +dnl +AC_DEFUN([PHP_ADD_FRAMEWORKPATH], [ + PHP_EXPAND_PATH($1, ai_p) + PHP_RUN_ONCE(FRAMEWORKPATH, $ai_p, [ + if test "$2"; then + PHP_FRAMEWORKPATH="-F$ai_p $PHP_FRAMEWORKPATH" + else + PHP_FRAMEWORKPATH="$PHP_FRAMEWORKPATH -F$ai_p" + fi + ]) +]) + +dnl +dnl PHP_ADD_FRAMEWORK_WITH_PATH(framework, path) +dnl +dnl Adds a (Darwin / Mac OS X) framework path and the +dnl framework itself to the link and include lines. +dnl +AC_DEFUN([PHP_ADD_FRAMEWORK_WITH_PATH], [ + PHP_ADD_FRAMEWORKPATH($2) + PHP_ADD_FRAMEWORK($1) +]) + +dnl +dnl PHP_SET_LIBTOOL_VARIABLE(var) +dnl +dnl Set libtool variable +dnl +AC_DEFUN([PHP_SET_LIBTOOL_VARIABLE],[ + if test -z "$LIBTOOL"; then + LIBTOOL='$(SHELL) $(top_builddir)/libtool $1' + else + LIBTOOL="$LIBTOOL $1" + fi +]) + +dnl ------------------------------------------------------------------------- +dnl Wrapper macros for AC_ARG_WITH / AC_ARG_ENABLE +dnl ------------------------------------------------------------------------- + +dnl PHP_ARG_ANALYZE_EX +dnl internal +AC_DEFUN([PHP_ARG_ANALYZE_EX],[ +ext_output="yes, shared" +ext_shared=yes +case [$]$1 in +shared,*[)] + $1=`echo "[$]$1"|$SED 's/^shared,//'` + ;; +shared[)] + $1=yes + ;; +no[)] + ext_output=no + ext_shared=no + ;; +*[)] + ext_output=yes + ext_shared=no + ;; +esac + +PHP_ALWAYS_SHARED([$1]) +]) + +dnl PHP_ARG_ANALYZE +dnl internal +AC_DEFUN([PHP_ARG_ANALYZE],[ +ifelse([$3],yes,[PHP_ARG_ANALYZE_EX([$1])],[ext_output=ifelse([$]$1,,no,[$]$1)]) +ifelse([$2],,,[AC_MSG_RESULT([$ext_output])]) +]) + +dnl +dnl PHP_ARG_WITH(arg-name, check message, help text[, default-val[, extension-or-not]]) +dnl Sets PHP_ARG_NAME either to the user value or to the default value. +dnl default-val defaults to no. This will also set the variable ext_shared, +dnl and will overwrite any previous variable of that name. +dnl If extension-or-not is yes (default), then do the ENABLE_ALL check and run +dnl the PHP_ARG_ANALYZE_EX. +dnl +AC_DEFUN([PHP_ARG_WITH],[ +php_with_[]translit($1,A-Z0-9-,a-z0-9_)=ifelse($4,,no,$4) +PHP_REAL_ARG_WITH([$1],[$2],[$3],[$4],PHP_[]translit($1,a-z0-9-,A-Z0-9_),[ifelse($5,,yes,$5)]) +]) + +dnl PHP_REAL_ARG_WITH +dnl internal +AC_DEFUN([PHP_REAL_ARG_WITH],[ +ifelse([$2],,,[AC_MSG_CHECKING([$2])]) +AC_ARG_WITH($1,[$3],$5=[$]withval, +[ + $5=ifelse($4,,no,$4) + ifelse($6,yes,[test "$PHP_ENABLE_ALL" && $5=$PHP_ENABLE_ALL]) +]) +PHP_ARG_ANALYZE($5,[$2],$6) +]) + +dnl +dnl PHP_ARG_ENABLE(arg-name, check message, help text[, default-val[, extension-or-not]]) +dnl Sets PHP_ARG_NAME either to the user value or to the default value. +dnl default-val defaults to no. This will also set the variable ext_shared, +dnl and will overwrite any previous variable of that name. +dnl If extension-or-not is yes (default), then do the ENABLE_ALL check and run +dnl the PHP_ARG_ANALYZE_EX. +dnl +AC_DEFUN([PHP_ARG_ENABLE],[ +php_enable_[]translit($1,A-Z0-9-,a-z0-9_)=ifelse($4,,no,$4) +PHP_REAL_ARG_ENABLE([$1],[$2],[$3],[$4],PHP_[]translit($1,a-z0-9-,A-Z0-9_),[ifelse($5,,yes,$5)]) +]) + +dnl PHP_REAL_ARG_ENABLE +dnl internal +AC_DEFUN([PHP_REAL_ARG_ENABLE],[ +ifelse([$2],,,[AC_MSG_CHECKING([$2])]) +AC_ARG_ENABLE($1,[$3],$5=[$]enableval, +[ + $5=ifelse($4,,no,$4) + ifelse($6,yes,[test "$PHP_ENABLE_ALL" && $5=$PHP_ENABLE_ALL]) +]) +PHP_ARG_ANALYZE($5,[$2],$6) +]) + +dnl ------------------------------------------------------------------------- +dnl Build macros +dnl ------------------------------------------------------------------------- + +dnl +dnl PHP_BUILD_THREAD_SAFE +dnl +AC_DEFUN([PHP_BUILD_THREAD_SAFE],[ + enable_maintainer_zts=yes + if test "$pthreads_working" != "yes"; then + AC_MSG_ERROR([ZTS currently requires working POSIX threads. We were unable to verify that your system supports Pthreads.]) + fi +]) + +dnl +dnl PHP_REQUIRE_CXX +dnl +AC_DEFUN([PHP_REQUIRE_CXX],[ + if test -z "$php_cxx_done"; then + AC_PROG_CXX + AC_PROG_CXXCPP + PHP_ADD_LIBRARY(stdc++) + php_cxx_done=yes + fi +]) + +dnl +dnl PHP_BUILD_SHARED +dnl +AC_DEFUN([PHP_BUILD_SHARED],[ + PHP_BUILD_PROGRAM + OVERALL_TARGET=libphp[]$PHP_MAJOR_VERSION[.la] + php_sapi_module=shared + + php_c_pre=$shared_c_pre + php_c_meta=$shared_c_meta + php_c_post=$shared_c_post + php_cxx_pre=$shared_cxx_pre + php_cxx_meta=$shared_cxx_meta + php_cxx_post=$shared_cxx_post + php_lo=$shared_lo +]) + +dnl +dnl PHP_BUILD_STATIC +dnl +AC_DEFUN([PHP_BUILD_STATIC],[ + PHP_BUILD_PROGRAM + OVERALL_TARGET=libphp[]$PHP_MAJOR_VERSION[.la] + php_sapi_module=static +]) + +dnl +dnl PHP_BUILD_BUNDLE +dnl +AC_DEFUN([PHP_BUILD_BUNDLE],[ + PHP_BUILD_PROGRAM + OVERALL_TARGET=libs/libphp[]$PHP_MAJOR_VERSION[.bundle] + php_sapi_module=static +]) + +dnl +dnl PHP_BUILD_PROGRAM +dnl +AC_DEFUN([PHP_BUILD_PROGRAM],[ + php_c_pre='$(LIBTOOL) --mode=compile $(CC)' + php_c_meta='$(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS)' + php_c_post= + php_cxx_pre='$(LIBTOOL) --mode=compile $(CXX)' + php_cxx_meta='$(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS)' + php_cxx_post= + php_lo=lo + + case $with_pic in + yes) pic_setting='-prefer-pic';; + no) pic_setting='-prefer-non-pic';; + esac + + shared_c_pre='$(LIBTOOL) --mode=compile $(CC)' + shared_c_meta='$(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) '$pic_setting + shared_c_post= + shared_cxx_pre='$(LIBTOOL) --mode=compile $(CXX)' + shared_cxx_meta='$(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) '$pic_setting + shared_cxx_post= + shared_lo=lo +]) + +dnl +dnl PHP_SHARED_MODULE(module-name, object-var, build-dir, cxx, zend_ext) +dnl +dnl Basically sets up the link-stage for building module-name +dnl from object_var in build-dir. +dnl +AC_DEFUN([PHP_SHARED_MODULE],[ + install_modules="install-modules" + + case $host_alias in + *aix*[)] + suffix=so + link_cmd='$(LIBTOOL) --mode=link ifelse($4,,[$(CC)],[$(CXX)]) $(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) -Wl,-G -o '$3'/$1.la -export-dynamic -avoid-version -prefer-pic -module -rpath $(phplibdir) $(EXTRA_LDFLAGS) $($2) $(translit($1,a-z_-,A-Z__)_SHARED_LIBADD) && mv -f '$3'/.libs/$1.so '$3'/$1.so' + ;; + *netware*[)] + suffix=nlm + link_cmd='$(LIBTOOL) --mode=link ifelse($4,,[$(CC)],[$(CXX)]) $(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) -o [$]@ -shared -export-dynamic -avoid-version -prefer-pic -module -rpath $(phplibdir) $(EXTRA_LDFLAGS) $($2) ifelse($1, php5lib, , -L$(top_builddir)/netware -lphp5lib) $(translit(ifelse($1, php5lib, $1, m4_substr($1, 3)),a-z_-,A-Z__)_SHARED_LIBADD)' + ;; + *[)] + suffix=la + link_cmd='$(LIBTOOL) --mode=link ifelse($4,,[$(CC)],[$(CXX)]) $(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) -o [$]@ -export-dynamic -avoid-version -prefer-pic -module -rpath $(phplibdir) $(EXTRA_LDFLAGS) $($2) $(translit($1,a-z_-,A-Z__)_SHARED_LIBADD)' + ;; + esac + + if test "x$5" = "xyes"; then + PHP_ZEND_EX="$PHP_ZEND_EX \$(phplibdir)/$1.$suffix" + else + PHP_MODULES="$PHP_MODULES \$(phplibdir)/$1.$suffix" + fi + PHP_SUBST($2) + cat >>Makefile.objects<> $2 +]) +dnl +dnl _PHP_CHECK_SIZEOF(type, cross-value, extra-headers [, found-action [, not-found-action]]) +dnl +AC_DEFUN([_PHP_CHECK_SIZEOF], [ + php_cache_value=php_cv_sizeof_[]$1 + AC_CACHE_VAL(php_cv_sizeof_[]$1, [ + old_LIBS=$LIBS + LIBS= + old_LDFLAGS=$LDFLAGS + LDFLAGS= + AC_TRY_RUN([#include +#if STDC_HEADERS +#include +#include +#endif +#ifdef HAVE_INTTYPES_H +#include +#endif +#ifdef HAVE_UNISTD_H +#include +#endif +$3 + +int main() +{ + FILE *fp = fopen("conftestval", "w"); + if (!fp) return(1); + fprintf(fp, "%d\n", sizeof($1)); + return(0); +} + ], [ + eval $php_cache_value=`cat conftestval` + ], [ + eval $php_cache_value=0 + ], [ + ifelse([$2],,[eval $php_cache_value=0], [eval $php_cache_value=$2]) +]) + LDFLAGS=$old_LDFLAGS + LIBS=$old_LIBS +]) + if eval test "\$$php_cache_value" != "0"; then +ifelse([$4],[],:,[$4]) +ifelse([$5],[],,[else $5]) + fi +]) + +dnl +dnl PHP_CHECK_SIZEOF(type, cross-value, extra-headers) +dnl +AC_DEFUN([PHP_CHECK_SIZEOF], [ + AC_MSG_CHECKING([size of $1]) + _PHP_CHECK_SIZEOF($1, $2, $3, [ + AC_DEFINE_UNQUOTED([SIZEOF_]translit($1,a-z,A-Z_), [$]php_cv_sizeof_[]$1, [Size of $1]) + AC_DEFINE_UNQUOTED([HAVE_]translit($1,a-z,A-Z_), 1, [Whether $1 is available]) + ]) + AC_MSG_RESULT([[$][php_cv_sizeof_]translit($1, ,_)]) +]) + +dnl +dnl PHP_CHECK_TYPES(type-list, include-file [, extra-headers]) +dnl +AC_DEFUN([PHP_CHECK_TYPES], [ + for php_typename in $1; do + AC_MSG_CHECKING([whether $php_typename exists]) + _PHP_CHECK_SIZEOF($php_typename, 0, $3, [ + _PHP_DEF_HAVE_FILE($php_typename, $2) + AC_MSG_RESULT([yes]) + ], [ + AC_MSG_RESULT([no]) + ]) + done +]) + +dnl +dnl PHP_CHECK_IN_ADDR_T +dnl +AC_DEFUN([PHP_CHECK_IN_ADDR_T], [ +dnl AIX keeps in_addr_t in /usr/include/netinet/in.h +AC_MSG_CHECKING([for in_addr_t]) +AC_CACHE_VAL(ac_cv_type_in_addr_t, +[AC_EGREP_CPP(dnl +changequote(<<,>>)dnl +<>dnl +changequote([,]), [#include +#if STDC_HEADERS +#include +#include +#endif +#ifdef HAVE_NETINET_IN_H +#include +#endif], ac_cv_type_in_addr_t=yes, ac_cv_type_in_addr_t=no)])dnl +AC_MSG_RESULT([$ac_cv_type_in_addr_t]) +if test $ac_cv_type_in_addr_t = no; then + AC_DEFINE(in_addr_t, u_int, [ ]) +fi +]) + +dnl +dnl PHP_TIME_R_TYPE +dnl +dnl Check type of reentrant time-related functions +dnl Type can be: irix, hpux or POSIX +dnl +AC_DEFUN([PHP_TIME_R_TYPE],[ +AC_CACHE_CHECK(for type of reentrant time-related functions, ac_cv_time_r_type,[ +AC_TRY_RUN([ +#include + +main() { +char buf[27]; +struct tm t; +time_t old = 0; +int r, s; + +s = gmtime_r(&old, &t); +r = (int) asctime_r(&t, buf, 26); +if (r == s && s == 0) return (0); +return (1); +} +],[ + ac_cv_time_r_type=hpux +],[ + AC_TRY_RUN([ +#include +main() { + struct tm t, *s; + time_t old = 0; + char buf[27], *p; + + s = gmtime_r(&old, &t); + p = asctime_r(&t, buf, 26); + if (p == buf && s == &t) return (0); + return (1); +} + ],[ + ac_cv_time_r_type=irix + ],[ + ac_cv_time_r_type=POSIX + ],[ + ac_cv_time_r_type=POSIX + ]) +],[ + ac_cv_time_r_type=POSIX +]) +]) + case $ac_cv_time_r_type in + hpux[)] AC_DEFINE(PHP_HPUX_TIME_R,1,[Whether you have HP-UX 10.x]) ;; + irix[)] AC_DEFINE(PHP_IRIX_TIME_R,1,[Whether you have IRIX-style functions]) ;; + esac +]) + +dnl +dnl PHP_DOES_PWRITE_WORK +dnl internal +AC_DEFUN([PHP_DOES_PWRITE_WORK],[ + AC_TRY_RUN([ +#include +#include +#include +#include +#include +$1 + main() { + int fd = open("conftest_in", O_WRONLY|O_CREAT, 0600); + + if (fd < 0) exit(1); + if (pwrite(fd, "text", 4, 0) != 4) exit(1); + /* Linux glibc breakage until 2.2.5 */ + if (pwrite(fd, "text", 4, -1) != -1 || errno != EINVAL) exit(1); + exit(0); + } + + ],[ + ac_cv_pwrite=yes + ],[ + ac_cv_pwrite=no + ],[ + ac_cv_pwrite=no + ]) +]) + +dnl PHP_DOES_PREAD_WORK +dnl internal +AC_DEFUN([PHP_DOES_PREAD_WORK],[ + echo test > conftest_in + AC_TRY_RUN([ +#include +#include +#include +#include +#include +$1 + main() { + char buf[3]; + int fd = open("conftest_in", O_RDONLY); + if (fd < 0) exit(1); + if (pread(fd, buf, 2, 0) != 2) exit(1); + /* Linux glibc breakage until 2.2.5 */ + if (pread(fd, buf, 2, -1) != -1 || errno != EINVAL) exit(1); + exit(0); + } + ],[ + ac_cv_pread=yes + ],[ + ac_cv_pread=no + ],[ + ac_cv_pread=no + ]) + rm -f conftest_in +]) + +dnl +dnl PHP_PWRITE_TEST +dnl +AC_DEFUN([PHP_PWRITE_TEST],[ + AC_CACHE_CHECK(whether pwrite works,ac_cv_pwrite,[ + PHP_DOES_PWRITE_WORK + if test "$ac_cv_pwrite" = "no"; then + PHP_DOES_PWRITE_WORK([ssize_t pwrite(int, void *, size_t, off64_t);]) + if test "$ac_cv_pwrite" = "yes"; then + ac_cv_pwrite=64 + fi + fi + ]) + + if test "$ac_cv_pwrite" != "no"; then + AC_DEFINE(HAVE_PWRITE, 1, [ ]) + if test "$ac_cv_pwrite" = "64"; then + AC_DEFINE(PHP_PWRITE_64, 1, [whether pwrite64 is default]) + fi + fi +]) + +dnl +dnl PHP_PREAD_TEST +dnl +AC_DEFUN([PHP_PREAD_TEST],[ + AC_CACHE_CHECK(whether pread works,ac_cv_pread,[ + PHP_DOES_PREAD_WORK + if test "$ac_cv_pread" = "no"; then + PHP_DOES_PREAD_WORK([ssize_t pread(int, void *, size_t, off64_t);]) + if test "$ac_cv_pread" = "yes"; then + ac_cv_pread=64 + fi + fi + ]) + + if test "$ac_cv_pread" != "no"; then + AC_DEFINE(HAVE_PREAD, 1, [ ]) + if test "$ac_cv_pread" = "64"; then + AC_DEFINE(PHP_PREAD_64, 1, [whether pread64 is default]) + fi + fi +]) + +dnl +dnl PHP_MISSING_TIME_R_DECL +dnl +AC_DEFUN([PHP_MISSING_TIME_R_DECL],[ + AC_MSG_CHECKING([for missing declarations of reentrant functions]) + AC_TRY_COMPILE([#include ],[struct tm *(*func)() = localtime_r],[ + : + ],[ + AC_DEFINE(MISSING_LOCALTIME_R_DECL,1,[Whether localtime_r is declared]) + ]) + AC_TRY_COMPILE([#include ],[struct tm *(*func)() = gmtime_r],[ + : + ],[ + AC_DEFINE(MISSING_GMTIME_R_DECL,1,[Whether gmtime_r is declared]) + ]) + AC_TRY_COMPILE([#include ],[char *(*func)() = asctime_r],[ + : + ],[ + AC_DEFINE(MISSING_ASCTIME_R_DECL,1,[Whether asctime_r is declared]) + ]) + AC_TRY_COMPILE([#include ],[char *(*func)() = ctime_r],[ + : + ],[ + AC_DEFINE(MISSING_CTIME_R_DECL,1,[Whether ctime_r is declared]) + ]) + AC_TRY_COMPILE([#include ],[char *(*func)() = strtok_r],[ + : + ],[ + AC_DEFINE(MISSING_STRTOK_R_DECL,1,[Whether strtok_r is declared]) + ]) + AC_MSG_RESULT([done]) +]) + +dnl +dnl PHP_READDIR_R_TYPE +dnl +AC_DEFUN([PHP_READDIR_R_TYPE],[ + dnl HAVE_READDIR_R is also defined by libmysql + AC_CHECK_FUNC(readdir_r,ac_cv_func_readdir_r=yes,ac_cv_func_readdir=no) + if test "$ac_cv_func_readdir_r" = "yes"; then + AC_CACHE_CHECK(for type of readdir_r, ac_cv_what_readdir_r,[ + AC_TRY_RUN([ +#define _REENTRANT +#include +#include + +#ifndef PATH_MAX +#define PATH_MAX 1024 +#endif + +main() { + DIR *dir; + char entry[sizeof(struct dirent)+PATH_MAX]; + struct dirent *pentry = (struct dirent *) &entry; + + dir = opendir("/"); + if (!dir) + exit(1); + if (readdir_r(dir, (struct dirent *) entry, &pentry) == 0) + exit(0); + exit(1); +} + ],[ + ac_cv_what_readdir_r=POSIX + ],[ + AC_TRY_CPP([ +#define _REENTRANT +#include +#include +int readdir_r(DIR *, struct dirent *); + ],[ + ac_cv_what_readdir_r=old-style + ],[ + ac_cv_what_readdir_r=none + ]) + ],[ + ac_cv_what_readdir_r=none + ]) + ]) + case $ac_cv_what_readdir_r in + POSIX) + AC_DEFINE(HAVE_POSIX_READDIR_R,1,[whether you have POSIX readdir_r]);; + old-style) + AC_DEFINE(HAVE_OLD_READDIR_R,1,[whether you have old-style readdir_r]);; + esac + fi +]) + +dnl +dnl PHP_TM_GMTOFF +dnl +AC_DEFUN([PHP_TM_GMTOFF],[ +AC_CACHE_CHECK([for tm_gmtoff in struct tm], ac_cv_struct_tm_gmtoff, +[AC_TRY_COMPILE([#include +#include <$ac_cv_struct_tm>], [struct tm tm; tm.tm_gmtoff;], + ac_cv_struct_tm_gmtoff=yes, ac_cv_struct_tm_gmtoff=no)]) + +if test "$ac_cv_struct_tm_gmtoff" = yes; then + AC_DEFINE(HAVE_TM_GMTOFF,1,[whether you have tm_gmtoff in struct tm]) +fi +]) + +dnl +dnl PHP_STRUCT_FLOCK +dnl +AC_DEFUN([PHP_STRUCT_FLOCK],[ +AC_CACHE_CHECK(for struct flock,ac_cv_struct_flock, + AC_TRY_COMPILE([ +#include +#include + ], + [struct flock x;], + [ + ac_cv_struct_flock=yes + ],[ + ac_cv_struct_flock=no + ]) +) +if test "$ac_cv_struct_flock" = "yes" ; then + AC_DEFINE(HAVE_STRUCT_FLOCK, 1,[whether you have struct flock]) +fi +]) + +dnl +dnl PHP_SOCKLEN_T +dnl +AC_DEFUN([PHP_SOCKLEN_T],[ +AC_CACHE_CHECK(for socklen_t,ac_cv_socklen_t, + AC_TRY_COMPILE([ +#include +#include +],[ +socklen_t x; +],[ + ac_cv_socklen_t=yes +],[ + ac_cv_socklen_t=no +])) +if test "$ac_cv_socklen_t" = "yes"; then + AC_DEFINE(HAVE_SOCKLEN_T, 1, [Whether you have socklen_t]) +fi +]) + +dnl +dnl PHP_MISSING_FCLOSE_DECL +dnl +dnl See if we have broken header files like SunOS has. +dnl +AC_DEFUN([PHP_MISSING_FCLOSE_DECL],[ + AC_MSG_CHECKING([for fclose declaration]) + AC_TRY_COMPILE([#include ],[int (*func)() = fclose],[ + AC_DEFINE(MISSING_FCLOSE_DECL,0,[ ]) + AC_MSG_RESULT([ok]) + ],[ + AC_DEFINE(MISSING_FCLOSE_DECL,1,[ ]) + AC_MSG_RESULT([missing]) + ]) +]) + +dnl +dnl PHP_AC_BROKEN_SPRINTF +dnl +dnl Check for broken sprintf(), C99 conformance +dnl +AC_DEFUN([PHP_AC_BROKEN_SPRINTF],[ + AC_CACHE_CHECK(whether sprintf is broken, ac_cv_broken_sprintf,[ + AC_TRY_RUN([main() {char buf[20];exit(sprintf(buf,"testing 123")!=11); }],[ + ac_cv_broken_sprintf=no + ],[ + ac_cv_broken_sprintf=yes + ],[ + ac_cv_broken_sprintf=no + ]) + ]) + if test "$ac_cv_broken_sprintf" = "yes"; then + AC_DEFINE(PHP_BROKEN_SPRINTF, 1, [Whether sprintf is C99 conform]) + else + AC_DEFINE(PHP_BROKEN_SPRINTF, 0, [Whether sprintf is C99 conform]) + fi +]) + +dnl +dnl PHP_AC_BROKEN_SNPRINTF +dnl +dnl Check for broken snprintf(), C99 conformance +dnl +AC_DEFUN([PHP_AC_BROKEN_SNPRINTF],[ + AC_CACHE_CHECK(whether snprintf is broken, ac_cv_broken_snprintf,[ + AC_TRY_RUN([ +#define NULL (0L) +main() { + char buf[20]; + int res = 0; + res = res || (snprintf(buf, 2, "marcus") != 6); + res = res || (buf[1] != '\0'); + /* Implementations may consider this as an encoding error */ + snprintf(buf, 0, "boerger"); + /* However, they MUST ignore the pointer */ + res = res || (buf[0] != 'm'); + res = res || (snprintf(NULL, 0, "boerger") != 7); + res = res || (snprintf(buf, sizeof(buf), "%f", 0.12345678) != 8); + exit(res); +} + ],[ + ac_cv_broken_snprintf=no + ],[ + ac_cv_broken_snprintf=yes + ],[ + ac_cv_broken_snprintf=no + ]) + ]) + if test "$ac_cv_broken_snprintf" = "yes"; then + AC_DEFINE(PHP_BROKEN_SNPRINTF, 1, [Whether snprintf is C99 conform]) + else + AC_DEFINE(PHP_BROKEN_SNPRINTF, 0, [Whether snprintf is C99 conform]) + fi +]) + +dnl +dnl PHP_SOLARIS_PIC_WEIRDNESS +dnl +dnl Solaris requires main code to be position independent in order +dnl to let shared objects find symbols. Weird. Ugly. +dnl +dnl Must be run after all --with-NN options that let the user +dnl choose dynamic extensions, and after the gcc test. +dnl +AC_DEFUN([PHP_SOLARIS_PIC_WEIRDNESS],[ + AC_MSG_CHECKING([whether -fPIC is required]) + if test -n "$EXT_SHARED"; then + os=`uname -sr 2>/dev/null` + case $os in + "SunOS 5.6"|"SunOS 5.7"[)] + case $CC in + gcc*|egcs*) + CFLAGS="$CFLAGS -fPIC";; + *[)] + CFLAGS="$CFLAGS -fpic";; + esac + AC_MSG_RESULT([yes]);; + *[)] + AC_MSG_RESULT([no]);; + esac + else + AC_MSG_RESULT([no]) + fi +]) + +dnl +dnl PHP_SYS_LFS +dnl +dnl The problem is that the default compilation flags in Solaris 2.6 won't +dnl let programs access large files; you need to tell the compiler that +dnl you actually want your programs to work on large files. For more +dnl details about this brain damage please see: +dnl http://www.sas.com/standards/large.file/x_open.20Mar96.html +dnl +dnl Written by Paul Eggert . +dnl +AC_DEFUN([PHP_SYS_LFS], +[dnl + # If available, prefer support for large files unless the user specified + # one of the CPPFLAGS, LDFLAGS, or LIBS variables. + AC_MSG_CHECKING([whether large file support needs explicit enabling]) + ac_getconfs='' + ac_result=yes + ac_set='' + ac_shellvars='CPPFLAGS LDFLAGS LIBS' + for ac_shellvar in $ac_shellvars; do + case $ac_shellvar in + CPPFLAGS[)] ac_lfsvar=LFS_CFLAGS ;; + *[)] ac_lfsvar=LFS_$ac_shellvar ;; + esac + eval test '"${'$ac_shellvar'+set}"' = set && ac_set=$ac_shellvar + (getconf $ac_lfsvar) >/dev/null 2>&1 || { ac_result=no; break; } + ac_getconf=`getconf $ac_lfsvar` + ac_getconfs=$ac_getconfs$ac_getconf + eval ac_test_$ac_shellvar=\$ac_getconf + done + case "$ac_result$ac_getconfs" in + yes[)] ac_result=no ;; + esac + case "$ac_result$ac_set" in + yes?*[)] ac_result="yes, but $ac_set is already set, so use its settings" + esac + AC_MSG_RESULT([$ac_result]) + case $ac_result in + yes[)] + for ac_shellvar in $ac_shellvars; do + eval $ac_shellvar=\$ac_test_$ac_shellvar + done ;; + esac +]) + +dnl +dnl PHP_SOCKADDR_CHECKS +dnl +AC_DEFUN([PHP_SOCKADDR_CHECKS], [ + dnl Check for struct sockaddr_storage exists + AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_sockaddr_storage, + [AC_TRY_COMPILE([#include +#include ], + [struct sockaddr_storage s; s], + [ac_cv_sockaddr_storage=yes], [ac_cv_sockaddr_storage=no]) + ]) + if test "$ac_cv_sockaddr_storage" = "yes"; then + AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [Whether you have struct sockaddr_storage]) + fi + dnl Check if field sa_len exists in struct sockaddr + AC_CACHE_CHECK([for field sa_len in struct sockaddr],ac_cv_sockaddr_sa_len,[ + AC_TRY_COMPILE([#include +#include ], + [static struct sockaddr sa; int n = (int) sa.sa_len; return n;], + [ac_cv_sockaddr_sa_len=yes], [ac_cv_sockaddr_sa_len=no]) + ]) + if test "$ac_cv_sockaddr_sa_len" = "yes"; then + AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Whether struct sockaddr has field sa_len]) + fi +]) + +dnl +dnl PHP_DECLARED_TIMEZONE +dnl +AC_DEFUN([PHP_DECLARED_TIMEZONE],[ + AC_CACHE_CHECK(for declared timezone, ac_cv_declared_timezone,[ + AC_TRY_COMPILE([ +#include +#include +#ifdef HAVE_SYS_TIME_H +#include +#endif +],[ + time_t foo = (time_t) timezone; +],[ + ac_cv_declared_timezone=yes +],[ + ac_cv_declared_timezone=no +])]) + if test "$ac_cv_declared_timezone" = "yes"; then + AC_DEFINE(HAVE_DECLARED_TIMEZONE, 1, [Whether system headers declare timezone]) + fi +]) + +dnl +dnl PHP_EBCDIC +dnl +AC_DEFUN([PHP_EBCDIC], [ + AC_CACHE_CHECK([whether system uses EBCDIC],ac_cv_ebcdic,[ + AC_TRY_RUN( [ +int main(void) { + return (unsigned char)'A' != (unsigned char)0xC1; +} +],[ + ac_cv_ebcdic=yes +],[ + ac_cv_ebcdic=no +],[ + ac_cv_ebcdic=no +])]) + if test "$ac_cv_ebcdic" = "yes"; then + AC_DEFINE(CHARSET_EBCDIC,1, [Define if system uses EBCDIC]) + fi +]) + +dnl +dnl PHP_BROKEN_GETCWD +dnl +dnl Some systems, notably Solaris, cause getcwd() or realpath to fail if a +dnl component of the path has execute but not read permissions +dnl +AC_DEFUN([PHP_BROKEN_GETCWD],[ + AC_MSG_CHECKING([for broken getcwd]) + os=`uname -sr 2>/dev/null` + case $os in + SunOS*[)] + AC_DEFINE(HAVE_BROKEN_GETCWD,1, [Define if system has broken getcwd]) + AC_MSG_RESULT([yes]);; + *[)] + AC_MSG_RESULT([no]);; + esac +]) + +dnl +dnl PHP_BROKEN_GLIBC_FOPEN_APPEND +dnl +AC_DEFUN([PHP_BROKEN_GLIBC_FOPEN_APPEND], [ + AC_MSG_CHECKING([for broken libc stdio]) + AC_CACHE_VAL(_cv_have_broken_glibc_fopen_append,[ + AC_TRY_RUN([ +#include +int main(int argc, char *argv[]) +{ + FILE *fp; + long position; + char *filename = "/tmp/phpglibccheck"; + + fp = fopen(filename, "w"); + if (fp == NULL) { + perror("fopen"); + exit(2); + } + fputs("foobar", fp); + fclose(fp); + + fp = fopen(filename, "a+"); + position = ftell(fp); + fclose(fp); + unlink(filename); + if (position == 0) + return 1; + return 0; +} +], +[_cv_have_broken_glibc_fopen_append=no], +[_cv_have_broken_glibc_fopen_append=yes ], +AC_TRY_COMPILE([ +#include +],[ +#if !__GLIBC_PREREQ(2,2) +choke me +#endif +], +[_cv_have_broken_glibc_fopen_append=yes], +[_cv_have_broken_glibc_fopen_append=no ]) +)]) + + if test "$_cv_have_broken_glibc_fopen_append" = "yes"; then + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_BROKEN_GLIBC_FOPEN_APPEND,1, [Define if your glibc borks on fopen with mode a+]) + else + AC_MSG_RESULT(no) + fi +]) + +dnl +dnl PHP_FOPENCOOKIE +dnl +AC_DEFUN([PHP_FOPENCOOKIE], [ + AC_CHECK_FUNC(fopencookie, [have_glibc_fopencookie=yes]) + + if test "$have_glibc_fopencookie" = "yes"; then +dnl this comes in two flavors: +dnl newer glibcs (since 2.1.2 ? ) +dnl have a type called cookie_io_functions_t +AC_TRY_COMPILE([ +#define _GNU_SOURCE +#include +], [cookie_io_functions_t cookie;], [have_cookie_io_functions_t=yes], []) + + if test "$have_cookie_io_functions_t" = "yes"; then + cookie_io_functions_t=cookie_io_functions_t + have_fopen_cookie=yes + +dnl even newer glibcs have a different seeker definition... +AC_TRY_RUN([ +#define _GNU_SOURCE +#include + +struct cookiedata { + __off64_t pos; +}; + +__ssize_t reader(void *cookie, char *buffer, size_t size) +{ return size; } +__ssize_t writer(void *cookie, const char *buffer, size_t size) +{ return size; } +int closer(void *cookie) +{ return 0; } +int seeker(void *cookie, __off64_t *position, int whence) +{ ((struct cookiedata*)cookie)->pos = *position; return 0; } + +cookie_io_functions_t funcs = {reader, writer, seeker, closer}; + +main() { + struct cookiedata g = { 0 }; + FILE *fp = fopencookie(&g, "r", funcs); + + if (fp && fseek(fp, 8192, SEEK_SET) == 0 && g.pos == 8192) + exit(0); + exit(1); +} + +], [ + cookie_io_functions_use_off64_t=yes +], [ + cookie_io_functions_use_off64_t=no +], [ + cookie_io_functions_use_off64_t=no +]) + + else + +dnl older glibc versions (up to 2.1.2 ?) +dnl call it _IO_cookie_io_functions_t +AC_TRY_COMPILE([ +#define _GNU_SOURCE +#include +], [ _IO_cookie_io_functions_t cookie; ], [have_IO_cookie_io_functions_t=yes], []) + if test "$have_cookie_io_functions_t" = "yes" ; then + cookie_io_functions_t=_IO_cookie_io_functions_t + have_fopen_cookie=yes + fi + fi + + if test "$have_fopen_cookie" = "yes" ; then + AC_DEFINE(HAVE_FOPENCOOKIE, 1, [ ]) + AC_DEFINE_UNQUOTED(COOKIE_IO_FUNCTIONS_T, $cookie_io_functions_t, [ ]) + if test "$cookie_io_functions_use_off64_t" = "yes" ; then + AC_DEFINE(COOKIE_SEEKER_USES_OFF64_T, 1, [ ]) + fi + fi + fi +]) + +dnl ------------------------------------------------------------------------- +dnl Library/function existance and build sanity checks +dnl ------------------------------------------------------------------------- + +dnl +dnl PHP_CHECK_LIBRARY(library, function [, action-found [, action-not-found [, extra-libs]]]) +dnl +dnl Wrapper for AC_CHECK_LIB +dnl +AC_DEFUN([PHP_CHECK_LIBRARY], [ + save_old_LDFLAGS=$LDFLAGS + ac_stuff="$5" + + save_ext_shared=$ext_shared + ext_shared=yes + PHP_EVAL_LIBLINE([$]ac_stuff, LDFLAGS) + AC_CHECK_LIB([$1],[$2],[ + LDFLAGS=$save_old_LDFLAGS + ext_shared=$save_ext_shared + $3 + ],[ + LDFLAGS=$save_old_LDFLAGS + ext_shared=$save_ext_shared + unset ac_cv_lib_$1[]_$2 + $4 + ])dnl +]) + +dnl +dnl PHP_CHECK_FRAMEWORK(framework, function [, action-found [, action-not-found ]]) +dnl +dnl El cheapo wrapper for AC_CHECK_LIB +dnl +AC_DEFUN([PHP_CHECK_FRAMEWORK], [ + save_old_LDFLAGS=$LDFLAGS + LDFLAGS="-framework $1 $LDFLAGS" + dnl supplying "c" to AC_CHECK_LIB is technically cheating, but + dnl rewriting AC_CHECK_LIB is overkill and this only affects + dnl the "checking.." output anyway. + AC_CHECK_LIB(c,[$2],[ + LDFLAGS=$save_old_LDFLAGS + $3 + ],[ + LDFLAGS=$save_old_LDFLAGS + $4 + ]) +]) + +dnl +dnl PHP_CHECK_FUNC_LIB(func, libs) +dnl +dnl This macro checks whether 'func' or '__func' exists +dnl in the specified library. +dnl Defines HAVE_func and HAVE_library if found and adds the library to LIBS. +dnl This should be called in the ACTION-IF-NOT-FOUND part of PHP_CHECK_FUNC +dnl +dnl +dnl autoconf undefines the builtin "shift" :-( +dnl If possible, we use the builtin shift anyway, otherwise we use +dnl the ubercool definition I have tested so far with FreeBSD/GNU m4 +ifdef([builtin],[builtin(define, phpshift, [builtin(shift, $@)])],[ +define([phpshift],[ifelse(index([$@],[,]),-1,,[substr([$@],incr(index([$@],[,])))])]) +]) +dnl +AC_DEFUN([PHP_CHECK_FUNC_LIB],[ + ifelse($2,,:,[ + unset ac_cv_lib_$2[]_$1 + unset ac_cv_lib_$2[]___$1 + unset found + AC_CHECK_LIB($2, $1, [found=yes], [ + AC_CHECK_LIB($2, __$1, [found=yes], [found=no]) + ]) + + if test "$found" = "yes"; then + ac_libs=$LIBS + LIBS="$LIBS -l$2" + AC_TRY_RUN([main() { return (0); }],[found=yes],[found=no],[found=no]) + LIBS=$ac_libs + fi + + if test "$found" = "yes"; then + PHP_ADD_LIBRARY($2) + PHP_DEF_HAVE($1) + PHP_DEF_HAVE(lib$2) + ac_cv_func_$1=yes + else + PHP_CHECK_FUNC_LIB($1,phpshift(phpshift($@))) + fi + ]) +]) + +dnl +dnl PHP_CHECK_FUNC(func, ...) +dnl +dnl This macro checks whether 'func' or '__func' exists +dnl in the default libraries and as a fall back in the specified library. +dnl Defines HAVE_func and HAVE_library if found and adds the library to LIBS. +dnl +AC_DEFUN([PHP_CHECK_FUNC],[ + unset ac_cv_func_$1 + unset ac_cv_func___$1 + unset found + + AC_CHECK_FUNC($1, [found=yes],[ AC_CHECK_FUNC(__$1,[found=yes],[found=no]) ]) + + case $found in + yes[)] + PHP_DEF_HAVE($1) + ac_cv_func_$1=yes + ;; + ifelse($#,1,,[ + *[)] PHP_CHECK_FUNC_LIB($@) ;; + ]) + esac +]) + +dnl +dnl PHP_TEST_BUILD(function, action-if-ok, action-if-not-ok [, extra-libs [, extra-source]]) +dnl +dnl This macro checks whether build works and given function exists. +dnl +AC_DEFUN([PHP_TEST_BUILD], [ + old_LIBS=$LIBS + LIBS="$4 $LIBS" + AC_TRY_RUN([ + $5 + char $1(); + int main() { + $1(); + return 0; + } + ], [ + LIBS=$old_LIBS + $2 + ],[ + LIBS=$old_LIBS + $3 + ],[ + LIBS=$old_LIBS + ]) +]) + +dnl ------------------------------------------------------------------------- +dnl Platform characteristics checks +dnl ------------------------------------------------------------------------- + +dnl +dnl PHP_SHLIB_SUFFIX_NAMES +dnl +dnl Determines link library suffix SHLIB_SUFFIX_NAME +dnl which can be: .so, .sl or .dylib +dnl +dnl Determines shared library suffix SHLIB_DL_SUFFIX_NAME +dnl suffix can be: .so or .sl +dnl +AC_DEFUN([PHP_SHLIB_SUFFIX_NAMES],[ + AC_REQUIRE([PHP_CANONICAL_HOST_TARGET])dnl + PHP_SUBST_OLD(SHLIB_SUFFIX_NAME) + PHP_SUBST_OLD(SHLIB_DL_SUFFIX_NAME) + SHLIB_SUFFIX_NAME=so + SHLIB_DL_SUFFIX_NAME=$SHLIB_SUFFIX_NAME + case $host_alias in + *hpux*[)] + SHLIB_SUFFIX_NAME=sl + SHLIB_DL_SUFFIX_NAME=sl + ;; + *darwin*[)] + SHLIB_SUFFIX_NAME=dylib + SHLIB_DL_SUFFIX_NAME=so + ;; + esac +]) + +dnl +dnl PHP_CHECK_64BIT([do if 32], [do if 64]) +dnl +dnl This macro is used to detect if we're at 64-bit platform or not. +dnl It could be useful for those external libs, that have different precompiled +dnl versions in different directories. +dnl +AC_DEFUN([PHP_CHECK_64BIT],[ + AC_CHECK_SIZEOF(long int, 4) + AC_MSG_CHECKING([checking if we're at 64-bit platform]) + if test "$ac_cv_sizeof_long_int" = "4" ; then + AC_MSG_RESULT([no]) + $1 + else + AC_MSG_RESULT([yes]) + $2 + fi +]) + +dnl +dnl PHP_C_BIGENDIAN +dnl +dnl Replacement macro for AC_C_BIGENDIAN +dnl +AC_DEFUN([PHP_C_BIGENDIAN], +[AC_CACHE_CHECK([whether byte ordering is bigendian], ac_cv_c_bigendian_php, + [ + ac_cv_c_bigendian_php=unknown + AC_TRY_RUN( + [ +int main(void) +{ + short one = 1; + char *cp = (char *)&one; + + if (*cp == 0) { + return(0); + } else { + return(1); + } +} + ], [ac_cv_c_bigendian_php=yes], [ac_cv_c_bigendian_php=no], [ac_cv_c_bigendian_php=unknown]) + ]) + if test $ac_cv_c_bigendian_php = yes; then + AC_DEFINE(WORDS_BIGENDIAN, [], [Define if processor uses big-endian word]) + fi +]) + +dnl ------------------------------------------------------------------------- +dnl Checks for programs: PHP_PROG_ +dnl ------------------------------------------------------------------------- + +dnl +dnl PHP_PROG_SENDMAIL +dnl +dnl Search for the sendmail binary +dnl +AC_DEFUN([PHP_PROG_SENDMAIL], [ + PHP_ALT_PATH=/usr/bin:/usr/sbin:/usr/etc:/etc:/usr/ucblib:/usr/lib + AC_PATH_PROG(PROG_SENDMAIL, sendmail,[], $PATH:$PHP_ALT_PATH) + PHP_SUBST(PROG_SENDMAIL) +]) + +dnl +dnl PHP_PROG_AWK +dnl +dnl Some vendors force mawk before gawk; mawk is broken so we don't like that +dnl +AC_DEFUN([PHP_PROG_AWK], [ + AC_CHECK_PROGS(AWK, gawk nawk awk mawk, bork, /usr/xpg4/bin/:$PATH) + case "$AWK" in + *mawk) + AC_MSG_WARN([mawk is known to have problems on some systems. You should install GNU awk]) + ;; + *gawk) + ;; + bork) + AC_MSG_ERROR([Could not find awk; Install GNU awk]) + ;; + *) + AC_MSG_CHECKING([if $AWK is broken]) + if ! $AWK 'function foo() {}' >/dev/null 2>&1 ; then + AC_MSG_RESULT([yes]) + AC_MSG_ERROR([You should install GNU awk]) + else + AC_MSG_RESULT([no]) + fi + ;; + esac + PHP_SUBST(AWK) +]) + +dnl +dnl PHP_PROG_BISON +dnl +dnl Search for bison and check it's version +dnl +AC_DEFUN([PHP_PROG_BISON], [ + AC_PROG_YACC + LIBZEND_BISON_CHECK + PHP_SUBST(YACC) +]) + +dnl +dnl PHP_PROG_LEX +dnl +dnl Search for (f)lex and check it's version +dnl +AC_DEFUN([PHP_PROG_LEX], [ +dnl we only support certain flex versions + flex_version_list="2.5.4" + + AC_PROG_LEX + if test "$LEX" = "flex"; then +dnl AC_DECL_YYTEXT is obsolete since autoconf 2.50 and merged into AC_PROG_LEX +dnl this is what causes that annoying "PHP_PROG_LEX is expanded from" warning with autoconf 2.50+ +dnl it should be removed once we drop support of autoconf 2.13 (if ever) + AC_DECL_YYTEXT + : + fi + dnl ## Make flex scanners use const if they can, even if __STDC__ is not + dnl ## true, for compilers like Sun's that only set __STDC__ true in + dnl ## "limit-to-ANSI-standard" mode, not in "ANSI-compatible" mode + AC_C_CONST + if test "$ac_cv_c_const" = "yes" ; then + LEX_CFLAGS="-DYY_USE_CONST" + fi + + if test "$LEX" = "flex"; then + AC_CACHE_CHECK([for flex version], php_cv_flex_version, [ + flex_version=`$LEX -V -v --version 2>/dev/null | $SED -e 's/^.* //'` + php_cv_flex_version=invalid + for flex_check_version in $flex_version_list; do + if test "$flex_version" = "$flex_check_version"; then + php_cv_flex_version="$flex_check_version (ok)" + fi + done + ]) + else + flex_version=none + fi + + case $php_cv_flex_version in + ""|invalid[)] + if test -f "$abs_srcdir/Zend/zend_language_scanner.c" && test -f "$abs_srcdir/Zend/zend_ini_scanner.c"; then + AC_MSG_WARN([flex versions supported for regeneration of the Zend/PHP parsers: $flex_version_list (found: $flex_version)]) + else + flex_msg="Supported flex versions are: $flex_version_list" + if test "$flex_version" = "none"; then + flex_msg="flex not found. flex is required to generate the Zend/PHP parsers! $flex_msg" + else + flex_msg="Found invalid flex version: $flex_version. $flex_msg" + fi + AC_MSG_ERROR([$flex_msg]) + fi + LEX="exit 0;" + ;; + esac + PHP_SUBST(LEX) +]) + +dnl +dnl PHP_PROG_RE2C +dnl +dnl Search for the re2c binary and check the version +dnl +AC_DEFUN([PHP_PROG_RE2C],[ + AC_CHECK_PROG(RE2C, re2c, re2c) + if test -n "$RE2C"; then + AC_CACHE_CHECK([for re2c version], php_cv_re2c_version, [ + re2c_vernum=`$RE2C --vernum 2>/dev/null` + if test -z "$re2c_vernum" || test "$re2c_vernum" -lt "1304"; then + php_cv_re2c_version=invalid + else + php_cv_re2c_version="`$RE2C --version | cut -d ' ' -f 2 2>/dev/null` (ok)" + fi + ]) + fi + case $php_cv_re2c_version in + ""|invalid[)] + AC_MSG_WARN([You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.]) + RE2C="exit 0;" + ;; + esac + PHP_SUBST(RE2C) +]) + +dnl ------------------------------------------------------------------------- +dnl Common setup macros: PHP_SETUP_ +dnl ------------------------------------------------------------------------- + +dnl +dnl PHP_SETUP_ICU([shared-add]) +dnl +dnl Common setup macro for ICU +dnl +AC_DEFUN([PHP_SETUP_ICU],[ + PHP_ARG_WITH(icu-dir,, + [ --with-icu-dir=DIR Specify where ICU libraries and headers can be found], DEFAULT, no) + + if test "$PHP_ICU_DIR" = "no"; then + PHP_ICU_DIR=DEFAULT + fi + + if test "$PHP_ICU_DIR" = "DEFAULT"; then + dnl Try to find icu-config + AC_PATH_PROG(ICU_CONFIG, icu-config, no, [$PATH:/usr/local/bin]) + else + ICU_CONFIG="$PHP_ICU_DIR/bin/icu-config" + fi + + AC_MSG_CHECKING([for location of ICU headers and libraries]) + + dnl Trust icu-config to know better what the install prefix is.. + icu_install_prefix=`$ICU_CONFIG --prefix 2> /dev/null` + if test "$?" != "0" || test -z "$icu_install_prefix"; then + AC_MSG_RESULT([not found]) + AC_MSG_ERROR([Unable to detect ICU prefix or $ICU_CONFIG failed. Please verify ICU install prefix and make sure icu-config works.]) + else + AC_MSG_RESULT([$icu_install_prefix]) + + dnl Check ICU version + AC_MSG_CHECKING([for ICU 3.4 or greater]) + icu_version_full=`$ICU_CONFIG --version` + ac_IFS=$IFS + IFS="." + set $icu_version_full + IFS=$ac_IFS + icu_version=`expr [$]1 \* 1000 + [$]2` + AC_MSG_RESULT([found $icu_version_full]) + + if test "$icu_version" -lt "3004"; then + AC_MSG_ERROR([ICU version 3.4 or later is required]) + fi + + ICU_VERSION=$icu_version + ICU_INCS=`$ICU_CONFIG --cppflags-searchpath` + ICU_LIBS=`$ICU_CONFIG --ldflags --ldflags-icuio` + PHP_EVAL_INCLINE($ICU_INCS) + PHP_EVAL_LIBLINE($ICU_LIBS, $1) + fi +]) + +dnl +dnl PHP_SETUP_KERBEROS(shared-add [, action-found [, action-not-found]]) +dnl +dnl Common setup macro for kerberos +dnl +AC_DEFUN([PHP_SETUP_KERBEROS],[ + found_kerberos=no + unset KERBEROS_CFLAGS + unset KERBEROS_LIBS + + dnl First try to find krb5-config + if test -z "$KRB5_CONFIG"; then + AC_PATH_PROG(KRB5_CONFIG, krb5-config, no, [$PATH:/usr/kerberos/bin:/usr/local/bin]) + fi + + dnl If krb5-config is found try using it + if test "$PHP_KERBEROS" = "yes" && test -x "$KRB5_CONFIG"; then + KERBEROS_LIBS=`$KRB5_CONFIG --libs gssapi` + KERBEROS_CFLAGS=`$KRB5_CONFIG --cflags gssapi` + + if test -n "$KERBEROS_LIBS"; then + found_kerberos=yes + PHP_EVAL_LIBLINE($KERBEROS_LIBS, $1) + PHP_EVAL_INCLINE($KERBEROS_CFLAGS) + fi + fi + + dnl If still not found use old skool method + if test "$found_kerberos" = "no"; then + + if test "$PHP_KERBEROS" = "yes"; then + PHP_KERBEROS="/usr/kerberos /usr/local /usr" + fi + + for i in $PHP_KERBEROS; do + if test -f $i/$PHP_LIBDIR/libkrb5.a || test -f $i/$PHP_LIBDIR/libkrb5.$SHLIB_SUFFIX_NAME; then + PHP_KERBEROS_DIR=$i + break + fi + done + + if test "$PHP_KERBEROS_DIR"; then + found_kerberos=yes + PHP_ADD_LIBPATH($PHP_KERBEROS_DIR/$PHP_LIBDIR, $1) + PHP_ADD_LIBRARY(gssapi_krb5, 1, $1) + PHP_ADD_LIBRARY(krb5, 1, $1) + PHP_ADD_LIBRARY(k5crypto, 1, $1) + PHP_ADD_LIBRARY(com_err, 1, $1) + PHP_ADD_INCLUDE($PHP_KERBEROS_DIR/include) + fi + fi + + if test "$found_kerberos" = "yes"; then +ifelse([$2],[],:,[$2]) +ifelse([$3],[],,[else $3]) + fi +]) + +dnl +dnl PHP_SETUP_OPENSSL(shared-add [, action-found [, action-not-found]]) +dnl +dnl Common setup macro for openssl +dnl +AC_DEFUN([PHP_SETUP_OPENSSL],[ + found_openssl=no + unset OPENSSL_INCDIR + unset OPENSSL_LIBDIR + + dnl Empty variable means 'no' + test -z "$PHP_OPENSSL" && PHP_OPENSSL=no + test -z "$PHP_IMAP_SSL" && PHP_IMAP_SSL=no + + dnl Fallbacks for different configure options + if test "$PHP_OPENSSL" != "no"; then + PHP_OPENSSL_DIR=$PHP_OPENSSL + elif test "$PHP_IMAP_SSL" != "no"; then + PHP_OPENSSL_DIR=$PHP_IMAP_SSL + fi + + dnl First try to find pkg-config + if test -z "$PKG_CONFIG"; then + AC_PATH_PROG(PKG_CONFIG, pkg-config, no) + fi + + dnl If pkg-config is found try using it + if test "$PHP_OPENSSL_DIR" = "yes" && test -x "$PKG_CONFIG" && $PKG_CONFIG --exists openssl; then + if $PKG_CONFIG --atleast-version=0.9.6 openssl; then + found_openssl=yes + OPENSSL_LIBS=`$PKG_CONFIG --libs openssl` + OPENSSL_INCS=`$PKG_CONFIG --cflags-only-I openssl` + OPENSSL_INCDIR=`$PKG_CONFIG --variable=includedir openssl` + else + AC_MSG_ERROR([OpenSSL version 0.9.6 or greater required.]) + fi + + if test -n "$OPENSSL_LIBS"; then + PHP_EVAL_LIBLINE($OPENSSL_LIBS, $1) + fi + if test -n "$OPENSSL_INCS"; then + PHP_EVAL_INCLINE($OPENSSL_INCS) + fi + fi + + dnl If pkg-config fails for some reason, revert to the old method + if test "$found_openssl" = "no"; then + + if test "$PHP_OPENSSL_DIR" = "yes"; then + PHP_OPENSSL_DIR="/usr/local/ssl /usr/local /usr /usr/local/openssl" + fi + + for i in $PHP_OPENSSL_DIR; do + if test -r $i/include/openssl/evp.h; then + OPENSSL_INCDIR=$i/include + fi + if test -r $i/$PHP_LIBDIR/libssl.a -o -r $i/$PHP_LIBDIR/libssl.$SHLIB_SUFFIX_NAME; then + OPENSSL_LIBDIR=$i/$PHP_LIBDIR + fi + test -n "$OPENSSL_INCDIR" && test -n "$OPENSSL_LIBDIR" && break + done + + if test -z "$OPENSSL_INCDIR"; then + AC_MSG_ERROR([Cannot find OpenSSL's ]) + fi + + if test -z "$OPENSSL_LIBDIR"; then + AC_MSG_ERROR([Cannot find OpenSSL's libraries]) + fi + + old_CPPFLAGS=$CPPFLAGS + CPPFLAGS=-I$OPENSSL_INCDIR + AC_MSG_CHECKING([for OpenSSL version]) + AC_EGREP_CPP(yes,[ +#include +#if OPENSSL_VERSION_NUMBER >= 0x0090600fL + yes +#endif + ],[ + AC_MSG_RESULT([>= 0.9.6]) + ],[ + AC_MSG_ERROR([OpenSSL version 0.9.6 or greater required.]) + ]) + CPPFLAGS=$old_CPPFLAGS + + PHP_ADD_INCLUDE($OPENSSL_INCDIR) + + PHP_CHECK_LIBRARY(crypto, CRYPTO_free, [ + PHP_ADD_LIBRARY(crypto,,$1) + ],[ + AC_MSG_ERROR([libcrypto not found!]) + ],[ + -L$OPENSSL_LIBDIR + ]) + + old_LIBS=$LIBS + LIBS="$LIBS -lcrypto" + PHP_CHECK_LIBRARY(ssl, SSL_CTX_set_ssl_version, [ + found_openssl=yes + ],[ + AC_MSG_ERROR([libssl not found!]) + ],[ + -L$OPENSSL_LIBDIR + ]) + LIBS=$old_LIBS + PHP_ADD_LIBRARY(ssl,,$1) + PHP_ADD_LIBRARY(crypto,,$1) + + PHP_ADD_LIBPATH($OPENSSL_LIBDIR, $1) + fi + + if test "$found_openssl" = "yes"; then + dnl For apache 1.3.x static build + OPENSSL_INCDIR_OPT=-I$OPENSSL_INCDIR + AC_SUBST(OPENSSL_INCDIR_OPT) + +ifelse([$2],[],:,[$2]) +ifelse([$3],[],,[else $3]) + fi +]) + +dnl +dnl PHP_SETUP_ICONV(shared-add [, action-found [, action-not-found]]) +dnl +dnl Common setup macro for iconv +dnl +AC_DEFUN([PHP_SETUP_ICONV], [ + found_iconv=no + unset ICONV_DIR + + # Create the directories for a VPATH build: + $php_shtool mkdir -p ext/iconv + + echo > ext/iconv/php_have_bsd_iconv.h + echo > ext/iconv/php_have_ibm_iconv.h + echo > ext/iconv/php_have_glibc_iconv.h + echo > ext/iconv/php_have_libiconv.h + echo > ext/iconv/php_have_iconv.h + echo > ext/iconv/php_php_iconv_impl.h + echo > ext/iconv/php_iconv_aliased_libiconv.h + echo > ext/iconv/php_php_iconv_h_path.h + echo > ext/iconv/php_iconv_supports_errno.h + + dnl + dnl Check libc first if no path is provided in --with-iconv + dnl + + if test "$PHP_ICONV" = "yes"; then + dnl Reset LIBS temporarily as it may have already been included + dnl -liconv in. + LIBS_save="$LIBS" + LIBS= + AC_CHECK_FUNC(iconv, [ + found_iconv=yes + ],[ + AC_CHECK_FUNC(libiconv,[ + PHP_DEFINE(HAVE_LIBICONV,1,[ext/iconv]) + AC_DEFINE(HAVE_LIBICONV, 1, [ ]) + found_iconv=yes + ]) + ]) + LIBS="$LIBS_save" + fi + + dnl + dnl Check external libs for iconv funcs + dnl + if test "$found_iconv" = "no"; then + + for i in $PHP_ICONV /usr/local /usr; do + if test -r $i/include/giconv.h; then + AC_DEFINE(HAVE_GICONV_H, 1, [ ]) + ICONV_DIR=$i + iconv_lib_name=giconv + break + elif test -r $i/include/iconv.h; then + ICONV_DIR=$i + iconv_lib_name=iconv + break + fi + done + + if test -z "$ICONV_DIR"; then + AC_MSG_ERROR([Please specify the install prefix of iconv with --with-iconv=]) + fi + + if test -f $ICONV_DIR/$PHP_LIBDIR/lib$iconv_lib_name.a || + test -f $ICONV_DIR/$PHP_LIBDIR/lib$iconv_lib_name.$SHLIB_SUFFIX_NAME + then + PHP_CHECK_LIBRARY($iconv_lib_name, libiconv, [ + found_iconv=yes + PHP_DEFINE(HAVE_LIBICONV,1,[ext/iconv]) + AC_DEFINE(HAVE_LIBICONV,1,[ ]) + PHP_DEFINE([ICONV_ALIASED_LIBICONV],1,[ext/iconv]) + AC_DEFINE([ICONV_ALIASED_LIBICONV],1,[iconv() is aliased to libiconv() in -liconv]) + ], [ + PHP_CHECK_LIBRARY($iconv_lib_name, iconv, [ + found_iconv=yes + ], [], [ + -L$ICONV_DIR/$PHP_LIBDIR + ]) + ], [ + -L$ICONV_DIR/$PHP_LIBDIR + ]) + fi + fi + + if test "$found_iconv" = "yes"; then + PHP_DEFINE(HAVE_ICONV,1,[ext/iconv]) + AC_DEFINE(HAVE_ICONV,1,[ ]) + if test -n "$ICONV_DIR"; then + PHP_ADD_LIBRARY_WITH_PATH($iconv_lib_name, $ICONV_DIR/$PHP_LIBDIR, $1) + PHP_ADD_INCLUDE($ICONV_DIR/include) + fi + $2 +ifelse([$3],[],,[else $3]) + fi +]) + +dnl +dnl PHP_SETUP_LIBXML(shared-add [, action-found [, action-not-found]]) +dnl +dnl Common setup macro for libxml +dnl +AC_DEFUN([PHP_SETUP_LIBXML], [ +AC_CACHE_CHECK([for xml2-config path], ac_cv_php_xml2_config_path, +[ + for i in $PHP_LIBXML_DIR /usr/local /usr; do + if test -x "$i/bin/xml2-config"; then + ac_cv_php_xml2_config_path="$i/bin/xml2-config" + break + fi + done +]) + + if test -x "$ac_cv_php_xml2_config_path"; then + XML2_CONFIG="$ac_cv_php_xml2_config_path" + libxml_full_version=`$XML2_CONFIG --version` + ac_IFS=$IFS + IFS="." + set $libxml_full_version + IFS=$ac_IFS + LIBXML_VERSION=`expr [$]1 \* 1000000 + [$]2 \* 1000 + [$]3` + if test "$LIBXML_VERSION" -ge "2006011"; then + LIBXML_LIBS=`$XML2_CONFIG --libs` + LIBXML_INCS=`$XML2_CONFIG --cflags` + PHP_EVAL_LIBLINE($LIBXML_LIBS, $1) + PHP_EVAL_INCLINE($LIBXML_INCS) + + dnl Check that build works with given libs + AC_CACHE_CHECK(whether libxml build works, php_cv_libxml_build_works, [ + PHP_TEST_BUILD(xmlInitParser, + [ + php_cv_libxml_build_works=yes + ], [ + AC_MSG_RESULT(no) + AC_MSG_ERROR([build test failed. Please check the config.log for details.]) + ], [ + [$]$1 + ]) + ]) + if test "$php_cv_libxml_build_works" = "yes"; then + AC_DEFINE(HAVE_LIBXML, 1, [ ]) + fi + $2 + else + AC_MSG_ERROR([libxml2 version 2.6.11 or greater required.]) + fi +ifelse([$3],[],,[else $3]) + fi +]) + +dnl ------------------------------------------------------------------------- +dnl Misc. macros +dnl ------------------------------------------------------------------------- + +dnl +dnl PHP_INSTALL_HEADERS(path [, file ...]) +dnl +dnl PHP header files to be installed +dnl +AC_DEFUN([PHP_INSTALL_HEADERS],[ + ifelse([$2],[],[ + for header_file in $1; do + PHP_RUN_ONCE(INSTALLHEADERS, $header_file, [ + INSTALL_HEADERS="$INSTALL_HEADERS $header_file" + ]) + done + ], [ + header_path=$1 + for header_file in $2; do + hp_hf="$header_path/$header_file" + PHP_RUN_ONCE(INSTALLHEADERS, $hp_hf, [ + INSTALL_HEADERS="$INSTALL_HEADERS $hp_hf" + ]) + done + ]) +]) + +dnl +dnl PHP_AP_EXTRACT_VERSION(/path/httpd) +dnl +dnl This macro is used to get a comparable +dnl version for apache1/2. +dnl +AC_DEFUN([PHP_AP_EXTRACT_VERSION],[ + ac_output=`$1 -v 2>&1 | grep version | $SED -e 's/Oracle-HTTP-//'` + ac_IFS=$IFS +IFS="- /. +" + set $ac_output + IFS=$ac_IFS + + APACHE_VERSION=`expr [$]4 \* 1000000 + [$]5 \* 1000 + [$]6` +]) + +dnl +dnl PHP_DEBUG_MACRO(filename) +dnl +AC_DEFUN([PHP_DEBUG_MACRO],[ + DEBUG_LOG=$1 + cat >$1 <conftest.$ac_ext <>$1 2>&1 + rm -fr conftest* +]) + +dnl +dnl PHP_CONFIG_NICE(filename) +dnl +dnl Generates the config.nice file +dnl +AC_DEFUN([PHP_CONFIG_NICE],[ + AC_REQUIRE([AC_PROG_EGREP]) + AC_REQUIRE([LT_AC_PROG_SED]) + PHP_SUBST_OLD(EGREP) + PHP_SUBST_OLD(SED) + test -f $1 && mv $1 $1.old + rm -f $1.old + cat >$1<> $1 + fi + done + + echo "'[$]0' \\" >> $1 + if test `expr -- [$]0 : "'.*"` = 0; then + CONFIGURE_COMMAND="$CONFIGURE_COMMAND '[$]0'" + else + CONFIGURE_COMMAND="$CONFIGURE_COMMAND [$]0" + fi + for arg in $ac_configure_args; do + if test `expr -- $arg : "'.*"` = 0; then + if test `expr -- $arg : "--.*"` = 0; then + break; + fi + echo "'[$]arg' \\" >> $1 + CONFIGURE_OPTIONS="$CONFIGURE_OPTIONS '[$]arg'" + else + if test `expr -- $arg : "'--.*"` = 0; then + break; + fi + echo "[$]arg \\" >> $1 + CONFIGURE_OPTIONS="$CONFIGURE_OPTIONS [$]arg" + fi + done + echo '"[$]@"' >> $1 + chmod +x $1 + CONFIGURE_COMMAND="$CONFIGURE_COMMAND $CONFIGURE_OPTIONS" + PHP_SUBST_OLD(CONFIGURE_COMMAND) + PHP_SUBST_OLD(CONFIGURE_OPTIONS) +]) + +dnl +dnl PHP_CHECK_CONFIGURE_OPTIONS +dnl +AC_DEFUN([PHP_CHECK_CONFIGURE_OPTIONS],[ + for arg in $ac_configure_args; do + case $arg in + --with-*[)] + arg_name="`echo [$]arg | $SED -e 's/--with-/with-/g' -e 's/=.*//g'`" + ;; + --without-*[)] + arg_name="`echo [$]arg | $SED -e 's/--without-/with-/g' -e 's/=.*//g'`" + ;; + --enable-*[)] + arg_name="`echo [$]arg | $SED -e 's/--enable-/enable-/g' -e 's/=.*//g'`" + ;; + --disable-*[)] + arg_name="`echo [$]arg | $SED -e 's/--disable-/enable-/g' -e 's/=.*//g'`" + ;; + *[)] + continue + ;; + esac + case $arg_name in + # Allow --disable-all / --enable-all + enable-all[)];; + + # Allow certain libtool options + enable-libtool-lock | with-pic | with-tags | enable-shared | enable-static | enable-fast-install | with-gnu-ld[)];; + + # Allow certain TSRM options + with-tsrm-pth | with-tsrm-st | with-tsrm-pthreads[)];; + + # Allow certain Zend options + with-zend-vm | enable-maintainer-zts | enable-inline-optimization[)];; + + # All the rest must be set using the PHP_ARG_* macros + # PHP_ARG_* macros set php_enable_ or php_with_ + *[)] + # Options that exist before PHP 6 + if test "$PHP_MAJOR_VERSION" -lt "6"; then + case $arg_name in + enable-zend-multibyte[)] continue;; + esac + fi + + is_arg_set=php_[]`echo [$]arg_name | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ-' 'abcdefghijklmnopqrstuvwxyz_'` + if eval test "x\$$is_arg_set" = "x"; then + PHP_UNKNOWN_CONFIGURE_OPTIONS="$PHP_UNKNOWN_CONFIGURE_OPTIONS +[$]arg" + fi + ;; + esac + done +]) + +dnl +dnl PHP_CHECK_PDO_INCLUDES([found [, not-found]]) +dnl +AC_DEFUN([PHP_CHECK_PDO_INCLUDES],[ + AC_CACHE_CHECK([for PDO includes], pdo_cv_inc_path, [ + AC_MSG_CHECKING([for PDO includes]) + if test -f $abs_srcdir/include/php/ext/pdo/php_pdo_driver.h; then + pdo_cv_inc_path=$abs_srcdir/ext + elif test -f $abs_srcdir/ext/pdo/php_pdo_driver.h; then + pdo_cv_inc_path=$abs_srcdir/ext + elif test -f $prefix/include/php/ext/pdo/php_pdo_driver.h; then + pdo_cv_inc_path=$prefix/include/php/ext + fi + ]) + if test -n "$pdo_cv_inc_path"; then +ifelse([$1],[],:,[$1]) + else +ifelse([$2],[],[AC_MSG_ERROR([Cannot find php_pdo_driver.h.])],[$2]) + fi +]) + +dnl +dnl PHP_DETECT_ICC +dnl Detect Intel C++ Compiler and unset $GCC if ICC found +AC_DEFUN([PHP_DETECT_ICC], +[ + ICC="no" + AC_MSG_CHECKING([for icc]) + AC_EGREP_CPP([^__INTEL_COMPILER], [__INTEL_COMPILER], + ICC="no" + AC_MSG_RESULT([no]), + ICC="yes" + GCC="no" + AC_MSG_RESULT([yes]) + ) +]) + +dnl PHP_DETECT_SUNCC +dnl Detect if the systems default compiler is suncc. +dnl We also set some usefull CFLAGS if the user didn't set any +AC_DEFUN([PHP_DETECT_SUNCC],[ + SUNCC="no" + AC_MSG_CHECKING([for suncc]) + AC_EGREP_CPP([^__SUNPRO_C], [__SUNPRO_C], + SUNCC="no" + AC_MSG_RESULT([no]), + SUNCC="yes" + GCC="no" + test -n "$auto_cflags" && CFLAGS="-O -xs -xstrconst -zlazyload" + GCC="" + AC_MSG_RESULT([yes]) + ) +]) + +dnl +dnl PHP_CRYPT_R_STYLE +dnl detect the style of crypt_r() is any is available +dnl see APR_CHECK_CRYPT_R_STYLE() for original version +dnl +AC_DEFUN([PHP_CRYPT_R_STYLE], +[ + AC_CACHE_CHECK([which data struct is used by crypt_r], php_cv_crypt_r_style,[ + php_cv_crypt_r_style=none + AC_TRY_COMPILE([ +#define _REENTRANT 1 +#include +],[ +CRYPTD buffer; +crypt_r("passwd", "hash", &buffer); +], +php_cv_crypt_r_style=cryptd) + + if test "$php_cv_crypt_r_style" = "none"; then + AC_TRY_COMPILE([ +#define _REENTRANT 1 +#include +],[ +struct crypt_data buffer; +crypt_r("passwd", "hash", &buffer); +], +php_cv_crypt_r_style=struct_crypt_data) + fi + + if test "$php_cv_crypt_r_style" = "none"; then + AC_TRY_COMPILE([ +#define _REENTRANT 1 +#define _GNU_SOURCE +#include +],[ +struct crypt_data buffer; +crypt_r("passwd", "hash", &buffer); +], +php_cv_crypt_r_style=struct_crypt_data_gnu_source) + fi + ]) + + if test "$php_cv_crypt_r_style" = "cryptd"; then + AC_DEFINE(CRYPT_R_CRYPTD, 1, [Define if crypt_r has uses CRYPTD]) + fi + if test "$php_cv_crypt_r_style" = "struct_crypt_data" -o "$php_cv_crypt_r_style" = "struct_crypt_data_gnu_source"; then + AC_DEFINE(CRYPT_R_STRUCT_CRYPT_DATA, 1, [Define if crypt_r uses struct crypt_data]) + fi + if test "$php_cv_crypt_r_style" = "struct_crypt_data_gnu_source"; then + AC_DEFINE(CRYPT_R_GNU_SOURCE, 1, [Define if struct crypt_data requires _GNU_SOURCE]) + fi + if test "$php_cv_crypt_r_style" = "none"; then + AC_MSG_ERROR([Unable to detect data struct used by crypt_r]) + fi +]) + +dnl +dnl PHP_TEST_WRITE_STDOUT +dnl +AC_DEFUN([PHP_TEST_WRITE_STDOUT],[ + AC_CACHE_CHECK(whether writing to stdout works,ac_cv_write_stdout,[ + AC_TRY_RUN([ +#ifdef HAVE_UNISTD_H +#include +#endif + +#define TEXT "This is the test message -- " + +main() +{ + int n; + + n = write(1, TEXT, sizeof(TEXT)-1); + return (!(n == sizeof(TEXT)-1)); +} + ],[ + ac_cv_write_stdout=yes + ],[ + ac_cv_write_stdout=no + ],[ + ac_cv_write_stdout=no + ]) + ]) + if test "$ac_cv_write_stdout" = "yes"; then + AC_DEFINE(PHP_WRITE_STDOUT, 1, [whether write(2) works]) + fi +]) + +dnl +dnl PHP_INIT_DTRACE(providerdesc, header-file, sources [, module]) +dnl +AC_DEFUN([PHP_INIT_DTRACE],[ +dnl Set paths properly when called from extension + case "$4" in + ""[)] ac_srcdir="$abs_srcdir/"; unset ac_bdir;; + /*[)] ac_srcdir=`echo "$4"|cut -c 2-`"/"; ac_bdir=$ac_srcdir;; + *[)] ac_srcdir="$abs_srcdir/$1/"; ac_bdir="$4/";; + esac + +dnl providerdesc + ac_provsrc=$1 + old_IFS=[$]IFS + IFS=. + set $ac_provsrc + ac_provobj=[$]1 + IFS=$old_IFS + +dnl header-file + ac_hdrobj=$2 + +dnl Add providerdesc.o into global objects when needed + case $host_alias in + *freebsd*) + PHP_GLOBAL_OBJS="[$]PHP_GLOBAL_OBJS [$]ac_bdir[$]ac_provsrc.o" + PHP_LDFLAGS="$PHP_LDFLAGS -lelf" + ;; + *solaris*) + PHP_GLOBAL_OBJS="[$]PHP_GLOBAL_OBJS [$]ac_bdir[$]ac_provsrc.o" + ;; + esac + +dnl DTrace objects + old_IFS=[$]IFS + for ac_src in $3; do + IFS=. + set $ac_src + ac_obj=[$]1 + IFS=$old_IFS + + PHP_DTRACE_OBJS="[$]PHP_DTRACE_OBJS [$]ac_bdir[$]ac_obj.lo" + done; + + case [$]php_sapi_module in + shared[)] + for ac_lo in $PHP_DTRACE_OBJS; do + dtrace_objs="[$]dtrace_objs `echo $ac_lo | $SED -e 's,\.lo$,.o,' -e 's#\(.*\)\/#\1\/.libs\/#'`" + done; + ;; + *[)] + dtrace_objs='$(PHP_DTRACE_OBJS:.lo=.o)' + ;; + esac + +dnl Generate Makefile.objects entries + cat>>Makefile.objects</dev/null ; then + $2=$1 + else + changequote({,}) + ep_dir="`echo $1|$SED 's%/*[^/][^/]*/*$%%'`" + changequote([,]) + ep_realdir="`(cd \"$ep_dir\" && pwd)`" + $2="$ep_realdir/`basename \"$1\"`" + fi +]) + +dnl +dnl PHP_DEFINE(WHAT [, value[, directory]]) +dnl +dnl Creates builddir/include/what.h and in there #define WHAT value +dnl +AC_DEFUN([PHP_DEFINE],[ + [echo "#define ]$1[]ifelse([$2],,[ 1],[ $2])[" > ]ifelse([$3],,[include],[$3])[/php_]translit($1,A-Z,a-z)[.h] +]) + +dnl +dnl PHP_SUBST(varname) +dnl +dnl Adds variable with it's value into Makefile, e.g.: +dnl CC = gcc +dnl +AC_DEFUN([PHP_SUBST],[ + PHP_VAR_SUBST="$PHP_VAR_SUBST $1" +]) + +dnl +dnl PHP_SUBST_OLD(varname) +dnl +dnl Same as PHP_SUBST() but also substitutes all @VARNAME@ +dnl instances in every file passed to AC_OUTPUT() +dnl +AC_DEFUN([PHP_SUBST_OLD],[ + PHP_SUBST($1) + AC_SUBST($1) +]) + +dnl +dnl PHP_OUTPUT(file) +dnl +dnl Adds "file" to the list of files generated by AC_OUTPUT +dnl This macro can be used several times. +dnl +AC_DEFUN([PHP_OUTPUT],[ + PHP_OUTPUT_FILES="$PHP_OUTPUT_FILES $1" +]) + + +dnl ------------------------------------------------------------------------- +dnl Build system base macros +dnl ------------------------------------------------------------------------- + +dnl +dnl PHP_CANONICAL_HOST_TARGET +dnl +AC_DEFUN([PHP_CANONICAL_HOST_TARGET],[ + AC_REQUIRE([AC_CANONICAL_HOST])dnl + AC_REQUIRE([AC_CANONICAL_TARGET])dnl + dnl Make sure we do not continue if host_alias is empty. + if test -z "$host_alias" && test -n "$host"; then + host_alias=$host + fi + if test -z "$host_alias"; then + AC_MSG_ERROR([host_alias is not set!]) + fi +]) + +dnl +dnl PHP_INIT_BUILD_SYSTEM +dnl +AC_DEFUN([PHP_INIT_BUILD_SYSTEM],[ +AC_REQUIRE([PHP_CANONICAL_HOST_TARGET])dnl +test -d include || $php_shtool mkdir include +> Makefile.objects +> Makefile.fragments +dnl We need to play tricks here to avoid matching the grep line itself +pattern=define +$EGREP $pattern'.*include/php' $srcdir/configure|$SED 's/.*>//'|xargs touch 2>/dev/null +]) + +dnl +dnl PHP_GEN_GLOBAL_MAKEFILE +dnl +dnl Generates the global makefile. +dnl +AC_DEFUN([PHP_GEN_GLOBAL_MAKEFILE],[ + cat >Makefile <> Makefile + done + + cat $abs_srcdir/Makefile.global Makefile.fragments Makefile.objects >> Makefile +]) + +dnl +dnl PHP_ADD_MAKEFILE_FRAGMENT([srcfile [, ext_srcdir [, ext_builddir]]]) +dnl +dnl Processes a file called Makefile.frag in the source directory +dnl of the most recently added extension. $(srcdir) and $(builddir) +dnl are substituted with the proper paths. Can be used to supply +dnl custom rules and/or additional targets. +dnl +AC_DEFUN([PHP_ADD_MAKEFILE_FRAGMENT],[ + ifelse($1,,src=$ext_srcdir/Makefile.frag,src=$1) + ifelse($2,,ac_srcdir=$ext_srcdir,ac_srcdir=$2) + ifelse($3,,ac_builddir=$ext_builddir,ac_builddir=$3) + test -f "$src" && $SED -e "s#\$(srcdir)#$ac_srcdir#g" -e "s#\$(builddir)#$ac_builddir#g" $src >> Makefile.fragments +]) + +dnl +dnl PHP_ADD_SOURCES(source-path, sources [, special-flags [, type]]) +dnl +dnl Adds sources which are located relative to source-path to the +dnl array of type type. Sources are processed with optional +dnl special-flags which are passed to the compiler. Sources +dnl can be either written in C or C++ (filenames shall end in .c +dnl or .cpp, respectively). +dnl +dnl Note: If source-path begins with a "/", the "/" is removed and +dnl the path is interpreted relative to the top build-directory. +dnl +dnl which array to append to? +AC_DEFUN([PHP_ADD_SOURCES],[ + PHP_ADD_SOURCES_X($1, $2, $3, ifelse($4,sapi,PHP_SAPI_OBJS,PHP_GLOBAL_OBJS)) +]) + +dnl +dnl _PHP_ASSIGN_BUILD_VARS(type) +dnl internal, don't use +AC_DEFUN([_PHP_ASSIGN_BUILD_VARS],[ +ifelse($1,shared,[ + b_c_pre=$shared_c_pre + b_cxx_pre=$shared_cxx_pre + b_c_meta=$shared_c_meta + b_cxx_meta=$shared_cxx_meta + b_c_post=$shared_c_post + b_cxx_post=$shared_cxx_post +],[ + b_c_pre=$php_c_pre + b_cxx_pre=$php_cxx_pre + b_c_meta=$php_c_meta + b_cxx_meta=$php_cxx_meta + b_c_post=$php_c_post + b_cxx_post=$php_cxx_post +])dnl + b_lo=[$]$1_lo +]) + +dnl +dnl PHP_ADD_SOURCES_X(source-path, sources[, special-flags[, target-var[, shared[, special-post-flags]]]]) +dnl +dnl Additional to PHP_ADD_SOURCES (see above), this lets you set the +dnl name of the array target-var directly, as well as whether +dnl shared objects will be built from the sources. +dnl +dnl Should not be used directly. +dnl +AC_DEFUN([PHP_ADD_SOURCES_X],[ +dnl relative to source- or build-directory? +dnl ac_srcdir/ac_bdir include trailing slash + case $1 in + ""[)] ac_srcdir="$abs_srcdir/"; unset ac_bdir; ac_inc="-I. -I$abs_srcdir" ;; + /*[)] ac_srcdir=`echo "$1"|cut -c 2-`"/"; ac_bdir=$ac_srcdir; ac_inc="-I$ac_bdir -I$abs_srcdir/$ac_bdir" ;; + *[)] ac_srcdir="$abs_srcdir/$1/"; ac_bdir="$1/"; ac_inc="-I$ac_bdir -I$ac_srcdir" ;; + esac + +dnl how to build .. shared or static? + ifelse($5,yes,_PHP_ASSIGN_BUILD_VARS(shared),_PHP_ASSIGN_BUILD_VARS(php)) + +dnl iterate over the sources + old_IFS=[$]IFS + for ac_src in $2; do + +dnl remove the suffix + IFS=. + set $ac_src + ac_obj=[$]1 + IFS=$old_IFS + +dnl append to the array which has been dynamically chosen at m4 time + $4="[$]$4 [$]ac_bdir[$]ac_obj.lo" + +dnl choose the right compiler/flags/etc. for the source-file + case $ac_src in + *.c[)] ac_comp="$b_c_pre $3 $ac_inc $b_c_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $6$b_c_post" ;; + *.s[)] ac_comp="$b_c_pre $3 $ac_inc $b_c_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $6$b_c_post" ;; + *.S[)] ac_comp="$b_c_pre $3 $ac_inc $b_c_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $6$b_c_post" ;; + *.cpp|*.cc|*.cxx[)] ac_comp="$b_cxx_pre $3 $ac_inc $b_cxx_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $6$b_cxx_post" ;; + esac + +dnl create a rule for the object/source combo + cat >>Makefile.objects< conftest.c + cmd='$CC $1 -c conftest.c' + if eval $cmd 2>&1 | $EGREP -e $1 >/dev/null ; then + ac_result=no + else + ac_result=yes + fi + eval $gcc_arg_name=$ac_result + rm -f conftest.* + ]) + if eval test "\$$gcc_arg_name" = "yes"; then + $2 + else + : + $3 + fi +]) + +dnl +dnl PHP_LIBGCC_LIBPATH(gcc) +dnl +dnl Stores the location of libgcc in libgcc_libpath +dnl +AC_DEFUN([PHP_LIBGCC_LIBPATH],[ + changequote({,}) + libgcc_libpath=`$1 --print-libgcc-file-name|$SED 's%/*[^/][^/]*$%%'` + changequote([,]) +]) + +dnl ------------------------------------------------------------------------- +dnl Macros to modify LIBS, INCLUDES, etc. variables +dnl ------------------------------------------------------------------------- + +dnl +dnl PHP_REMOVE_USR_LIB(NAME) +dnl +dnl Removes all -L/usr/$PHP_LIBDIR entries from variable NAME +dnl +AC_DEFUN([PHP_REMOVE_USR_LIB],[ + unset ac_new_flags + for i in [$]$1; do + case [$]i in + -L/usr/$PHP_LIBDIR|-L/usr/$PHP_LIBDIR/[)] ;; + *[)] ac_new_flags="[$]ac_new_flags [$]i" ;; + esac + done + $1=[$]ac_new_flags +]) + +dnl +dnl PHP_EVAL_LIBLINE(libline, SHARED-LIBADD) +dnl +dnl Use this macro, if you need to add libraries and or library search +dnl paths to the PHP build system which are only given in compiler +dnl notation. +dnl +AC_DEFUN([PHP_EVAL_LIBLINE],[ + for ac_i in $1; do + case $ac_i in + -pthread[)] + if test "$ext_shared" = "yes"; then + $2="[$]$2 -pthread" + else + PHP_RUN_ONCE(EXTRA_LDFLAGS, [$ac_i], [EXTRA_LDFLAGS="$EXTRA_LDFLAGS $ac_i"]) + fi + ;; + -l*[)] + ac_ii=`echo $ac_i|cut -c 3-` + PHP_ADD_LIBRARY($ac_ii,1,$2) + ;; + -L*[)] + ac_ii=`echo $ac_i|cut -c 3-` + PHP_ADD_LIBPATH($ac_ii,$2) + ;; + esac + done +]) + +dnl +dnl PHP_EVAL_INCLINE(headerline) +dnl +dnl Use this macro, if you need to add header search paths to the PHP +dnl build system which are only given in compiler notation. +dnl +AC_DEFUN([PHP_EVAL_INCLINE],[ + for ac_i in $1; do + case $ac_i in + -I*[)] + ac_ii=`echo $ac_i|cut -c 3-` + PHP_ADD_INCLUDE($ac_ii) + ;; + esac + done +]) + +dnl internal, don't use +AC_DEFUN([_PHP_ADD_LIBPATH_GLOBAL],[ + PHP_RUN_ONCE(LIBPATH, $1, [ + test -n "$ld_runpath_switch" && LDFLAGS="$LDFLAGS $ld_runpath_switch$1" + LDFLAGS="$LDFLAGS -L$1" + PHP_RPATHS="$PHP_RPATHS $1" + ]) +])dnl +dnl +dnl +dnl PHP_ADD_LIBPATH(path [, SHARED-LIBADD]) +dnl +dnl Adds a path to linkpath/runpath (LDFLAGS) +dnl +AC_DEFUN([PHP_ADD_LIBPATH],[ + if test "$1" != "/usr/$PHP_LIBDIR" && test "$1" != "/usr/lib"; then + PHP_EXPAND_PATH($1, ai_p) + ifelse([$2],,[ + _PHP_ADD_LIBPATH_GLOBAL([$ai_p]) + ],[ + if test "$ext_shared" = "yes"; then + $2="-L$ai_p [$]$2" + test -n "$ld_runpath_switch" && $2="$ld_runpath_switch$ai_p [$]$2" + else + _PHP_ADD_LIBPATH_GLOBAL([$ai_p]) + fi + ]) + fi +]) + +dnl +dnl PHP_UTILIZE_RPATHS() +dnl +dnl builds RPATHS/LDFLAGS from PHP_RPATHS +dnl +AC_DEFUN([PHP_UTILIZE_RPATHS],[ + OLD_RPATHS=$PHP_RPATHS + unset PHP_RPATHS + + for i in $OLD_RPATHS; do +dnl Can be passed to native cc/libtool + PHP_LDFLAGS="$PHP_LDFLAGS -L$i" +dnl Libtool-specific + PHP_RPATHS="$PHP_RPATHS -R $i" +dnl cc-specific + NATIVE_RPATHS="$NATIVE_RPATHS $ld_runpath_switch$i" + done + + if test "$PHP_RPATH" = "no"; then + unset PHP_RPATHS + unset NATIVE_RPATHS + fi +]) + +dnl +dnl PHP_ADD_INCLUDE(path [,before]) +dnl +dnl add an include path. +dnl if before is 1, add in the beginning of INCLUDES. +dnl +AC_DEFUN([PHP_ADD_INCLUDE],[ + if test "$1" != "/usr/include"; then + PHP_EXPAND_PATH($1, ai_p) + PHP_RUN_ONCE(INCLUDEPATH, $ai_p, [ + if test "$2"; then + INCLUDES="-I$ai_p $INCLUDES" + else + INCLUDES="$INCLUDES -I$ai_p" + fi + ]) + fi +]) + +dnl internal, don't use +AC_DEFUN([_PHP_X_ADD_LIBRARY],[dnl + ifelse([$2],,$3="-l$1 [$]$3", $3="[$]$3 -l$1") dnl +])dnl +dnl +dnl internal, don't use +AC_DEFUN([_PHP_ADD_LIBRARY_SKELETON],[ + case $1 in + c|c_r|pthread*[)] ;; + *[)] ifelse($3,,[ + _PHP_X_ADD_LIBRARY($1,$2,$5) + ],[ + if test "$ext_shared" = "yes"; then + _PHP_X_ADD_LIBRARY($1,$2,$3) + else + $4($1,$2) + fi + ]) ;; + esac +])dnl +dnl +dnl +dnl PHP_ADD_LIBRARY(library[, append[, shared-libadd]]) +dnl +dnl add a library to the link line +dnl +AC_DEFUN([PHP_ADD_LIBRARY],[ + _PHP_ADD_LIBRARY_SKELETON([$1],[$2],[$3],[PHP_ADD_LIBRARY],[LIBS]) +]) + +dnl +dnl PHP_ADD_LIBRARY_DEFER(library[, append[, shared-libadd]]) +dnl +dnl add a library to the link line (deferred, not used during configure) +dnl +AC_DEFUN([PHP_ADD_LIBRARY_DEFER],[ + _PHP_ADD_LIBRARY_SKELETON([$1],[$2],[$3],[PHP_ADD_LIBRARY_DEFER],[DLIBS]) +]) + +dnl +dnl PHP_ADD_LIBRARY_WITH_PATH(library, path[, shared-libadd]) +dnl +dnl add a library to the link line and path to linkpath/runpath. +dnl if shared-libadd is not empty and $ext_shared is yes, +dnl shared-libadd will be assigned the library information +dnl +AC_DEFUN([PHP_ADD_LIBRARY_WITH_PATH],[ +ifelse($3,,[ + if test -n "$2"; then + PHP_ADD_LIBPATH($2) + fi + PHP_ADD_LIBRARY($1) +],[ + if test "$ext_shared" = "yes"; then + $3="-l$1 [$]$3" + if test -n "$2"; then + PHP_ADD_LIBPATH($2,$3) + fi + else + PHP_ADD_LIBRARY_WITH_PATH($1,$2) + fi +]) +]) + +dnl +dnl PHP_ADD_LIBRARY_DEFER_WITH_PATH(library, path[, shared-libadd]) +dnl +dnl add a library to the link line (deferred) +dnl and path to linkpath/runpath (not deferred) +dnl if shared-libadd is not empty and $ext_shared is yes, +dnl shared-libadd will be assigned the library information +dnl +AC_DEFUN([PHP_ADD_LIBRARY_DEFER_WITH_PATH],[ +ifelse($3,,[ + if test -n "$2"; then + PHP_ADD_LIBPATH($2) + fi + PHP_ADD_LIBRARY_DEFER($1) +],[ + if test "$ext_shared" = "yes"; then + $3="-l$1 [$]$3" + if test -n "$2"; then + PHP_ADD_LIBPATH($2,$3) + fi + else + PHP_ADD_LIBRARY_DEFER_WITH_PATH($1,$2) + fi +]) +]) + +dnl +dnl PHP_ADD_FRAMEWORK(framework [,before]) +dnl +dnl add a (Darwin / Mac OS X) framework to the link +dnl line. if before is 1, the framework is added +dnl to the beginning of the line. +dnl +AC_DEFUN([PHP_ADD_FRAMEWORK], [ + PHP_RUN_ONCE(FRAMEWORKS, $1, [ + if test "$2"; then + PHP_FRAMEWORKS="-framework $1 $PHP_FRAMEWORKS" + else + PHP_FRAMEWORKS="$PHP_FRAMEWORKS -framework $1" + fi + ]) +]) + +dnl +dnl PHP_ADD_FRAMEWORKPATH(path [,before]) +dnl +dnl add a (Darwin / Mac OS X) framework path to the link +dnl and include lines. default paths include (but are +dnl not limited to) /Local/Library/Frameworks and +dnl /System/Library/Frameworks, so these don't need +dnl to be specifically added. if before is 1, the +dnl framework path is added to the beginning of the +dnl relevant lines. +dnl +AC_DEFUN([PHP_ADD_FRAMEWORKPATH], [ + PHP_EXPAND_PATH($1, ai_p) + PHP_RUN_ONCE(FRAMEWORKPATH, $ai_p, [ + if test "$2"; then + PHP_FRAMEWORKPATH="-F$ai_p $PHP_FRAMEWORKPATH" + else + PHP_FRAMEWORKPATH="$PHP_FRAMEWORKPATH -F$ai_p" + fi + ]) +]) + +dnl +dnl PHP_ADD_FRAMEWORK_WITH_PATH(framework, path) +dnl +dnl Adds a (Darwin / Mac OS X) framework path and the +dnl framework itself to the link and include lines. +dnl +AC_DEFUN([PHP_ADD_FRAMEWORK_WITH_PATH], [ + PHP_ADD_FRAMEWORKPATH($2) + PHP_ADD_FRAMEWORK($1) +]) + +dnl +dnl PHP_SET_LIBTOOL_VARIABLE(var) +dnl +dnl Set libtool variable +dnl +AC_DEFUN([PHP_SET_LIBTOOL_VARIABLE],[ + if test -z "$LIBTOOL"; then + LIBTOOL='$(SHELL) $(top_builddir)/libtool $1' + else + LIBTOOL="$LIBTOOL $1" + fi +]) + +dnl ------------------------------------------------------------------------- +dnl Wrapper macros for AC_ARG_WITH / AC_ARG_ENABLE +dnl ------------------------------------------------------------------------- + +dnl PHP_ARG_ANALYZE_EX +dnl internal +AC_DEFUN([PHP_ARG_ANALYZE_EX],[ +ext_output="yes, shared" +ext_shared=yes +case [$]$1 in +shared,*[)] + $1=`echo "[$]$1"|$SED 's/^shared,//'` + ;; +shared[)] + $1=yes + ;; +no[)] + ext_output=no + ext_shared=no + ;; +*[)] + ext_output=yes + ext_shared=no + ;; +esac + +PHP_ALWAYS_SHARED([$1]) +]) + +dnl PHP_ARG_ANALYZE +dnl internal +AC_DEFUN([PHP_ARG_ANALYZE],[ +ifelse([$3],yes,[PHP_ARG_ANALYZE_EX([$1])],[ext_output=ifelse([$]$1,,no,[$]$1)]) +ifelse([$2],,,[AC_MSG_RESULT([$ext_output])]) +]) + +dnl +dnl PHP_ARG_WITH(arg-name, check message, help text[, default-val[, extension-or-not]]) +dnl Sets PHP_ARG_NAME either to the user value or to the default value. +dnl default-val defaults to no. This will also set the variable ext_shared, +dnl and will overwrite any previous variable of that name. +dnl If extension-or-not is yes (default), then do the ENABLE_ALL check and run +dnl the PHP_ARG_ANALYZE_EX. +dnl +AC_DEFUN([PHP_ARG_WITH],[ +php_with_[]translit($1,A-Z0-9-,a-z0-9_)=ifelse($4,,no,$4) +PHP_REAL_ARG_WITH([$1],[$2],[$3],[$4],PHP_[]translit($1,a-z0-9-,A-Z0-9_),[ifelse($5,,yes,$5)]) +]) + +dnl PHP_REAL_ARG_WITH +dnl internal +AC_DEFUN([PHP_REAL_ARG_WITH],[ +ifelse([$2],,,[AC_MSG_CHECKING([$2])]) +AC_ARG_WITH($1,[$3],$5=[$]withval, +[ + $5=ifelse($4,,no,$4) + ifelse($6,yes,[test "$PHP_ENABLE_ALL" && $5=$PHP_ENABLE_ALL]) +]) +PHP_ARG_ANALYZE($5,[$2],$6) +]) + +dnl +dnl PHP_ARG_ENABLE(arg-name, check message, help text[, default-val[, extension-or-not]]) +dnl Sets PHP_ARG_NAME either to the user value or to the default value. +dnl default-val defaults to no. This will also set the variable ext_shared, +dnl and will overwrite any previous variable of that name. +dnl If extension-or-not is yes (default), then do the ENABLE_ALL check and run +dnl the PHP_ARG_ANALYZE_EX. +dnl +AC_DEFUN([PHP_ARG_ENABLE],[ +php_enable_[]translit($1,A-Z0-9-,a-z0-9_)=ifelse($4,,no,$4) +PHP_REAL_ARG_ENABLE([$1],[$2],[$3],[$4],PHP_[]translit($1,a-z0-9-,A-Z0-9_),[ifelse($5,,yes,$5)]) +]) + +dnl PHP_REAL_ARG_ENABLE +dnl internal +AC_DEFUN([PHP_REAL_ARG_ENABLE],[ +ifelse([$2],,,[AC_MSG_CHECKING([$2])]) +AC_ARG_ENABLE($1,[$3],$5=[$]enableval, +[ + $5=ifelse($4,,no,$4) + ifelse($6,yes,[test "$PHP_ENABLE_ALL" && $5=$PHP_ENABLE_ALL]) +]) +PHP_ARG_ANALYZE($5,[$2],$6) +]) + +dnl ------------------------------------------------------------------------- +dnl Build macros +dnl ------------------------------------------------------------------------- + +dnl +dnl PHP_BUILD_THREAD_SAFE +dnl +AC_DEFUN([PHP_BUILD_THREAD_SAFE],[ + enable_maintainer_zts=yes + if test "$pthreads_working" != "yes"; then + AC_MSG_ERROR([ZTS currently requires working POSIX threads. We were unable to verify that your system supports Pthreads.]) + fi +]) + +dnl +dnl PHP_REQUIRE_CXX +dnl +AC_DEFUN([PHP_REQUIRE_CXX],[ + if test -z "$php_cxx_done"; then + AC_PROG_CXX + AC_PROG_CXXCPP + PHP_ADD_LIBRARY(stdc++) + php_cxx_done=yes + fi +]) + +dnl +dnl PHP_BUILD_SHARED +dnl +AC_DEFUN([PHP_BUILD_SHARED],[ + PHP_BUILD_PROGRAM + OVERALL_TARGET=libphp[]$PHP_MAJOR_VERSION[.la] + php_sapi_module=shared + + php_c_pre=$shared_c_pre + php_c_meta=$shared_c_meta + php_c_post=$shared_c_post + php_cxx_pre=$shared_cxx_pre + php_cxx_meta=$shared_cxx_meta + php_cxx_post=$shared_cxx_post + php_lo=$shared_lo +]) + +dnl +dnl PHP_BUILD_STATIC +dnl +AC_DEFUN([PHP_BUILD_STATIC],[ + PHP_BUILD_PROGRAM + OVERALL_TARGET=libphp[]$PHP_MAJOR_VERSION[.la] + php_sapi_module=static +]) + +dnl +dnl PHP_BUILD_BUNDLE +dnl +AC_DEFUN([PHP_BUILD_BUNDLE],[ + PHP_BUILD_PROGRAM + OVERALL_TARGET=libs/libphp[]$PHP_MAJOR_VERSION[.bundle] + php_sapi_module=static +]) + +dnl +dnl PHP_BUILD_PROGRAM +dnl +AC_DEFUN([PHP_BUILD_PROGRAM],[ + php_c_pre='$(LIBTOOL) --mode=compile $(CC)' + php_c_meta='$(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS)' + php_c_post= + php_cxx_pre='$(LIBTOOL) --mode=compile $(CXX)' + php_cxx_meta='$(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS)' + php_cxx_post= + php_lo=lo + + case $with_pic in + yes) pic_setting='-prefer-pic';; + no) pic_setting='-prefer-non-pic';; + esac + + shared_c_pre='$(LIBTOOL) --mode=compile $(CC)' + shared_c_meta='$(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) '$pic_setting + shared_c_post= + shared_cxx_pre='$(LIBTOOL) --mode=compile $(CXX)' + shared_cxx_meta='$(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) '$pic_setting + shared_cxx_post= + shared_lo=lo +]) + +dnl +dnl PHP_SHARED_MODULE(module-name, object-var, build-dir, cxx, zend_ext) +dnl +dnl Basically sets up the link-stage for building module-name +dnl from object_var in build-dir. +dnl +AC_DEFUN([PHP_SHARED_MODULE],[ + install_modules="install-modules" + + case $host_alias in + *aix*[)] + suffix=so + link_cmd='$(LIBTOOL) --mode=link ifelse($4,,[$(CC)],[$(CXX)]) $(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) -Wl,-G -o '$3'/$1.la -export-dynamic -avoid-version -prefer-pic -module -rpath $(phplibdir) $(EXTRA_LDFLAGS) $($2) $(translit($1,a-z_-,A-Z__)_SHARED_LIBADD) && mv -f '$3'/.libs/$1.so '$3'/$1.so' + ;; + *netware*[)] + suffix=nlm + link_cmd='$(LIBTOOL) --mode=link ifelse($4,,[$(CC)],[$(CXX)]) $(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) -o [$]@ -shared -export-dynamic -avoid-version -prefer-pic -module -rpath $(phplibdir) $(EXTRA_LDFLAGS) $($2) ifelse($1, php5lib, , -L$(top_builddir)/netware -lphp5lib) $(translit(ifelse($1, php5lib, $1, m4_substr($1, 3)),a-z_-,A-Z__)_SHARED_LIBADD)' + ;; + *[)] + suffix=la + link_cmd='$(LIBTOOL) --mode=link ifelse($4,,[$(CC)],[$(CXX)]) $(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) $(LDFLAGS) -o [$]@ -export-dynamic -avoid-version -prefer-pic -module -rpath $(phplibdir) $(EXTRA_LDFLAGS) $($2) $(translit($1,a-z_-,A-Z__)_SHARED_LIBADD)' + ;; + esac + + if test "x$5" = "xyes"; then + PHP_ZEND_EX="$PHP_ZEND_EX \$(phplibdir)/$1.$suffix" + else + PHP_MODULES="$PHP_MODULES \$(phplibdir)/$1.$suffix" + fi + PHP_SUBST($2) + cat >>Makefile.objects<> $2 +]) +dnl +dnl _PHP_CHECK_SIZEOF(type, cross-value, extra-headers [, found-action [, not-found-action]]) +dnl +AC_DEFUN([_PHP_CHECK_SIZEOF], [ + php_cache_value=php_cv_sizeof_[]$1 + AC_CACHE_VAL(php_cv_sizeof_[]$1, [ + old_LIBS=$LIBS + LIBS= + old_LDFLAGS=$LDFLAGS + LDFLAGS= + AC_TRY_RUN([#include +#if STDC_HEADERS +#include +#include +#endif +#ifdef HAVE_INTTYPES_H +#include +#endif +#ifdef HAVE_UNISTD_H +#include +#endif +$3 + +int main() +{ + FILE *fp = fopen("conftestval", "w"); + if (!fp) return(1); + fprintf(fp, "%d\n", sizeof($1)); + return(0); +} + ], [ + eval $php_cache_value=`cat conftestval` + ], [ + eval $php_cache_value=0 + ], [ + ifelse([$2],,[eval $php_cache_value=0], [eval $php_cache_value=$2]) +]) + LDFLAGS=$old_LDFLAGS + LIBS=$old_LIBS +]) + if eval test "\$$php_cache_value" != "0"; then +ifelse([$4],[],:,[$4]) +ifelse([$5],[],,[else $5]) + fi +]) + +dnl +dnl PHP_CHECK_SIZEOF(type, cross-value, extra-headers) +dnl +AC_DEFUN([PHP_CHECK_SIZEOF], [ + AC_MSG_CHECKING([size of $1]) + _PHP_CHECK_SIZEOF($1, $2, $3, [ + AC_DEFINE_UNQUOTED([SIZEOF_]translit($1,a-z,A-Z_), [$]php_cv_sizeof_[]$1, [Size of $1]) + AC_DEFINE_UNQUOTED([HAVE_]translit($1,a-z,A-Z_), 1, [Whether $1 is available]) + ]) + AC_MSG_RESULT([[$][php_cv_sizeof_]translit($1, ,_)]) +]) + +dnl +dnl PHP_CHECK_TYPES(type-list, include-file [, extra-headers]) +dnl +AC_DEFUN([PHP_CHECK_TYPES], [ + for php_typename in $1; do + AC_MSG_CHECKING([whether $php_typename exists]) + _PHP_CHECK_SIZEOF($php_typename, 0, $3, [ + _PHP_DEF_HAVE_FILE($php_typename, $2) + AC_MSG_RESULT([yes]) + ], [ + AC_MSG_RESULT([no]) + ]) + done +]) + +dnl +dnl PHP_CHECK_IN_ADDR_T +dnl +AC_DEFUN([PHP_CHECK_IN_ADDR_T], [ +dnl AIX keeps in_addr_t in /usr/include/netinet/in.h +AC_MSG_CHECKING([for in_addr_t]) +AC_CACHE_VAL(ac_cv_type_in_addr_t, +[AC_EGREP_CPP(dnl +changequote(<<,>>)dnl +<>dnl +changequote([,]), [#include +#if STDC_HEADERS +#include +#include +#endif +#ifdef HAVE_NETINET_IN_H +#include +#endif], ac_cv_type_in_addr_t=yes, ac_cv_type_in_addr_t=no)])dnl +AC_MSG_RESULT([$ac_cv_type_in_addr_t]) +if test $ac_cv_type_in_addr_t = no; then + AC_DEFINE(in_addr_t, u_int, [ ]) +fi +]) + +dnl +dnl PHP_TIME_R_TYPE +dnl +dnl Check type of reentrant time-related functions +dnl Type can be: irix, hpux or POSIX +dnl +AC_DEFUN([PHP_TIME_R_TYPE],[ +AC_CACHE_CHECK(for type of reentrant time-related functions, ac_cv_time_r_type,[ +AC_TRY_RUN([ +#include + +main() { +char buf[27]; +struct tm t; +time_t old = 0; +int r, s; + +s = gmtime_r(&old, &t); +r = (int) asctime_r(&t, buf, 26); +if (r == s && s == 0) return (0); +return (1); +} +],[ + ac_cv_time_r_type=hpux +],[ + AC_TRY_RUN([ +#include +main() { + struct tm t, *s; + time_t old = 0; + char buf[27], *p; + + s = gmtime_r(&old, &t); + p = asctime_r(&t, buf, 26); + if (p == buf && s == &t) return (0); + return (1); +} + ],[ + ac_cv_time_r_type=irix + ],[ + ac_cv_time_r_type=POSIX + ],[ + ac_cv_time_r_type=POSIX + ]) +],[ + ac_cv_time_r_type=POSIX +]) +]) + case $ac_cv_time_r_type in + hpux[)] AC_DEFINE(PHP_HPUX_TIME_R,1,[Whether you have HP-UX 10.x]) ;; + irix[)] AC_DEFINE(PHP_IRIX_TIME_R,1,[Whether you have IRIX-style functions]) ;; + esac +]) + +dnl +dnl PHP_DOES_PWRITE_WORK +dnl internal +AC_DEFUN([PHP_DOES_PWRITE_WORK],[ + AC_TRY_RUN([ +#include +#include +#include +#include +#include +$1 + main() { + int fd = open("conftest_in", O_WRONLY|O_CREAT, 0600); + + if (fd < 0) exit(1); + if (pwrite(fd, "text", 4, 0) != 4) exit(1); + /* Linux glibc breakage until 2.2.5 */ + if (pwrite(fd, "text", 4, -1) != -1 || errno != EINVAL) exit(1); + exit(0); + } + + ],[ + ac_cv_pwrite=yes + ],[ + ac_cv_pwrite=no + ],[ + ac_cv_pwrite=no + ]) +]) + +dnl PHP_DOES_PREAD_WORK +dnl internal +AC_DEFUN([PHP_DOES_PREAD_WORK],[ + echo test > conftest_in + AC_TRY_RUN([ +#include +#include +#include +#include +#include +$1 + main() { + char buf[3]; + int fd = open("conftest_in", O_RDONLY); + if (fd < 0) exit(1); + if (pread(fd, buf, 2, 0) != 2) exit(1); + /* Linux glibc breakage until 2.2.5 */ + if (pread(fd, buf, 2, -1) != -1 || errno != EINVAL) exit(1); + exit(0); + } + ],[ + ac_cv_pread=yes + ],[ + ac_cv_pread=no + ],[ + ac_cv_pread=no + ]) + rm -f conftest_in +]) + +dnl +dnl PHP_PWRITE_TEST +dnl +AC_DEFUN([PHP_PWRITE_TEST],[ + AC_CACHE_CHECK(whether pwrite works,ac_cv_pwrite,[ + PHP_DOES_PWRITE_WORK + if test "$ac_cv_pwrite" = "no"; then + PHP_DOES_PWRITE_WORK([ssize_t pwrite(int, void *, size_t, off64_t);]) + if test "$ac_cv_pwrite" = "yes"; then + ac_cv_pwrite=64 + fi + fi + ]) + + if test "$ac_cv_pwrite" != "no"; then + AC_DEFINE(HAVE_PWRITE, 1, [ ]) + if test "$ac_cv_pwrite" = "64"; then + AC_DEFINE(PHP_PWRITE_64, 1, [whether pwrite64 is default]) + fi + fi +]) + +dnl +dnl PHP_PREAD_TEST +dnl +AC_DEFUN([PHP_PREAD_TEST],[ + AC_CACHE_CHECK(whether pread works,ac_cv_pread,[ + PHP_DOES_PREAD_WORK + if test "$ac_cv_pread" = "no"; then + PHP_DOES_PREAD_WORK([ssize_t pread(int, void *, size_t, off64_t);]) + if test "$ac_cv_pread" = "yes"; then + ac_cv_pread=64 + fi + fi + ]) + + if test "$ac_cv_pread" != "no"; then + AC_DEFINE(HAVE_PREAD, 1, [ ]) + if test "$ac_cv_pread" = "64"; then + AC_DEFINE(PHP_PREAD_64, 1, [whether pread64 is default]) + fi + fi +]) + +dnl +dnl PHP_MISSING_TIME_R_DECL +dnl +AC_DEFUN([PHP_MISSING_TIME_R_DECL],[ + AC_MSG_CHECKING([for missing declarations of reentrant functions]) + AC_TRY_COMPILE([#include ],[struct tm *(*func)() = localtime_r],[ + : + ],[ + AC_DEFINE(MISSING_LOCALTIME_R_DECL,1,[Whether localtime_r is declared]) + ]) + AC_TRY_COMPILE([#include ],[struct tm *(*func)() = gmtime_r],[ + : + ],[ + AC_DEFINE(MISSING_GMTIME_R_DECL,1,[Whether gmtime_r is declared]) + ]) + AC_TRY_COMPILE([#include ],[char *(*func)() = asctime_r],[ + : + ],[ + AC_DEFINE(MISSING_ASCTIME_R_DECL,1,[Whether asctime_r is declared]) + ]) + AC_TRY_COMPILE([#include ],[char *(*func)() = ctime_r],[ + : + ],[ + AC_DEFINE(MISSING_CTIME_R_DECL,1,[Whether ctime_r is declared]) + ]) + AC_TRY_COMPILE([#include ],[char *(*func)() = strtok_r],[ + : + ],[ + AC_DEFINE(MISSING_STRTOK_R_DECL,1,[Whether strtok_r is declared]) + ]) + AC_MSG_RESULT([done]) +]) + +dnl +dnl PHP_READDIR_R_TYPE +dnl +AC_DEFUN([PHP_READDIR_R_TYPE],[ + dnl HAVE_READDIR_R is also defined by libmysql + AC_CHECK_FUNC(readdir_r,ac_cv_func_readdir_r=yes,ac_cv_func_readdir=no) + if test "$ac_cv_func_readdir_r" = "yes"; then + AC_CACHE_CHECK(for type of readdir_r, ac_cv_what_readdir_r,[ + AC_TRY_RUN([ +#define _REENTRANT +#include +#include + +#ifndef PATH_MAX +#define PATH_MAX 1024 +#endif + +main() { + DIR *dir; + char entry[sizeof(struct dirent)+PATH_MAX]; + struct dirent *pentry = (struct dirent *) &entry; + + dir = opendir("/"); + if (!dir) + exit(1); + if (readdir_r(dir, (struct dirent *) entry, &pentry) == 0) + exit(0); + exit(1); +} + ],[ + ac_cv_what_readdir_r=POSIX + ],[ + AC_TRY_CPP([ +#define _REENTRANT +#include +#include +int readdir_r(DIR *, struct dirent *); + ],[ + ac_cv_what_readdir_r=old-style + ],[ + ac_cv_what_readdir_r=none + ]) + ],[ + ac_cv_what_readdir_r=none + ]) + ]) + case $ac_cv_what_readdir_r in + POSIX) + AC_DEFINE(HAVE_POSIX_READDIR_R,1,[whether you have POSIX readdir_r]);; + old-style) + AC_DEFINE(HAVE_OLD_READDIR_R,1,[whether you have old-style readdir_r]);; + esac + fi +]) + +dnl +dnl PHP_TM_GMTOFF +dnl +AC_DEFUN([PHP_TM_GMTOFF],[ +AC_CACHE_CHECK([for tm_gmtoff in struct tm], ac_cv_struct_tm_gmtoff, +[AC_TRY_COMPILE([#include +#include <$ac_cv_struct_tm>], [struct tm tm; tm.tm_gmtoff;], + ac_cv_struct_tm_gmtoff=yes, ac_cv_struct_tm_gmtoff=no)]) + +if test "$ac_cv_struct_tm_gmtoff" = yes; then + AC_DEFINE(HAVE_TM_GMTOFF,1,[whether you have tm_gmtoff in struct tm]) +fi +]) + +dnl +dnl PHP_STRUCT_FLOCK +dnl +AC_DEFUN([PHP_STRUCT_FLOCK],[ +AC_CACHE_CHECK(for struct flock,ac_cv_struct_flock, + AC_TRY_COMPILE([ +#include +#include + ], + [struct flock x;], + [ + ac_cv_struct_flock=yes + ],[ + ac_cv_struct_flock=no + ]) +) +if test "$ac_cv_struct_flock" = "yes" ; then + AC_DEFINE(HAVE_STRUCT_FLOCK, 1,[whether you have struct flock]) +fi +]) + +dnl +dnl PHP_SOCKLEN_T +dnl +AC_DEFUN([PHP_SOCKLEN_T],[ +AC_CACHE_CHECK(for socklen_t,ac_cv_socklen_t, + AC_TRY_COMPILE([ +#include +#include +],[ +socklen_t x; +],[ + ac_cv_socklen_t=yes +],[ + ac_cv_socklen_t=no +])) +if test "$ac_cv_socklen_t" = "yes"; then + AC_DEFINE(HAVE_SOCKLEN_T, 1, [Whether you have socklen_t]) +fi +]) + +dnl +dnl PHP_MISSING_FCLOSE_DECL +dnl +dnl See if we have broken header files like SunOS has. +dnl +AC_DEFUN([PHP_MISSING_FCLOSE_DECL],[ + AC_MSG_CHECKING([for fclose declaration]) + AC_TRY_COMPILE([#include ],[int (*func)() = fclose],[ + AC_DEFINE(MISSING_FCLOSE_DECL,0,[ ]) + AC_MSG_RESULT([ok]) + ],[ + AC_DEFINE(MISSING_FCLOSE_DECL,1,[ ]) + AC_MSG_RESULT([missing]) + ]) +]) + +dnl +dnl PHP_AC_BROKEN_SPRINTF +dnl +dnl Check for broken sprintf(), C99 conformance +dnl +AC_DEFUN([PHP_AC_BROKEN_SPRINTF],[ + AC_CACHE_CHECK(whether sprintf is broken, ac_cv_broken_sprintf,[ + AC_TRY_RUN([main() {char buf[20];exit(sprintf(buf,"testing 123")!=11); }],[ + ac_cv_broken_sprintf=no + ],[ + ac_cv_broken_sprintf=yes + ],[ + ac_cv_broken_sprintf=no + ]) + ]) + if test "$ac_cv_broken_sprintf" = "yes"; then + AC_DEFINE(PHP_BROKEN_SPRINTF, 1, [Whether sprintf is C99 conform]) + else + AC_DEFINE(PHP_BROKEN_SPRINTF, 0, [Whether sprintf is C99 conform]) + fi +]) + +dnl +dnl PHP_AC_BROKEN_SNPRINTF +dnl +dnl Check for broken snprintf(), C99 conformance +dnl +AC_DEFUN([PHP_AC_BROKEN_SNPRINTF],[ + AC_CACHE_CHECK(whether snprintf is broken, ac_cv_broken_snprintf,[ + AC_TRY_RUN([ +#define NULL (0L) +main() { + char buf[20]; + int res = 0; + res = res || (snprintf(buf, 2, "marcus") != 6); + res = res || (buf[1] != '\0'); + /* Implementations may consider this as an encoding error */ + snprintf(buf, 0, "boerger"); + /* However, they MUST ignore the pointer */ + res = res || (buf[0] != 'm'); + res = res || (snprintf(NULL, 0, "boerger") != 7); + res = res || (snprintf(buf, sizeof(buf), "%f", 0.12345678) != 8); + exit(res); +} + ],[ + ac_cv_broken_snprintf=no + ],[ + ac_cv_broken_snprintf=yes + ],[ + ac_cv_broken_snprintf=no + ]) + ]) + if test "$ac_cv_broken_snprintf" = "yes"; then + AC_DEFINE(PHP_BROKEN_SNPRINTF, 1, [Whether snprintf is C99 conform]) + else + AC_DEFINE(PHP_BROKEN_SNPRINTF, 0, [Whether snprintf is C99 conform]) + fi +]) + +dnl +dnl PHP_SOLARIS_PIC_WEIRDNESS +dnl +dnl Solaris requires main code to be position independent in order +dnl to let shared objects find symbols. Weird. Ugly. +dnl +dnl Must be run after all --with-NN options that let the user +dnl choose dynamic extensions, and after the gcc test. +dnl +AC_DEFUN([PHP_SOLARIS_PIC_WEIRDNESS],[ + AC_MSG_CHECKING([whether -fPIC is required]) + if test -n "$EXT_SHARED"; then + os=`uname -sr 2>/dev/null` + case $os in + "SunOS 5.6"|"SunOS 5.7"[)] + case $CC in + gcc*|egcs*) + CFLAGS="$CFLAGS -fPIC";; + *[)] + CFLAGS="$CFLAGS -fpic";; + esac + AC_MSG_RESULT([yes]);; + *[)] + AC_MSG_RESULT([no]);; + esac + else + AC_MSG_RESULT([no]) + fi +]) + +dnl +dnl PHP_SYS_LFS +dnl +dnl The problem is that the default compilation flags in Solaris 2.6 won't +dnl let programs access large files; you need to tell the compiler that +dnl you actually want your programs to work on large files. For more +dnl details about this brain damage please see: +dnl http://www.sas.com/standards/large.file/x_open.20Mar96.html +dnl +dnl Written by Paul Eggert . +dnl +AC_DEFUN([PHP_SYS_LFS], +[dnl + # If available, prefer support for large files unless the user specified + # one of the CPPFLAGS, LDFLAGS, or LIBS variables. + AC_MSG_CHECKING([whether large file support needs explicit enabling]) + ac_getconfs='' + ac_result=yes + ac_set='' + ac_shellvars='CPPFLAGS LDFLAGS LIBS' + for ac_shellvar in $ac_shellvars; do + case $ac_shellvar in + CPPFLAGS[)] ac_lfsvar=LFS_CFLAGS ;; + *[)] ac_lfsvar=LFS_$ac_shellvar ;; + esac + eval test '"${'$ac_shellvar'+set}"' = set && ac_set=$ac_shellvar + (getconf $ac_lfsvar) >/dev/null 2>&1 || { ac_result=no; break; } + ac_getconf=`getconf $ac_lfsvar` + ac_getconfs=$ac_getconfs$ac_getconf + eval ac_test_$ac_shellvar=\$ac_getconf + done + case "$ac_result$ac_getconfs" in + yes[)] ac_result=no ;; + esac + case "$ac_result$ac_set" in + yes?*[)] ac_result="yes, but $ac_set is already set, so use its settings" + esac + AC_MSG_RESULT([$ac_result]) + case $ac_result in + yes[)] + for ac_shellvar in $ac_shellvars; do + eval $ac_shellvar=\$ac_test_$ac_shellvar + done ;; + esac +]) + +dnl +dnl PHP_SOCKADDR_CHECKS +dnl +AC_DEFUN([PHP_SOCKADDR_CHECKS], [ + dnl Check for struct sockaddr_storage exists + AC_CACHE_CHECK([for struct sockaddr_storage], ac_cv_sockaddr_storage, + [AC_TRY_COMPILE([#include +#include ], + [struct sockaddr_storage s; s], + [ac_cv_sockaddr_storage=yes], [ac_cv_sockaddr_storage=no]) + ]) + if test "$ac_cv_sockaddr_storage" = "yes"; then + AC_DEFINE(HAVE_SOCKADDR_STORAGE, 1, [Whether you have struct sockaddr_storage]) + fi + dnl Check if field sa_len exists in struct sockaddr + AC_CACHE_CHECK([for field sa_len in struct sockaddr],ac_cv_sockaddr_sa_len,[ + AC_TRY_COMPILE([#include +#include ], + [static struct sockaddr sa; int n = (int) sa.sa_len; return n;], + [ac_cv_sockaddr_sa_len=yes], [ac_cv_sockaddr_sa_len=no]) + ]) + if test "$ac_cv_sockaddr_sa_len" = "yes"; then + AC_DEFINE(HAVE_SOCKADDR_SA_LEN, 1, [Whether struct sockaddr has field sa_len]) + fi +]) + +dnl +dnl PHP_DECLARED_TIMEZONE +dnl +AC_DEFUN([PHP_DECLARED_TIMEZONE],[ + AC_CACHE_CHECK(for declared timezone, ac_cv_declared_timezone,[ + AC_TRY_COMPILE([ +#include +#include +#ifdef HAVE_SYS_TIME_H +#include +#endif +],[ + time_t foo = (time_t) timezone; +],[ + ac_cv_declared_timezone=yes +],[ + ac_cv_declared_timezone=no +])]) + if test "$ac_cv_declared_timezone" = "yes"; then + AC_DEFINE(HAVE_DECLARED_TIMEZONE, 1, [Whether system headers declare timezone]) + fi +]) + +dnl +dnl PHP_EBCDIC +dnl +AC_DEFUN([PHP_EBCDIC], [ + AC_CACHE_CHECK([whether system uses EBCDIC],ac_cv_ebcdic,[ + AC_TRY_RUN( [ +int main(void) { + return (unsigned char)'A' != (unsigned char)0xC1; +} +],[ + ac_cv_ebcdic=yes +],[ + ac_cv_ebcdic=no +],[ + ac_cv_ebcdic=no +])]) + if test "$ac_cv_ebcdic" = "yes"; then + AC_DEFINE(CHARSET_EBCDIC,1, [Define if system uses EBCDIC]) + fi +]) + +dnl +dnl PHP_BROKEN_GETCWD +dnl +dnl Some systems, notably Solaris, cause getcwd() or realpath to fail if a +dnl component of the path has execute but not read permissions +dnl +AC_DEFUN([PHP_BROKEN_GETCWD],[ + AC_MSG_CHECKING([for broken getcwd]) + os=`uname -sr 2>/dev/null` + case $os in + SunOS*[)] + AC_DEFINE(HAVE_BROKEN_GETCWD,1, [Define if system has broken getcwd]) + AC_MSG_RESULT([yes]);; + *[)] + AC_MSG_RESULT([no]);; + esac +]) + +dnl +dnl PHP_BROKEN_GLIBC_FOPEN_APPEND +dnl +AC_DEFUN([PHP_BROKEN_GLIBC_FOPEN_APPEND], [ + AC_MSG_CHECKING([for broken libc stdio]) + AC_CACHE_VAL(_cv_have_broken_glibc_fopen_append,[ + AC_TRY_RUN([ +#include +int main(int argc, char *argv[]) +{ + FILE *fp; + long position; + char *filename = "/tmp/phpglibccheck"; + + fp = fopen(filename, "w"); + if (fp == NULL) { + perror("fopen"); + exit(2); + } + fputs("foobar", fp); + fclose(fp); + + fp = fopen(filename, "a+"); + position = ftell(fp); + fclose(fp); + unlink(filename); + if (position == 0) + return 1; + return 0; +} +], +[_cv_have_broken_glibc_fopen_append=no], +[_cv_have_broken_glibc_fopen_append=yes ], +AC_TRY_COMPILE([ +#include +],[ +#if !__GLIBC_PREREQ(2,2) +choke me +#endif +], +[_cv_have_broken_glibc_fopen_append=yes], +[_cv_have_broken_glibc_fopen_append=no ]) +)]) + + if test "$_cv_have_broken_glibc_fopen_append" = "yes"; then + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_BROKEN_GLIBC_FOPEN_APPEND,1, [Define if your glibc borks on fopen with mode a+]) + else + AC_MSG_RESULT(no) + fi +]) + +dnl +dnl PHP_FOPENCOOKIE +dnl +AC_DEFUN([PHP_FOPENCOOKIE], [ + AC_CHECK_FUNC(fopencookie, [have_glibc_fopencookie=yes]) + + if test "$have_glibc_fopencookie" = "yes"; then +dnl this comes in two flavors: +dnl newer glibcs (since 2.1.2 ? ) +dnl have a type called cookie_io_functions_t +AC_TRY_COMPILE([ +#define _GNU_SOURCE +#include +], [cookie_io_functions_t cookie;], [have_cookie_io_functions_t=yes], []) + + if test "$have_cookie_io_functions_t" = "yes"; then + cookie_io_functions_t=cookie_io_functions_t + have_fopen_cookie=yes + +dnl even newer glibcs have a different seeker definition... +AC_TRY_RUN([ +#define _GNU_SOURCE +#include + +struct cookiedata { + __off64_t pos; +}; + +__ssize_t reader(void *cookie, char *buffer, size_t size) +{ return size; } +__ssize_t writer(void *cookie, const char *buffer, size_t size) +{ return size; } +int closer(void *cookie) +{ return 0; } +int seeker(void *cookie, __off64_t *position, int whence) +{ ((struct cookiedata*)cookie)->pos = *position; return 0; } + +cookie_io_functions_t funcs = {reader, writer, seeker, closer}; + +main() { + struct cookiedata g = { 0 }; + FILE *fp = fopencookie(&g, "r", funcs); + + if (fp && fseek(fp, 8192, SEEK_SET) == 0 && g.pos == 8192) + exit(0); + exit(1); +} + +], [ + cookie_io_functions_use_off64_t=yes +], [ + cookie_io_functions_use_off64_t=no +], [ + cookie_io_functions_use_off64_t=no +]) + + else + +dnl older glibc versions (up to 2.1.2 ?) +dnl call it _IO_cookie_io_functions_t +AC_TRY_COMPILE([ +#define _GNU_SOURCE +#include +], [ _IO_cookie_io_functions_t cookie; ], [have_IO_cookie_io_functions_t=yes], []) + if test "$have_cookie_io_functions_t" = "yes" ; then + cookie_io_functions_t=_IO_cookie_io_functions_t + have_fopen_cookie=yes + fi + fi + + if test "$have_fopen_cookie" = "yes" ; then + AC_DEFINE(HAVE_FOPENCOOKIE, 1, [ ]) + AC_DEFINE_UNQUOTED(COOKIE_IO_FUNCTIONS_T, $cookie_io_functions_t, [ ]) + if test "$cookie_io_functions_use_off64_t" = "yes" ; then + AC_DEFINE(COOKIE_SEEKER_USES_OFF64_T, 1, [ ]) + fi + fi + fi +]) + +dnl ------------------------------------------------------------------------- +dnl Library/function existance and build sanity checks +dnl ------------------------------------------------------------------------- + +dnl +dnl PHP_CHECK_LIBRARY(library, function [, action-found [, action-not-found [, extra-libs]]]) +dnl +dnl Wrapper for AC_CHECK_LIB +dnl +AC_DEFUN([PHP_CHECK_LIBRARY], [ + save_old_LDFLAGS=$LDFLAGS + ac_stuff="$5" + + save_ext_shared=$ext_shared + ext_shared=yes + PHP_EVAL_LIBLINE([$]ac_stuff, LDFLAGS) + AC_CHECK_LIB([$1],[$2],[ + LDFLAGS=$save_old_LDFLAGS + ext_shared=$save_ext_shared + $3 + ],[ + LDFLAGS=$save_old_LDFLAGS + ext_shared=$save_ext_shared + unset ac_cv_lib_$1[]_$2 + $4 + ])dnl +]) + +dnl +dnl PHP_CHECK_FRAMEWORK(framework, function [, action-found [, action-not-found ]]) +dnl +dnl El cheapo wrapper for AC_CHECK_LIB +dnl +AC_DEFUN([PHP_CHECK_FRAMEWORK], [ + save_old_LDFLAGS=$LDFLAGS + LDFLAGS="-framework $1 $LDFLAGS" + dnl supplying "c" to AC_CHECK_LIB is technically cheating, but + dnl rewriting AC_CHECK_LIB is overkill and this only affects + dnl the "checking.." output anyway. + AC_CHECK_LIB(c,[$2],[ + LDFLAGS=$save_old_LDFLAGS + $3 + ],[ + LDFLAGS=$save_old_LDFLAGS + $4 + ]) +]) + +dnl +dnl PHP_CHECK_FUNC_LIB(func, libs) +dnl +dnl This macro checks whether 'func' or '__func' exists +dnl in the specified library. +dnl Defines HAVE_func and HAVE_library if found and adds the library to LIBS. +dnl This should be called in the ACTION-IF-NOT-FOUND part of PHP_CHECK_FUNC +dnl +dnl +dnl autoconf undefines the builtin "shift" :-( +dnl If possible, we use the builtin shift anyway, otherwise we use +dnl the ubercool definition I have tested so far with FreeBSD/GNU m4 +ifdef([builtin],[builtin(define, phpshift, [builtin(shift, $@)])],[ +define([phpshift],[ifelse(index([$@],[,]),-1,,[substr([$@],incr(index([$@],[,])))])]) +]) +dnl +AC_DEFUN([PHP_CHECK_FUNC_LIB],[ + ifelse($2,,:,[ + unset ac_cv_lib_$2[]_$1 + unset ac_cv_lib_$2[]___$1 + unset found + AC_CHECK_LIB($2, $1, [found=yes], [ + AC_CHECK_LIB($2, __$1, [found=yes], [found=no]) + ]) + + if test "$found" = "yes"; then + ac_libs=$LIBS + LIBS="$LIBS -l$2" + AC_TRY_RUN([main() { return (0); }],[found=yes],[found=no],[found=no]) + LIBS=$ac_libs + fi + + if test "$found" = "yes"; then + PHP_ADD_LIBRARY($2) + PHP_DEF_HAVE($1) + PHP_DEF_HAVE(lib$2) + ac_cv_func_$1=yes + else + PHP_CHECK_FUNC_LIB($1,phpshift(phpshift($@))) + fi + ]) +]) + +dnl +dnl PHP_CHECK_FUNC(func, ...) +dnl +dnl This macro checks whether 'func' or '__func' exists +dnl in the default libraries and as a fall back in the specified library. +dnl Defines HAVE_func and HAVE_library if found and adds the library to LIBS. +dnl +AC_DEFUN([PHP_CHECK_FUNC],[ + unset ac_cv_func_$1 + unset ac_cv_func___$1 + unset found + + AC_CHECK_FUNC($1, [found=yes],[ AC_CHECK_FUNC(__$1,[found=yes],[found=no]) ]) + + case $found in + yes[)] + PHP_DEF_HAVE($1) + ac_cv_func_$1=yes + ;; + ifelse($#,1,,[ + *[)] PHP_CHECK_FUNC_LIB($@) ;; + ]) + esac +]) + +dnl +dnl PHP_TEST_BUILD(function, action-if-ok, action-if-not-ok [, extra-libs [, extra-source]]) +dnl +dnl This macro checks whether build works and given function exists. +dnl +AC_DEFUN([PHP_TEST_BUILD], [ + old_LIBS=$LIBS + LIBS="$4 $LIBS" + AC_TRY_RUN([ + $5 + char $1(); + int main() { + $1(); + return 0; + } + ], [ + LIBS=$old_LIBS + $2 + ],[ + LIBS=$old_LIBS + $3 + ],[ + LIBS=$old_LIBS + ]) +]) + +dnl ------------------------------------------------------------------------- +dnl Platform characteristics checks +dnl ------------------------------------------------------------------------- + +dnl +dnl PHP_SHLIB_SUFFIX_NAMES +dnl +dnl Determines link library suffix SHLIB_SUFFIX_NAME +dnl which can be: .so, .sl or .dylib +dnl +dnl Determines shared library suffix SHLIB_DL_SUFFIX_NAME +dnl suffix can be: .so or .sl +dnl +AC_DEFUN([PHP_SHLIB_SUFFIX_NAMES],[ + AC_REQUIRE([PHP_CANONICAL_HOST_TARGET])dnl + PHP_SUBST_OLD(SHLIB_SUFFIX_NAME) + PHP_SUBST_OLD(SHLIB_DL_SUFFIX_NAME) + SHLIB_SUFFIX_NAME=so + SHLIB_DL_SUFFIX_NAME=$SHLIB_SUFFIX_NAME + case $host_alias in + *hpux*[)] + SHLIB_SUFFIX_NAME=sl + SHLIB_DL_SUFFIX_NAME=sl + ;; + *darwin*[)] + SHLIB_SUFFIX_NAME=dylib + SHLIB_DL_SUFFIX_NAME=so + ;; + esac +]) + +dnl +dnl PHP_CHECK_64BIT([do if 32], [do if 64]) +dnl +dnl This macro is used to detect if we're at 64-bit platform or not. +dnl It could be useful for those external libs, that have different precompiled +dnl versions in different directories. +dnl +AC_DEFUN([PHP_CHECK_64BIT],[ + AC_CHECK_SIZEOF(long int, 4) + AC_MSG_CHECKING([checking if we're at 64-bit platform]) + if test "$ac_cv_sizeof_long_int" = "4" ; then + AC_MSG_RESULT([no]) + $1 + else + AC_MSG_RESULT([yes]) + $2 + fi +]) + +dnl +dnl PHP_C_BIGENDIAN +dnl +dnl Replacement macro for AC_C_BIGENDIAN +dnl +AC_DEFUN([PHP_C_BIGENDIAN], +[AC_CACHE_CHECK([whether byte ordering is bigendian], ac_cv_c_bigendian_php, + [ + ac_cv_c_bigendian_php=unknown + AC_TRY_RUN( + [ +int main(void) +{ + short one = 1; + char *cp = (char *)&one; + + if (*cp == 0) { + return(0); + } else { + return(1); + } +} + ], [ac_cv_c_bigendian_php=yes], [ac_cv_c_bigendian_php=no], [ac_cv_c_bigendian_php=unknown]) + ]) + if test $ac_cv_c_bigendian_php = yes; then + AC_DEFINE(WORDS_BIGENDIAN, [], [Define if processor uses big-endian word]) + fi +]) + +dnl ------------------------------------------------------------------------- +dnl Checks for programs: PHP_PROG_ +dnl ------------------------------------------------------------------------- + +dnl +dnl PHP_PROG_SENDMAIL +dnl +dnl Search for the sendmail binary +dnl +AC_DEFUN([PHP_PROG_SENDMAIL], [ + PHP_ALT_PATH=/usr/bin:/usr/sbin:/usr/etc:/etc:/usr/ucblib:/usr/lib + AC_PATH_PROG(PROG_SENDMAIL, sendmail,[], $PATH:$PHP_ALT_PATH) + PHP_SUBST(PROG_SENDMAIL) +]) + +dnl +dnl PHP_PROG_AWK +dnl +dnl Some vendors force mawk before gawk; mawk is broken so we don't like that +dnl +AC_DEFUN([PHP_PROG_AWK], [ + AC_CHECK_PROGS(AWK, gawk nawk awk mawk, bork, /usr/xpg4/bin/:$PATH) + case "$AWK" in + *mawk) + AC_MSG_WARN([mawk is known to have problems on some systems. You should install GNU awk]) + ;; + *gawk) + ;; + bork) + AC_MSG_ERROR([Could not find awk; Install GNU awk]) + ;; + *) + AC_MSG_CHECKING([if $AWK is broken]) + if ! $AWK 'function foo() {}' >/dev/null 2>&1 ; then + AC_MSG_RESULT([yes]) + AC_MSG_ERROR([You should install GNU awk]) + else + AC_MSG_RESULT([no]) + fi + ;; + esac + PHP_SUBST(AWK) +]) + +dnl +dnl PHP_PROG_BISON +dnl +dnl Search for bison and check it's version +dnl +AC_DEFUN([PHP_PROG_BISON], [ + AC_PROG_YACC + LIBZEND_BISON_CHECK + PHP_SUBST(YACC) +]) + +dnl +dnl PHP_PROG_LEX +dnl +dnl Search for (f)lex and check it's version +dnl +AC_DEFUN([PHP_PROG_LEX], [ +dnl we only support certain flex versions + flex_version_list="2.5.4" + + AC_PROG_LEX + if test "$LEX" = "flex"; then +dnl AC_DECL_YYTEXT is obsolete since autoconf 2.50 and merged into AC_PROG_LEX +dnl this is what causes that annoying "PHP_PROG_LEX is expanded from" warning with autoconf 2.50+ +dnl it should be removed once we drop support of autoconf 2.13 (if ever) + AC_DECL_YYTEXT + : + fi + dnl ## Make flex scanners use const if they can, even if __STDC__ is not + dnl ## true, for compilers like Sun's that only set __STDC__ true in + dnl ## "limit-to-ANSI-standard" mode, not in "ANSI-compatible" mode + AC_C_CONST + if test "$ac_cv_c_const" = "yes" ; then + LEX_CFLAGS="-DYY_USE_CONST" + fi + + if test "$LEX" = "flex"; then + AC_CACHE_CHECK([for flex version], php_cv_flex_version, [ + flex_version=`$LEX -V -v --version 2>/dev/null | $SED -e 's/^.* //'` + php_cv_flex_version=invalid + for flex_check_version in $flex_version_list; do + if test "$flex_version" = "$flex_check_version"; then + php_cv_flex_version="$flex_check_version (ok)" + fi + done + ]) + else + flex_version=none + fi + + case $php_cv_flex_version in + ""|invalid[)] + if test -f "$abs_srcdir/Zend/zend_language_scanner.c" && test -f "$abs_srcdir/Zend/zend_ini_scanner.c"; then + AC_MSG_WARN([flex versions supported for regeneration of the Zend/PHP parsers: $flex_version_list (found: $flex_version)]) + else + flex_msg="Supported flex versions are: $flex_version_list" + if test "$flex_version" = "none"; then + flex_msg="flex not found. flex is required to generate the Zend/PHP parsers! $flex_msg" + else + flex_msg="Found invalid flex version: $flex_version. $flex_msg" + fi + AC_MSG_ERROR([$flex_msg]) + fi + LEX="exit 0;" + ;; + esac + PHP_SUBST(LEX) +]) + +dnl +dnl PHP_PROG_RE2C +dnl +dnl Search for the re2c binary and check the version +dnl +AC_DEFUN([PHP_PROG_RE2C],[ + AC_CHECK_PROG(RE2C, re2c, re2c) + if test -n "$RE2C"; then + AC_CACHE_CHECK([for re2c version], php_cv_re2c_version, [ + re2c_vernum=`$RE2C --vernum 2>/dev/null` + if test -z "$re2c_vernum" || test "$re2c_vernum" -lt "1304"; then + php_cv_re2c_version=invalid + else + php_cv_re2c_version="`$RE2C --version | cut -d ' ' -f 2 2>/dev/null` (ok)" + fi + ]) + fi + case $php_cv_re2c_version in + ""|invalid[)] + AC_MSG_WARN([You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.]) + RE2C="exit 0;" + ;; + esac + PHP_SUBST(RE2C) +]) + +dnl ------------------------------------------------------------------------- +dnl Common setup macros: PHP_SETUP_ +dnl ------------------------------------------------------------------------- + +dnl +dnl PHP_SETUP_ICU([shared-add]) +dnl +dnl Common setup macro for ICU +dnl +AC_DEFUN([PHP_SETUP_ICU],[ + PHP_ARG_WITH(icu-dir,, + [ --with-icu-dir=DIR Specify where ICU libraries and headers can be found], DEFAULT, no) + + if test "$PHP_ICU_DIR" = "no"; then + PHP_ICU_DIR=DEFAULT + fi + + if test "$PHP_ICU_DIR" = "DEFAULT"; then + dnl Try to find icu-config + AC_PATH_PROG(ICU_CONFIG, icu-config, no, [$PATH:/usr/local/bin]) + else + ICU_CONFIG="$PHP_ICU_DIR/bin/icu-config" + fi + + AC_MSG_CHECKING([for location of ICU headers and libraries]) + + dnl Trust icu-config to know better what the install prefix is.. + icu_install_prefix=`$ICU_CONFIG --prefix 2> /dev/null` + if test "$?" != "0" || test -z "$icu_install_prefix"; then + AC_MSG_RESULT([not found]) + AC_MSG_ERROR([Unable to detect ICU prefix or $ICU_CONFIG failed. Please verify ICU install prefix and make sure icu-config works.]) + else + AC_MSG_RESULT([$icu_install_prefix]) + + dnl Check ICU version + AC_MSG_CHECKING([for ICU 3.4 or greater]) + icu_version_full=`$ICU_CONFIG --version` + ac_IFS=$IFS + IFS="." + set $icu_version_full + IFS=$ac_IFS + icu_version=`expr [$]1 \* 1000 + [$]2` + AC_MSG_RESULT([found $icu_version_full]) + + if test "$icu_version" -lt "3004"; then + AC_MSG_ERROR([ICU version 3.4 or later is required]) + fi + + ICU_VERSION=$icu_version + ICU_INCS=`$ICU_CONFIG --cppflags-searchpath` + ICU_LIBS=`$ICU_CONFIG --ldflags --ldflags-icuio` + PHP_EVAL_INCLINE($ICU_INCS) + PHP_EVAL_LIBLINE($ICU_LIBS, $1) + fi +]) + +dnl +dnl PHP_SETUP_KERBEROS(shared-add [, action-found [, action-not-found]]) +dnl +dnl Common setup macro for kerberos +dnl +AC_DEFUN([PHP_SETUP_KERBEROS],[ + found_kerberos=no + unset KERBEROS_CFLAGS + unset KERBEROS_LIBS + + dnl First try to find krb5-config + if test -z "$KRB5_CONFIG"; then + AC_PATH_PROG(KRB5_CONFIG, krb5-config, no, [$PATH:/usr/kerberos/bin:/usr/local/bin]) + fi + + dnl If krb5-config is found try using it + if test "$PHP_KERBEROS" = "yes" && test -x "$KRB5_CONFIG"; then + KERBEROS_LIBS=`$KRB5_CONFIG --libs gssapi` + KERBEROS_CFLAGS=`$KRB5_CONFIG --cflags gssapi` + + if test -n "$KERBEROS_LIBS"; then + found_kerberos=yes + PHP_EVAL_LIBLINE($KERBEROS_LIBS, $1) + PHP_EVAL_INCLINE($KERBEROS_CFLAGS) + fi + fi + + dnl If still not found use old skool method + if test "$found_kerberos" = "no"; then + + if test "$PHP_KERBEROS" = "yes"; then + PHP_KERBEROS="/usr/kerberos /usr/local /usr" + fi + + for i in $PHP_KERBEROS; do + if test -f $i/$PHP_LIBDIR/libkrb5.a || test -f $i/$PHP_LIBDIR/libkrb5.$SHLIB_SUFFIX_NAME; then + PHP_KERBEROS_DIR=$i + break + fi + done + + if test "$PHP_KERBEROS_DIR"; then + found_kerberos=yes + PHP_ADD_LIBPATH($PHP_KERBEROS_DIR/$PHP_LIBDIR, $1) + PHP_ADD_LIBRARY(gssapi_krb5, 1, $1) + PHP_ADD_LIBRARY(krb5, 1, $1) + PHP_ADD_LIBRARY(k5crypto, 1, $1) + PHP_ADD_LIBRARY(com_err, 1, $1) + PHP_ADD_INCLUDE($PHP_KERBEROS_DIR/include) + fi + fi + + if test "$found_kerberos" = "yes"; then +ifelse([$2],[],:,[$2]) +ifelse([$3],[],,[else $3]) + fi +]) + +dnl +dnl PHP_SETUP_OPENSSL(shared-add [, action-found [, action-not-found]]) +dnl +dnl Common setup macro for openssl +dnl +AC_DEFUN([PHP_SETUP_OPENSSL],[ + found_openssl=no + unset OPENSSL_INCDIR + unset OPENSSL_LIBDIR + + dnl Empty variable means 'no' + test -z "$PHP_OPENSSL" && PHP_OPENSSL=no + test -z "$PHP_IMAP_SSL" && PHP_IMAP_SSL=no + + dnl Fallbacks for different configure options + if test "$PHP_OPENSSL" != "no"; then + PHP_OPENSSL_DIR=$PHP_OPENSSL + elif test "$PHP_IMAP_SSL" != "no"; then + PHP_OPENSSL_DIR=$PHP_IMAP_SSL + fi + + dnl First try to find pkg-config + if test -z "$PKG_CONFIG"; then + AC_PATH_PROG(PKG_CONFIG, pkg-config, no) + fi + + dnl If pkg-config is found try using it + if test "$PHP_OPENSSL_DIR" = "yes" && test -x "$PKG_CONFIG" && $PKG_CONFIG --exists openssl; then + if $PKG_CONFIG --atleast-version=0.9.6 openssl; then + found_openssl=yes + OPENSSL_LIBS=`$PKG_CONFIG --libs openssl` + OPENSSL_INCS=`$PKG_CONFIG --cflags-only-I openssl` + OPENSSL_INCDIR=`$PKG_CONFIG --variable=includedir openssl` + else + AC_MSG_ERROR([OpenSSL version 0.9.6 or greater required.]) + fi + + if test -n "$OPENSSL_LIBS"; then + PHP_EVAL_LIBLINE($OPENSSL_LIBS, $1) + fi + if test -n "$OPENSSL_INCS"; then + PHP_EVAL_INCLINE($OPENSSL_INCS) + fi + fi + + dnl If pkg-config fails for some reason, revert to the old method + if test "$found_openssl" = "no"; then + + if test "$PHP_OPENSSL_DIR" = "yes"; then + PHP_OPENSSL_DIR="/usr/local/ssl /usr/local /usr /usr/local/openssl" + fi + + for i in $PHP_OPENSSL_DIR; do + if test -r $i/include/openssl/evp.h; then + OPENSSL_INCDIR=$i/include + fi + if test -r $i/$PHP_LIBDIR/libssl.a -o -r $i/$PHP_LIBDIR/libssl.$SHLIB_SUFFIX_NAME; then + OPENSSL_LIBDIR=$i/$PHP_LIBDIR + fi + test -n "$OPENSSL_INCDIR" && test -n "$OPENSSL_LIBDIR" && break + done + + if test -z "$OPENSSL_INCDIR"; then + AC_MSG_ERROR([Cannot find OpenSSL's ]) + fi + + if test -z "$OPENSSL_LIBDIR"; then + AC_MSG_ERROR([Cannot find OpenSSL's libraries]) + fi + + old_CPPFLAGS=$CPPFLAGS + CPPFLAGS=-I$OPENSSL_INCDIR + AC_MSG_CHECKING([for OpenSSL version]) + AC_EGREP_CPP(yes,[ +#include +#if OPENSSL_VERSION_NUMBER >= 0x0090600fL + yes +#endif + ],[ + AC_MSG_RESULT([>= 0.9.6]) + ],[ + AC_MSG_ERROR([OpenSSL version 0.9.6 or greater required.]) + ]) + CPPFLAGS=$old_CPPFLAGS + + PHP_ADD_INCLUDE($OPENSSL_INCDIR) + + PHP_CHECK_LIBRARY(crypto, CRYPTO_free, [ + PHP_ADD_LIBRARY(crypto,,$1) + ],[ + AC_MSG_ERROR([libcrypto not found!]) + ],[ + -L$OPENSSL_LIBDIR + ]) + + old_LIBS=$LIBS + LIBS="$LIBS -lcrypto" + PHP_CHECK_LIBRARY(ssl, SSL_CTX_set_ssl_version, [ + found_openssl=yes + ],[ + AC_MSG_ERROR([libssl not found!]) + ],[ + -L$OPENSSL_LIBDIR + ]) + LIBS=$old_LIBS + PHP_ADD_LIBRARY(ssl,,$1) + PHP_ADD_LIBRARY(crypto,,$1) + + PHP_ADD_LIBPATH($OPENSSL_LIBDIR, $1) + fi + + if test "$found_openssl" = "yes"; then + dnl For apache 1.3.x static build + OPENSSL_INCDIR_OPT=-I$OPENSSL_INCDIR + AC_SUBST(OPENSSL_INCDIR_OPT) + +ifelse([$2],[],:,[$2]) +ifelse([$3],[],,[else $3]) + fi +]) + +dnl +dnl PHP_SETUP_ICONV(shared-add [, action-found [, action-not-found]]) +dnl +dnl Common setup macro for iconv +dnl +AC_DEFUN([PHP_SETUP_ICONV], [ + found_iconv=no + unset ICONV_DIR + + # Create the directories for a VPATH build: + $php_shtool mkdir -p ext/iconv + + echo > ext/iconv/php_have_bsd_iconv.h + echo > ext/iconv/php_have_ibm_iconv.h + echo > ext/iconv/php_have_glibc_iconv.h + echo > ext/iconv/php_have_libiconv.h + echo > ext/iconv/php_have_iconv.h + echo > ext/iconv/php_php_iconv_impl.h + echo > ext/iconv/php_iconv_aliased_libiconv.h + echo > ext/iconv/php_php_iconv_h_path.h + echo > ext/iconv/php_iconv_supports_errno.h + + dnl + dnl Check libc first if no path is provided in --with-iconv + dnl + + if test "$PHP_ICONV" = "yes"; then + dnl Reset LIBS temporarily as it may have already been included + dnl -liconv in. + LIBS_save="$LIBS" + LIBS= + AC_CHECK_FUNC(iconv, [ + found_iconv=yes + ],[ + AC_CHECK_FUNC(libiconv,[ + PHP_DEFINE(HAVE_LIBICONV,1,[ext/iconv]) + AC_DEFINE(HAVE_LIBICONV, 1, [ ]) + found_iconv=yes + ]) + ]) + LIBS="$LIBS_save" + fi + + dnl + dnl Check external libs for iconv funcs + dnl + if test "$found_iconv" = "no"; then + + for i in $PHP_ICONV /usr/local /usr; do + if test -r $i/include/giconv.h; then + AC_DEFINE(HAVE_GICONV_H, 1, [ ]) + ICONV_DIR=$i + iconv_lib_name=giconv + break + elif test -r $i/include/iconv.h; then + ICONV_DIR=$i + iconv_lib_name=iconv + break + fi + done + + if test -z "$ICONV_DIR"; then + AC_MSG_ERROR([Please specify the install prefix of iconv with --with-iconv=]) + fi + + if test -f $ICONV_DIR/$PHP_LIBDIR/lib$iconv_lib_name.a || + test -f $ICONV_DIR/$PHP_LIBDIR/lib$iconv_lib_name.$SHLIB_SUFFIX_NAME + then + PHP_CHECK_LIBRARY($iconv_lib_name, libiconv, [ + found_iconv=yes + PHP_DEFINE(HAVE_LIBICONV,1,[ext/iconv]) + AC_DEFINE(HAVE_LIBICONV,1,[ ]) + PHP_DEFINE([ICONV_ALIASED_LIBICONV],1,[ext/iconv]) + AC_DEFINE([ICONV_ALIASED_LIBICONV],1,[iconv() is aliased to libiconv() in -liconv]) + ], [ + PHP_CHECK_LIBRARY($iconv_lib_name, iconv, [ + found_iconv=yes + ], [], [ + -L$ICONV_DIR/$PHP_LIBDIR + ]) + ], [ + -L$ICONV_DIR/$PHP_LIBDIR + ]) + fi + fi + + if test "$found_iconv" = "yes"; then + PHP_DEFINE(HAVE_ICONV,1,[ext/iconv]) + AC_DEFINE(HAVE_ICONV,1,[ ]) + if test -n "$ICONV_DIR"; then + PHP_ADD_LIBRARY_WITH_PATH($iconv_lib_name, $ICONV_DIR/$PHP_LIBDIR, $1) + PHP_ADD_INCLUDE($ICONV_DIR/include) + fi + $2 +ifelse([$3],[],,[else $3]) + fi +]) + +dnl +dnl PHP_SETUP_LIBXML(shared-add [, action-found [, action-not-found]]) +dnl +dnl Common setup macro for libxml +dnl +AC_DEFUN([PHP_SETUP_LIBXML], [ +AC_CACHE_CHECK([for xml2-config path], ac_cv_php_xml2_config_path, +[ + for i in $PHP_LIBXML_DIR /usr/local /usr; do + if test -x "$i/bin/xml2-config"; then + ac_cv_php_xml2_config_path="$i/bin/xml2-config" + break + fi + done +]) + + if test -x "$ac_cv_php_xml2_config_path"; then + XML2_CONFIG="$ac_cv_php_xml2_config_path" + libxml_full_version=`$XML2_CONFIG --version` + ac_IFS=$IFS + IFS="." + set $libxml_full_version + IFS=$ac_IFS + LIBXML_VERSION=`expr [$]1 \* 1000000 + [$]2 \* 1000 + [$]3` + if test "$LIBXML_VERSION" -ge "2006011"; then + LIBXML_LIBS=`$XML2_CONFIG --libs` + LIBXML_INCS=`$XML2_CONFIG --cflags` + PHP_EVAL_LIBLINE($LIBXML_LIBS, $1) + PHP_EVAL_INCLINE($LIBXML_INCS) + + dnl Check that build works with given libs + AC_CACHE_CHECK(whether libxml build works, php_cv_libxml_build_works, [ + PHP_TEST_BUILD(xmlInitParser, + [ + php_cv_libxml_build_works=yes + ], [ + AC_MSG_RESULT(no) + AC_MSG_ERROR([build test failed. Please check the config.log for details.]) + ], [ + [$]$1 + ]) + ]) + if test "$php_cv_libxml_build_works" = "yes"; then + AC_DEFINE(HAVE_LIBXML, 1, [ ]) + fi + $2 + else + AC_MSG_ERROR([libxml2 version 2.6.11 or greater required.]) + fi +ifelse([$3],[],,[else $3]) + fi +]) + +dnl ------------------------------------------------------------------------- +dnl Misc. macros +dnl ------------------------------------------------------------------------- + +dnl +dnl PHP_INSTALL_HEADERS(path [, file ...]) +dnl +dnl PHP header files to be installed +dnl +AC_DEFUN([PHP_INSTALL_HEADERS],[ + ifelse([$2],[],[ + for header_file in $1; do + PHP_RUN_ONCE(INSTALLHEADERS, $header_file, [ + INSTALL_HEADERS="$INSTALL_HEADERS $header_file" + ]) + done + ], [ + header_path=$1 + for header_file in $2; do + hp_hf="$header_path/$header_file" + PHP_RUN_ONCE(INSTALLHEADERS, $hp_hf, [ + INSTALL_HEADERS="$INSTALL_HEADERS $hp_hf" + ]) + done + ]) +]) + +dnl +dnl PHP_AP_EXTRACT_VERSION(/path/httpd) +dnl +dnl This macro is used to get a comparable +dnl version for apache1/2. +dnl +AC_DEFUN([PHP_AP_EXTRACT_VERSION],[ + ac_output=`$1 -v 2>&1 | grep version | $SED -e 's/Oracle-HTTP-//'` + ac_IFS=$IFS +IFS="- /. +" + set $ac_output + IFS=$ac_IFS + + APACHE_VERSION=`expr [$]4 \* 1000000 + [$]5 \* 1000 + [$]6` +]) + +dnl +dnl PHP_DEBUG_MACRO(filename) +dnl +AC_DEFUN([PHP_DEBUG_MACRO],[ + DEBUG_LOG=$1 + cat >$1 <conftest.$ac_ext <>$1 2>&1 + rm -fr conftest* +]) + +dnl +dnl PHP_CONFIG_NICE(filename) +dnl +dnl Generates the config.nice file +dnl +AC_DEFUN([PHP_CONFIG_NICE],[ + AC_REQUIRE([AC_PROG_EGREP]) + AC_REQUIRE([LT_AC_PROG_SED]) + PHP_SUBST_OLD(EGREP) + PHP_SUBST_OLD(SED) + test -f $1 && mv $1 $1.old + rm -f $1.old + cat >$1<> $1 + fi + done + + echo "'[$]0' \\" >> $1 + if test `expr -- [$]0 : "'.*"` = 0; then + CONFIGURE_COMMAND="$CONFIGURE_COMMAND '[$]0'" + else + CONFIGURE_COMMAND="$CONFIGURE_COMMAND [$]0" + fi + for arg in $ac_configure_args; do + if test `expr -- $arg : "'.*"` = 0; then + if test `expr -- $arg : "--.*"` = 0; then + break; + fi + echo "'[$]arg' \\" >> $1 + CONFIGURE_OPTIONS="$CONFIGURE_OPTIONS '[$]arg'" + else + if test `expr -- $arg : "'--.*"` = 0; then + break; + fi + echo "[$]arg \\" >> $1 + CONFIGURE_OPTIONS="$CONFIGURE_OPTIONS [$]arg" + fi + done + echo '"[$]@"' >> $1 + chmod +x $1 + CONFIGURE_COMMAND="$CONFIGURE_COMMAND $CONFIGURE_OPTIONS" + PHP_SUBST_OLD(CONFIGURE_COMMAND) + PHP_SUBST_OLD(CONFIGURE_OPTIONS) +]) + +dnl +dnl PHP_CHECK_CONFIGURE_OPTIONS +dnl +AC_DEFUN([PHP_CHECK_CONFIGURE_OPTIONS],[ + for arg in $ac_configure_args; do + case $arg in + --with-*[)] + arg_name="`echo [$]arg | $SED -e 's/--with-/with-/g' -e 's/=.*//g'`" + ;; + --without-*[)] + arg_name="`echo [$]arg | $SED -e 's/--without-/with-/g' -e 's/=.*//g'`" + ;; + --enable-*[)] + arg_name="`echo [$]arg | $SED -e 's/--enable-/enable-/g' -e 's/=.*//g'`" + ;; + --disable-*[)] + arg_name="`echo [$]arg | $SED -e 's/--disable-/enable-/g' -e 's/=.*//g'`" + ;; + *[)] + continue + ;; + esac + case $arg_name in + # Allow --disable-all / --enable-all + enable-all[)];; + + # Allow certain libtool options + enable-libtool-lock | with-pic | with-tags | enable-shared | enable-static | enable-fast-install | with-gnu-ld[)];; + + # Allow certain TSRM options + with-tsrm-pth | with-tsrm-st | with-tsrm-pthreads[)];; + + # Allow certain Zend options + with-zend-vm | enable-maintainer-zts | enable-inline-optimization[)];; + + # All the rest must be set using the PHP_ARG_* macros + # PHP_ARG_* macros set php_enable_ or php_with_ + *[)] + # Options that exist before PHP 6 + if test "$PHP_MAJOR_VERSION" -lt "6"; then + case $arg_name in + enable-zend-multibyte[)] continue;; + esac + fi + + is_arg_set=php_[]`echo [$]arg_name | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ-' 'abcdefghijklmnopqrstuvwxyz_'` + if eval test "x\$$is_arg_set" = "x"; then + PHP_UNKNOWN_CONFIGURE_OPTIONS="$PHP_UNKNOWN_CONFIGURE_OPTIONS +[$]arg" + fi + ;; + esac + done +]) + +dnl +dnl PHP_CHECK_PDO_INCLUDES([found [, not-found]]) +dnl +AC_DEFUN([PHP_CHECK_PDO_INCLUDES],[ + AC_CACHE_CHECK([for PDO includes], pdo_cv_inc_path, [ + AC_MSG_CHECKING([for PDO includes]) + if test -f $abs_srcdir/include/php/ext/pdo/php_pdo_driver.h; then + pdo_cv_inc_path=$abs_srcdir/ext + elif test -f $abs_srcdir/ext/pdo/php_pdo_driver.h; then + pdo_cv_inc_path=$abs_srcdir/ext + elif test -f $prefix/include/php/ext/pdo/php_pdo_driver.h; then + pdo_cv_inc_path=$prefix/include/php/ext + fi + ]) + if test -n "$pdo_cv_inc_path"; then +ifelse([$1],[],:,[$1]) + else +ifelse([$2],[],[AC_MSG_ERROR([Cannot find php_pdo_driver.h.])],[$2]) + fi +]) + +dnl +dnl PHP_DETECT_ICC +dnl Detect Intel C++ Compiler and unset $GCC if ICC found +AC_DEFUN([PHP_DETECT_ICC], +[ + ICC="no" + AC_MSG_CHECKING([for icc]) + AC_EGREP_CPP([^__INTEL_COMPILER], [__INTEL_COMPILER], + ICC="no" + AC_MSG_RESULT([no]), + ICC="yes" + GCC="no" + AC_MSG_RESULT([yes]) + ) +]) + +dnl PHP_DETECT_SUNCC +dnl Detect if the systems default compiler is suncc. +dnl We also set some usefull CFLAGS if the user didn't set any +AC_DEFUN([PHP_DETECT_SUNCC],[ + SUNCC="no" + AC_MSG_CHECKING([for suncc]) + AC_EGREP_CPP([^__SUNPRO_C], [__SUNPRO_C], + SUNCC="no" + AC_MSG_RESULT([no]), + SUNCC="yes" + GCC="no" + test -n "$auto_cflags" && CFLAGS="-O -xs -xstrconst -zlazyload" + GCC="" + AC_MSG_RESULT([yes]) + ) +]) + +dnl +dnl PHP_CRYPT_R_STYLE +dnl detect the style of crypt_r() is any is available +dnl see APR_CHECK_CRYPT_R_STYLE() for original version +dnl +AC_DEFUN([PHP_CRYPT_R_STYLE], +[ + AC_CACHE_CHECK([which data struct is used by crypt_r], php_cv_crypt_r_style,[ + php_cv_crypt_r_style=none + AC_TRY_COMPILE([ +#define _REENTRANT 1 +#include +],[ +CRYPTD buffer; +crypt_r("passwd", "hash", &buffer); +], +php_cv_crypt_r_style=cryptd) + + if test "$php_cv_crypt_r_style" = "none"; then + AC_TRY_COMPILE([ +#define _REENTRANT 1 +#include +],[ +struct crypt_data buffer; +crypt_r("passwd", "hash", &buffer); +], +php_cv_crypt_r_style=struct_crypt_data) + fi + + if test "$php_cv_crypt_r_style" = "none"; then + AC_TRY_COMPILE([ +#define _REENTRANT 1 +#define _GNU_SOURCE +#include +],[ +struct crypt_data buffer; +crypt_r("passwd", "hash", &buffer); +], +php_cv_crypt_r_style=struct_crypt_data_gnu_source) + fi + ]) + + if test "$php_cv_crypt_r_style" = "cryptd"; then + AC_DEFINE(CRYPT_R_CRYPTD, 1, [Define if crypt_r has uses CRYPTD]) + fi + if test "$php_cv_crypt_r_style" = "struct_crypt_data" -o "$php_cv_crypt_r_style" = "struct_crypt_data_gnu_source"; then + AC_DEFINE(CRYPT_R_STRUCT_CRYPT_DATA, 1, [Define if crypt_r uses struct crypt_data]) + fi + if test "$php_cv_crypt_r_style" = "struct_crypt_data_gnu_source"; then + AC_DEFINE(CRYPT_R_GNU_SOURCE, 1, [Define if struct crypt_data requires _GNU_SOURCE]) + fi + if test "$php_cv_crypt_r_style" = "none"; then + AC_MSG_ERROR([Unable to detect data struct used by crypt_r]) + fi +]) + +dnl +dnl PHP_TEST_WRITE_STDOUT +dnl +AC_DEFUN([PHP_TEST_WRITE_STDOUT],[ + AC_CACHE_CHECK(whether writing to stdout works,ac_cv_write_stdout,[ + AC_TRY_RUN([ +#ifdef HAVE_UNISTD_H +#include +#endif + +#define TEXT "This is the test message -- " + +main() +{ + int n; + + n = write(1, TEXT, sizeof(TEXT)-1); + return (!(n == sizeof(TEXT)-1)); +} + ],[ + ac_cv_write_stdout=yes + ],[ + ac_cv_write_stdout=no + ],[ + ac_cv_write_stdout=no + ]) + ]) + if test "$ac_cv_write_stdout" = "yes"; then + AC_DEFINE(PHP_WRITE_STDOUT, 1, [whether write(2) works]) + fi +]) + +dnl +dnl PHP_INIT_DTRACE(providerdesc, header-file, sources [, module]) +dnl +AC_DEFUN([PHP_INIT_DTRACE],[ +dnl Set paths properly when called from extension + case "$4" in + ""[)] ac_srcdir="$abs_srcdir/"; unset ac_bdir;; + /*[)] ac_srcdir=`echo "$4"|cut -c 2-`"/"; ac_bdir=$ac_srcdir;; + *[)] ac_srcdir="$abs_srcdir/$1/"; ac_bdir="$4/";; + esac + +dnl providerdesc + ac_provsrc=$1 + old_IFS=[$]IFS + IFS=. + set $ac_provsrc + ac_provobj=[$]1 + IFS=$old_IFS + +dnl header-file + ac_hdrobj=$2 + +dnl Add providerdesc.o into global objects when needed + case $host_alias in + *freebsd*) + PHP_GLOBAL_OBJS="[$]PHP_GLOBAL_OBJS [$]ac_bdir[$]ac_provsrc.o" + PHP_LDFLAGS="$PHP_LDFLAGS -lelf" + ;; + *solaris*) + PHP_GLOBAL_OBJS="[$]PHP_GLOBAL_OBJS [$]ac_bdir[$]ac_provsrc.o" + ;; + esac + +dnl DTrace objects + old_IFS=[$]IFS + for ac_src in $3; do + IFS=. + set $ac_src + ac_obj=[$]1 + IFS=$old_IFS + + PHP_DTRACE_OBJS="[$]PHP_DTRACE_OBJS [$]ac_bdir[$]ac_obj.lo" + done; + + case [$]php_sapi_module in + shared[)] + for ac_lo in $PHP_DTRACE_OBJS; do + dtrace_objs="[$]dtrace_objs `echo $ac_lo | $SED -e 's,\.lo$,.o,' -e 's#\(.*\)\/#\1\/.libs\/#'`" + done; + ;; + *[)] + dtrace_objs='$(PHP_DTRACE_OBJS:.lo=.o)' + ;; + esac + +dnl Generate Makefile.objects entries + cat>>Makefile.objects<='`$ECHO "$" | $SED "$delay_single_quote_subst"`' +m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], +[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), + [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAGS +# ---------------- +# Output comment and list of tags supported by the script +m4_defun([_LT_LIBTOOL_TAGS], +[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl +available_tags="_LT_TAGS"dnl +]) + + +# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) +# ----------------------------------- +# Extract the dictionary values for VARNAME (optionally with TAG) and +# expand to a commented shell variable setting: +# +# # Some comment about what VAR is for. +# visible_name=$lt_internal_name +m4_define([_LT_LIBTOOL_DECLARE], +[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], + [description])))[]dnl +m4_pushdef([_libtool_name], + m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl +m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), + [0], [_libtool_name=[$]$1], + [1], [_libtool_name=$lt_[]$1], + [2], [_libtool_name=$lt_[]$1], + [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl +m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl +]) + + +# _LT_LIBTOOL_CONFIG_VARS +# ----------------------- +# Produce commented declarations of non-tagged libtool config variables +# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' +# script. Tagged libtool config variables (even for the LIBTOOL CONFIG +# section) are produced by _LT_LIBTOOL_TAG_VARS. +m4_defun([_LT_LIBTOOL_CONFIG_VARS], +[m4_foreach([_lt_var], + m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAG_VARS(TAG) +# ------------------------- +m4_define([_LT_LIBTOOL_TAG_VARS], +[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) + + +# _LT_TAGVAR(VARNAME, [TAGNAME]) +# ------------------------------ +m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) + + +# _LT_CONFIG_COMMANDS +# ------------------- +# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of +# variables for single and double quote escaping we saved from calls +# to _LT_DECL, we can put quote escaped variables declarations +# into `config.status', and then the shell code to quote escape them in +# for loops in `config.status'. Finally, any additional code accumulated +# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. +m4_defun([_LT_CONFIG_COMMANDS], +[AC_PROVIDE_IFELSE([LT_OUTPUT], + dnl If the libtool generation code has been placed in $CONFIG_LT, + dnl instead of duplicating it all over again into config.status, + dnl then we will have config.status run $CONFIG_LT later, so it + dnl needs to know what name is stored there: + [AC_CONFIG_COMMANDS([libtool], + [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], + dnl If the libtool generation code is destined for config.status, + dnl expand the accumulated commands and init code now: + [AC_CONFIG_COMMANDS([libtool], + [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) +])#_LT_CONFIG_COMMANDS + + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], +[ + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +_LT_CONFIG_STATUS_DECLARATIONS +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$[]1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_quote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_dquote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +_LT_OUTPUT_LIBTOOL_INIT +]) + +# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) +# ------------------------------------ +# Generate a child script FILE with all initialization necessary to +# reuse the environment learned by the parent script, and make the +# file executable. If COMMENT is supplied, it is inserted after the +# `#!' sequence but before initialization text begins. After this +# macro, additional text can be appended to FILE to form the body of +# the child script. The macro ends with non-zero status if the +# file could not be fully written (such as if the disk is full). +m4_ifdef([AS_INIT_GENERATED], +[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], +[m4_defun([_LT_GENERATED_FILE_INIT], +[m4_require([AS_PREPARE])]dnl +[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl +[lt_write_fail=0 +cat >$1 <<_ASEOF || lt_write_fail=1 +#! $SHELL +# Generated by $as_me. +$2 +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$1 <<\_ASEOF || lt_write_fail=1 +AS_SHELL_SANITIZE +_AS_PREPARE +exec AS_MESSAGE_FD>&1 +_ASEOF +test $lt_write_fail = 0 && chmod +x $1[]dnl +m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT + +# LT_OUTPUT +# --------- +# This macro allows early generation of the libtool script (before +# AC_OUTPUT is called), incase it is used in configure for compilation +# tests. +AC_DEFUN([LT_OUTPUT], +[: ${CONFIG_LT=./config.lt} +AC_MSG_NOTICE([creating $CONFIG_LT]) +_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], +[# Run this file to recreate a libtool stub with the current configuration.]) + +cat >>"$CONFIG_LT" <<\_LTEOF +lt_cl_silent=false +exec AS_MESSAGE_LOG_FD>>config.log +{ + echo + AS_BOX([Running $as_me.]) +} >&AS_MESSAGE_LOG_FD + +lt_cl_help="\ +\`$as_me' creates a local libtool stub from the current configuration, +for use in further configure time tests before the real libtool is +generated. + +Usage: $[0] [[OPTIONS]] + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + +Report bugs to ." + +lt_cl_version="\ +m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl +m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) +configured by $[0], generated by m4_PACKAGE_STRING. + +Copyright (C) 2011 Free Software Foundation, Inc. +This config.lt script is free software; the Free Software Foundation +gives unlimited permision to copy, distribute and modify it." + +while test $[#] != 0 +do + case $[1] in + --version | --v* | -V ) + echo "$lt_cl_version"; exit 0 ;; + --help | --h* | -h ) + echo "$lt_cl_help"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --quiet | --q* | --silent | --s* | -q ) + lt_cl_silent=: ;; + + -*) AC_MSG_ERROR([unrecognized option: $[1] +Try \`$[0] --help' for more information.]) ;; + + *) AC_MSG_ERROR([unrecognized argument: $[1] +Try \`$[0] --help' for more information.]) ;; + esac + shift +done + +if $lt_cl_silent; then + exec AS_MESSAGE_FD>/dev/null +fi +_LTEOF + +cat >>"$CONFIG_LT" <<_LTEOF +_LT_OUTPUT_LIBTOOL_COMMANDS_INIT +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AC_MSG_NOTICE([creating $ofile]) +_LT_OUTPUT_LIBTOOL_COMMANDS +AS_EXIT(0) +_LTEOF +chmod +x "$CONFIG_LT" + +# configure is writing to config.log, but config.lt does its own redirection, +# appending to config.log, which fails on DOS, as config.log is still kept +# open by configure. Here we exec the FD to /dev/null, effectively closing +# config.log, so it can be properly (re)opened and appended to by config.lt. +lt_cl_success=: +test "$silent" = yes && + lt_config_lt_args="$lt_config_lt_args --quiet" +exec AS_MESSAGE_LOG_FD>/dev/null +$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +exec AS_MESSAGE_LOG_FD>>config.log +$lt_cl_success || AS_EXIT(1) +])# LT_OUTPUT + + +# _LT_CONFIG(TAG) +# --------------- +# If TAG is the built-in tag, create an initial libtool script with a +# default configuration from the untagged config vars. Otherwise add code +# to config.status for appending the configuration named by TAG from the +# matching tagged config vars. +m4_defun([_LT_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_CONFIG_SAVE_COMMANDS([ + m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl + m4_if(_LT_TAG, [C], [ + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL + +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +_LT_COPYING +_LT_LIBTOOL_TAGS + +# ### BEGIN LIBTOOL CONFIG +_LT_LIBTOOL_CONFIG_VARS +_LT_LIBTOOL_TAG_VARS +# ### END LIBTOOL CONFIG + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + _LT_PROG_LTMAIN + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + _LT_PROG_REPLACE_SHELLFNS + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +], +[cat <<_LT_EOF >> "$ofile" + +dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded +dnl in a comment (ie after a #). +# ### BEGIN LIBTOOL TAG CONFIG: $1 +_LT_LIBTOOL_TAG_VARS(_LT_TAG) +# ### END LIBTOOL TAG CONFIG: $1 +_LT_EOF +])dnl /m4_if +], +[m4_if([$1], [], [ + PACKAGE='$PACKAGE' + VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' + RM='$RM' + ofile='$ofile'], []) +])dnl /_LT_CONFIG_SAVE_COMMANDS +])# _LT_CONFIG + + +# LT_SUPPORTED_TAG(TAG) +# --------------------- +# Trace this macro to discover what tags are supported by the libtool +# --tag option, using: +# autoconf --trace 'LT_SUPPORTED_TAG:$1' +AC_DEFUN([LT_SUPPORTED_TAG], []) + + +# C support is built-in for now +m4_define([_LT_LANG_C_enabled], []) +m4_define([_LT_TAGS], []) + + +# LT_LANG(LANG) +# ------------- +# Enable libtool support for the given language if not already enabled. +AC_DEFUN([LT_LANG], +[AC_BEFORE([$0], [LT_OUTPUT])dnl +m4_case([$1], + [C], [_LT_LANG(C)], + [C++], [_LT_LANG(CXX)], + [Go], [_LT_LANG(GO)], + [Java], [_LT_LANG(GCJ)], + [Fortran 77], [_LT_LANG(F77)], + [Fortran], [_LT_LANG(FC)], + [Windows Resource], [_LT_LANG(RC)], + [m4_ifdef([_LT_LANG_]$1[_CONFIG], + [_LT_LANG($1)], + [m4_fatal([$0: unsupported language: "$1"])])])dnl +])# LT_LANG + + +# _LT_LANG(LANGNAME) +# ------------------ +m4_defun([_LT_LANG], +[m4_ifdef([_LT_LANG_]$1[_enabled], [], + [LT_SUPPORTED_TAG([$1])dnl + m4_append([_LT_TAGS], [$1 ])dnl + m4_define([_LT_LANG_]$1[_enabled], [])dnl + _LT_LANG_$1_CONFIG($1)])dnl +])# _LT_LANG + + +m4_ifndef([AC_PROG_GO], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_GO. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ +m4_defun([AC_PROG_GO], +[AC_LANG_PUSH(Go)dnl +AC_ARG_VAR([GOC], [Go compiler command])dnl +AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl +_AC_ARG_VAR_LDFLAGS()dnl +AC_CHECK_TOOL(GOC, gccgo) +if test -z "$GOC"; then + if test -n "$ac_tool_prefix"; then + AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) + fi +fi +if test -z "$GOC"; then + AC_CHECK_PROG(GOC, gccgo, gccgo, false) +fi +])#m4_defun +])#m4_ifndef + + +# _LT_LANG_DEFAULT_CONFIG +# ----------------------- +m4_defun([_LT_LANG_DEFAULT_CONFIG], +[AC_PROVIDE_IFELSE([AC_PROG_CXX], + [LT_LANG(CXX)], + [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) + +AC_PROVIDE_IFELSE([AC_PROG_F77], + [LT_LANG(F77)], + [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) + +AC_PROVIDE_IFELSE([AC_PROG_FC], + [LT_LANG(FC)], + [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) + +dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal +dnl pulling things in needlessly. +AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([LT_PROG_GCJ], + [LT_LANG(GCJ)], + [m4_ifdef([AC_PROG_GCJ], + [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([A][M_PROG_GCJ], + [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([LT_PROG_GCJ], + [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) + +AC_PROVIDE_IFELSE([AC_PROG_GO], + [LT_LANG(GO)], + [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) + +AC_PROVIDE_IFELSE([LT_PROG_RC], + [LT_LANG(RC)], + [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) +])# _LT_LANG_DEFAULT_CONFIG + +# Obsolete macros: +AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) +AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) +AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) +AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_CXX], []) +dnl AC_DEFUN([AC_LIBTOOL_F77], []) +dnl AC_DEFUN([AC_LIBTOOL_FC], []) +dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) +dnl AC_DEFUN([AC_LIBTOOL_RC], []) + + +# _LT_TAG_COMPILER +# ---------------- +m4_defun([_LT_TAG_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl +_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl +_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl +_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_TAG_COMPILER + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +m4_defun([_LT_COMPILER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +m4_defun([_LT_LINKER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* +])# _LT_LINKER_BOILERPLATE + +# _LT_REQUIRED_DARWIN_CHECKS +# ------------------------- +m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ + case $host_os in + rhapsody* | darwin*) + AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) + AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) + AC_CHECK_TOOL([LIPO], [lipo], [:]) + AC_CHECK_TOOL([OTOOL], [otool], [:]) + AC_CHECK_TOOL([OTOOL64], [otool64], [:]) + _LT_DECL([], [DSYMUTIL], [1], + [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) + _LT_DECL([], [NMEDIT], [1], + [Tool to change global to local symbols on Mac OS X]) + _LT_DECL([], [LIPO], [1], + [Tool to manipulate fat objects and archives on Mac OS X]) + _LT_DECL([], [OTOOL], [1], + [ldd/readelf like tool for Mach-O binaries on Mac OS X]) + _LT_DECL([], [OTOOL64], [1], + [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) + + AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], + [lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test $_lt_result -eq 0; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi]) + + AC_CACHE_CHECK([for -exported_symbols_list linker flag], + [lt_cv_ld_exported_symbols_list], + [lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [lt_cv_ld_exported_symbols_list=yes], + [lt_cv_ld_exported_symbols_list=no]) + LDFLAGS="$save_LDFLAGS" + ]) + + AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], + [lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD + echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD + $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD + $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + ]) + case $host_os in + rhapsody* | darwin1.[[012]]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[[012]]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac +]) + + +# _LT_DARWIN_LINKER_FEATURES([TAG]) +# --------------------------------- +# Checks for linker and compiler features on darwin +m4_defun([_LT_DARWIN_LINKER_FEATURES], +[ + m4_require([_LT_REQUIRED_DARWIN_CHECKS]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_automatic, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + if test "$lt_cv_ld_force_load" = "yes"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], + [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='' + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=func_echo_all + _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + m4_if([$1], [CXX], +[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then + _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" + fi +],[]) + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi +]) + +# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) +# ---------------------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +# Store the results from the different compilers for each TAGNAME. +# Allow to override them for all tags through lt_cv_aix_libpath. +m4_defun([_LT_SYS_MODULE_PATH_AIX], +[m4_require([_LT_DECL_SED])dnl +if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], + [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ + lt_aix_libpath_sed='[ + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }]' + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi],[]) + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" + fi + ]) + aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) +fi +])# _LT_SYS_MODULE_PATH_AIX + + +# _LT_SHELL_INIT(ARG) +# ------------------- +m4_define([_LT_SHELL_INIT], +[m4_divert_text([M4SH-INIT], [$1 +])])# _LT_SHELL_INIT + + + +# _LT_PROG_ECHO_BACKSLASH +# ----------------------- +# Find how we can fake an echo command that does not interpret backslash. +# In particular, with Autoconf 2.60 or later we add some code to the start +# of the generated configure script which will find a shell with a builtin +# printf (which we can use as an echo command). +m4_defun([_LT_PROG_ECHO_BACKSLASH], +[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +AC_MSG_CHECKING([how to print strings]) +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$[]1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + +case "$ECHO" in + printf*) AC_MSG_RESULT([printf]) ;; + print*) AC_MSG_RESULT([print -r]) ;; + *) AC_MSG_RESULT([cat]) ;; +esac + +m4_ifdef([_AS_DETECT_SUGGESTED], +[_AS_DETECT_SUGGESTED([ + test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test "X`printf %s $ECHO`" = "X$ECHO" \ + || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) + +_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) +_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) +])# _LT_PROG_ECHO_BACKSLASH + + +# _LT_WITH_SYSROOT +# ---------------- +AC_DEFUN([_LT_WITH_SYSROOT], +[AC_MSG_CHECKING([for sysroot]) +AC_ARG_WITH([sysroot], +[ --with-sysroot[=DIR] Search for dependent libraries within DIR + (or the compiler's sysroot if not specified).], +[], [with_sysroot=no]) + +dnl lt_sysroot will always be passed unquoted. We quote it here +dnl in case the user passed a directory name. +lt_sysroot= +case ${with_sysroot} in #( + yes) + if test "$GCC" = yes; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + AC_MSG_RESULT([${with_sysroot}]) + AC_MSG_ERROR([The sysroot must be an absolute path.]) + ;; +esac + + AC_MSG_RESULT([${lt_sysroot:-no}]) +_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl +[dependent libraries, and in which our libraries should be installed.])]) + +# _LT_ENABLE_LOCK +# --------------- +m4_defun([_LT_ENABLE_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AS_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD="${LD-ld}_sol2" + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks="$enable_libtool_lock" +])# _LT_ENABLE_LOCK + + +# _LT_PROG_AR +# ----------- +m4_defun([_LT_PROG_AR], +[AC_CHECK_TOOLS(AR, [ar], false) +: ${AR=ar} +: ${AR_FLAGS=cru} +_LT_DECL([], [AR], [1], [The archiver]) +_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) + +AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], + [lt_cv_ar_at_file=no + AC_COMPILE_IFELSE([AC_LANG_PROGRAM], + [echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([lt_ar_try]) + if test "$ac_status" -eq 0; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + AC_TRY_EVAL([lt_ar_try]) + if test "$ac_status" -ne 0; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + ]) + ]) + +if test "x$lt_cv_ar_at_file" = xno; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi +_LT_DECL([], [archiver_list_spec], [1], + [How to feed a file listing to the archiver]) +])# _LT_PROG_AR + + +# _LT_CMD_OLD_ARCHIVE +# ------------------- +m4_defun([_LT_CMD_OLD_ARCHIVE], +[_LT_PROG_AR + +AC_CHECK_TOOL(STRIP, strip, :) +test -z "$STRIP" && STRIP=: +_LT_DECL([], [STRIP], [1], [A symbol stripping program]) + +AC_CHECK_TOOL(RANLIB, ranlib, :) +test -z "$RANLIB" && RANLIB=: +_LT_DECL([], [RANLIB], [1], + [Commands used to install an old-style archive]) + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac +_LT_DECL([], [old_postinstall_cmds], [2]) +_LT_DECL([], [old_postuninstall_cmds], [2]) +_LT_TAGDECL([], [old_archive_cmds], [2], + [Commands used to build an old-style archive]) +_LT_DECL([], [lock_old_archive_extraction], [0], + [Whether to use a lock for old archive extraction]) +])# _LT_CMD_OLD_ARCHIVE + + +# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([_LT_COMPILER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $RM conftest* +]) + +if test x"[$]$2" = xyes; then + m4_if([$5], , :, [$5]) +else + m4_if([$6], , :, [$6]) +fi +])# _LT_COMPILER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) + + +# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------- +# Check whether the given linker option works +AC_DEFUN([_LT_LINKER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" +]) + +if test x"[$]$2" = xyes; then + m4_if([$4], , :, [$4]) +else + m4_if([$5], , :, [$5]) +fi +])# _LT_LINKER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) + + +# LT_CMD_MAX_LEN +#--------------- +AC_DEFUN([LT_CMD_MAX_LEN], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8 ; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac +]) +if test -n $lt_cv_sys_max_cmd_len ; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +max_cmd_len=$lt_cv_sys_max_cmd_len +_LT_DECL([], [max_cmd_len], [0], + [What is the maximum length of a command?]) +])# LT_CMD_MAX_LEN + +# Old name: +AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) + + +# _LT_HEADER_DLFCN +# ---------------- +m4_defun([_LT_HEADER_DLFCN], +[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl +])# _LT_HEADER_DLFCN + + +# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ---------------------------------------------------------------- +m4_defun([_LT_TRY_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test "$cross_compiling" = yes; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +[#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +}] +_LT_EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_TRY_DLOPEN_SELF + + +# LT_SYS_DLOPEN_SELF +# ------------------ +AC_DEFUN([LT_SYS_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +_LT_DECL([dlopen_support], [enable_dlopen], [0], + [Whether dlopen is supported]) +_LT_DECL([dlopen_self], [enable_dlopen_self], [0], + [Whether dlopen of programs is supported]) +_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], + [Whether dlopen of statically linked programs is supported]) +])# LT_SYS_DLOPEN_SELF + +# Old name: +AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) + + +# _LT_COMPILER_C_O([TAGNAME]) +# --------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler. +# This macro does not hard code the compiler like AC_PROG_CC_C_O. +m4_defun([_LT_COMPILER_C_O], +[m4_require([_LT_DECL_SED])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* +]) +_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], + [Does compiler simultaneously support -c and -o options?]) +])# _LT_COMPILER_C_O + + +# _LT_COMPILER_FILE_LOCKS([TAGNAME]) +# ---------------------------------- +# Check to see if we can do hard links to lock some files if needed +m4_defun([_LT_COMPILER_FILE_LOCKS], +[m4_require([_LT_ENABLE_LOCK])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_COMPILER_C_O([$1]) + +hard_links="nottested" +if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) +])# _LT_COMPILER_FILE_LOCKS + + +# _LT_CHECK_OBJDIR +# ---------------- +m4_defun([_LT_CHECK_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +_LT_DECL([], [objdir], [0], + [The name of the directory that contains temporary libtool files])dnl +m4_pattern_allow([LT_OBJDIR])dnl +AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", + [Define to the sub-directory in which libtool stores uninstalled libraries.]) +])# _LT_CHECK_OBJDIR + + +# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) +# -------------------------------------- +# Check hardcoding attributes. +m4_defun([_LT_LINKER_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || + test -n "$_LT_TAGVAR(runpath_var, $1)" || + test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && + test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then + # Linking always hardcodes the temporary library directory. + _LT_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) + +if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || + test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi +_LT_TAGDECL([], [hardcode_action], [0], + [How to hardcode a shared library path into an executable]) +])# _LT_LINKER_HARDCODE_LIBPATH + + +# _LT_CMD_STRIPLIB +# ---------------- +m4_defun([_LT_CMD_STRIPLIB], +[m4_require([_LT_DECL_EGREP]) +striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) +_LT_DECL([], [striplib], [1]) +])# _LT_CMD_STRIPLIB + + +# _LT_SYS_DYNAMIC_LINKER([TAG]) +# ----------------------------- +# PORTME Fill in your ld.so characteristics +m4_defun([_LT_SYS_DYNAMIC_LINKER], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_OBJDUMP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +AC_MSG_CHECKING([dynamic linker characteristics]) +m4_if([$1], + [], [ +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; + *) lt_sed_strip_eq="s,=/,/,g" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[[lt_foo]]++; } + if (lt_freq[[lt_foo]] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[[4-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + library_names_spec='${libname}.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec="$LIB" + if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[23]].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[[3-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], + [lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ + LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], + [lt_cv_shlibpath_overrides_runpath=yes])]) + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + ]) + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Add ABI-specific directories to the system library path. + sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" + + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + +_LT_DECL([], [variables_saved_for_relink], [1], + [Variables whose values should be saved in libtool wrapper scripts and + restored at link time]) +_LT_DECL([], [need_lib_prefix], [0], + [Do we need the "lib" prefix for modules?]) +_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) +_LT_DECL([], [version_type], [0], [Library versioning type]) +_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) +_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) +_LT_DECL([], [shlibpath_overrides_runpath], [0], + [Is shlibpath searched before the hard-coded library search path?]) +_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) +_LT_DECL([], [library_names_spec], [1], + [[List of archive names. First name is the real one, the rest are links. + The last name is the one that the linker finds with -lNAME]]) +_LT_DECL([], [soname_spec], [1], + [[The coded name of the library, if different from the real name]]) +_LT_DECL([], [install_override_mode], [1], + [Permission mode override for installation of shared libraries]) +_LT_DECL([], [postinstall_cmds], [2], + [Command to use after installation of a shared archive]) +_LT_DECL([], [postuninstall_cmds], [2], + [Command to use after uninstallation of a shared archive]) +_LT_DECL([], [finish_cmds], [2], + [Commands used to finish a libtool library installation in a directory]) +_LT_DECL([], [finish_eval], [1], + [[As "finish_cmds", except a single script fragment to be evaled but + not shown]]) +_LT_DECL([], [hardcode_into_libs], [0], + [Whether we should hardcode library paths into libraries]) +_LT_DECL([], [sys_lib_search_path_spec], [2], + [Compile-time system search path for libraries]) +_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], + [Run-time system search path for libraries]) +])# _LT_SYS_DYNAMIC_LINKER + + +# _LT_PATH_TOOL_PREFIX(TOOL) +# -------------------------- +# find a file program which can recognize shared library +AC_DEFUN([_LT_PATH_TOOL_PREFIX], +[m4_require([_LT_DECL_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="m4_if([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +_LT_DECL([], [MAGIC_CMD], [0], + [Used to examine libraries when file_magic_cmd begins with "file"])dnl +])# _LT_PATH_TOOL_PREFIX + +# Old name: +AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) + + +# _LT_PATH_MAGIC +# -------------- +# find a file program which can recognize a shared library +m4_defun([_LT_PATH_MAGIC], +[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# _LT_PATH_MAGIC + + +# LT_PATH_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([LT_PATH_LD], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PROG_ECHO_BACKSLASH])dnl + +AC_ARG_WITH([gnu-ld], + [AS_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test "$withval" = no || with_gnu_ld=yes], + [with_gnu_ld=no])dnl + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[[3-9]]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +_LT_DECL([], [deplibs_check_method], [1], + [Method to check whether dependent libraries are shared objects]) +_LT_DECL([], [file_magic_cmd], [1], + [Command to use when deplibs_check_method = "file_magic"]) +_LT_DECL([], [file_magic_glob], [1], + [How to find potential files when deplibs_check_method = "file_magic"]) +_LT_DECL([], [want_nocaseglob], [1], + [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) +])# _LT_CHECK_MAGIC_METHOD + + +# LT_PATH_NM +# ---------- +# find the pathname to a BSD- or MS-compatible name lister +AC_DEFUN([LT_PATH_NM], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + : ${lt_cv_path_NM=no} +fi]) +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) + case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols" + ;; + *) + DUMPBIN=: + ;; + esac + fi + AC_SUBST([DUMPBIN]) + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" + fi +fi +test -z "$NM" && NM=nm +AC_SUBST([NM]) +_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl + +AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], + [lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) + cat conftest.out >&AS_MESSAGE_LOG_FD + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest*]) +])# LT_PATH_NM + +# Old names: +AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) +AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_PROG_NM], []) +dnl AC_DEFUN([AC_PROG_NM], []) + +# _LT_CHECK_SHAREDLIB_FROM_LINKLIB +# -------------------------------- +# how to determine the name of the shared library +# associated with a specific link library. +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +m4_require([_LT_DECL_DLLTOOL]) +AC_CACHE_CHECK([how to associate runtime and link libraries], +lt_cv_sharedlib_from_linklib_cmd, +[lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh + # decide which to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd="$ECHO" + ;; +esac +]) +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + +_LT_DECL([], [sharedlib_from_linklib_cmd], [1], + [Command to associate shared and link libraries]) +])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB + + +# _LT_PATH_MANIFEST_TOOL +# ---------------------- +# locate the manifest tool +m4_defun([_LT_PATH_MANIFEST_TOOL], +[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], + [lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&AS_MESSAGE_LOG_FD + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest*]) +if test "x$lt_cv_path_mainfest_tool" != xyes; then + MANIFEST_TOOL=: +fi +_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl +])# _LT_PATH_MANIFEST_TOOL + + +# LT_LIB_M +# -------- +# check for math library +AC_DEFUN([LT_LIB_M], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM="-lm") + ;; +esac +AC_SUBST([LIBM]) +])# LT_LIB_M + +# Old name: +AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_CHECK_LIBM], []) + + +# _LT_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------- +m4_defun([_LT_COMPILER_NO_RTTI], +[m4_require([_LT_TAG_COMPILER])dnl + +_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test "$GCC" = yes; then + case $cc_basename in + nvcc*) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; + *) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; + esac + + _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], + [Compiler flag to turn off builtin functions]) +])# _LT_COMPILER_NO_RTTI + + +# _LT_CMD_GLOBAL_SYMBOLS +# ---------------------- +m4_defun([_LT_CMD_GLOBAL_SYMBOLS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([LT_PATH_NM])dnl +AC_REQUIRE([LT_PATH_LD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_TAG_COMPILER])dnl + +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) + if test "$host_cpu" = ia64; then + symcode='[[ABCDEGRST]]' + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function + # and D for any global variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK ['"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx]" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + nlist=conftest.nm + if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT@&t@_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT@&t@_DLSYM_CONST +#else +# define LT@&t@_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT@&t@_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[[]] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + +_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], + [Take the output of nm and produce a listing of raw symbols and C names]) +_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], + [Transform the output of nm in a proper C declaration]) +_LT_DECL([global_symbol_to_c_name_address], + [lt_cv_sys_global_symbol_to_c_name_address], [1], + [Transform the output of nm in a C name address pair]) +_LT_DECL([global_symbol_to_c_name_address_lib_prefix], + [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], + [Transform the output of nm in a C name address pair when lib prefix is needed]) +_LT_DECL([], [nm_file_list_spec], [1], + [Specify filename containing input files for $NM]) +]) # _LT_CMD_GLOBAL_SYMBOLS + + +# _LT_COMPILER_PIC([TAGNAME]) +# --------------------------- +m4_defun([_LT_COMPILER_PIC], +[m4_require([_LT_TAG_COMPILER])dnl +_LT_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_TAGVAR(lt_prog_compiler_static, $1)= + +m4_if([$1], [CXX], [ + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix[[4-9]]*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64 which still supported -KPIC. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test "$GCC" = yes; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' + if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + hpux9* | hpux10* | hpux11*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + # old Intel for x86_64 which still supported -KPIC. + ecc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' + _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' + ;; + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='' + ;; + *Sun\ F* | *Sun*Fortran*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + *Intel*\ [[CF]]*Compiler*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + *Portland\ Group*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + rdos*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + solaris*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" + ;; +esac + +AC_CACHE_CHECK([for $compiler option to produce PIC], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) +_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], + [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], + [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], + [Additional compiler flags for building library objects]) + +_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], + [How to pass a linker flag through the compiler]) +# +# Check to make sure the static flag actually works. +# +wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" +_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) +_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], + [Compiler flag to prevent dynamic linking]) +])# _LT_COMPILER_PIC + + +# _LT_LINKER_SHLIBS([TAGNAME]) +# ---------------------------- +# See if the linker supports building shared libraries. +m4_defun([_LT_LINKER_SHLIBS], +[AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +m4_if([$1], [CXX], [ + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + case $host_os in + aix[[4-9]]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global defined + # symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + ;; + esac + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +], [ + runpath_var= + _LT_TAGVAR(allow_undefined_flag, $1)= + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(archive_cmds, $1)= + _LT_TAGVAR(archive_expsym_cmds, $1)= + _LT_TAGVAR(compiler_needs_object, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(hardcode_automatic, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_separator, $1)= + _LT_TAGVAR(hardcode_minus_L, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_TAGVAR(inherit_rpath, $1)=no + _LT_TAGVAR(link_all_deplibs, $1)=unknown + _LT_TAGVAR(module_cmds, $1)= + _LT_TAGVAR(module_expsym_cmds, $1)= + _LT_TAGVAR(old_archive_from_new_cmds, $1)= + _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_TAGVAR(thread_safe_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. +dnl Note also adjust exclude_expsyms for C++ above. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + _LT_TAGVAR(ld_shlibs, $1)=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test "$with_gnu_ld" = yes; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; + *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test "$lt_use_gnu_ld_interface" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[[3-9]]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test "$tmp_diet" = no + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + _LT_TAGVAR(whole_archive_flag_spec, $1)= + tmp_sharedflag='--shared' ;; + xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then + runpath_var= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global + # defined symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + + if test "$GCC" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + bsdi[[45]]*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + esac + ;; + + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + m4_if($1, [], [ + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + _LT_LINKER_OPTION([if $CC understands -b], + _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], + [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) + ;; + esac + fi + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], + [lt_cv_irix_exported_symbol], + [save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + AC_LINK_IFELSE( + [AC_LANG_SOURCE( + [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], + [C++], [[int foo (void) { return 0; }]], + [Fortran 77], [[ + subroutine foo + end]], + [Fortran], [[ + subroutine foo + end]])])], + [lt_cv_irix_exported_symbol=yes], + [lt_cv_irix_exported_symbol=no]) + LDFLAGS="$save_LDFLAGS"]) + if test "$lt_cv_irix_exported_symbol" = yes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + fi + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + else + case $host_os in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + ;; + esac + fi + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + solaris*) + _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' + if test "$GCC" = yes; then + wlarc='${wl}' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='${wl}' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + fi + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + if test x$host_vendor = xsni; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' + ;; + esac + fi + fi +]) +AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) +test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld + +_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl +_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl +_LT_DECL([], [extract_expsyms_cmds], [2], + [The commands to extract the exported symbol list from a shared archive]) + +# +# Do we need to explicitly link libc? +# +case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $_LT_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_CACHE_CHECK([whether -lc should be explicitly linked in], + [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), + [$RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) + _LT_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) + then + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no + else + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + ]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) + ;; + esac + fi + ;; +esac + +_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], + [Whether or not to add -lc for building shared libraries]) +_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], + [enable_shared_with_static_runtimes], [0], + [Whether or not to disallow shared libs when runtime libs are static]) +_LT_TAGDECL([], [export_dynamic_flag_spec], [1], + [Compiler flag to allow reflexive dlopens]) +_LT_TAGDECL([], [whole_archive_flag_spec], [1], + [Compiler flag to generate shared objects directly from archives]) +_LT_TAGDECL([], [compiler_needs_object], [1], + [Whether the compiler copes with passing no objects directly]) +_LT_TAGDECL([], [old_archive_from_new_cmds], [2], + [Create an old-style archive from a shared archive]) +_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], + [Create a temporary old-style archive to link instead of a shared archive]) +_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) +_LT_TAGDECL([], [archive_expsym_cmds], [2]) +_LT_TAGDECL([], [module_cmds], [2], + [Commands used to build a loadable module if different from building + a shared archive.]) +_LT_TAGDECL([], [module_expsym_cmds], [2]) +_LT_TAGDECL([], [with_gnu_ld], [1], + [Whether we are building with GNU ld or not]) +_LT_TAGDECL([], [allow_undefined_flag], [1], + [Flag that allows shared libraries with undefined symbols to be built]) +_LT_TAGDECL([], [no_undefined_flag], [1], + [Flag that enforces no undefined symbols]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], + [Flag to hardcode $libdir into a binary during linking. + This must work even if $libdir does not exist]) +_LT_TAGDECL([], [hardcode_libdir_separator], [1], + [Whether we need a single "-rpath" flag with a separated argument]) +_LT_TAGDECL([], [hardcode_direct], [0], + [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + DIR into the resulting binary]) +_LT_TAGDECL([], [hardcode_direct_absolute], [0], + [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + DIR into the resulting binary and the resulting library dependency is + "absolute", i.e impossible to change by setting ${shlibpath_var} if the + library is relocated]) +_LT_TAGDECL([], [hardcode_minus_L], [0], + [Set to "yes" if using the -LDIR flag during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_shlibpath_var], [0], + [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_automatic], [0], + [Set to "yes" if building a shared library automatically hardcodes DIR + into the library and all subsequent libraries and executables linked + against it]) +_LT_TAGDECL([], [inherit_rpath], [0], + [Set to yes if linker adds runtime paths of dependent libraries + to runtime path list]) +_LT_TAGDECL([], [link_all_deplibs], [0], + [Whether libtool must link a program against all its dependency libraries]) +_LT_TAGDECL([], [always_export_symbols], [0], + [Set to "yes" if exported symbols are required]) +_LT_TAGDECL([], [export_symbols_cmds], [2], + [The commands to list exported symbols]) +_LT_TAGDECL([], [exclude_expsyms], [1], + [Symbols that should not be listed in the preloaded symbols]) +_LT_TAGDECL([], [include_expsyms], [1], + [Symbols that must always be exported]) +_LT_TAGDECL([], [prelink_cmds], [2], + [Commands necessary for linking programs (against libraries) with templates]) +_LT_TAGDECL([], [postlink_cmds], [2], + [Commands necessary for finishing linking programs]) +_LT_TAGDECL([], [file_list_spec], [1], + [Specify filename containing input files]) +dnl FIXME: Not yet implemented +dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], +dnl [Compiler flag to generate thread safe objects]) +])# _LT_LINKER_SHLIBS + + +# _LT_LANG_C_CONFIG([TAG]) +# ------------------------ +# Ensure that the configuration variables for a C compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to `libtool'. +m4_defun([_LT_LANG_C_CONFIG], +[m4_require([_LT_DECL_EGREP])dnl +lt_save_CC="$CC" +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + +_LT_TAG_COMPILER +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + LT_SYS_DLOPEN_SELF + _LT_CMD_STRIPLIB + + # Report which library types will actually be built + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_CONFIG($1) +fi +AC_LANG_POP +CC="$lt_save_CC" +])# _LT_LANG_C_CONFIG + + +# _LT_LANG_CXX_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a C++ compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to `libtool'. +m4_defun([_LT_LANG_CXX_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_PROG_CXXCPP +else + _lt_caught_CXX_error=yes +fi + +AC_LANG_PUSH(C++) +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(compiler_needs_object, $1)=no +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_caught_CXX_error" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test "$GXX" = yes; then + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + else + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + fi + + if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + LT_PATH_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) + _LT_TAGVAR(ld_shlibs, $1)=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + + if test "$GXX" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty + # executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared + # libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + freebsd2.*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + freebsd-elf*) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + gnu*) + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + hpux9*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' + fi + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) + _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + openbsd2*) + # C++ shared libraries are fairly broken + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + case $host in + osf3*) + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + ;; + *) + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ + $RM $lib.exp' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + case $host in + osf3*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + fi + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ + '"$_LT_TAGVAR(old_archive_cmds, $1)" + _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ + '"$_LT_TAGVAR(reload_cmds, $1)" + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) + test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + + _LT_TAGVAR(GCC, $1)="$GXX" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test "$_lt_caught_CXX_error" != yes + +AC_LANG_POP +])# _LT_LANG_CXX_CONFIG + + +# _LT_FUNC_STRIPNAME_CNF +# ---------------------- +# func_stripname_cnf prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# +# This function is identical to the (non-XSI) version of func_stripname, +# except this one can be used by m4 code that may be executed by configure, +# rather than the libtool script. +m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl +AC_REQUIRE([_LT_DECL_SED]) +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) +func_stripname_cnf () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + esac +} # func_stripname_cnf +])# _LT_FUNC_STRIPNAME_CNF + +# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) +# --------------------------------- +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +m4_defun([_LT_SYS_HIDDEN_LIBDEPS], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl +# Dependencies to place before and after the object being linked: +_LT_TAGVAR(predep_objects, $1)= +_LT_TAGVAR(postdep_objects, $1)= +_LT_TAGVAR(predeps, $1)= +_LT_TAGVAR(postdeps, $1)= +_LT_TAGVAR(compiler_lib_search_path, $1)= + +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF +int a; +void foo (void) { a = 0; } +_LT_EOF +], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF +], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer*4 a + a=0 + return + end +_LT_EOF +], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer a + a=0 + return + end +_LT_EOF +], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF +public class foo { + private int a; + public void bar (void) { + a = 0; + } +}; +_LT_EOF +], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF +package foo +func foo() { +} +_LT_EOF +]) + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; +esac + +dnl Parse the compiler output and extract the necessary +dnl objects, libraries and library flags. +if AC_TRY_EVAL(ac_compile); then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case ${prev}${p} in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" || + test $p = "-R"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test "$pre_test_object_deps_done" = no; then + case ${prev} in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then + _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" + else + _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$_LT_TAGVAR(postdeps, $1)"; then + _LT_TAGVAR(postdeps, $1)="${prev}${p}" + else + _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$_LT_TAGVAR(predep_objects, $1)"; then + _LT_TAGVAR(predep_objects, $1)="$p" + else + _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" + fi + else + if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then + _LT_TAGVAR(postdep_objects, $1)="$p" + else + _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling $1 test program" +fi + +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS + +# PORTME: override above test on systems where it is broken +m4_if([$1], [CXX], +[case $host_os in +interix[[3-9]]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + _LT_TAGVAR(predep_objects,$1)= + _LT_TAGVAR(postdep_objects,$1)= + _LT_TAGVAR(postdeps,$1)= + ;; + +linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + if test "$solaris_use_stlport4" != yes; then + _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; + +solaris*) + case $cc_basename in + CC* | sunCC*) + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + if test "$solaris_use_stlport4" != yes; then + _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; +esac +]) + +case " $_LT_TAGVAR(postdeps, $1) " in +*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; +esac + _LT_TAGVAR(compiler_lib_search_dirs, $1)= +if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then + _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` +fi +_LT_TAGDECL([], [compiler_lib_search_dirs], [1], + [The directories searched by this compiler when creating a shared library]) +_LT_TAGDECL([], [predep_objects], [1], + [Dependencies to place before and after the objects being linked to + create a shared library]) +_LT_TAGDECL([], [postdep_objects], [1]) +_LT_TAGDECL([], [predeps], [1]) +_LT_TAGDECL([], [postdeps], [1]) +_LT_TAGDECL([], [compiler_lib_search_path], [1], + [The library search path used internally by the compiler when linking + a shared library]) +])# _LT_SYS_HIDDEN_LIBDEPS + + +# _LT_LANG_F77_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a Fortran 77 compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_F77_CONFIG], +[AC_LANG_PUSH(Fortran 77) +if test -z "$F77" || test "X$F77" = "Xno"; then + _lt_disable_F77=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the F77 compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_disable_F77" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC="$CC" + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${F77-"f77"} + CFLAGS=$FFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + GCC=$G77 + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)="$G77" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC="$lt_save_CC" + CFLAGS="$lt_save_CFLAGS" +fi # test "$_lt_disable_F77" != yes + +AC_LANG_POP +])# _LT_LANG_F77_CONFIG + + +# _LT_LANG_FC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for a Fortran compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_FC_CONFIG], +[AC_LANG_PUSH(Fortran) + +if test -z "$FC" || test "X$FC" = "Xno"; then + _lt_disable_FC=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for fc test sources. +ac_ext=${ac_fc_srcext-f} + +# Object file extension for compiled fc test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the FC compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_disable_FC" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC="$CC" + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${FC-"f95"} + CFLAGS=$FCFLAGS + compiler=$CC + GCC=$ac_cv_fc_compiler_gnu + + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test "$_lt_disable_FC" != yes + +AC_LANG_POP +])# _LT_LANG_FC_CONFIG + + +# _LT_LANG_GCJ_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Java Compiler compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_GCJ_CONFIG], +[AC_REQUIRE([LT_PROG_GCJ])dnl +AC_LANG_SAVE + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GCJ-"gcj"} +CFLAGS=$GCJFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)="$LD" +_LT_CC_BASENAME([$compiler]) + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GCJ_CONFIG + + +# _LT_LANG_GO_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Go compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_GO_CONFIG], +[AC_REQUIRE([LT_PROG_GO])dnl +AC_LANG_SAVE + +# Source file extension for Go test sources. +ac_ext=go + +# Object file extension for compiled Go test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="package main; func main() { }" + +# Code to be used in simple link tests +lt_simple_link_test_code='package main; func main() { }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GOC-"gccgo"} +CFLAGS=$GOFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)="$LD" +_LT_CC_BASENAME([$compiler]) + +# Go did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GO_CONFIG + + +# _LT_LANG_RC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for the Windows resource compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_RC_CONFIG], +[AC_REQUIRE([LT_PROG_RC])dnl +AC_LANG_SAVE + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC= +CC=${RC-"windres"} +CFLAGS= +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) +_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + +if test -n "$compiler"; then + : + _LT_CONFIG($1) +fi + +GCC=$lt_save_GCC +AC_LANG_RESTORE +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_RC_CONFIG + + +# LT_PROG_GCJ +# ----------- +AC_DEFUN([LT_PROG_GCJ], +[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], + [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], + [AC_CHECK_TOOL(GCJ, gcj,) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS)])])[]dnl +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_GCJ], []) + + +# LT_PROG_GO +# ---------- +AC_DEFUN([LT_PROG_GO], +[AC_CHECK_TOOL(GOC, gccgo,) +]) + + +# LT_PROG_RC +# ---------- +AC_DEFUN([LT_PROG_RC], +[AC_CHECK_TOOL(RC, windres,) +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_RC], []) + + +# _LT_DECL_EGREP +# -------------- +# If we don't have a new enough Autoconf to choose the best grep +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_EGREP], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_REQUIRE([AC_PROG_FGREP])dnl +test -z "$GREP" && GREP=grep +_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) +_LT_DECL([], [EGREP], [1], [An ERE matcher]) +_LT_DECL([], [FGREP], [1], [A literal string matcher]) +dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too +AC_SUBST([GREP]) +]) + + +# _LT_DECL_OBJDUMP +# -------------- +# If we don't have a new enough Autoconf to choose the best objdump +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_OBJDUMP], +[AC_CHECK_TOOL(OBJDUMP, objdump, false) +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) +AC_SUBST([OBJDUMP]) +]) + +# _LT_DECL_DLLTOOL +# ---------------- +# Ensure DLLTOOL variable is set. +m4_defun([_LT_DECL_DLLTOOL], +[AC_CHECK_TOOL(DLLTOOL, dlltool, false) +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) +AC_SUBST([DLLTOOL]) +]) + +# _LT_DECL_SED +# ------------ +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +m4_defun([_LT_DECL_SED], +[AC_PROG_SED +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" +_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) +_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], + [Sed that helps us avoid accidentally triggering echo(1) options like -n]) +])# _LT_DECL_SED + +m4_ifndef([AC_PROG_SED], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ + +m4_defun([AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_SUBST([SED]) +AC_MSG_RESULT([$SED]) +])#AC_PROG_SED +])#m4_ifndef + +# Old name: +AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_SED], []) + + +# _LT_CHECK_SHELL_FEATURES +# ------------------------ +# Find out whether the shell is Bourne or XSI compatible, +# or has some other useful features. +m4_defun([_LT_CHECK_SHELL_FEATURES], +[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) +# Try some XSI features +xsi_shell=no +( _lt_dummy="a/b/c" + test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,b/c, \ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ + && xsi_shell=yes +AC_MSG_RESULT([$xsi_shell]) +_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) + +AC_MSG_CHECKING([whether the shell understands "+="]) +lt_shell_append=no +( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ + >/dev/null 2>&1 \ + && lt_shell_append=yes +AC_MSG_RESULT([$lt_shell_append]) +_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi +_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac +_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl +_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl +])# _LT_CHECK_SHELL_FEATURES + + +# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) +# ------------------------------------------------------ +# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and +# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. +m4_defun([_LT_PROG_FUNCTION_REPLACE], +[dnl { +sed -e '/^$1 ()$/,/^} # $1 /c\ +$1 ()\ +{\ +m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) +} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: +]) + + +# _LT_PROG_REPLACE_SHELLFNS +# ------------------------- +# Replace existing portable implementations of several shell functions with +# equivalent extended shell implementations where those features are available.. +m4_defun([_LT_PROG_REPLACE_SHELLFNS], +[if test x"$xsi_shell" = xyes; then + _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac]) + + _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl + func_basename_result="${1##*/}"]) + + _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac + func_basename_result="${1##*/}"]) + + _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary parameter first. + func_stripname_result=${3} + func_stripname_result=${func_stripname_result#"${1}"} + func_stripname_result=${func_stripname_result%"${2}"}]) + + _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl + func_split_long_opt_name=${1%%=*} + func_split_long_opt_arg=${1#*=}]) + + _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl + func_split_short_opt_arg=${1#??} + func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) + + _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl + case ${1} in + *.lo) func_lo2o_result=${1%.lo}.${objext} ;; + *) func_lo2o_result=${1} ;; + esac]) + + _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) + + _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) + + _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) +fi + +if test x"$lt_shell_append" = xyes; then + _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) + + _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl + func_quote_for_eval "${2}" +dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ + eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) + + # Save a `func_append' function call where possible by direct use of '+=' + sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +else + # Save a `func_append' function call even when '+=' is not available + sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +fi + +if test x"$_lt_function_replace_fail" = x":"; then + AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) +fi +]) + +# _LT_PATH_CONVERSION_FUNCTIONS +# ----------------------------- +# Determine which file name conversion functions should be used by +# func_to_host_file (and, implicitly, by func_to_host_path). These are needed +# for certain cross-compile configurations and native mingw. +m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_MSG_CHECKING([how to convert $build file names to $host format]) +AC_CACHE_VAL(lt_cv_to_host_file_cmd, +[case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac +]) +to_host_file_cmd=$lt_cv_to_host_file_cmd +AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) +_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], + [0], [convert $build file names to $host format])dnl + +AC_MSG_CHECKING([how to convert $build file names to toolchain format]) +AC_CACHE_VAL(lt_cv_to_tool_file_cmd, +[#assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac +]) +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) +_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], + [0], [convert $build files to toolchain format])dnl +])# _LT_PATH_CONVERSION_FUNCTIONS +# Helper functions for option handling. -*- Autoconf -*- +# +# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 7 ltoptions.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) + + +# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) +# ------------------------------------------ +m4_define([_LT_MANGLE_OPTION], +[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) + + +# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) +# --------------------------------------- +# Set option OPTION-NAME for macro MACRO-NAME, and if there is a +# matching handler defined, dispatch to it. Other OPTION-NAMEs are +# saved as a flag. +m4_define([_LT_SET_OPTION], +[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl +m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), + _LT_MANGLE_DEFUN([$1], [$2]), + [m4_warning([Unknown $1 option `$2'])])[]dnl +]) + + +# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) +# ------------------------------------------------------------ +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +m4_define([_LT_IF_OPTION], +[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) + + +# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) +# ------------------------------------------------------- +# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME +# are set. +m4_define([_LT_UNLESS_OPTIONS], +[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), + [m4_define([$0_found])])])[]dnl +m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 +])[]dnl +]) + + +# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) +# ---------------------------------------- +# OPTION-LIST is a space-separated list of Libtool options associated +# with MACRO-NAME. If any OPTION has a matching handler declared with +# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about +# the unknown option and exit. +m4_defun([_LT_SET_OPTIONS], +[# Set options +m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [_LT_SET_OPTION([$1], _LT_Option)]) + +m4_if([$1],[LT_INIT],[ + dnl + dnl Simply set some default values (i.e off) if boolean options were not + dnl specified: + _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no + ]) + _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no + ]) + dnl + dnl If no reference was made to various pairs of opposing options, then + dnl we run the default mode handler for the pair. For example, if neither + dnl `shared' nor `disable-shared' was passed, we enable building of shared + dnl archives by default: + _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) + _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], + [_LT_ENABLE_FAST_INSTALL]) + ]) +])# _LT_SET_OPTIONS + + +## --------------------------------- ## +## Macros to handle LT_INIT options. ## +## --------------------------------- ## + +# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) +# ----------------------------------------- +m4_define([_LT_MANGLE_DEFUN], +[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) + + +# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) +# ----------------------------------------------- +m4_define([LT_OPTION_DEFINE], +[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl +])# LT_OPTION_DEFINE + + +# dlopen +# ------ +LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes +]) + +AU_DEFUN([AC_LIBTOOL_DLOPEN], +[_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `dlopen' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) + + +# win32-dll +# --------- +# Declare package support for building win32 dll's. +LT_OPTION_DEFINE([LT_INIT], [win32-dll], +[enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; +esac + +test -z "$AS" && AS=as +_LT_DECL([], [AS], [1], [Assembler program])dnl + +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl + +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl +])# win32-dll + +AU_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `win32-dll' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) + + +# _LT_ENABLE_SHARED([DEFAULT]) +# ---------------------------- +# implement the --enable-shared flag, and supports the `shared' and +# `disable-shared' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_SHARED], +[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([shared], + [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) + + _LT_DECL([build_libtool_libs], [enable_shared], [0], + [Whether or not to build shared libraries]) +])# _LT_ENABLE_SHARED + +LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) +]) + +AC_DEFUN([AC_DISABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], [disable-shared]) +]) + +AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_SHARED], []) +dnl AC_DEFUN([AM_DISABLE_SHARED], []) + + + +# _LT_ENABLE_STATIC([DEFAULT]) +# ---------------------------- +# implement the --enable-static flag, and support the `static' and +# `disable-static' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_STATIC], +[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([static], + [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_static=]_LT_ENABLE_STATIC_DEFAULT) + + _LT_DECL([build_old_libs], [enable_static], [0], + [Whether or not to build static libraries]) +])# _LT_ENABLE_STATIC + +LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) +]) + +AC_DEFUN([AC_DISABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], [disable-static]) +]) + +AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_STATIC], []) +dnl AC_DEFUN([AM_DISABLE_STATIC], []) + + + +# _LT_ENABLE_FAST_INSTALL([DEFAULT]) +# ---------------------------------- +# implement the --enable-fast-install flag, and support the `fast-install' +# and `disable-fast-install' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_FAST_INSTALL], +[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([fast-install], + [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) + +_LT_DECL([fast_install], [enable_fast_install], [0], + [Whether or not to optimize for fast installation])dnl +])# _LT_ENABLE_FAST_INSTALL + +LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) + +# Old names: +AU_DEFUN([AC_ENABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `fast-install' option into LT_INIT's first parameter.]) +]) + +AU_DEFUN([AC_DISABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `disable-fast-install' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) +dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) + + +# _LT_WITH_PIC([MODE]) +# -------------------- +# implement the --with-pic flag, and support the `pic-only' and `no-pic' +# LT_INIT options. +# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +m4_define([_LT_WITH_PIC], +[AC_ARG_WITH([pic], + [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for lt_pkg in $withval; do + IFS="$lt_save_ifs" + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [pic_mode=default]) + +test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) + +_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl +])# _LT_WITH_PIC + +LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) + +# Old name: +AU_DEFUN([AC_LIBTOOL_PICMODE], +[_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `pic-only' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) + +## ----------------- ## +## LTDL_INIT Options ## +## ----------------- ## + +m4_define([_LTDL_MODE], []) +LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], + [m4_define([_LTDL_MODE], [nonrecursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [recursive], + [m4_define([_LTDL_MODE], [recursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [subproject], + [m4_define([_LTDL_MODE], [subproject])]) + +m4_define([_LTDL_TYPE], []) +LT_OPTION_DEFINE([LTDL_INIT], [installable], + [m4_define([_LTDL_TYPE], [installable])]) +LT_OPTION_DEFINE([LTDL_INIT], [convenience], + [m4_define([_LTDL_TYPE], [convenience])]) +# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 6 ltsugar.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) + + +# lt_join(SEP, ARG1, [ARG2...]) +# ----------------------------- +# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their +# associated separator. +# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier +# versions in m4sugar had bugs. +m4_define([lt_join], +[m4_if([$#], [1], [], + [$#], [2], [[$2]], + [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) +m4_define([_lt_join], +[m4_if([$#$2], [2], [], + [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) + + +# lt_car(LIST) +# lt_cdr(LIST) +# ------------ +# Manipulate m4 lists. +# These macros are necessary as long as will still need to support +# Autoconf-2.59 which quotes differently. +m4_define([lt_car], [[$1]]) +m4_define([lt_cdr], +[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], + [$#], 1, [], + [m4_dquote(m4_shift($@))])]) +m4_define([lt_unquote], $1) + + +# lt_append(MACRO-NAME, STRING, [SEPARATOR]) +# ------------------------------------------ +# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. +# Note that neither SEPARATOR nor STRING are expanded; they are appended +# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). +# No SEPARATOR is output if MACRO-NAME was previously undefined (different +# than defined and empty). +# +# This macro is needed until we can rely on Autoconf 2.62, since earlier +# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. +m4_define([lt_append], +[m4_define([$1], + m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) + + + +# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) +# ---------------------------------------------------------- +# Produce a SEP delimited list of all paired combinations of elements of +# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list +# has the form PREFIXmINFIXSUFFIXn. +# Needed until we can rely on m4_combine added in Autoconf 2.62. +m4_define([lt_combine], +[m4_if(m4_eval([$# > 3]), [1], + [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl +[[m4_foreach([_Lt_prefix], [$2], + [m4_foreach([_Lt_suffix], + ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, + [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) + + +# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) +# ----------------------------------------------------------------------- +# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited +# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. +m4_define([lt_if_append_uniq], +[m4_ifdef([$1], + [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], + [lt_append([$1], [$2], [$3])$4], + [$5])], + [lt_append([$1], [$2], [$3])$4])]) + + +# lt_dict_add(DICT, KEY, VALUE) +# ----------------------------- +m4_define([lt_dict_add], +[m4_define([$1($2)], [$3])]) + + +# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) +# -------------------------------------------- +m4_define([lt_dict_add_subkey], +[m4_define([$1($2:$3)], [$4])]) + + +# lt_dict_fetch(DICT, KEY, [SUBKEY]) +# ---------------------------------- +m4_define([lt_dict_fetch], +[m4_ifval([$3], + m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), + m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) + + +# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) +# ----------------------------------------------------------------- +m4_define([lt_if_dict_fetch], +[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], + [$5], + [$6])]) + + +# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) +# -------------------------------------------------------------- +m4_define([lt_dict_filter], +[m4_if([$5], [], [], + [lt_join(m4_quote(m4_default([$4], [[, ]])), + lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), + [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl +]) +# ltversion.m4 -- version numbers -*- Autoconf -*- +# +# Copyright (C) 2004 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# @configure_input@ + +# serial 3337 ltversion.m4 +# This file is part of GNU Libtool + +m4_define([LT_PACKAGE_VERSION], [2.4.2]) +m4_define([LT_PACKAGE_REVISION], [1.3337]) + +AC_DEFUN([LTVERSION_VERSION], +[macro_version='2.4.2' +macro_revision='1.3337' +_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) +_LT_DECL(, macro_revision, 0) +]) +# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004. +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 5 lt~obsolete.m4 + +# These exist entirely to fool aclocal when bootstrapping libtool. +# +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) +# which have later been changed to m4_define as they aren't part of the +# exported API, or moved to Autoconf or Automake where they belong. +# +# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN +# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us +# using a macro with the same name in our local m4/libtool.m4 it'll +# pull the old libtool.m4 in (it doesn't see our shiny new m4_define +# and doesn't know about Autoconf macros at all.) +# +# So we provide this file, which has a silly filename so it's always +# included after everything else. This provides aclocal with the +# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything +# because those macros already exist, or will be overwritten later. +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# +# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. +# Yes, that means every name once taken will need to remain here until +# we give up compatibility with versions before 1.7, at which point +# we need to keep only those names which we still refer to. + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) + +m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) +m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) +m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) +m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) +m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) +m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) +m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) +m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) +m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) +m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) +m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) +m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) +m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) +m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) +m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) +m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) +m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) +m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) +m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) +m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) +m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) +m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) +m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) +m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) +m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) +m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) +m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) +m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) +m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) +m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) +m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) +m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) +m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) +m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) +m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) +m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) +m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) +m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) +m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) +m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) +m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) +m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) +m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) +m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) +m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) +m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) +m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) +m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) +m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) +m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) diff --git a/coregrade/src/build/libtool.m4 b/coregrade/src/build/libtool.m4 new file mode 100644 index 0000000..dd8d217 --- /dev/null +++ b/coregrade/src/build/libtool.m4 @@ -0,0 +1,8614 @@ +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +m4_define([_LT_COPYING], [dnl +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +]) + +# serial 57 LT_INIT + + +# LT_PREREQ(VERSION) +# ------------------ +# Complain and exit if this libtool version is less that VERSION. +m4_defun([LT_PREREQ], +[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, + [m4_default([$3], + [m4_fatal([Libtool version $1 or higher is required], + 63)])], + [$2])]) + + +# _LT_CHECK_BUILDDIR +# ------------------ +# Complain if the absolute build directory name contains unusual characters +m4_defun([_LT_CHECK_BUILDDIR], +[case `pwd` in + *\ * | *\ *) + AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; +esac +]) + + +# LT_INIT([OPTIONS]) +# ------------------ +AC_DEFUN([LT_INIT], +[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT +AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +AC_BEFORE([$0], [LT_LANG])dnl +AC_BEFORE([$0], [LT_OUTPUT])dnl +AC_BEFORE([$0], [LTDL_INIT])dnl +m4_require([_LT_CHECK_BUILDDIR])dnl + +dnl Autoconf doesn't catch unexpanded LT_ macros by default: +m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl +m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl +dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 +dnl unless we require an AC_DEFUNed macro: +AC_REQUIRE([LTOPTIONS_VERSION])dnl +AC_REQUIRE([LTSUGAR_VERSION])dnl +AC_REQUIRE([LTVERSION_VERSION])dnl +AC_REQUIRE([LTOBSOLETE_VERSION])dnl +m4_require([_LT_PROG_LTMAIN])dnl + +_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) + +dnl Parse OPTIONS +_LT_SET_OPTIONS([$0], [$1]) + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ltmain" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +_LT_SETUP + +# Only expand once: +m4_define([LT_INIT]) +])# LT_INIT + +# Old names: +AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) +AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PROG_LIBTOOL], []) +dnl AC_DEFUN([AM_PROG_LIBTOOL], []) + + +# _LT_CC_BASENAME(CC) +# ------------------- +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +m4_defun([_LT_CC_BASENAME], +[for cc_temp in $1""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +]) + + +# _LT_FILEUTILS_DEFAULTS +# ---------------------- +# It is okay to use these file commands and assume they have been set +# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. +m4_defun([_LT_FILEUTILS_DEFAULTS], +[: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} +])# _LT_FILEUTILS_DEFAULTS + + +# _LT_SETUP +# --------- +m4_defun([_LT_SETUP], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl + +_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl +dnl +_LT_DECL([], [host_alias], [0], [The host system])dnl +_LT_DECL([], [host], [0])dnl +_LT_DECL([], [host_os], [0])dnl +dnl +_LT_DECL([], [build_alias], [0], [The build system])dnl +_LT_DECL([], [build], [0])dnl +_LT_DECL([], [build_os], [0])dnl +dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +dnl +AC_REQUIRE([AC_PROG_LN_S])dnl +test -z "$LN_S" && LN_S="ln -s" +_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl +dnl +AC_REQUIRE([LT_CMD_MAX_LEN])dnl +_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl +_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl +dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl +m4_require([_LT_CMD_RELOAD])dnl +m4_require([_LT_CHECK_MAGIC_METHOD])dnl +m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl +m4_require([_LT_CMD_OLD_ARCHIVE])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_WITH_SYSROOT])dnl + +_LT_CONFIG_LIBTOOL_INIT([ +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi +]) +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +_LT_CHECK_OBJDIR + +m4_require([_LT_TAG_COMPILER])dnl + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld="$lt_cv_prog_gnu_ld" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + _LT_PATH_MAGIC + fi + ;; +esac + +# Use C for the default configuration in the libtool script +LT_SUPPORTED_TAG([CC]) +_LT_LANG_C_CONFIG +_LT_LANG_DEFAULT_CONFIG +_LT_CONFIG_COMMANDS +])# _LT_SETUP + + +# _LT_PREPARE_SED_QUOTE_VARS +# -------------------------- +# Define a few sed substitution that help us do robust quoting. +m4_defun([_LT_PREPARE_SED_QUOTE_VARS], +[# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([["`\\]]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' +]) + +# _LT_PROG_LTMAIN +# --------------- +# Note that this code is called both from `configure', and `config.status' +# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, +# `config.status' has no value for ac_aux_dir unless we are using Automake, +# so we pass a copy along to make sure it has a sensible value anyway. +m4_defun([_LT_PROG_LTMAIN], +[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl +_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) +ltmain="$ac_aux_dir/ltmain.sh" +])# _LT_PROG_LTMAIN + + +## ------------------------------------- ## +## Accumulate code for creating libtool. ## +## ------------------------------------- ## + +# So that we can recreate a full libtool script including additional +# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS +# in macros and then make a single call at the end using the `libtool' +# label. + + +# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) +# ---------------------------------------- +# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL_INIT], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_INIT], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_INIT]) + + +# _LT_CONFIG_LIBTOOL([COMMANDS]) +# ------------------------------ +# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) + + +# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) +# ----------------------------------------------------- +m4_defun([_LT_CONFIG_SAVE_COMMANDS], +[_LT_CONFIG_LIBTOOL([$1]) +_LT_CONFIG_LIBTOOL_INIT([$2]) +]) + + +# _LT_FORMAT_COMMENT([COMMENT]) +# ----------------------------- +# Add leading comment marks to the start of each line, and a trailing +# full-stop to the whole comment if one is not present already. +m4_define([_LT_FORMAT_COMMENT], +[m4_ifval([$1], [ +m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], + [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) +)]) + + + +## ------------------------ ## +## FIXME: Eliminate VARNAME ## +## ------------------------ ## + + +# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) +# ------------------------------------------------------------------- +# CONFIGNAME is the name given to the value in the libtool script. +# VARNAME is the (base) name used in the configure script. +# VALUE may be 0, 1 or 2 for a computed quote escaped value based on +# VARNAME. Any other value will be used directly. +m4_define([_LT_DECL], +[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], + [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], + [m4_ifval([$1], [$1], [$2])]) + lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) + m4_ifval([$4], + [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) + lt_dict_add_subkey([lt_decl_dict], [$2], + [tagged?], [m4_ifval([$5], [yes], [no])])]) +]) + + +# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) +# -------------------------------------------------------- +m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) + + +# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_tag_varnames], +[_lt_decl_filter([tagged?], [yes], $@)]) + + +# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) +# --------------------------------------------------------- +m4_define([_lt_decl_filter], +[m4_case([$#], + [0], [m4_fatal([$0: too few arguments: $#])], + [1], [m4_fatal([$0: too few arguments: $#: $1])], + [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], + [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], + [lt_dict_filter([lt_decl_dict], $@)])[]dnl +]) + + +# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) +# -------------------------------------------------- +m4_define([lt_decl_quote_varnames], +[_lt_decl_filter([value], [1], $@)]) + + +# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_dquote_varnames], +[_lt_decl_filter([value], [2], $@)]) + + +# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_varnames_tagged], +[m4_assert([$# <= 2])dnl +_$0(m4_quote(m4_default([$1], [[, ]])), + m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), + m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) +m4_define([_lt_decl_varnames_tagged], +[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) + + +# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_all_varnames], +[_$0(m4_quote(m4_default([$1], [[, ]])), + m4_if([$2], [], + m4_quote(lt_decl_varnames), + m4_quote(m4_shift($@))))[]dnl +]) +m4_define([_lt_decl_all_varnames], +[lt_join($@, lt_decl_varnames_tagged([$1], + lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl +]) + + +# _LT_CONFIG_STATUS_DECLARE([VARNAME]) +# ------------------------------------ +# Quote a variable value, and forward it to `config.status' so that its +# declaration there will have the same value as in `configure'. VARNAME +# must have a single quote delimited value for this to work. +m4_define([_LT_CONFIG_STATUS_DECLARE], +[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) + + +# _LT_CONFIG_STATUS_DECLARATIONS +# ------------------------------ +# We delimit libtool config variables with single quotes, so when +# we write them to config.status, we have to be sure to quote all +# embedded single quotes properly. In configure, this macro expands +# each variable declared with _LT_DECL (and _LT_TAGDECL) into: +# +# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' +m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], +[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), + [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAGS +# ---------------- +# Output comment and list of tags supported by the script +m4_defun([_LT_LIBTOOL_TAGS], +[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl +available_tags="_LT_TAGS"dnl +]) + + +# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) +# ----------------------------------- +# Extract the dictionary values for VARNAME (optionally with TAG) and +# expand to a commented shell variable setting: +# +# # Some comment about what VAR is for. +# visible_name=$lt_internal_name +m4_define([_LT_LIBTOOL_DECLARE], +[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], + [description])))[]dnl +m4_pushdef([_libtool_name], + m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl +m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), + [0], [_libtool_name=[$]$1], + [1], [_libtool_name=$lt_[]$1], + [2], [_libtool_name=$lt_[]$1], + [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl +m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl +]) + + +# _LT_LIBTOOL_CONFIG_VARS +# ----------------------- +# Produce commented declarations of non-tagged libtool config variables +# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' +# script. Tagged libtool config variables (even for the LIBTOOL CONFIG +# section) are produced by _LT_LIBTOOL_TAG_VARS. +m4_defun([_LT_LIBTOOL_CONFIG_VARS], +[m4_foreach([_lt_var], + m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAG_VARS(TAG) +# ------------------------- +m4_define([_LT_LIBTOOL_TAG_VARS], +[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) + + +# _LT_TAGVAR(VARNAME, [TAGNAME]) +# ------------------------------ +m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) + + +# _LT_CONFIG_COMMANDS +# ------------------- +# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of +# variables for single and double quote escaping we saved from calls +# to _LT_DECL, we can put quote escaped variables declarations +# into `config.status', and then the shell code to quote escape them in +# for loops in `config.status'. Finally, any additional code accumulated +# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. +m4_defun([_LT_CONFIG_COMMANDS], +[AC_PROVIDE_IFELSE([LT_OUTPUT], + dnl If the libtool generation code has been placed in $CONFIG_LT, + dnl instead of duplicating it all over again into config.status, + dnl then we will have config.status run $CONFIG_LT later, so it + dnl needs to know what name is stored there: + [AC_CONFIG_COMMANDS([libtool], + [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], + dnl If the libtool generation code is destined for config.status, + dnl expand the accumulated commands and init code now: + [AC_CONFIG_COMMANDS([libtool], + [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) +])#_LT_CONFIG_COMMANDS + + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], +[ + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +_LT_CONFIG_STATUS_DECLARATIONS +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$[]1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_quote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_dquote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +_LT_OUTPUT_LIBTOOL_INIT +]) + +# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) +# ------------------------------------ +# Generate a child script FILE with all initialization necessary to +# reuse the environment learned by the parent script, and make the +# file executable. If COMMENT is supplied, it is inserted after the +# `#!' sequence but before initialization text begins. After this +# macro, additional text can be appended to FILE to form the body of +# the child script. The macro ends with non-zero status if the +# file could not be fully written (such as if the disk is full). +m4_ifdef([AS_INIT_GENERATED], +[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], +[m4_defun([_LT_GENERATED_FILE_INIT], +[m4_require([AS_PREPARE])]dnl +[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl +[lt_write_fail=0 +cat >$1 <<_ASEOF || lt_write_fail=1 +#! $SHELL +# Generated by $as_me. +$2 +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$1 <<\_ASEOF || lt_write_fail=1 +AS_SHELL_SANITIZE +_AS_PREPARE +exec AS_MESSAGE_FD>&1 +_ASEOF +test $lt_write_fail = 0 && chmod +x $1[]dnl +m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT + +# LT_OUTPUT +# --------- +# This macro allows early generation of the libtool script (before +# AC_OUTPUT is called), incase it is used in configure for compilation +# tests. +AC_DEFUN([LT_OUTPUT], +[: ${CONFIG_LT=./config.lt} +AC_MSG_NOTICE([creating $CONFIG_LT]) +_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], +[# Run this file to recreate a libtool stub with the current configuration.]) + +cat >>"$CONFIG_LT" <<\_LTEOF +lt_cl_silent=false +exec AS_MESSAGE_LOG_FD>>config.log +{ + echo + AS_BOX([Running $as_me.]) +} >&AS_MESSAGE_LOG_FD + +lt_cl_help="\ +\`$as_me' creates a local libtool stub from the current configuration, +for use in further configure time tests before the real libtool is +generated. + +Usage: $[0] [[OPTIONS]] + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + +Report bugs to ." + +lt_cl_version="\ +m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl +m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) +configured by $[0], generated by m4_PACKAGE_STRING. + +Copyright (C) 2011 Free Software Foundation, Inc. +This config.lt script is free software; the Free Software Foundation +gives unlimited permision to copy, distribute and modify it." + +while test $[#] != 0 +do + case $[1] in + --version | --v* | -V ) + echo "$lt_cl_version"; exit 0 ;; + --help | --h* | -h ) + echo "$lt_cl_help"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --quiet | --q* | --silent | --s* | -q ) + lt_cl_silent=: ;; + + -*) AC_MSG_ERROR([unrecognized option: $[1] +Try \`$[0] --help' for more information.]) ;; + + *) AC_MSG_ERROR([unrecognized argument: $[1] +Try \`$[0] --help' for more information.]) ;; + esac + shift +done + +if $lt_cl_silent; then + exec AS_MESSAGE_FD>/dev/null +fi +_LTEOF + +cat >>"$CONFIG_LT" <<_LTEOF +_LT_OUTPUT_LIBTOOL_COMMANDS_INIT +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AC_MSG_NOTICE([creating $ofile]) +_LT_OUTPUT_LIBTOOL_COMMANDS +AS_EXIT(0) +_LTEOF +chmod +x "$CONFIG_LT" + +# configure is writing to config.log, but config.lt does its own redirection, +# appending to config.log, which fails on DOS, as config.log is still kept +# open by configure. Here we exec the FD to /dev/null, effectively closing +# config.log, so it can be properly (re)opened and appended to by config.lt. +lt_cl_success=: +test "$silent" = yes && + lt_config_lt_args="$lt_config_lt_args --quiet" +exec AS_MESSAGE_LOG_FD>/dev/null +$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +exec AS_MESSAGE_LOG_FD>>config.log +$lt_cl_success || AS_EXIT(1) +])# LT_OUTPUT + + +# _LT_CONFIG(TAG) +# --------------- +# If TAG is the built-in tag, create an initial libtool script with a +# default configuration from the untagged config vars. Otherwise add code +# to config.status for appending the configuration named by TAG from the +# matching tagged config vars. +m4_defun([_LT_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_CONFIG_SAVE_COMMANDS([ + m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl + m4_if(_LT_TAG, [C], [ + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL + +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +_LT_COPYING +_LT_LIBTOOL_TAGS + +# ### BEGIN LIBTOOL CONFIG +_LT_LIBTOOL_CONFIG_VARS +_LT_LIBTOOL_TAG_VARS +# ### END LIBTOOL CONFIG + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + _LT_PROG_LTMAIN + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + _LT_PROG_REPLACE_SHELLFNS + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +], +[cat <<_LT_EOF >> "$ofile" + +dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded +dnl in a comment (ie after a #). +# ### BEGIN LIBTOOL TAG CONFIG: $1 +_LT_LIBTOOL_TAG_VARS(_LT_TAG) +# ### END LIBTOOL TAG CONFIG: $1 +_LT_EOF +])dnl /m4_if +], +[m4_if([$1], [], [ + PACKAGE='$PACKAGE' + VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' + RM='$RM' + ofile='$ofile'], []) +])dnl /_LT_CONFIG_SAVE_COMMANDS +])# _LT_CONFIG + + +# LT_SUPPORTED_TAG(TAG) +# --------------------- +# Trace this macro to discover what tags are supported by the libtool +# --tag option, using: +# autoconf --trace 'LT_SUPPORTED_TAG:$1' +AC_DEFUN([LT_SUPPORTED_TAG], []) + + +# C support is built-in for now +m4_define([_LT_LANG_C_enabled], []) +m4_define([_LT_TAGS], []) + + +# LT_LANG(LANG) +# ------------- +# Enable libtool support for the given language if not already enabled. +AC_DEFUN([LT_LANG], +[AC_BEFORE([$0], [LT_OUTPUT])dnl +m4_case([$1], + [C], [_LT_LANG(C)], + [C++], [_LT_LANG(CXX)], + [Go], [_LT_LANG(GO)], + [Java], [_LT_LANG(GCJ)], + [Fortran 77], [_LT_LANG(F77)], + [Fortran], [_LT_LANG(FC)], + [Windows Resource], [_LT_LANG(RC)], + [m4_ifdef([_LT_LANG_]$1[_CONFIG], + [_LT_LANG($1)], + [m4_fatal([$0: unsupported language: "$1"])])])dnl +])# LT_LANG + + +# _LT_LANG(LANGNAME) +# ------------------ +m4_defun([_LT_LANG], +[m4_ifdef([_LT_LANG_]$1[_enabled], [], + [LT_SUPPORTED_TAG([$1])dnl + m4_append([_LT_TAGS], [$1 ])dnl + m4_define([_LT_LANG_]$1[_enabled], [])dnl + _LT_LANG_$1_CONFIG($1)])dnl +])# _LT_LANG + + +m4_ifndef([AC_PROG_GO], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_GO. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ +m4_defun([AC_PROG_GO], +[AC_LANG_PUSH(Go)dnl +AC_ARG_VAR([GOC], [Go compiler command])dnl +AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl +_AC_ARG_VAR_LDFLAGS()dnl +AC_CHECK_TOOL(GOC, gccgo) +if test -z "$GOC"; then + if test -n "$ac_tool_prefix"; then + AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) + fi +fi +if test -z "$GOC"; then + AC_CHECK_PROG(GOC, gccgo, gccgo, false) +fi +])#m4_defun +])#m4_ifndef + + +# _LT_LANG_DEFAULT_CONFIG +# ----------------------- +m4_defun([_LT_LANG_DEFAULT_CONFIG], +[AC_PROVIDE_IFELSE([AC_PROG_CXX], + [LT_LANG(CXX)], + [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) + +AC_PROVIDE_IFELSE([AC_PROG_F77], + [LT_LANG(F77)], + [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) + +AC_PROVIDE_IFELSE([AC_PROG_FC], + [LT_LANG(FC)], + [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) + +dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal +dnl pulling things in needlessly. +AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([LT_PROG_GCJ], + [LT_LANG(GCJ)], + [m4_ifdef([AC_PROG_GCJ], + [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([A][M_PROG_GCJ], + [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([LT_PROG_GCJ], + [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) + +AC_PROVIDE_IFELSE([AC_PROG_GO], + [LT_LANG(GO)], + [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) + +AC_PROVIDE_IFELSE([LT_PROG_RC], + [LT_LANG(RC)], + [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) +])# _LT_LANG_DEFAULT_CONFIG + +# Obsolete macros: +AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) +AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) +AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) +AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_CXX], []) +dnl AC_DEFUN([AC_LIBTOOL_F77], []) +dnl AC_DEFUN([AC_LIBTOOL_FC], []) +dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) +dnl AC_DEFUN([AC_LIBTOOL_RC], []) + + +# _LT_TAG_COMPILER +# ---------------- +m4_defun([_LT_TAG_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl +_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl +_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl +_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_TAG_COMPILER + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +m4_defun([_LT_COMPILER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +m4_defun([_LT_LINKER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* +])# _LT_LINKER_BOILERPLATE + +# _LT_REQUIRED_DARWIN_CHECKS +# ------------------------- +m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ + case $host_os in + rhapsody* | darwin*) + AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) + AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) + AC_CHECK_TOOL([LIPO], [lipo], [:]) + AC_CHECK_TOOL([OTOOL], [otool], [:]) + AC_CHECK_TOOL([OTOOL64], [otool64], [:]) + _LT_DECL([], [DSYMUTIL], [1], + [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) + _LT_DECL([], [NMEDIT], [1], + [Tool to change global to local symbols on Mac OS X]) + _LT_DECL([], [LIPO], [1], + [Tool to manipulate fat objects and archives on Mac OS X]) + _LT_DECL([], [OTOOL], [1], + [ldd/readelf like tool for Mach-O binaries on Mac OS X]) + _LT_DECL([], [OTOOL64], [1], + [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) + + AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], + [lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test $_lt_result -eq 0; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi]) + + AC_CACHE_CHECK([for -exported_symbols_list linker flag], + [lt_cv_ld_exported_symbols_list], + [lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [lt_cv_ld_exported_symbols_list=yes], + [lt_cv_ld_exported_symbols_list=no]) + LDFLAGS="$save_LDFLAGS" + ]) + + AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], + [lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD + echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD + $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD + $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&AS_MESSAGE_LOG_FD + elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + ]) + case $host_os in + rhapsody* | darwin1.[[012]]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[[012]]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac +]) + + +# _LT_DARWIN_LINKER_FEATURES([TAG]) +# --------------------------------- +# Checks for linker and compiler features on darwin +m4_defun([_LT_DARWIN_LINKER_FEATURES], +[ + m4_require([_LT_REQUIRED_DARWIN_CHECKS]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_automatic, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + if test "$lt_cv_ld_force_load" = "yes"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], + [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='' + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=func_echo_all + _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + m4_if([$1], [CXX], +[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then + _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" + fi +],[]) + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi +]) + +# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) +# ---------------------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +# Store the results from the different compilers for each TAGNAME. +# Allow to override them for all tags through lt_cv_aix_libpath. +m4_defun([_LT_SYS_MODULE_PATH_AIX], +[m4_require([_LT_DECL_SED])dnl +if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], + [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ + lt_aix_libpath_sed='[ + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }]' + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi],[]) + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" + fi + ]) + aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) +fi +])# _LT_SYS_MODULE_PATH_AIX + + +# _LT_SHELL_INIT(ARG) +# ------------------- +m4_define([_LT_SHELL_INIT], +[m4_divert_text([M4SH-INIT], [$1 +])])# _LT_SHELL_INIT + + + +# _LT_PROG_ECHO_BACKSLASH +# ----------------------- +# Find how we can fake an echo command that does not interpret backslash. +# In particular, with Autoconf 2.60 or later we add some code to the start +# of the generated configure script which will find a shell with a builtin +# printf (which we can use as an echo command). +m4_defun([_LT_PROG_ECHO_BACKSLASH], +[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +AC_MSG_CHECKING([how to print strings]) +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$[]1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + +case "$ECHO" in + printf*) AC_MSG_RESULT([printf]) ;; + print*) AC_MSG_RESULT([print -r]) ;; + *) AC_MSG_RESULT([cat]) ;; +esac + +m4_ifdef([_AS_DETECT_SUGGESTED], +[_AS_DETECT_SUGGESTED([ + test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test "X`printf %s $ECHO`" = "X$ECHO" \ + || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) + +_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) +_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) +])# _LT_PROG_ECHO_BACKSLASH + + +# _LT_WITH_SYSROOT +# ---------------- +AC_DEFUN([_LT_WITH_SYSROOT], +[AC_MSG_CHECKING([for sysroot]) +AC_ARG_WITH([sysroot], +[ --with-sysroot[=DIR] Search for dependent libraries within DIR + (or the compiler's sysroot if not specified).], +[], [with_sysroot=no]) + +dnl lt_sysroot will always be passed unquoted. We quote it here +dnl in case the user passed a directory name. +lt_sysroot= +case ${with_sysroot} in #( + yes) + if test "$GCC" = yes; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + AC_MSG_RESULT([${with_sysroot}]) + AC_MSG_ERROR([The sysroot must be an absolute path.]) + ;; +esac + + AC_MSG_RESULT([${lt_sysroot:-no}]) +_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl +[dependent libraries, and in which our libraries should be installed.])]) + +# _LT_ENABLE_LOCK +# --------------- +m4_defun([_LT_ENABLE_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AS_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD="${LD-ld}_sol2" + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks="$enable_libtool_lock" +])# _LT_ENABLE_LOCK + + +# _LT_PROG_AR +# ----------- +m4_defun([_LT_PROG_AR], +[AC_CHECK_TOOLS(AR, [ar], false) +: ${AR=ar} +: ${AR_FLAGS=cru} +_LT_DECL([], [AR], [1], [The archiver]) +_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) + +AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], + [lt_cv_ar_at_file=no + AC_COMPILE_IFELSE([AC_LANG_PROGRAM], + [echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([lt_ar_try]) + if test "$ac_status" -eq 0; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + AC_TRY_EVAL([lt_ar_try]) + if test "$ac_status" -ne 0; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + ]) + ]) + +if test "x$lt_cv_ar_at_file" = xno; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi +_LT_DECL([], [archiver_list_spec], [1], + [How to feed a file listing to the archiver]) +])# _LT_PROG_AR + + +# _LT_CMD_OLD_ARCHIVE +# ------------------- +m4_defun([_LT_CMD_OLD_ARCHIVE], +[_LT_PROG_AR + +AC_CHECK_TOOL(STRIP, strip, :) +test -z "$STRIP" && STRIP=: +_LT_DECL([], [STRIP], [1], [A symbol stripping program]) + +AC_CHECK_TOOL(RANLIB, ranlib, :) +test -z "$RANLIB" && RANLIB=: +_LT_DECL([], [RANLIB], [1], + [Commands used to install an old-style archive]) + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac +_LT_DECL([], [old_postinstall_cmds], [2]) +_LT_DECL([], [old_postuninstall_cmds], [2]) +_LT_TAGDECL([], [old_archive_cmds], [2], + [Commands used to build an old-style archive]) +_LT_DECL([], [lock_old_archive_extraction], [0], + [Whether to use a lock for old archive extraction]) +])# _LT_CMD_OLD_ARCHIVE + + +# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([_LT_COMPILER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $RM conftest* +]) + +if test x"[$]$2" = xyes; then + m4_if([$5], , :, [$5]) +else + m4_if([$6], , :, [$6]) +fi +])# _LT_COMPILER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) + + +# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------- +# Check whether the given linker option works +AC_DEFUN([_LT_LINKER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" +]) + +if test x"[$]$2" = xyes; then + m4_if([$4], , :, [$4]) +else + m4_if([$5], , :, [$5]) +fi +])# _LT_LINKER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) + + +# LT_CMD_MAX_LEN +#--------------- +AC_DEFUN([LT_CMD_MAX_LEN], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8 ; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac +]) +if test -n $lt_cv_sys_max_cmd_len ; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +max_cmd_len=$lt_cv_sys_max_cmd_len +_LT_DECL([], [max_cmd_len], [0], + [What is the maximum length of a command?]) +])# LT_CMD_MAX_LEN + +# Old name: +AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) + + +# _LT_HEADER_DLFCN +# ---------------- +m4_defun([_LT_HEADER_DLFCN], +[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl +])# _LT_HEADER_DLFCN + + +# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ---------------------------------------------------------------- +m4_defun([_LT_TRY_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test "$cross_compiling" = yes; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +[#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +}] +_LT_EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_TRY_DLOPEN_SELF + + +# LT_SYS_DLOPEN_SELF +# ------------------ +AC_DEFUN([LT_SYS_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +_LT_DECL([dlopen_support], [enable_dlopen], [0], + [Whether dlopen is supported]) +_LT_DECL([dlopen_self], [enable_dlopen_self], [0], + [Whether dlopen of programs is supported]) +_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], + [Whether dlopen of statically linked programs is supported]) +])# LT_SYS_DLOPEN_SELF + +# Old name: +AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) + + +# _LT_COMPILER_C_O([TAGNAME]) +# --------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler. +# This macro does not hard code the compiler like AC_PROG_CC_C_O. +m4_defun([_LT_COMPILER_C_O], +[m4_require([_LT_DECL_SED])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* +]) +_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], + [Does compiler simultaneously support -c and -o options?]) +])# _LT_COMPILER_C_O + + +# _LT_COMPILER_FILE_LOCKS([TAGNAME]) +# ---------------------------------- +# Check to see if we can do hard links to lock some files if needed +m4_defun([_LT_COMPILER_FILE_LOCKS], +[m4_require([_LT_ENABLE_LOCK])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_COMPILER_C_O([$1]) + +hard_links="nottested" +if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) +])# _LT_COMPILER_FILE_LOCKS + + +# _LT_CHECK_OBJDIR +# ---------------- +m4_defun([_LT_CHECK_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +_LT_DECL([], [objdir], [0], + [The name of the directory that contains temporary libtool files])dnl +m4_pattern_allow([LT_OBJDIR])dnl +AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", + [Define to the sub-directory in which libtool stores uninstalled libraries.]) +])# _LT_CHECK_OBJDIR + + +# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) +# -------------------------------------- +# Check hardcoding attributes. +m4_defun([_LT_LINKER_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || + test -n "$_LT_TAGVAR(runpath_var, $1)" || + test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && + test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then + # Linking always hardcodes the temporary library directory. + _LT_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) + +if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || + test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi +_LT_TAGDECL([], [hardcode_action], [0], + [How to hardcode a shared library path into an executable]) +])# _LT_LINKER_HARDCODE_LIBPATH + + +# _LT_CMD_STRIPLIB +# ---------------- +m4_defun([_LT_CMD_STRIPLIB], +[m4_require([_LT_DECL_EGREP]) +striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) +_LT_DECL([], [striplib], [1]) +])# _LT_CMD_STRIPLIB + + +# _LT_SYS_DYNAMIC_LINKER([TAG]) +# ----------------------------- +# PORTME Fill in your ld.so characteristics +m4_defun([_LT_SYS_DYNAMIC_LINKER], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_OBJDUMP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +AC_MSG_CHECKING([dynamic linker characteristics]) +m4_if([$1], + [], [ +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; + *) lt_sed_strip_eq="s,=/,/,g" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[[lt_foo]]++; } + if (lt_freq[[lt_foo]] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[[4-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + library_names_spec='${libname}.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec="$LIB" + if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[23]].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[[3-9]]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], + [lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ + LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], + [lt_cv_shlibpath_overrides_runpath=yes])]) + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + ]) + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Add ABI-specific directories to the system library path. + sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" + + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + +_LT_DECL([], [variables_saved_for_relink], [1], + [Variables whose values should be saved in libtool wrapper scripts and + restored at link time]) +_LT_DECL([], [need_lib_prefix], [0], + [Do we need the "lib" prefix for modules?]) +_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) +_LT_DECL([], [version_type], [0], [Library versioning type]) +_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) +_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) +_LT_DECL([], [shlibpath_overrides_runpath], [0], + [Is shlibpath searched before the hard-coded library search path?]) +_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) +_LT_DECL([], [library_names_spec], [1], + [[List of archive names. First name is the real one, the rest are links. + The last name is the one that the linker finds with -lNAME]]) +_LT_DECL([], [soname_spec], [1], + [[The coded name of the library, if different from the real name]]) +_LT_DECL([], [install_override_mode], [1], + [Permission mode override for installation of shared libraries]) +_LT_DECL([], [postinstall_cmds], [2], + [Command to use after installation of a shared archive]) +_LT_DECL([], [postuninstall_cmds], [2], + [Command to use after uninstallation of a shared archive]) +_LT_DECL([], [finish_cmds], [2], + [Commands used to finish a libtool library installation in a directory]) +_LT_DECL([], [finish_eval], [1], + [[As "finish_cmds", except a single script fragment to be evaled but + not shown]]) +_LT_DECL([], [hardcode_into_libs], [0], + [Whether we should hardcode library paths into libraries]) +_LT_DECL([], [sys_lib_search_path_spec], [2], + [Compile-time system search path for libraries]) +_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], + [Run-time system search path for libraries]) +])# _LT_SYS_DYNAMIC_LINKER + + +# _LT_PATH_TOOL_PREFIX(TOOL) +# -------------------------- +# find a file program which can recognize shared library +AC_DEFUN([_LT_PATH_TOOL_PREFIX], +[m4_require([_LT_DECL_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="m4_if([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +_LT_DECL([], [MAGIC_CMD], [0], + [Used to examine libraries when file_magic_cmd begins with "file"])dnl +])# _LT_PATH_TOOL_PREFIX + +# Old name: +AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) + + +# _LT_PATH_MAGIC +# -------------- +# find a file program which can recognize a shared library +m4_defun([_LT_PATH_MAGIC], +[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# _LT_PATH_MAGIC + + +# LT_PATH_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([LT_PATH_LD], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PROG_ECHO_BACKSLASH])dnl + +AC_ARG_WITH([gnu-ld], + [AS_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test "$withval" = no || with_gnu_ld=yes], + [with_gnu_ld=no])dnl + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[[3-9]]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +_LT_DECL([], [deplibs_check_method], [1], + [Method to check whether dependent libraries are shared objects]) +_LT_DECL([], [file_magic_cmd], [1], + [Command to use when deplibs_check_method = "file_magic"]) +_LT_DECL([], [file_magic_glob], [1], + [How to find potential files when deplibs_check_method = "file_magic"]) +_LT_DECL([], [want_nocaseglob], [1], + [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) +])# _LT_CHECK_MAGIC_METHOD + + +# LT_PATH_NM +# ---------- +# find the pathname to a BSD- or MS-compatible name lister +AC_DEFUN([LT_PATH_NM], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + : ${lt_cv_path_NM=no} +fi]) +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) + case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols" + ;; + *) + DUMPBIN=: + ;; + esac + fi + AC_SUBST([DUMPBIN]) + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" + fi +fi +test -z "$NM" && NM=nm +AC_SUBST([NM]) +_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl + +AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], + [lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) + cat conftest.out >&AS_MESSAGE_LOG_FD + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest*]) +])# LT_PATH_NM + +# Old names: +AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) +AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_PROG_NM], []) +dnl AC_DEFUN([AC_PROG_NM], []) + +# _LT_CHECK_SHAREDLIB_FROM_LINKLIB +# -------------------------------- +# how to determine the name of the shared library +# associated with a specific link library. +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +m4_require([_LT_DECL_DLLTOOL]) +AC_CACHE_CHECK([how to associate runtime and link libraries], +lt_cv_sharedlib_from_linklib_cmd, +[lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh + # decide which to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd="$ECHO" + ;; +esac +]) +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + +_LT_DECL([], [sharedlib_from_linklib_cmd], [1], + [Command to associate shared and link libraries]) +])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB + + +# _LT_PATH_MANIFEST_TOOL +# ---------------------- +# locate the manifest tool +m4_defun([_LT_PATH_MANIFEST_TOOL], +[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], + [lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&AS_MESSAGE_LOG_FD + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest*]) +if test "x$lt_cv_path_mainfest_tool" != xyes; then + MANIFEST_TOOL=: +fi +_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl +])# _LT_PATH_MANIFEST_TOOL + + +# LT_LIB_M +# -------- +# check for math library +AC_DEFUN([LT_LIB_M], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM="-lm") + ;; +esac +AC_SUBST([LIBM]) +])# LT_LIB_M + +# Old name: +AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_CHECK_LIBM], []) + + +# _LT_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------- +m4_defun([_LT_COMPILER_NO_RTTI], +[m4_require([_LT_TAG_COMPILER])dnl + +_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test "$GCC" = yes; then + case $cc_basename in + nvcc*) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; + *) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; + esac + + _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], + [Compiler flag to turn off builtin functions]) +])# _LT_COMPILER_NO_RTTI + + +# _LT_CMD_GLOBAL_SYMBOLS +# ---------------------- +m4_defun([_LT_CMD_GLOBAL_SYMBOLS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([LT_PATH_NM])dnl +AC_REQUIRE([LT_PATH_LD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_TAG_COMPILER])dnl + +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) + if test "$host_cpu" = ia64; then + symcode='[[ABCDEGRST]]' + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function + # and D for any global variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK ['"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx]" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + nlist=conftest.nm + if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT@&t@_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT@&t@_DLSYM_CONST +#else +# define LT@&t@_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT@&t@_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[[]] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + +_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], + [Take the output of nm and produce a listing of raw symbols and C names]) +_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], + [Transform the output of nm in a proper C declaration]) +_LT_DECL([global_symbol_to_c_name_address], + [lt_cv_sys_global_symbol_to_c_name_address], [1], + [Transform the output of nm in a C name address pair]) +_LT_DECL([global_symbol_to_c_name_address_lib_prefix], + [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], + [Transform the output of nm in a C name address pair when lib prefix is needed]) +_LT_DECL([], [nm_file_list_spec], [1], + [Specify filename containing input files for $NM]) +]) # _LT_CMD_GLOBAL_SYMBOLS + + +# _LT_COMPILER_PIC([TAGNAME]) +# --------------------------- +m4_defun([_LT_COMPILER_PIC], +[m4_require([_LT_TAG_COMPILER])dnl +_LT_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_TAGVAR(lt_prog_compiler_static, $1)= + +m4_if([$1], [CXX], [ + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix[[4-9]]*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64 which still supported -KPIC. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test "$GCC" = yes; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' + if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + hpux9* | hpux10* | hpux11*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + # old Intel for x86_64 which still supported -KPIC. + ecc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' + _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' + ;; + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='' + ;; + *Sun\ F* | *Sun*Fortran*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + *Intel*\ [[CF]]*Compiler*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + *Portland\ Group*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + rdos*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + solaris*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" + ;; +esac + +AC_CACHE_CHECK([for $compiler option to produce PIC], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) +_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], + [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], + [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], + [Additional compiler flags for building library objects]) + +_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], + [How to pass a linker flag through the compiler]) +# +# Check to make sure the static flag actually works. +# +wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" +_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) +_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], + [Compiler flag to prevent dynamic linking]) +])# _LT_COMPILER_PIC + + +# _LT_LINKER_SHLIBS([TAGNAME]) +# ---------------------------- +# See if the linker supports building shared libraries. +m4_defun([_LT_LINKER_SHLIBS], +[AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +m4_if([$1], [CXX], [ + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + case $host_os in + aix[[4-9]]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global defined + # symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + ;; + esac + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +], [ + runpath_var= + _LT_TAGVAR(allow_undefined_flag, $1)= + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(archive_cmds, $1)= + _LT_TAGVAR(archive_expsym_cmds, $1)= + _LT_TAGVAR(compiler_needs_object, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(hardcode_automatic, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_separator, $1)= + _LT_TAGVAR(hardcode_minus_L, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_TAGVAR(inherit_rpath, $1)=no + _LT_TAGVAR(link_all_deplibs, $1)=unknown + _LT_TAGVAR(module_cmds, $1)= + _LT_TAGVAR(module_expsym_cmds, $1)= + _LT_TAGVAR(old_archive_from_new_cmds, $1)= + _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_TAGVAR(thread_safe_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. +dnl Note also adjust exclude_expsyms for C++ above. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + _LT_TAGVAR(ld_shlibs, $1)=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test "$with_gnu_ld" = yes; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; + *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test "$lt_use_gnu_ld_interface" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[[3-9]]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test "$tmp_diet" = no + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + _LT_TAGVAR(whole_archive_flag_spec, $1)= + tmp_sharedflag='--shared' ;; + xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then + runpath_var= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global + # defined symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + + if test "$GCC" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + bsdi[[45]]*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + esac + ;; + + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + m4_if($1, [], [ + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + _LT_LINKER_OPTION([if $CC understands -b], + _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], + [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) + ;; + esac + fi + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], + [lt_cv_irix_exported_symbol], + [save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + AC_LINK_IFELSE( + [AC_LANG_SOURCE( + [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], + [C++], [[int foo (void) { return 0; }]], + [Fortran 77], [[ + subroutine foo + end]], + [Fortran], [[ + subroutine foo + end]])])], + [lt_cv_irix_exported_symbol=yes], + [lt_cv_irix_exported_symbol=no]) + LDFLAGS="$save_LDFLAGS"]) + if test "$lt_cv_irix_exported_symbol" = yes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + fi + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + else + case $host_os in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + ;; + esac + fi + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + solaris*) + _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' + if test "$GCC" = yes; then + wlarc='${wl}' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='${wl}' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + fi + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + if test x$host_vendor = xsni; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' + ;; + esac + fi + fi +]) +AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) +test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld + +_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl +_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl +_LT_DECL([], [extract_expsyms_cmds], [2], + [The commands to extract the exported symbol list from a shared archive]) + +# +# Do we need to explicitly link libc? +# +case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $_LT_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_CACHE_CHECK([whether -lc should be explicitly linked in], + [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), + [$RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) + _LT_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) + then + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no + else + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + ]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) + ;; + esac + fi + ;; +esac + +_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], + [Whether or not to add -lc for building shared libraries]) +_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], + [enable_shared_with_static_runtimes], [0], + [Whether or not to disallow shared libs when runtime libs are static]) +_LT_TAGDECL([], [export_dynamic_flag_spec], [1], + [Compiler flag to allow reflexive dlopens]) +_LT_TAGDECL([], [whole_archive_flag_spec], [1], + [Compiler flag to generate shared objects directly from archives]) +_LT_TAGDECL([], [compiler_needs_object], [1], + [Whether the compiler copes with passing no objects directly]) +_LT_TAGDECL([], [old_archive_from_new_cmds], [2], + [Create an old-style archive from a shared archive]) +_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], + [Create a temporary old-style archive to link instead of a shared archive]) +_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) +_LT_TAGDECL([], [archive_expsym_cmds], [2]) +_LT_TAGDECL([], [module_cmds], [2], + [Commands used to build a loadable module if different from building + a shared archive.]) +_LT_TAGDECL([], [module_expsym_cmds], [2]) +_LT_TAGDECL([], [with_gnu_ld], [1], + [Whether we are building with GNU ld or not]) +_LT_TAGDECL([], [allow_undefined_flag], [1], + [Flag that allows shared libraries with undefined symbols to be built]) +_LT_TAGDECL([], [no_undefined_flag], [1], + [Flag that enforces no undefined symbols]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], + [Flag to hardcode $libdir into a binary during linking. + This must work even if $libdir does not exist]) +_LT_TAGDECL([], [hardcode_libdir_separator], [1], + [Whether we need a single "-rpath" flag with a separated argument]) +_LT_TAGDECL([], [hardcode_direct], [0], + [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + DIR into the resulting binary]) +_LT_TAGDECL([], [hardcode_direct_absolute], [0], + [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + DIR into the resulting binary and the resulting library dependency is + "absolute", i.e impossible to change by setting ${shlibpath_var} if the + library is relocated]) +_LT_TAGDECL([], [hardcode_minus_L], [0], + [Set to "yes" if using the -LDIR flag during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_shlibpath_var], [0], + [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_automatic], [0], + [Set to "yes" if building a shared library automatically hardcodes DIR + into the library and all subsequent libraries and executables linked + against it]) +_LT_TAGDECL([], [inherit_rpath], [0], + [Set to yes if linker adds runtime paths of dependent libraries + to runtime path list]) +_LT_TAGDECL([], [link_all_deplibs], [0], + [Whether libtool must link a program against all its dependency libraries]) +_LT_TAGDECL([], [always_export_symbols], [0], + [Set to "yes" if exported symbols are required]) +_LT_TAGDECL([], [export_symbols_cmds], [2], + [The commands to list exported symbols]) +_LT_TAGDECL([], [exclude_expsyms], [1], + [Symbols that should not be listed in the preloaded symbols]) +_LT_TAGDECL([], [include_expsyms], [1], + [Symbols that must always be exported]) +_LT_TAGDECL([], [prelink_cmds], [2], + [Commands necessary for linking programs (against libraries) with templates]) +_LT_TAGDECL([], [postlink_cmds], [2], + [Commands necessary for finishing linking programs]) +_LT_TAGDECL([], [file_list_spec], [1], + [Specify filename containing input files]) +dnl FIXME: Not yet implemented +dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], +dnl [Compiler flag to generate thread safe objects]) +])# _LT_LINKER_SHLIBS + + +# _LT_LANG_C_CONFIG([TAG]) +# ------------------------ +# Ensure that the configuration variables for a C compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to `libtool'. +m4_defun([_LT_LANG_C_CONFIG], +[m4_require([_LT_DECL_EGREP])dnl +lt_save_CC="$CC" +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + +_LT_TAG_COMPILER +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + LT_SYS_DLOPEN_SELF + _LT_CMD_STRIPLIB + + # Report which library types will actually be built + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_CONFIG($1) +fi +AC_LANG_POP +CC="$lt_save_CC" +])# _LT_LANG_C_CONFIG + + +# _LT_LANG_CXX_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a C++ compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to `libtool'. +m4_defun([_LT_LANG_CXX_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_PROG_CXXCPP +else + _lt_caught_CXX_error=yes +fi + +AC_LANG_PUSH(C++) +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(compiler_needs_object, $1)=no +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_caught_CXX_error" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test "$GXX" = yes; then + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + else + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + fi + + if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + LT_PATH_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) + _LT_TAGVAR(ld_shlibs, $1)=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + + if test "$GXX" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty + # executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared + # libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + freebsd2.*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + freebsd-elf*) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + gnu*) + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + hpux9*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' + fi + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) + _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + openbsd2*) + # C++ shared libraries are fairly broken + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + case $host in + osf3*) + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + ;; + *) + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ + $RM $lib.exp' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + case $host in + osf3*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + fi + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ + '"$_LT_TAGVAR(old_archive_cmds, $1)" + _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ + '"$_LT_TAGVAR(reload_cmds, $1)" + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) + test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + + _LT_TAGVAR(GCC, $1)="$GXX" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test "$_lt_caught_CXX_error" != yes + +AC_LANG_POP +])# _LT_LANG_CXX_CONFIG + + +# _LT_FUNC_STRIPNAME_CNF +# ---------------------- +# func_stripname_cnf prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# +# This function is identical to the (non-XSI) version of func_stripname, +# except this one can be used by m4 code that may be executed by configure, +# rather than the libtool script. +m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl +AC_REQUIRE([_LT_DECL_SED]) +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) +func_stripname_cnf () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + esac +} # func_stripname_cnf +])# _LT_FUNC_STRIPNAME_CNF + +# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) +# --------------------------------- +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +m4_defun([_LT_SYS_HIDDEN_LIBDEPS], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl +# Dependencies to place before and after the object being linked: +_LT_TAGVAR(predep_objects, $1)= +_LT_TAGVAR(postdep_objects, $1)= +_LT_TAGVAR(predeps, $1)= +_LT_TAGVAR(postdeps, $1)= +_LT_TAGVAR(compiler_lib_search_path, $1)= + +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF +int a; +void foo (void) { a = 0; } +_LT_EOF +], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF +], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer*4 a + a=0 + return + end +_LT_EOF +], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer a + a=0 + return + end +_LT_EOF +], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF +public class foo { + private int a; + public void bar (void) { + a = 0; + } +}; +_LT_EOF +], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF +package foo +func foo() { +} +_LT_EOF +]) + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; +esac + +dnl Parse the compiler output and extract the necessary +dnl objects, libraries and library flags. +if AC_TRY_EVAL(ac_compile); then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case ${prev}${p} in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" || + test $p = "-R"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test "$pre_test_object_deps_done" = no; then + case ${prev} in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then + _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" + else + _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$_LT_TAGVAR(postdeps, $1)"; then + _LT_TAGVAR(postdeps, $1)="${prev}${p}" + else + _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$_LT_TAGVAR(predep_objects, $1)"; then + _LT_TAGVAR(predep_objects, $1)="$p" + else + _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" + fi + else + if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then + _LT_TAGVAR(postdep_objects, $1)="$p" + else + _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling $1 test program" +fi + +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS + +# PORTME: override above test on systems where it is broken +m4_if([$1], [CXX], +[case $host_os in +interix[[3-9]]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + _LT_TAGVAR(predep_objects,$1)= + _LT_TAGVAR(postdep_objects,$1)= + _LT_TAGVAR(postdeps,$1)= + ;; + +linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + if test "$solaris_use_stlport4" != yes; then + _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; + +solaris*) + case $cc_basename in + CC* | sunCC*) + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + if test "$solaris_use_stlport4" != yes; then + _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; +esac +]) + +case " $_LT_TAGVAR(postdeps, $1) " in +*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; +esac + _LT_TAGVAR(compiler_lib_search_dirs, $1)= +if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then + _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` +fi +_LT_TAGDECL([], [compiler_lib_search_dirs], [1], + [The directories searched by this compiler when creating a shared library]) +_LT_TAGDECL([], [predep_objects], [1], + [Dependencies to place before and after the objects being linked to + create a shared library]) +_LT_TAGDECL([], [postdep_objects], [1]) +_LT_TAGDECL([], [predeps], [1]) +_LT_TAGDECL([], [postdeps], [1]) +_LT_TAGDECL([], [compiler_lib_search_path], [1], + [The library search path used internally by the compiler when linking + a shared library]) +])# _LT_SYS_HIDDEN_LIBDEPS + + +# _LT_LANG_F77_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a Fortran 77 compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_F77_CONFIG], +[AC_LANG_PUSH(Fortran 77) +if test -z "$F77" || test "X$F77" = "Xno"; then + _lt_disable_F77=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the F77 compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_disable_F77" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC="$CC" + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${F77-"f77"} + CFLAGS=$FFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + GCC=$G77 + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)="$G77" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC="$lt_save_CC" + CFLAGS="$lt_save_CFLAGS" +fi # test "$_lt_disable_F77" != yes + +AC_LANG_POP +])# _LT_LANG_F77_CONFIG + + +# _LT_LANG_FC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for a Fortran compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_FC_CONFIG], +[AC_LANG_PUSH(Fortran) + +if test -z "$FC" || test "X$FC" = "Xno"; then + _lt_disable_FC=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for fc test sources. +ac_ext=${ac_fc_srcext-f} + +# Object file extension for compiled fc test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the FC compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_disable_FC" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC="$CC" + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${FC-"f95"} + CFLAGS=$FCFLAGS + compiler=$CC + GCC=$ac_cv_fc_compiler_gnu + + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test "$_lt_disable_FC" != yes + +AC_LANG_POP +])# _LT_LANG_FC_CONFIG + + +# _LT_LANG_GCJ_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Java Compiler compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_GCJ_CONFIG], +[AC_REQUIRE([LT_PROG_GCJ])dnl +AC_LANG_SAVE + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GCJ-"gcj"} +CFLAGS=$GCJFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)="$LD" +_LT_CC_BASENAME([$compiler]) + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GCJ_CONFIG + + +# _LT_LANG_GO_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Go compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_GO_CONFIG], +[AC_REQUIRE([LT_PROG_GO])dnl +AC_LANG_SAVE + +# Source file extension for Go test sources. +ac_ext=go + +# Object file extension for compiled Go test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="package main; func main() { }" + +# Code to be used in simple link tests +lt_simple_link_test_code='package main; func main() { }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GOC-"gccgo"} +CFLAGS=$GOFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)="$LD" +_LT_CC_BASENAME([$compiler]) + +# Go did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GO_CONFIG + + +# _LT_LANG_RC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for the Windows resource compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_RC_CONFIG], +[AC_REQUIRE([LT_PROG_RC])dnl +AC_LANG_SAVE + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC= +CC=${RC-"windres"} +CFLAGS= +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) +_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + +if test -n "$compiler"; then + : + _LT_CONFIG($1) +fi + +GCC=$lt_save_GCC +AC_LANG_RESTORE +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_RC_CONFIG + + +# LT_PROG_GCJ +# ----------- +AC_DEFUN([LT_PROG_GCJ], +[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], + [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], + [AC_CHECK_TOOL(GCJ, gcj,) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS)])])[]dnl +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_GCJ], []) + + +# LT_PROG_GO +# ---------- +AC_DEFUN([LT_PROG_GO], +[AC_CHECK_TOOL(GOC, gccgo,) +]) + + +# LT_PROG_RC +# ---------- +AC_DEFUN([LT_PROG_RC], +[AC_CHECK_TOOL(RC, windres,) +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_RC], []) + + +# _LT_DECL_EGREP +# -------------- +# If we don't have a new enough Autoconf to choose the best grep +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_EGREP], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_REQUIRE([AC_PROG_FGREP])dnl +test -z "$GREP" && GREP=grep +_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) +_LT_DECL([], [EGREP], [1], [An ERE matcher]) +_LT_DECL([], [FGREP], [1], [A literal string matcher]) +dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too +AC_SUBST([GREP]) +]) + + +# _LT_DECL_OBJDUMP +# -------------- +# If we don't have a new enough Autoconf to choose the best objdump +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_OBJDUMP], +[AC_CHECK_TOOL(OBJDUMP, objdump, false) +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) +AC_SUBST([OBJDUMP]) +]) + +# _LT_DECL_DLLTOOL +# ---------------- +# Ensure DLLTOOL variable is set. +m4_defun([_LT_DECL_DLLTOOL], +[AC_CHECK_TOOL(DLLTOOL, dlltool, false) +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) +AC_SUBST([DLLTOOL]) +]) + +# _LT_DECL_SED +# ------------ +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +m4_defun([_LT_DECL_SED], +[AC_PROG_SED +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" +_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) +_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], + [Sed that helps us avoid accidentally triggering echo(1) options like -n]) +])# _LT_DECL_SED + +m4_ifndef([AC_PROG_SED], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ + +m4_defun([AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_SUBST([SED]) +AC_MSG_RESULT([$SED]) +])#AC_PROG_SED +])#m4_ifndef + +# Old name: +AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_SED], []) + + +# _LT_CHECK_SHELL_FEATURES +# ------------------------ +# Find out whether the shell is Bourne or XSI compatible, +# or has some other useful features. +m4_defun([_LT_CHECK_SHELL_FEATURES], +[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) +# Try some XSI features +xsi_shell=no +( _lt_dummy="a/b/c" + test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,b/c, \ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ + && xsi_shell=yes +AC_MSG_RESULT([$xsi_shell]) +_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) + +AC_MSG_CHECKING([whether the shell understands "+="]) +lt_shell_append=no +( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ + >/dev/null 2>&1 \ + && lt_shell_append=yes +AC_MSG_RESULT([$lt_shell_append]) +_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi +_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac +_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl +_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl +])# _LT_CHECK_SHELL_FEATURES + + +# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) +# ------------------------------------------------------ +# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and +# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. +m4_defun([_LT_PROG_FUNCTION_REPLACE], +[dnl { +sed -e '/^$1 ()$/,/^} # $1 /c\ +$1 ()\ +{\ +m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) +} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: +]) + + +# _LT_PROG_REPLACE_SHELLFNS +# ------------------------- +# Replace existing portable implementations of several shell functions with +# equivalent extended shell implementations where those features are available.. +m4_defun([_LT_PROG_REPLACE_SHELLFNS], +[if test x"$xsi_shell" = xyes; then + _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac]) + + _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl + func_basename_result="${1##*/}"]) + + _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac + func_basename_result="${1##*/}"]) + + _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary parameter first. + func_stripname_result=${3} + func_stripname_result=${func_stripname_result#"${1}"} + func_stripname_result=${func_stripname_result%"${2}"}]) + + _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl + func_split_long_opt_name=${1%%=*} + func_split_long_opt_arg=${1#*=}]) + + _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl + func_split_short_opt_arg=${1#??} + func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) + + _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl + case ${1} in + *.lo) func_lo2o_result=${1%.lo}.${objext} ;; + *) func_lo2o_result=${1} ;; + esac]) + + _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) + + _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) + + _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) +fi + +if test x"$lt_shell_append" = xyes; then + _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) + + _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl + func_quote_for_eval "${2}" +dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ + eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) + + # Save a `func_append' function call where possible by direct use of '+=' + sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +else + # Save a `func_append' function call even when '+=' is not available + sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +fi + +if test x"$_lt_function_replace_fail" = x":"; then + AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) +fi +]) + +# _LT_PATH_CONVERSION_FUNCTIONS +# ----------------------------- +# Determine which file name conversion functions should be used by +# func_to_host_file (and, implicitly, by func_to_host_path). These are needed +# for certain cross-compile configurations and native mingw. +m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_MSG_CHECKING([how to convert $build file names to $host format]) +AC_CACHE_VAL(lt_cv_to_host_file_cmd, +[case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac +]) +to_host_file_cmd=$lt_cv_to_host_file_cmd +AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) +_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], + [0], [convert $build file names to $host format])dnl + +AC_MSG_CHECKING([how to convert $build file names to toolchain format]) +AC_CACHE_VAL(lt_cv_to_tool_file_cmd, +[#assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac +]) +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) +_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], + [0], [convert $build files to toolchain format])dnl +])# _LT_PATH_CONVERSION_FUNCTIONS +# Helper functions for option handling. -*- Autoconf -*- +# +# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 7 ltoptions.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) + + +# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) +# ------------------------------------------ +m4_define([_LT_MANGLE_OPTION], +[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) + + +# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) +# --------------------------------------- +# Set option OPTION-NAME for macro MACRO-NAME, and if there is a +# matching handler defined, dispatch to it. Other OPTION-NAMEs are +# saved as a flag. +m4_define([_LT_SET_OPTION], +[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl +m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), + _LT_MANGLE_DEFUN([$1], [$2]), + [m4_warning([Unknown $1 option `$2'])])[]dnl +]) + + +# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) +# ------------------------------------------------------------ +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +m4_define([_LT_IF_OPTION], +[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) + + +# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) +# ------------------------------------------------------- +# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME +# are set. +m4_define([_LT_UNLESS_OPTIONS], +[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), + [m4_define([$0_found])])])[]dnl +m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 +])[]dnl +]) + + +# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) +# ---------------------------------------- +# OPTION-LIST is a space-separated list of Libtool options associated +# with MACRO-NAME. If any OPTION has a matching handler declared with +# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about +# the unknown option and exit. +m4_defun([_LT_SET_OPTIONS], +[# Set options +m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [_LT_SET_OPTION([$1], _LT_Option)]) + +m4_if([$1],[LT_INIT],[ + dnl + dnl Simply set some default values (i.e off) if boolean options were not + dnl specified: + _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no + ]) + _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no + ]) + dnl + dnl If no reference was made to various pairs of opposing options, then + dnl we run the default mode handler for the pair. For example, if neither + dnl `shared' nor `disable-shared' was passed, we enable building of shared + dnl archives by default: + _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) + _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], + [_LT_ENABLE_FAST_INSTALL]) + ]) +])# _LT_SET_OPTIONS + + +## --------------------------------- ## +## Macros to handle LT_INIT options. ## +## --------------------------------- ## + +# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) +# ----------------------------------------- +m4_define([_LT_MANGLE_DEFUN], +[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) + + +# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) +# ----------------------------------------------- +m4_define([LT_OPTION_DEFINE], +[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl +])# LT_OPTION_DEFINE + + +# dlopen +# ------ +LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes +]) + +AU_DEFUN([AC_LIBTOOL_DLOPEN], +[_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `dlopen' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) + + +# win32-dll +# --------- +# Declare package support for building win32 dll's. +LT_OPTION_DEFINE([LT_INIT], [win32-dll], +[enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; +esac + +test -z "$AS" && AS=as +_LT_DECL([], [AS], [1], [Assembler program])dnl + +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl + +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl +])# win32-dll + +AU_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `win32-dll' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) + + +# _LT_ENABLE_SHARED([DEFAULT]) +# ---------------------------- +# implement the --enable-shared flag, and supports the `shared' and +# `disable-shared' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_SHARED], +[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([shared], + [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) + + _LT_DECL([build_libtool_libs], [enable_shared], [0], + [Whether or not to build shared libraries]) +])# _LT_ENABLE_SHARED + +LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) +]) + +AC_DEFUN([AC_DISABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], [disable-shared]) +]) + +AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_SHARED], []) +dnl AC_DEFUN([AM_DISABLE_SHARED], []) + + + +# _LT_ENABLE_STATIC([DEFAULT]) +# ---------------------------- +# implement the --enable-static flag, and support the `static' and +# `disable-static' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_STATIC], +[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([static], + [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_static=]_LT_ENABLE_STATIC_DEFAULT) + + _LT_DECL([build_old_libs], [enable_static], [0], + [Whether or not to build static libraries]) +])# _LT_ENABLE_STATIC + +LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) +]) + +AC_DEFUN([AC_DISABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], [disable-static]) +]) + +AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_STATIC], []) +dnl AC_DEFUN([AM_DISABLE_STATIC], []) + + + +# _LT_ENABLE_FAST_INSTALL([DEFAULT]) +# ---------------------------------- +# implement the --enable-fast-install flag, and support the `fast-install' +# and `disable-fast-install' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_FAST_INSTALL], +[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([fast-install], + [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) + +_LT_DECL([fast_install], [enable_fast_install], [0], + [Whether or not to optimize for fast installation])dnl +])# _LT_ENABLE_FAST_INSTALL + +LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) + +# Old names: +AU_DEFUN([AC_ENABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `fast-install' option into LT_INIT's first parameter.]) +]) + +AU_DEFUN([AC_DISABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `disable-fast-install' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) +dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) + + +# _LT_WITH_PIC([MODE]) +# -------------------- +# implement the --with-pic flag, and support the `pic-only' and `no-pic' +# LT_INIT options. +# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +m4_define([_LT_WITH_PIC], +[AC_ARG_WITH([pic], + [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for lt_pkg in $withval; do + IFS="$lt_save_ifs" + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [pic_mode=default]) + +test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) + +_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl +])# _LT_WITH_PIC + +LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) + +# Old name: +AU_DEFUN([AC_LIBTOOL_PICMODE], +[_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `pic-only' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) + +## ----------------- ## +## LTDL_INIT Options ## +## ----------------- ## + +m4_define([_LTDL_MODE], []) +LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], + [m4_define([_LTDL_MODE], [nonrecursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [recursive], + [m4_define([_LTDL_MODE], [recursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [subproject], + [m4_define([_LTDL_MODE], [subproject])]) + +m4_define([_LTDL_TYPE], []) +LT_OPTION_DEFINE([LTDL_INIT], [installable], + [m4_define([_LTDL_TYPE], [installable])]) +LT_OPTION_DEFINE([LTDL_INIT], [convenience], + [m4_define([_LTDL_TYPE], [convenience])]) +# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 6 ltsugar.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) + + +# lt_join(SEP, ARG1, [ARG2...]) +# ----------------------------- +# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their +# associated separator. +# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier +# versions in m4sugar had bugs. +m4_define([lt_join], +[m4_if([$#], [1], [], + [$#], [2], [[$2]], + [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) +m4_define([_lt_join], +[m4_if([$#$2], [2], [], + [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) + + +# lt_car(LIST) +# lt_cdr(LIST) +# ------------ +# Manipulate m4 lists. +# These macros are necessary as long as will still need to support +# Autoconf-2.59 which quotes differently. +m4_define([lt_car], [[$1]]) +m4_define([lt_cdr], +[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], + [$#], 1, [], + [m4_dquote(m4_shift($@))])]) +m4_define([lt_unquote], $1) + + +# lt_append(MACRO-NAME, STRING, [SEPARATOR]) +# ------------------------------------------ +# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. +# Note that neither SEPARATOR nor STRING are expanded; they are appended +# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). +# No SEPARATOR is output if MACRO-NAME was previously undefined (different +# than defined and empty). +# +# This macro is needed until we can rely on Autoconf 2.62, since earlier +# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. +m4_define([lt_append], +[m4_define([$1], + m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) + + + +# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) +# ---------------------------------------------------------- +# Produce a SEP delimited list of all paired combinations of elements of +# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list +# has the form PREFIXmINFIXSUFFIXn. +# Needed until we can rely on m4_combine added in Autoconf 2.62. +m4_define([lt_combine], +[m4_if(m4_eval([$# > 3]), [1], + [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl +[[m4_foreach([_Lt_prefix], [$2], + [m4_foreach([_Lt_suffix], + ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, + [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) + + +# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) +# ----------------------------------------------------------------------- +# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited +# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. +m4_define([lt_if_append_uniq], +[m4_ifdef([$1], + [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], + [lt_append([$1], [$2], [$3])$4], + [$5])], + [lt_append([$1], [$2], [$3])$4])]) + + +# lt_dict_add(DICT, KEY, VALUE) +# ----------------------------- +m4_define([lt_dict_add], +[m4_define([$1($2)], [$3])]) + + +# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) +# -------------------------------------------- +m4_define([lt_dict_add_subkey], +[m4_define([$1($2:$3)], [$4])]) + + +# lt_dict_fetch(DICT, KEY, [SUBKEY]) +# ---------------------------------- +m4_define([lt_dict_fetch], +[m4_ifval([$3], + m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), + m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) + + +# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) +# ----------------------------------------------------------------- +m4_define([lt_if_dict_fetch], +[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], + [$5], + [$6])]) + + +# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) +# -------------------------------------------------------------- +m4_define([lt_dict_filter], +[m4_if([$5], [], [], + [lt_join(m4_quote(m4_default([$4], [[, ]])), + lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), + [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl +]) +# ltversion.m4 -- version numbers -*- Autoconf -*- +# +# Copyright (C) 2004 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# @configure_input@ + +# serial 3337 ltversion.m4 +# This file is part of GNU Libtool + +m4_define([LT_PACKAGE_VERSION], [2.4.2]) +m4_define([LT_PACKAGE_REVISION], [1.3337]) + +AC_DEFUN([LTVERSION_VERSION], +[macro_version='2.4.2' +macro_revision='1.3337' +_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) +_LT_DECL(, macro_revision, 0) +]) +# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004. +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 5 lt~obsolete.m4 + +# These exist entirely to fool aclocal when bootstrapping libtool. +# +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) +# which have later been changed to m4_define as they aren't part of the +# exported API, or moved to Autoconf or Automake where they belong. +# +# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN +# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us +# using a macro with the same name in our local m4/libtool.m4 it'll +# pull the old libtool.m4 in (it doesn't see our shiny new m4_define +# and doesn't know about Autoconf macros at all.) +# +# So we provide this file, which has a silly filename so it's always +# included after everything else. This provides aclocal with the +# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything +# because those macros already exist, or will be overwritten later. +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# +# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. +# Yes, that means every name once taken will need to remain here until +# we give up compatibility with versions before 1.7, at which point +# we need to keep only those names which we still refer to. + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) + +m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) +m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) +m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) +m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) +m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) +m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) +m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) +m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) +m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) +m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) +m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) +m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) +m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) +m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) +m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) +m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) +m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) +m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) +m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) +m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) +m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) +m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) +m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) +m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) +m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) +m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) +m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) +m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) +m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) +m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) +m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) +m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) +m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) +m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) +m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) +m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) +m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) +m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) +m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) +m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) +m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) +m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) +m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) +m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) +m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) +m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) +m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) +m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) +m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) +m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) diff --git a/coregrade/src/build/mkdep.awk b/coregrade/src/build/mkdep.awk new file mode 100644 index 0000000..06547c7 --- /dev/null +++ b/coregrade/src/build/mkdep.awk @@ -0,0 +1,75 @@ +# +----------------------------------------------------------------------+ +# | PHP Version 5 | +# +----------------------------------------------------------------------+ +# | Copyright (c) 2000-2006 The PHP Group | +# +----------------------------------------------------------------------+ +# | This source file is subject to version 3.01 of the PHP license, | +# | that is bundled with this package in the file LICENSE, and is | +# | available through the world-wide-web at the following url: | +# | http://www.php.net/license/3_01.txt | +# | If you did not receive a copy of the PHP license and are unable to | +# | obtain it through the world-wide-web, please send a note to | +# | license@php.net so we can mail you a copy immediately. | +# +----------------------------------------------------------------------+ +# | Author: Sascha Schumann | +# +----------------------------------------------------------------------+ +# +# $Id$ +# +# Usage: +# +# echo top_srcdir top_builddir srcdir CPP [CPP-ARGS] filenames | \ +# awk -f mkdep.awk > dependencies + + +{ + top_srcdir=$1 + top_builddir=$2 + srcdir=$3 + cmd=$4 + + for (i = 5; i <= NF; i++) { + if (match($i, "^-[A-Z]") == 0) + break; + cmd=cmd " " $i + } + + dif=i-1 + + for (; i <= NF; i++) + filenames[i-dif]=$i + + no_files=NF-dif + + for(i = 1; i <= no_files; i++) { + if (system("test -r " filenames[i]) != 0) + continue + + target=filenames[i] + sub(srcdir "/", "", target) + target2=target + sub("\.(c|cpp)$", ".lo", target); + sub("\.(c|cpp)$", ".slo", target2); + + for (e in used) + delete used[e] + + cmdx=cmd " " filenames[i] + done=0 + while ((cmdx | getline) > 0) { + if (match($0, "^# [0-9]* \".*\.h\"") != 0) { + if (sub(top_srcdir, "$(top_srcdir)", $3) == 0) + sub(top_builddir, "$(top_builddir)", $3) + if (substr($3,2,1) != "/" && used[$3] != 1) { + if (done == 0) + printf(target " " target2 ":") + done=1 + printf(" \\\n\t" substr($3,2,length($3)-2)) + used[$3] = 1; + } + } + } + if (done == 1) + print "\n" + } +} diff --git a/coregrade/src/build/scan_makefile_in.awk b/coregrade/src/build/scan_makefile_in.awk new file mode 100644 index 0000000..0c6d203 --- /dev/null +++ b/coregrade/src/build/scan_makefile_in.awk @@ -0,0 +1,32 @@ +BEGIN { + mode=0 + sources="" +} + +mode == 0 && /^LTLIBRARY_SOURCES.*\\$/ { + if (match($0, "[^=]*$")) { + sources=substr($0, RSTART, RLENGTH-1) + } + mode=1 + next +} + +mode == 0 && /^LTLIBRARY_SOURCES.*/ { + if (match($0, "[^=]*$")) { + sources=substr($0, RSTART, RLENGTH) + } +} + +mode == 1 && /.*\\$/ { + sources=sources substr($0, 0, length - 1) + next +} + +mode == 1 { + sources=sources $0 + mode=0 +} + +END { + print sources +} diff --git a/coregrade/src/build/shtool b/coregrade/src/build/shtool new file mode 100755 index 0000000..d50aa1d --- /dev/null +++ b/coregrade/src/build/shtool @@ -0,0 +1,1807 @@ +#!/bin/sh +## +## GNU shtool -- The GNU Portable Shell Tool +## Copyright (c) 1994-2008 Ralf S. Engelschall +## +## See http://www.gnu.org/software/shtool/ for more information. +## See ftp://ftp.gnu.org/gnu/shtool/ for latest version. +## +## Version: 2.0.8 (18-Jul-2008) +## Contents: 5/19 available modules +## + +## +## 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 +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +## General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, +## USA, or contact Ralf S. Engelschall . +## +## NOTICE: Given that you include this file verbatim into your own +## source tree, you are justified in saying that it remains separate +## from your package, and that this way you are simply just using GNU +## shtool. So, in this situation, there is no requirement that your +## package itself is licensed under the GNU General Public License in +## order to take advantage of GNU shtool. +## + +## +## Usage: shtool [] [ [] []] +## +## Available commands: +## echo Print string with optional construct expansion +## install Install a program, script or datafile +## mkdir Make one or more directories +## platform Platform Identification Utility +## path Deal with program paths +## +## Not available commands (because module was not built-in): +## mdate Pretty-print modification time of a file or dir +## table Pretty-print a field-separated list as a table +## prop Display progress with a running propeller +## move Move files with simultaneous substitution +## mkln Make link with calculation of relative paths +## mkshadow Make a shadow tree through symbolic links +## fixperm Fix file permissions inside a source tree +## rotate Logfile rotation +## tarball Roll distribution tarballs +## subst Apply sed(1) substitution operations +## arx Extended archive command +## slo Separate linker options by library class +## scpp Sharing C Pre-Processor +## version Maintain a version information file +## + +# maximum Bourne-Shell compatibility +if [ ".$ZSH_VERSION" != . ] && (emulate sh) >/dev/null 2>&1; then + # reconfigure zsh(1) + emulate sh + NULLCMD=: + alias -g '${1+"$@"}'='"$@"' +elif [ ".$BASH_VERSION" != . ] && (set -o posix) >/dev/null 2>&1; then + # reconfigure bash(1) + set -o posix +fi + +# maximum independence of NLS nuisances +for var in \ + LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \ + LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \ + LC_TELEPHONE LC_TIME +do + if (set +x; test -z "`(eval $var=C; export $var) 2>&1`"); then + eval $var=C; export $var + else + unset $var + fi +done + +# initial command line handling +if [ $# -eq 0 ]; then + echo "$0:Error: invalid command line" 1>&2 + echo "$0:Hint: run \`$0 -h' for usage" 1>&2 + exit 1 +fi +if [ ".$1" = ".-h" ] || [ ".$1" = ".--help" ]; then + echo "This is GNU shtool, version 2.0.8 (18-Jul-2008)" + echo 'Copyright (c) 1994-2008 Ralf S. Engelschall ' + echo 'Report bugs to ' + echo '' + echo 'Usage: shtool [] [ [] []]' + echo '' + echo 'Available global :' + echo ' -v, --version display shtool version information' + echo ' -h, --help display shtool usage help page (this one)' + echo ' -d, --debug display shell trace information' + echo ' -r, --recreate recreate this shtool script via shtoolize' + echo '' + echo 'Available [] []:' + echo ' echo [-n|--newline] [-e|--expand] [ ...]' + echo ' install [-v|--verbose] [-t|--trace] [-d|--mkdir] [-c|--copy]' + echo ' [-C|--compare-copy] [-s|--strip] [-m|--mode ]' + echo ' [-o|--owner ] [-g|--group ] [-e|--exec' + echo ' ] [ ...] ' + echo ' mkdir [-t|--trace] [-f|--force] [-p|--parents] [-m|--mode' + echo ' ] [-o|--owner ] [-g|--group ] ' + echo ' [ ...]' + echo ' platform [-F|--format ] [-S|--sep ] [-C|--conc' + echo ' ] [-L|--lower] [-U|--upper] [-v|--verbose]' + echo ' [-c|--concise] [-n|--no-newline] [-t|--type ]' + echo ' [-V|--version] [-h|--help]' + echo ' path [-s|--suppress] [-r|--reverse] [-d|--dirname] [-b|--basename]' + echo ' [-m|--magic] [-p|--path ] [ ...]' + echo '' + echo 'Not available (because module was not built-in):' + echo ' mdate [-n|--newline] [-z|--zero] [-s|--shorten] [-d|--digits]' + echo ' [-f|--field-sep ] [-o|--order ] ' + echo ' table [-F|--field-sep ] [-w|--width ] [-c|--columns' + echo ' ] [-s|--strip ] ...' + echo ' prop [-p|--prefix ]' + echo ' move [-v|--verbose] [-t|--trace] [-e|--expand] [-p|--preserve]' + echo ' ' + echo ' mkln [-t|--trace] [-f|--force] [-s|--symbolic] ' + echo ' [ ...] ' + echo ' mkshadow [-v|--verbose] [-t|--trace] [-a|--all] ' + echo ' fixperm [-v|--verbose] [-t|--trace] [ ...]' + echo ' rotate [-v|--verbose] [-t|--trace] [-f|--force] [-n|--num-files' + echo ' ] [-s|--size ] [-c|--copy] [-r|--remove]' + echo ' [-a|--archive-dir ] [-z|--compress [:]]' + echo ' [-b|--background] [-d|--delay] [-p|--pad ] [-m|--mode' + echo ' ] [-o|--owner ] [-g|--group ] [-M|--migrate' + echo ' ] [-P|--prolog ] [-E|--epilog ] [...]' + echo ' tarball [-t|--trace] [-v|--verbose] [-o|--output ]' + echo ' [-c|--compress ] [-d|--directory ] [-u|--user' + echo ' ] [-g|--group ] [-e|--exclude ]' + echo ' [ ...]' + echo ' subst [-v|--verbose] [-t|--trace] [-n|--nop] [-w|--warning]' + echo ' [-q|--quiet] [-s|--stealth] [-i|--interactive] [-b|--backup' + echo ' ] [-e|--exec ] [-f|--file ] []' + echo ' [...]' + echo ' arx [-t|--trace] [-C|--command ] [' + echo ' ...]' + echo ' slo [-p|--prefix ] -- -L -l [-L -l' + echo ' ...]' + echo ' scpp [-v|--verbose] [-p|--preserve] [-f|--filter ]' + echo ' [-o|--output ] [-t|--template ] [-M|--mark' + echo ' ] [-D|--define ] [-C|--class ]' + echo ' [ ...]' + echo ' version [-l|--language ] [-n|--name ] [-p|--prefix' + echo ' ] [-s|--set ] [-e|--edit] [-i|--increase' + echo ' ] [-d|--display ] ' + echo '' + exit 0 +fi +if [ ".$1" = ".-v" ] || [ ".$1" = ".--version" ]; then + echo "GNU shtool 2.0.8 (18-Jul-2008)" + exit 0 +fi +if [ ".$1" = ".-r" ] || [ ".$1" = ".--recreate" ]; then + shtoolize -obuild/shtool echo install mkdir platform path + exit 0 +fi +if [ ".$1" = ".-d" ] || [ ".$1" = ".--debug" ]; then + shift + set -x +fi +name=`echo "$0" | sed -e 's;.*/\([^/]*\)$;\1;' -e 's;-sh$;;' -e 's;\.sh$;;'` +case "$name" in + echo|install|mkdir|platform|path ) + # implicit tool command selection + tool="$name" + ;; + * ) + # explicit tool command selection + tool="$1" + shift + ;; +esac +arg_spec="" +opt_spec="" +gen_tmpfile=no + +## +## DISPATCH INTO SCRIPT PROLOG +## + +case $tool in + echo ) + str_tool="echo" + str_usage="[-n|--newline] [-e|--expand] [ ...]" + arg_spec="0+" + opt_spec="n.e." + opt_alias="n:newline,e:expand" + opt_n=no + opt_e=no + ;; + install ) + str_tool="install" + str_usage="[-v|--verbose] [-t|--trace] [-d|--mkdir] [-c|--copy] [-C|--compare-copy] [-s|--strip] [-m|--mode ] [-o|--owner ] [-g|--group ] [-e|--exec ] [ ...] " + arg_spec="1+" + opt_spec="v.t.d.c.C.s.m:o:g:e+" + opt_alias="v:verbose,t:trace,d:mkdir,c:copy,C:compare-copy,s:strip,m:mode,o:owner,g:group,e:exec" + opt_v=no + opt_t=no + opt_d=no + opt_c=no + opt_C=no + opt_s=no + opt_m="0755" + opt_o="" + opt_g="" + opt_e="" + ;; + mkdir ) + str_tool="mkdir" + str_usage="[-t|--trace] [-f|--force] [-p|--parents] [-m|--mode ] [-o|--owner ] [-g|--group ] [ ...]" + arg_spec="1+" + opt_spec="t.f.p.m:o:g:" + opt_alias="t:trace,f:force,p:parents,m:mode,o:owner,g:group" + opt_t=no + opt_f=no + opt_p=no + opt_m="" + opt_o="" + opt_g="" + ;; + platform ) + str_tool="platform" + str_usage="[-F|--format ] [-S|--sep ] [-C|--conc ] [-L|--lower] [-U|--upper] [-v|--verbose] [-c|--concise] [-n|--no-newline] [-t|--type ] [-V|--version] [-h|--help]" + arg_spec="0=" + opt_spec="F:S:C:L.U.v.c.n.t:d.V.h." + opt_alias="F:format,S:sep,C:conc,L:lower,U:upper,v:verbose,c:consise,t:type,n:no-newline,V:version,h:help" + opt_F="%{sp} (%{ap})" + opt_S=" " + opt_C="/" + opt_L=no + opt_U=no + opt_t="" + opt_v=no + opt_c=no + opt_n=no + opt_V=no + opt_h=no + ;; + path ) + str_tool="path" + str_usage="[-s|--suppress] [-r|--reverse] [-d|--dirname] [-b|--basename] [-m|--magic] [-p|--path ] [ ...]" + gen_tmpfile=yes + arg_spec="1+" + opt_spec="s.r.d.b.m.p:" + opt_alias="s:suppress,r:reverse,d:dirname,b:basename,m:magic,p:path" + opt_s=no + opt_r=no + opt_d=no + opt_b=no + opt_m=no + opt_p="$PATH" + ;; + -* ) + echo "$0:Error: unknown option \`$tool'" 2>&1 + echo "$0:Hint: run \`$0 -h' for usage" 2>&1 + exit 1 + ;; + * ) + echo "$0:Error: unknown command \`$tool'" 2>&1 + echo "$0:Hint: run \`$0 -h' for usage" 2>&1 + exit 1 + ;; +esac + +## +## COMMON UTILITY CODE +## + +# commonly used ASCII values +ASC_TAB=" " +ASC_NL=" +" + +# determine name of tool +if [ ".$tool" != . ]; then + # used inside shtool script + toolcmd="$0 $tool" + toolcmdhelp="shtool $tool" + msgprefix="shtool:$tool" +else + # used as standalone script + toolcmd="$0" + toolcmdhelp="sh $0" + msgprefix="$str_tool" +fi + +# parse argument specification string +eval `echo $arg_spec |\ + sed -e 's/^\([0-9]*\)\([+=]\)/arg_NUMS=\1; arg_MODE=\2/'` + +# parse option specification string +eval `echo h.$opt_spec |\ + sed -e 's/\([a-zA-Z0-9]\)\([.:+]\)/opt_MODE_\1=\2;/g'` + +# parse option alias string +eval `echo h:help,$opt_alias |\ + sed -e 's/-/_/g' -e 's/\([a-zA-Z0-9]\):\([^,]*\),*/opt_ALIAS_\2=\1;/g'` + +# interate over argument line +opt_PREV='' +while [ $# -gt 0 ]; do + # special option stops processing + if [ ".$1" = ".--" ]; then + shift + break + fi + + # determine option and argument + opt_ARG_OK=no + if [ ".$opt_PREV" != . ]; then + # merge previous seen option with argument + opt_OPT="$opt_PREV" + opt_ARG="$1" + opt_ARG_OK=yes + opt_PREV='' + else + # split argument into option and argument + case "$1" in + --[a-zA-Z0-9]*=*) + eval `echo "x$1" |\ + sed -e 's/^x--\([a-zA-Z0-9-]*\)=\(.*\)$/opt_OPT="\1";opt_ARG="\2"/'` + opt_STR=`echo $opt_OPT | sed -e 's/-/_/g'` + eval "opt_OPT=\${opt_ALIAS_${opt_STR}-${opt_OPT}}" + ;; + --[a-zA-Z0-9]*) + opt_OPT=`echo "x$1" | cut -c4-` + opt_STR=`echo $opt_OPT | sed -e 's/-/_/g'` + eval "opt_OPT=\${opt_ALIAS_${opt_STR}-${opt_OPT}}" + opt_ARG='' + ;; + -[a-zA-Z0-9]*) + eval `echo "x$1" |\ + sed -e 's/^x-\([a-zA-Z0-9]\)/opt_OPT="\1";/' \ + -e 's/";\(.*\)$/"; opt_ARG="\1"/'` + ;; + -[a-zA-Z0-9]) + opt_OPT=`echo "x$1" | cut -c3-` + opt_ARG='' + ;; + *) + break + ;; + esac + fi + + # eat up option + shift + + # determine whether option needs an argument + eval "opt_MODE=\$opt_MODE_${opt_OPT}" + if [ ".$opt_ARG" = . ] && [ ".$opt_ARG_OK" != .yes ]; then + if [ ".$opt_MODE" = ".:" ] || [ ".$opt_MODE" = ".+" ]; then + opt_PREV="$opt_OPT" + continue + fi + fi + + # process option + case $opt_MODE in + '.' ) + # boolean option + eval "opt_${opt_OPT}=yes" + ;; + ':' ) + # option with argument (multiple occurances override) + eval "opt_${opt_OPT}=\"\$opt_ARG\"" + ;; + '+' ) + # option with argument (multiple occurances append) + eval "opt_${opt_OPT}=\"\$opt_${opt_OPT}\${ASC_NL}\$opt_ARG\"" + ;; + * ) + echo "$msgprefix:Error: unknown option: \`$opt_OPT'" 1>&2 + echo "$msgprefix:Hint: run \`$toolcmdhelp -h' or \`man shtool' for details" 1>&2 + exit 1 + ;; + esac +done +if [ ".$opt_PREV" != . ]; then + echo "$msgprefix:Error: missing argument to option \`$opt_PREV'" 1>&2 + echo "$msgprefix:Hint: run \`$toolcmdhelp -h' or \`man shtool' for details" 1>&2 + exit 1 +fi + +# process help option +if [ ".$opt_h" = .yes ]; then + echo "Usage: $toolcmdhelp $str_usage" + exit 0 +fi + +# complain about incorrect number of arguments +case $arg_MODE in + '=' ) + if [ $# -ne $arg_NUMS ]; then + echo "$msgprefix:Error: invalid number of arguments (exactly $arg_NUMS expected)" 1>&2 + echo "$msgprefix:Hint: run \`$toolcmd -h' or \`man shtool' for details" 1>&2 + exit 1 + fi + ;; + '+' ) + if [ $# -lt $arg_NUMS ]; then + echo "$msgprefix:Error: invalid number of arguments (at least $arg_NUMS expected)" 1>&2 + echo "$msgprefix:Hint: run \`$toolcmd -h' or \`man shtool' for details" 1>&2 + exit 1 + fi + ;; +esac + +# establish a temporary file on request +if [ ".$gen_tmpfile" = .yes ]; then + # create (explicitly) secure temporary directory + if [ ".$TMPDIR" != . ]; then + tmpdir="$TMPDIR" + elif [ ".$TEMPDIR" != . ]; then + tmpdir="$TEMPDIR" + else + tmpdir="/tmp" + fi + tmpdir="$tmpdir/.shtool.$$" + ( umask 077 + rm -rf "$tmpdir" >/dev/null 2>&1 || true + mkdir "$tmpdir" >/dev/null 2>&1 + if [ $? -ne 0 ]; then + echo "$msgprefix:Error: failed to create temporary directory \`$tmpdir'" 1>&2 + exit 1 + fi + ) + + # create (implicitly) secure temporary file + tmpfile="$tmpdir/shtool.tmp" + touch "$tmpfile" +fi + +# utility function: map string to lower case +util_lower () { + echo "$1" | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' +} + +# utility function: map string to upper case +util_upper () { + echo "$1" | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' +} + +# cleanup procedure +shtool_exit () { + rc="$1" + if [ ".$gen_tmpfile" = .yes ]; then + rm -rf "$tmpdir" >/dev/null 2>&1 || true + fi + exit $rc +} + +## +## DISPATCH INTO SCRIPT BODY +## + +case $tool in + +echo ) + ## + ## echo -- Print string with optional construct expansion + ## Copyright (c) 1998-2008 Ralf S. Engelschall + ## + + text="$*" + + # check for broken escape sequence expansion + seo='' + bytes=`echo '\1' | wc -c | awk '{ printf("%s", $1); }'` + if [ ".$bytes" != .3 ]; then + bytes=`echo -E '\1' | wc -c | awk '{ printf("%s", $1); }'` + if [ ".$bytes" = .3 ]; then + seo='-E' + fi + fi + + # check for existing -n option (to suppress newline) + minusn='' + bytes=`echo -n 123 2>/dev/null | wc -c | awk '{ printf("%s", $1); }'` + if [ ".$bytes" = .3 ]; then + minusn='-n' + fi + + # determine terminal bold sequence + term_bold='' + term_norm='' + if [ ".$opt_e" = .yes ] && [ ".`echo $text | grep '%[Bb]'`" != . ]; then + case $TERM in + # for the most important terminal types we directly know the sequences + xterm|xterm*|vt220|vt220*) + term_bold=`awk 'BEGIN { printf("%c%c%c%c", 27, 91, 49, 109); }' /dev/null` + term_norm=`awk 'BEGIN { printf("%c%c%c", 27, 91, 109); }' /dev/null` + ;; + vt100|vt100*|cygwin) + term_bold=`awk 'BEGIN { printf("%c%c%c%c%c%c", 27, 91, 49, 109, 0, 0); }' /dev/null` + term_norm=`awk 'BEGIN { printf("%c%c%c%c%c", 27, 91, 109, 0, 0); }' /dev/null` + ;; + # for all others, we try to use a possibly existing `tput' or `tcout' utility + * ) + paths=`echo $PATH | sed -e 's/:/ /g'` + for tool in tput tcout; do + for dir in $paths; do + if [ -r "$dir/$tool" ]; then + for seq in bold md smso; do # 'smso' is last + bold="`$dir/$tool $seq 2>/dev/null`" + if [ ".$bold" != . ]; then + term_bold="$bold" + break + fi + done + if [ ".$term_bold" != . ]; then + for seq in sgr0 me rmso init reset; do # 'reset' is last + norm="`$dir/$tool $seq 2>/dev/null`" + if [ ".$norm" != . ]; then + term_norm="$norm" + break + fi + done + fi + break + fi + done + if [ ".$term_bold" != . ] && [ ".$term_norm" != . ]; then + break; + fi + done + ;; + esac + if [ ".$term_bold" = . ] || [ ".$term_norm" = . ]; then + echo "$msgprefix:Warning: unable to determine terminal sequence for bold mode" 1>&2 + term_bold='' + term_norm='' + fi + fi + + # determine user name + username='' + if [ ".$opt_e" = .yes ] && [ ".`echo $text | grep '%[uUgG]'`" != . ]; then + username="`(id -un) 2>/dev/null`" + if [ ".$username" = . ]; then + str="`(id) 2>/dev/null`" + if [ ".`echo $str | grep '^uid[ ]*=[ ]*[0-9]*('`" != . ]; then + username=`echo $str | sed -e 's/^uid[ ]*=[ ]*[0-9]*(//' -e 's/).*$//'` + fi + if [ ".$username" = . ]; then + username="$LOGNAME" + if [ ".$username" = . ]; then + username="$USER" + if [ ".$username" = . ]; then + username="`(whoami) 2>/dev/null |\ + awk '{ printf("%s", $1); }'`" + if [ ".$username" = . ]; then + username="`(who am i) 2>/dev/null |\ + awk '{ printf("%s", $1); }'`" + if [ ".$username" = . ]; then + username='unknown' + fi + fi + fi + fi + fi + fi + fi + + # determine user id + userid='' + if [ ".$opt_e" = .yes ] && [ ".`echo $text | grep '%U'`" != . ]; then + userid="`(id -u) 2>/dev/null`" + if [ ".$userid" = . ]; then + userid="`(id -u ${username}) 2>/dev/null`" + if [ ".$userid" = . ]; then + str="`(id) 2>/dev/null`" + if [ ".`echo $str | grep '^uid[ ]*=[ ]*[0-9]*('`" != . ]; then + userid=`echo $str | sed -e 's/^uid[ ]*=[ ]*//' -e 's/(.*$//'` + fi + if [ ".$userid" = . ]; then + userid=`(getent passwd ${username}) 2>/dev/null | \ + sed -e 's/[^:]*:[^:]*://' -e 's/:.*$//'` + if [ ".$userid" = . ]; then + userid=`grep "^${username}:" /etc/passwd 2>/dev/null | \ + sed -e 's/[^:]*:[^:]*://' -e 's/:.*$//'` + if [ ".$userid" = . ]; then + userid=`(ypmatch "${username}" passwd; nismatch "${username}" passwd) 2>/dev/null | \ + sed -e 'q' | sed -e 's/[^:]*:[^:]*://' -e 's/:.*$//'` + if [ ".$userid" = . ]; then + userid=`(nidump passwd . | grep "^${username}:") 2>/dev/null | \ + sed -e 's/[^:]*:[^:]*://' -e 's/:.*$//'` + if [ ".$userid" = . ]; then + userid='?' + fi + fi + fi + fi + fi + fi + fi + fi + + # determine (primary) group id + groupid='' + if [ ".$opt_e" = .yes ] && [ ".`echo $text | grep '%[gG]'`" != . ]; then + groupid="`(id -g ${username}) 2>/dev/null`" + if [ ".$groupid" = . ]; then + str="`(id) 2>/dev/null`" + if [ ".`echo $str | grep 'gid[ ]*=[ ]*[0-9]*('`" != . ]; then + groupid=`echo $str | sed -e 's/^.*gid[ ]*=[ ]*//' -e 's/(.*$//'` + fi + if [ ".$groupid" = . ]; then + groupid=`(getent passwd ${username}) 2>/dev/null | \ + sed -e 's/[^:]*:[^:]*:[^:]*://' -e 's/:.*$//'` + if [ ".$groupid" = . ]; then + groupid=`grep "^${username}:" /etc/passwd 2>/dev/null | \ + sed -e 's/[^:]*:[^:]*:[^:]*://' -e 's/:.*$//'` + if [ ".$groupid" = . ]; then + groupid=`(ypmatch "${username}" passwd; nismatch "${username}" passwd) 2>/dev/null | \ + sed -e 'q' | sed -e 's/[^:]*:[^:]*:[^:]*://' -e 's/:.*$//'` + if [ ".$groupid" = . ]; then + groupid=`(nidump passwd . | grep "^${username}:") 2>/dev/null | \ + sed -e 's/[^:]*:[^:]*:[^:]*://' -e 's/:.*$//'` + if [ ".$groupid" = . ]; then + groupid='?' + fi + fi + fi + fi + fi + fi + fi + + # determine (primary) group name + groupname='' + if [ ".$opt_e" = .yes ] && [ ".`echo $text | grep '%g'`" != . ]; then + groupname="`(id -gn ${username}) 2>/dev/null`" + if [ ".$groupname" = . ]; then + str="`(id) 2>/dev/null`" + if [ ".`echo $str | grep 'gid[ ]*=[ ]*[0-9]*('`" != . ]; then + groupname=`echo $str | sed -e 's/^.*gid[ ]*=[ ]*[0-9]*(//' -e 's/).*$//'` + fi + if [ ".$groupname" = . ]; then + groupname=`(getent group) 2>/dev/null | \ + grep "^[^:]*:[^:]*:${groupid}:" | \ + sed -e 's/:.*$//'` + if [ ".$groupname" = . ]; then + groupname=`grep "^[^:]*:[^:]*:${groupid}:" /etc/group 2>/dev/null | \ + sed -e 's/:.*$//'` + if [ ".$groupname" = . ]; then + groupname=`(ypcat group; niscat group) 2>/dev/null | \ + sed -e 'q' | grep "^[^:]*:[^:]*:${groupid}:" | \ + sed -e 's/:.*$//'` + if [ ".$groupname" = . ]; then + groupname=`(nidump group .) 2>/dev/null | \ + grep "^[^:]*:[^:]*:${groupid}:" | \ + sed -e 's/:.*$//'` + if [ ".$groupname" = . ]; then + groupname='?' + fi + fi + fi + fi + fi + fi + fi + + # determine host and domain name + hostname='' + domainname='' + if [ ".$opt_e" = .yes ] && [ ".`echo $text | grep '%h'`" != . ]; then + hostname="`(uname -n) 2>/dev/null |\ + awk '{ printf("%s", $1); }'`" + if [ ".$hostname" = . ]; then + hostname="`(hostname) 2>/dev/null |\ + awk '{ printf("%s", $1); }'`" + if [ ".$hostname" = . ]; then + hostname='unknown' + fi + fi + case $hostname in + *.* ) + domainname=".`echo $hostname | cut -d. -f2-`" + hostname="`echo $hostname | cut -d. -f1`" + ;; + esac + fi + if [ ".$opt_e" = .yes ] && [ ".`echo $text | grep '%d'`" != . ]; then + if [ ".$domainname" = . ]; then + if [ -f /etc/resolv.conf ]; then + domainname="`grep '^[ ]*domain' /etc/resolv.conf | sed -e 'q' |\ + sed -e 's/.*domain//' \ + -e 's/^[ ]*//' -e 's/^ *//' -e 's/^ *//' \ + -e 's/^\.//' -e 's/^/./' |\ + awk '{ printf("%s", $1); }'`" + if [ ".$domainname" = . ]; then + domainname="`grep '^[ ]*search' /etc/resolv.conf | sed -e 'q' |\ + sed -e 's/.*search//' \ + -e 's/^[ ]*//' -e 's/^ *//' -e 's/^ *//' \ + -e 's/ .*//' -e 's/ .*//' \ + -e 's/^\.//' -e 's/^/./' |\ + awk '{ printf("%s", $1); }'`" + fi + fi + fi + fi + + # determine current time + time_day='' + time_month='' + time_year='' + time_monthname='' + if [ ".$opt_e" = .yes ] && [ ".`echo $text | grep '%[DMYm]'`" != . ]; then + time_day=`date '+%d'` + time_month=`date '+%m'` + time_year=`date '+%Y' 2>/dev/null` + if [ ".$time_year" = . ]; then + time_year=`date '+%y'` + case $time_year in + [5-9][0-9]) time_year="19$time_year" ;; + [0-4][0-9]) time_year="20$time_year" ;; + esac + fi + case $time_month in + 1|01) time_monthname='Jan' ;; + 2|02) time_monthname='Feb' ;; + 3|03) time_monthname='Mar' ;; + 4|04) time_monthname='Apr' ;; + 5|05) time_monthname='May' ;; + 6|06) time_monthname='Jun' ;; + 7|07) time_monthname='Jul' ;; + 8|08) time_monthname='Aug' ;; + 9|09) time_monthname='Sep' ;; + 10) time_monthname='Oct' ;; + 11) time_monthname='Nov' ;; + 12) time_monthname='Dec' ;; + esac + fi + + # expand special ``%x'' constructs + if [ ".$opt_e" = .yes ]; then + text=`echo $seo "$text" |\ + sed -e "s/%B/${term_bold}/g" \ + -e "s/%b/${term_norm}/g" \ + -e "s/%u/${username}/g" \ + -e "s/%U/${userid}/g" \ + -e "s/%g/${groupname}/g" \ + -e "s/%G/${groupid}/g" \ + -e "s/%h/${hostname}/g" \ + -e "s/%d/${domainname}/g" \ + -e "s/%D/${time_day}/g" \ + -e "s/%M/${time_month}/g" \ + -e "s/%Y/${time_year}/g" \ + -e "s/%m/${time_monthname}/g" 2>/dev/null` + fi + + # create output + if [ .$opt_n = .no ]; then + echo $seo "$text" + else + # the harder part: echo -n is best, because + # awk may complain about some \xx sequences. + if [ ".$minusn" != . ]; then + echo $seo $minusn "$text" + else + echo dummy | awk '{ printf("%s", TEXT); }' TEXT="$text" + fi + fi + + shtool_exit 0 + ;; + +install ) + ## + ## install -- Install a program, script or datafile + ## Copyright (c) 1997-2008 Ralf S. Engelschall + ## + + # special case: "shtool install -d [...]" internally + # maps to "shtool mkdir -f -p -m 755 [...]" + if [ "$opt_d" = yes ]; then + cmd="$0 mkdir -f -p -m 755" + if [ ".$opt_o" != . ]; then + cmd="$cmd -o '$opt_o'" + fi + if [ ".$opt_g" != . ]; then + cmd="$cmd -g '$opt_g'" + fi + if [ ".$opt_v" = .yes ]; then + cmd="$cmd -v" + fi + if [ ".$opt_t" = .yes ]; then + cmd="$cmd -t" + fi + for dir in "$@"; do + eval "$cmd $dir" || shtool_exit $? + done + shtool_exit 0 + fi + + # determine source(s) and destination + argc=$# + srcs="" + while [ $# -gt 1 ]; do + srcs="$srcs $1" + shift + done + dstpath="$1" + + # type check for destination + dstisdir=0 + if [ -d $dstpath ]; then + dstpath=`echo "$dstpath" | sed -e 's:/$::'` + dstisdir=1 + fi + + # consistency check for destination + if [ $argc -gt 2 ] && [ $dstisdir = 0 ]; then + echo "$msgprefix:Error: multiple sources require destination to be directory" 1>&2 + shtool_exit 1 + fi + + # iterate over all source(s) + for src in $srcs; do + dst=$dstpath + + # if destination is a directory, append the input filename + if [ $dstisdir = 1 ]; then + dstfile=`echo "$src" | sed -e 's;.*/\([^/]*\)$;\1;'` + dst="$dst/$dstfile" + fi + + # check for correct arguments + if [ ".$src" = ".$dst" ]; then + echo "$msgprefix:Warning: source and destination are the same - skipped" 1>&2 + continue + fi + if [ -d "$src" ]; then + echo "$msgprefix:Warning: source \`$src' is a directory - skipped" 1>&2 + continue + fi + + # make a temp file name in the destination directory + dsttmp=`echo $dst |\ + sed -e 's;[^/]*$;;' -e 's;\(.\)/$;\1;' -e 's;^$;.;' \ + -e "s;\$;/#INST@$$#;"` + + # verbosity + if [ ".$opt_v" = .yes ]; then + echo "$src -> $dst" 1>&2 + fi + + # copy or move the file name to the temp name + # (because we might be not allowed to change the source) + if [ ".$opt_C" = .yes ]; then + opt_c=yes + fi + if [ ".$opt_c" = .yes ]; then + if [ ".$opt_t" = .yes ]; then + echo "cp $src $dsttmp" 1>&2 + fi + cp "$src" "$dsttmp" || shtool_exit $? + else + if [ ".$opt_t" = .yes ]; then + echo "mv $src $dsttmp" 1>&2 + fi + mv "$src" "$dsttmp" || shtool_exit $? + fi + + # adjust the target file + if [ ".$opt_e" != . ]; then + sed='sed' + OIFS="$IFS"; IFS="$ASC_NL"; set -- $opt_e; IFS="$OIFS" + for e + do + sed="$sed -e '$e'" + done + cp "$dsttmp" "$dsttmp.old" + chmod u+w $dsttmp + eval "$sed <$dsttmp.old >$dsttmp" || shtool_exit $? + rm -f $dsttmp.old + fi + if [ ".$opt_s" = .yes ]; then + if [ ".$opt_t" = .yes ]; then + echo "strip $dsttmp" 1>&2 + fi + strip $dsttmp || shtool_exit $? + fi + if [ ".$opt_o" != . ]; then + if [ ".$opt_t" = .yes ]; then + echo "chown $opt_o $dsttmp" 1>&2 + fi + chown $opt_o $dsttmp || shtool_exit $? + fi + if [ ".$opt_g" != . ]; then + if [ ".$opt_t" = .yes ]; then + echo "chgrp $opt_g $dsttmp" 1>&2 + fi + chgrp $opt_g $dsttmp || shtool_exit $? + fi + if [ ".$opt_m" != ".-" ]; then + if [ ".$opt_t" = .yes ]; then + echo "chmod $opt_m $dsttmp" 1>&2 + fi + chmod $opt_m $dsttmp || shtool_exit $? + fi + + # determine whether to do a quick install + # (has to be done _after_ the strip was already done) + quick=no + if [ ".$opt_C" = .yes ]; then + if [ -r $dst ]; then + if cmp -s "$src" "$dst"; then + quick=yes + fi + fi + fi + + # finally, install the file to the real destination + if [ $quick = yes ]; then + if [ ".$opt_t" = .yes ]; then + echo "rm -f $dsttmp" 1>&2 + fi + rm -f $dsttmp + else + if [ ".$opt_t" = .yes ]; then + echo "rm -f $dst && mv $dsttmp $dst" 1>&2 + fi + rm -f $dst && mv $dsttmp $dst + fi + done + + shtool_exit 0 + ;; + +mkdir ) + ## + ## mkdir -- Make one or more directories + ## Copyright (c) 1996-2008 Ralf S. Engelschall + ## + + errstatus=0 + for p in ${1+"$@"}; do + # if the directory already exists... + if [ -d "$p" ]; then + if [ ".$opt_f" = .no ] && [ ".$opt_p" = .no ]; then + echo "$msgprefix:Error: directory already exists: $p" 1>&2 + errstatus=1 + break + else + continue + fi + fi + # if the directory has to be created... + if [ ".$opt_p" = .no ]; then + if [ ".$opt_t" = .yes ]; then + echo "mkdir $p" 1>&2 + fi + mkdir $p || errstatus=$? + if [ ".$opt_o" != . ]; then + if [ ".$opt_t" = .yes ]; then + echo "chown $opt_o $p" 1>&2 + fi + chown $opt_o $p || errstatus=$? + fi + if [ ".$opt_g" != . ]; then + if [ ".$opt_t" = .yes ]; then + echo "chgrp $opt_g $p" 1>&2 + fi + chgrp $opt_g $p || errstatus=$? + fi + if [ ".$opt_m" != . ]; then + if [ ".$opt_t" = .yes ]; then + echo "chmod $opt_m $p" 1>&2 + fi + chmod $opt_m $p || errstatus=$? + fi + else + # the smart situation + set fnord `echo ":$p" |\ + sed -e 's/^:\//%/' \ + -e 's/^://' \ + -e 's/\// /g' \ + -e 's/^%/\//'` + shift + pathcomp='' + for d in ${1+"$@"}; do + pathcomp="$pathcomp$d" + case "$pathcomp" in + -* ) pathcomp="./$pathcomp" ;; + esac + if [ ! -d "$pathcomp" ]; then + if [ ".$opt_t" = .yes ]; then + echo "mkdir $pathcomp" 1>&2 + fi + mkdir $pathcomp || errstatus=$? + if [ ".$opt_o" != . ]; then + if [ ".$opt_t" = .yes ]; then + echo "chown $opt_o $pathcomp" 1>&2 + fi + chown $opt_o $pathcomp || errstatus=$? + fi + if [ ".$opt_g" != . ]; then + if [ ".$opt_t" = .yes ]; then + echo "chgrp $opt_g $pathcomp" 1>&2 + fi + chgrp $opt_g $pathcomp || errstatus=$? + fi + if [ ".$opt_m" != . ]; then + if [ ".$opt_t" = .yes ]; then + echo "chmod $opt_m $pathcomp" 1>&2 + fi + chmod $opt_m $pathcomp || errstatus=$? + fi + fi + pathcomp="$pathcomp/" + done + fi + done + + shtool_exit $errstatus + ;; + +platform ) + ## + ## platform -- Platform Identification Utility + ## Copyright (c) 2003-2008 Ralf S. Engelschall + ## + + # option post-processing + if [ ".$opt_t" != . ]; then + case "$opt_t" in + binary ) + # binary package id (OpenPKG RPM) + opt_F="%-%" + opt_L=yes + opt_S="" + opt_C="+" + ;; + build ) + # build time checking (OpenPKG RPM) + opt_F="%-%" + opt_L=yes + opt_S="" + opt_C="+" + ;; + gnu ) + # GNU config.guess style -- + opt_F="%-unknown-%" + opt_L=yes + opt_S="" + opt_C="+" + ;; + web ) + # non-whitespace HTTP Server-header id + opt_F="%-%" + opt_S="/" + opt_C="+" + ;; + summary) + # human readable verbose summary information + opt_F="Class: %[sc] (%[ac])\\nProduct: %[sp] (%[ap])\\nTechnology: %[st] (%[at])" + opt_S=" " + opt_C="/" + ;; + all-in-one ) + # full-table all-in-one information + opt_F="" + opt_F="${opt_F}concise architecture class: %\\n" + opt_F="${opt_F}regular architecture class: %{ac}\\n" + opt_F="${opt_F}verbose architecture class: %[ac]\\n" + opt_F="${opt_F}concise architecture product: %\\n" + opt_F="${opt_F}regular architecture product: %{ap}\\n" + opt_F="${opt_F}verbose architecture product: %[ap]\\n" + opt_F="${opt_F}concise architecture technology: %\\n" + opt_F="${opt_F}regular architecture technology: %{at}\\n" + opt_F="${opt_F}verbose architecture technology: %[at]\\n" + opt_F="${opt_F}concise system class: %\\n" + opt_F="${opt_F}regular system class: %{sc}\\n" + opt_F="${opt_F}verbose system class: %[sc]\\n" + opt_F="${opt_F}concise system product: %\\n" + opt_F="${opt_F}regular system product: %{sp}\\n" + opt_F="${opt_F}verbose system product: %[sp]\\n" + opt_F="${opt_F}concise system technology: %\\n" + opt_F="${opt_F}regular system technology: %{st}\\n" + opt_F="${opt_F}verbose system technology: %[st]" + ;; + * ) + echo "$msgprefix:Error: invalid type \`$opt_t'" 1>&2 + exit 1 + ;; + esac + fi + + # assemble initial platform information + UNAME_MACHINE=`(uname -m) 2>/dev/null` ||\ + UNAME_MACHINE=`(uname -p) 2>/dev/null` ||\ + UNAME_MACHINE='unknown' + UNAME_SYSTEM=`(uname -s) 2>/dev/null` ||\ + UNAME_SYSTEM='unknown' + UNAME_RELEASE=`(uname -r) 2>/dev/null` ||\ + UNAME_RELEASE=`(uname -v) 2>/dev/null` ||\ + UNAME_RELEASE='unknown' + + UNAME="${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}" + + AC=""; AP=""; AT="" + SC=""; SP=""; ST="" + + # dispatch into platform specific sections + case "${UNAME}" in + + # FreeBSD + *:FreeBSD:* ) + # determine architecture + AC="${UNAME_MACHINE}" + case "${AC}" in + i386 ) AC="iX86" ;; + esac + AP="${AC}" + AT="${AP}" + if [ ".${AT}" = ".iX86" ]; then + case "`(/sbin/sysctl -n hw.model) 2>&1`" in + *"Xeon"* | *"Pentium Pro"* | *"Cyrix 6x86MX"* | *"Pentium II"* | *"Pentium III"* | *"Pentium 4"* | *"Celeron"* ) AT="i686" ;; + *"Pentium"* ) AT="i586" ;; *"i486[SD]X"* | *"Cyrix 486"* | *"Cyrix [56]x86"* | *"Blue Lightning" | *"Cyrix 486S/DX" ) AT="i486" ;; + *"i386[SD]X"* | *"NexGen 586"* ) AT="i386" ;; + esac + fi + # determine system + r=`echo "${UNAME_RELEASE}" |\ + sed -e 's;[()];;' -e 's/\(-.*\)$/[\1]/'` + ST="FreeBSD ${r}" + SP="${ST}" + case "${r}" in + 1.* ) SC="4.3BSD" ;; + * ) SC="4.4BSD" ;; + esac + ;; + + # NetBSD + *:NetBSD:* ) + # determine architecture + AT="${UNAME_MACHINE}" + AP="${AT}" + case "${AP}" in + i[3-6]86 ) AP="iX86" ;; + esac + AC="${AP}" + # determine system + r=`echo "${UNAME_RELEASE}" | sed -e 's/\([-_].*\)$/[\1]/'` + ST="NetBSD ${r}" + SP="${ST}" + case "${r}" in + 0.* ) SC="4.3BSD" ;; + * ) SC="4.4BSD" ;; + esac + ;; + + # OpenBSD + *:OpenBSD:* ) + # determine architecture + AT="${UNAME_MACHINE}" + AP="${AT}" + case "${AP}" in + i[3-6]86 ) AP="iX86" ;; + esac + AC="${AP}" + # determine system + r=`echo "${UNAME_RELEASE}" | sed -e 's/\([-_].*\)$/[\1]/'` + ST="OpenBSD ${r}" + SP="${ST}" + SC="4.4BSD" + ;; + + # DragonFly BSD + *:DragonFly:* ) + # determine architecture + AT="${UNAME_MACHINE}" + AP="${AT}" + case "${AP}" in + i[3-6]86 ) AP="iX86" ;; + esac + AC="${AP}" + # determine system + r=`echo "${UNAME_RELEASE}" | sed -e 's/\([-_].*\)$/[\1]/'` + ST="DragonFly ${r}" + SP="${ST}" + SC="4.4BSD" + ;; + + # GNU/Linux + *:Linux:* ) + # determine architecture + AT="${UNAME_MACHINE}" + case "${AT}" in + ia64 ) AT="IA64" ;; + x86_64 ) AT='AMD64' ;; + parisc ) AT="HPPA32" ;; + parisc64 ) AT="HPPA64" ;; + esac + AP="${AT}" + case "${AP}" in + i[3-6]86 ) AP='iX86' ;; + esac + AC="${AP}" + # determine system + v_kern=`echo "${UNAME_RELEASE}" |\ + sed -e 's/^\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/'` + v_libc=`(strings /lib/libc.so.* | grep '^GLIBC_' | sed -e 's/^GLIBC_//' |\ + env -i sort -n | sed -n -e '$p' | sed -e 's/^\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/') 2>/dev/null` + ST="GNU/${v_libc}/<${v_kern}>" + if [ -f /etc/lsb-release ]; then + eval `( . /etc/lsb-release + echo "SC=\"LSB${LSB_VERSION}\"" + if [ ".${DISTRIB_ID}" != . -a ".${DISTRIB_RELEASE}" != . ]; then + echo "SP=\"${DISTRIB_ID} ${DISTRIB_RELEASE}\"" + fi + ) 2>/dev/null` + fi + if [ ".$SP" = . ]; then + for tagfile in x \ + `cd /etc && \ + /bin/ls *[_-]release *[_-]version 2>/dev/null | env -i sort | \ + sed -e '/^redhat-release$/d' -e '/^lsb-release$/d'; \ + echo redhat-release lsb-release` + do + [ ".${tagfile}" = .x ] && continue + [ ! -f "/etc/${tagfile}" ] && continue + n=`echo ${tagfile} | sed -e 's/[_-]release$//' -e 's/[_-]version$//'` + v=`(grep VERSION /etc/${tagfile}; cat /etc/${tagfile}) | grep '[0-9]' | sed -e 'q' |\ + sed -e 's/^/#/' \ + -e 's/^#[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*$/\1/' \ + -e 's/^#[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\).*$/\1/' \ + -e 's/^#[^0-9]*\([0-9][0-9]*\).*$/\1/' \ + -e 's/^#.*$//'` + case "`util_lower ${n}`" in + redhat ) + if [ ".`egrep '(Red Hat Enterprise Linux|CentOS)' /etc/${tagfile}`" != . ]; then + n="ed at nterprise inux" + else + n="ed at inux" + fi + ;; + debian ) n="Debian[ GNU/Linux]" ;; + ubuntu ) n="Ubuntu[ GNU/Linux]" ;; + fedora ) n=" Core[ GNU/Linux]" ;; + suse ) n="[Novell ]SUSE[ Linux]" ;; + mandrake*|mandriva ) n="Mandriva[ Linux]" ;; + gentoo ) n="Gentoo[ GNU/Linux]" ;; + slackware ) n="Slackware[ Linux]" ;; + turbolinux ) n="TurboLinux" ;; + unitedlinux ) n="UnitedLinux" ;; + * ) n="${n}[ GNU/Linux]" ;; + esac + case "$n" in + *"<"*">"* ) SP="$n <$v>" ;; + * ) SP="$n $v" ;; + esac + break + done + fi + [ ".$SP" = . ] && SP="${ST}" + [ ".$SC" = . ] && SC="LSB" + ;; + + # Sun Solaris + *:SunOS:* ) + # determine architecture + AT="${UNAME_MACHINE}" + case "${AT}" in + i86pc ) + AT="iX86" + case "`(/bin/isainfo -k) 2>&1`" in + amd64 ) AT="AMD64" ;; + esac + ;; + esac + AP="${AT}" + case "${AP}" in + sun4[cdm] ) AP="SPARC32" ;; + sun4[uv] ) AP="SPARC64" ;; + sun4* ) AP="SPARC" ;; + esac + AC="${AP}" + case "${AC}" in + SPARC* ) AC="SPARC" ;; + esac + # determine system + ST="[Sun ]SunOS ${UNAME_RELEASE}" + v=`echo "${UNAME_RELEASE}" |\ + sed -e 's;^4\.;1.;' \ + -e 's;^5\.\([0-6]\)[^0-9]*$;2.\1;' \ + -e 's;^5\.\([0-9][0-9]*\).*;\1;'` + SP="[Sun ]Solaris $v" + case "${UNAME_RELEASE}" in + 4.* ) SC="4.3BSD" ;; + 5.* ) SC="SVR4" ;; + esac + ;; + + # SCO UnixWare + *:UnixWare:* ) + # determine architecture + AT="${UNAME_MACHINE}" + case "${AT}" in + i[3-6]86 | ix86at ) AT="iX86" ;; + esac + AP="${AT}" + # determine system + v=`/sbin/uname -v` + ST="[SCO ]UnixWare ${v}" + SP="${ST}" + SC="SVR${UNAME_RELEASE}" + ;; + + # QNX + *:QNX:* ) + # determine architecture + AT="${UNAME_MACHINE}" + case "${AT}" in + x86pc ) AT="iX86" ;; + esac + AP="${AT}" + # determine system + v="${UNAME_RELEASE}" + ST="QNX[ Neutrino RTOS] ${v}" + v=`echo "${v}" | sed -e 's;^\([0-9][0-9]*\.[0-9][0-9]*\).*$;\1;'` + SP="QNX[ Neutrino RTOS] ${v}" + SC="QNX" + ;; + + # SGI IRIX + *:IRIX*:* ) + # determine architecture + AT="${UNAME_MACHINE}" + AP="${AT}" + case "${AP}:${UNAME_SYSTEM}" in + IP*:IRIX64 ) AP="MIPS64" ;; + IP*:* ) AP="MIPS" ;; + esac + AC="${AP}" + # determine system + v=`(/bin/uname -R || /bin/uname -r) 2>/dev/null | sed -e 's;[0-9.]* ;;'` + ST="[SGI ]IRIX ${v}" + v="${UNAME_RELEASE}" + SP="[SGI ]IRIX ${v}" + SC="4.2BSD/SVR3" + ;; + + # HP HP-UX + *:HP-UX:* ) + # determine architecture + AT="${UNAME_MACHINE}" + case "${AT}" in + ia64 ) AT="IA64" ;; + 9000/[34]?? ) AT=M68K ;; + 9000/[678][0-9][0-9]) + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523 ) AT="HPPA1.0" ;; + 528 ) AT="HPPA1.1" ;; + 532 ) AT="HPPA2.0" + case "${sc_kernel_bits}" in + 32 ) AT="${AT}n" ;; + 64 ) AT="${AT}w" ;; + esac + ;; + esac + ;; + esac + AP="${AT}" + case "${AP}" in + HPPA* ) AP="HPPA" ;; + esac + AC="${AP}" + # determine system + v=`echo "${UNAME_RELEASE}" | sed -e 's;^[^0-9]*;;'` + ST="[HP ]-" + SP="${ST}" + case "${v}" in + 10.* ) SC="SVR4.2" ;; + [7-9]* ) SC="SVR4" ;; + esac + ;; + + # HP Tru64 (OSF1) + *:OSF1:* ) + # determine architecture + AP="${UNAME_MACHINE}" + case "${AP}" in + alpha ) AP="Alpha" ;; + esac + alpha_type=`(/usr/sbin/psrinfo -v) 2>/dev/null |\ + sed -n -e 's/^.*The alpha \([^ ][^ ]*\).*processor.*$/\1/p' | sed -e 'q'` + AT="${AP}${alpha_type}" + AC="${AP}" + # determine system + v=`echo "${UNAME_RELEASE}" | sed -e 's;^[VTX];;'` + ST="[HP ]Tru64 ${v}" + SP="${ST}" + SC="OSF1" + ;; + + # IBM AIX + *:AIX:* ) + # determine architecture + cpu_arch=RS6000 + if [ -x /usr/sbin/lsdev -a -x /usr/sbin/lsattr ]; then + cpu_id=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if [ ".`/usr/sbin/lsattr -El ${cpu_id} | grep -i powerpc`" != . ]; then + cpu_arch=PPC + fi + elif [ -d /QOpenSys ]; then + # IBM i5/OS (aka OS/400) with PASE (Portable Application Solutions Environment) + cpu_arch=PPC + fi + if [ -x /usr/bin/oslevel ]; then + os_level=`/usr/bin/oslevel` + else + os_level="`uname -v`.`uname -r`" + fi + os_level=`echo "${os_level}" |\ + sed -e 's;^\([0-9][0-9]*\.[0-9][0-9]*\)\(\.[0-9][0-9]*\)\(.*\)$;<\1>\2[\3];' \ + -e 's;^\([0-9][0-9]*\.[0-9][0-9]*\)\(.*\)$;<\1>\2;'` + AT="${cpu_arch}" + AP="${AT}" + AC="${AP}" + # determine system + ST="[IBM ]${os_level}" + SP="${ST}" + case "${os_level}" in + [12]* ) SC="SVR2" ;; + * ) SC="SVR4" ;; + esac + ;; + + # Apple Mac OS X (Darwin) + *:Darwin:* ) + # determine architecture + AT="`uname -p`" + case "${AT}" in + powerpc ) AT="PPC" ;; + esac + AP="${AT}" + case "${AP}" in + i?86 ) AP="iX86" ;; + esac + AC="${AP}" + # determine system + unset v1; unset v2; unset v3 + eval `echo "${UNAME_RELEASE}" |\ + sed -e 's/^/#/' \ + -e 's/^#\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.\([0-9][0-9]*\).*$/v1="\1"; v2="\2"; v3="\3"/' \ + -e 's/^#\([0-9][0-9]*\)\.\([0-9][0-9]*\).*$/v1="\1"; v2="\2"/' \ + -e 's/^#\([0-9][0-9]*\).*$/v1="\1"/' \ + -e 's/^#.*$/v1="0"/'` + ST="[Apple ]<${UNAME_SYSTEM} ${v1}>${v2+.$v2}${v3+[.$v3]}" + SP="$ST" + v="`(sw_vers) 2>/dev/null | grep 'ProductVersion:' | sed -e 's/^ProductVersion:[^0-9]*\([0-9][0-9.]*\).*$/\1/'`" + if [ ".$v" = . ]; then + for name in System Server; do + if [ -f /System/Library/CoreServices/${name}Version.plist ]; then + v=`(defaults read "/System/Library/CoreServices/${name}Version" "ProductVersion") 2>/dev/null` + [ ".$v" != . ] && break + fi + done + fi + if [ ".$v" != . ]; then + unset v1; unset v2; unset v3 + eval `echo "${v}" |\ + sed -e 's/^/#/' \ + -e 's/^#\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.\([0-9][0-9]*\).*$/v1="\1"; v2="\2"; v3="\3"/' \ + -e 's/^#\([0-9][0-9]*\)\.\([0-9][0-9]*\).*$/v1="\1"; v2="\2"/' \ + -e 's/^#\([0-9][0-9]*\).*$/v1="\1"/' \ + -e 's/^#.*$/v1="0"/'` + SP="[Apple ]Mac OS X ${v1}${v2+.$v2}${v3+[.$v3]}" + fi + SC="4.4BSD/Mach3.0" + ;; + + # Windows/Cygwin + *:CYGWIN*:* ) + # determine architecture + AT="`uname -m`" + AP="${AT}" + case "${AP}" in + i?86 ) AP="iX86" ;; + esac + AC="${AP}" + # determine system + unset v1; unset v2; unset v3 + eval `echo "${UNAME_RELEASE}" |\ + sed -e 's/^/#/' \ + -e 's/^#\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.\([0-9][0-9]*\).*$/v1="\1"; v2="\2"; v3="\3"/' \ + -e 's/^#\([0-9][0-9]*\)\.\([0-9][0-9]*\).*$/v1="\1"; v2="\2"/' \ + -e 's/^#\([0-9][0-9]*\).*$/v1="\1"/' \ + -e 's/^#.*$/v1="0"/'` + ST="Cygwin ${v1}${v2+.$v2}${v3+[.$v3]}" + SP="$ST" + SC="Windows" + v=`echo "${UNAME_SYSTEM}" | sed -e 's/^CYGWIN_NT-//' |\ + sed -e 's/^/#/' -e 's/^#\([0-9][0-9]*\.[0-9][0-9]*\).*$/\1/' -e 's/^#.*$//'` + case "$v" in + 4.0 ) SC="$SC[ NT]" ;; + 5.0 ) SC="$SC[ 2000]" ;; + 5.1 ) SC="$SC[ XP]" ;; + 6.0 ) SC="$SC[ Vista]" ;; + esac + ;; + + # TODO ...ADD YOUR NEW PLATFORM CHECK HERE... TODO + # *:XXX:* ) + # ... + # ;; + + # ...A STILL UNKNOWN PLATFORM... + * ) + AT=`echo "${UNAME_MACHINE}" | sed -e "s; ;${opt_C};g"` + AP="${AT}" + AC="${AP}" + v=`echo "${UNAME_RELEASE}" |\ + sed -e 's/^/#/' \ + -e 's/^#[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*$/\1/' \ + -e 's/^#[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\).*$/\1/' \ + -e 's/^#[^0-9]*\([0-9][0-9]*\).*$/\1/' \ + -e 's/^#.*$/?/'` + ST="${UNAME_SYSTEM} ${v}" + SP="${ST}" + SC="${SP}" + ;; + + esac + + # provide fallback values + [ ".$AT" = . ] && AT="${AP:-${AC}}" + [ ".$AP" = . ] && AP="${AT:-${AC}}" + [ ".$AC" = . ] && AC="${AP:-${AT}}" + [ ".$ST" = . ] && ST="${SP:-${SC}}" + [ ".$SP" = . ] && SP="${ST:-${SC}}" + [ ".$SC" = . ] && SC="${SP:-${ST}}" + + # support explicit enforced verbose/concise output + if [ ".$opt_v" = .yes ]; then + opt_F=`echo ":$opt_F" | sed -e 's/^://' -e 's/%\([as][cpt]\)/%[\1]/g'` + elif [ ".$opt_c" = .yes ]; then + opt_F=`echo ":$opt_F" | sed -e 's/^://' -e 's/%\([as][cpt]\)/%<\1>/g'` + fi + + # provide verbose and concise variants + AC_V=""; AC_N=""; AC_C="" + AP_V=""; AP_N=""; AP_C="" + AT_V=""; AT_N=""; AT_C="" + SC_V=""; SC_N=""; SC_C="" + SP_V=""; SP_N=""; SP_C="" + ST_V=""; ST_N=""; ST_C="" + for var_lc in at ap ac st sp sc; do + case "$opt_F" in + *"%[${val_lc}]"* | *"%{${val_lc}}"* | *"%${val_lc}"* | *"%<${val_lc}>"* ) + var_uc=`util_upper "$var_lc"` + eval "val=\"\$${var_uc}\"" + val_V=""; val_N=""; val_C="" + case "$opt_F" in + *"%[${var_lc}]"* ) + val_V=`echo ":$val" | \ + sed -e 's/^://' \ + -e 's;\[\([^]]*\)\];\1;g' \ + -e 's;<\([^>]*\)>;\1;g' \ + -e "s; ;§§;g" \ + -e "s;/;%%;g" \ + -e "s;§§;${opt_S};g" \ + -e "s;%%;${opt_C};g"` + eval "${var_uc}_V=\"\${val_V}\"" + ;; + esac + case "$opt_F" in + *"%{${var_lc}}"* | *"%${var_lc}"* ) + val_N=`echo ":$val" | \ + sed -e 's/^://' \ + -e 's;\[\([^]]*\)\];;g' \ + -e 's;<\([^>]*\)>;\1;g' \ + -e "s; ;§§;g" \ + -e "s;/;%%;g" \ + -e "s;§§;${opt_S};g" \ + -e "s;%%;${opt_C};g"` + eval "${var_uc}_N=\"\${val_N}\"" + ;; + esac + case "$opt_F" in + *"%<${var_lc}>"* ) + val_C=`echo ":$val" | \ + sed -e 's/^://' \ + -e 's;\[\([^]]*\)\];;g' \ + -e 's;[^<]*<\([^>]*\)>[^<]*;\1;g' \ + -e "s; ;§§;g" \ + -e "s;/;%%;g" \ + -e "s;§§;${opt_S};g" \ + -e "s;%%;${opt_C};g"` + eval "${var_uc}_C=\"\${val_C}\"" + ;; + esac + ;; + esac + done + + # create output string + output=`echo ":$opt_F" |\ + sed -e "s/^://" \ + -e "s;%\\[ac\\];${AC_V};g" \ + -e "s;%{ac};${AC_N};g" \ + -e "s;%ac;${AC_N};g" \ + -e "s;%;${AC_C};g" \ + -e "s;%\\[ap\\];${AP_V};g" \ + -e "s;%{ap};${AP_N};g" \ + -e "s;%ap;${AP_N};g" \ + -e "s;%;${AP_C};g" \ + -e "s;%\\[at\\];${AT_V};g" \ + -e "s;%{at};${AT_N};g" \ + -e "s;%at;${AT_N};g" \ + -e "s;%;${AT_C};g" \ + -e "s;%\\[sc\\];${SC_V};g" \ + -e "s;%{sc};${SC_N};g" \ + -e "s;%sc;${SC_N};g" \ + -e "s;%;${SC_C};g" \ + -e "s;%\\[sp\\];${SP_V};g" \ + -e "s;%{sp};${SP_N};g" \ + -e "s;%sp;${SP_N};g" \ + -e "s;%;${SP_C};g" \ + -e "s;%\\[st\\];${ST_V};g" \ + -e "s;%{st};${ST_N};g" \ + -e "s;%st;${ST_N};g" \ + -e "s;%;${ST_C};g" \ + -e 's/\\\\n/^/g' |\ + tr '^' '\012'` + + # support lower/upper-case mapping + if [ ".$opt_L" = .yes ]; then + output=`util_lower "$output"` + elif [ ".$opt_U" = .yes ]; then + output=`util_upper "$output"` + fi + + # display output string + if [ ".$opt_n" = .yes ]; then + echo . | awk '{ printf("%s", output); }' output="$output" + else + echo "$output" + fi + + shtool_exit 0 + ;; + +path ) + ## + ## path -- Deal with program paths + ## Copyright (c) 1998-2008 Ralf S. Engelschall + ## + + namelist="$*" + + # check whether the test command supports the -x option + if [ -x /bin/sh ] 2>/dev/null; then + minusx="-x" + else + minusx="-r" + fi + + # split path string + paths="`echo $opt_p |\ + sed -e 's/^:/.:/' \ + -e 's/::/:.:/g' \ + -e 's/:$/:./' \ + -e 's/:/ /g'`" + + # SPECIAL REQUEST + # translate forward to reverse path + if [ ".$opt_r" = .yes ]; then + if [ "x$namelist" = "x." ]; then + rp='.' + else + rp='' + for pe in `IFS="$IFS/"; echo $namelist`; do + rp="../$rp" + done + fi + echo $rp | sed -e 's:/$::' + shtool_exit 0 + fi + + # SPECIAL REQUEST + # strip out directory or base name + if [ ".$opt_d" = .yes ]; then + echo "$namelist" |\ + sed -e 's;[^/]*$;;' -e 's;\(.\)/$;\1;' + shtool_exit 0 + fi + if [ ".$opt_b" = .yes ]; then + echo "$namelist" |\ + sed -e 's;.*/\([^/]*\)$;\1;' + shtool_exit 0 + fi + + # MAGIC SITUATION + # Perl Interpreter (perl) + if [ ".$opt_m" = .yes ] && [ ".$namelist" = .perl ]; then + rm -f $tmpfile >/dev/null 2>&1 + touch $tmpfile + found=0 + pc=99 + for dir in $paths; do + dir=`echo $dir | sed -e 's;/*$;;'` + nc=99 + for name in perl perl5 miniperl; do + if [ $minusx "$dir/$name" ] && [ ! -d "$dir/$name" ]; then + perl="$dir/$name" + pv=`$perl -e 'printf("%.3f", $]);'` + echo "$pv:$pc:$nc:$perl" >>$tmpfile + found=1 + fi + nc=`expr $nc - 1` + done + pc=`expr $pc - 1` + done + if [ $found = 1 ]; then + perl="`cat $tmpfile | sort -r -u | sed -e 'q' | cut -d: -f4`" + rm -f $tmpfile >/dev/null 2>&1 + echo "$perl" + shtool_exit 0 + fi + rm -f $tmpfile >/dev/null 2>&1 + shtool_exit 1 + fi + + # MAGIC SITUATION + # C pre-processor (cpp) + if [ ".$opt_m" = .yes ] && [ ".$namelist" = .cpp ]; then + echo >$tmpfile.c "#include " + echo >>$tmpfile.c "Syntax Error" + # 1. try the standard cc -E approach + cpp="${CC-cc} -E" + (eval "$cpp $tmpfile.c >/dev/null") 2>$tmpfile.out + my_error=`grep -v '^ *+' $tmpfile.out` + if [ ".$my_error" != . ]; then + # 2. try the cc -E approach and GCC's -traditional-ccp option + cpp="${CC-cc} -E -traditional-cpp" + (eval "$cpp $tmpfile.c >/dev/null") 2>$tmpfile.out + my_error=`grep -v '^ *+' $tmpfile.out` + if [ ".$my_error" != . ]; then + # 3. try a standalone cpp command in path and lib dirs + for path in $paths /lib /usr/lib /usr/local/lib; do + path=`echo $path | sed -e 's;/*$;;'` + if [ $minusx "$path/cpp" ] && [ ! -d "$path/cpp" ]; then + cpp="$path/cpp" + break + fi + done + if [ ".$cpp" != . ]; then + (eval "$cpp $tmpfile.c >/dev/null") 2>$tmpfile.out + my_error=`grep -v '^ *+' $tmpfile.out` + if [ ".$my_error" != . ]; then + # ok, we gave up... + cpp='' + fi + fi + fi + fi + rm -f $tmpfile >/dev/null 2>&1 + rm -f $tmpfile.c $tmpfile.out >/dev/null 2>&1 + if [ ".$cpp" != . ]; then + echo "$cpp" + shtool_exit 0 + fi + shtool_exit 1 + fi + + # STANDARD SITUATION + # iterate over names + for name in $namelist; do + # iterate over paths + for path in $paths; do + path=`echo $path | sed -e 's;/*$;;'` + if [ $minusx "$path/$name" ] && [ ! -d "$path/$name" ]; then + if [ ".$opt_s" != .yes ]; then + echo "$path/$name" + fi + shtool_exit 0 + fi + done + done + + shtool_exit 1 + ;; + +esac + +shtool_exit 0 + diff --git a/coregrade/src/confdefs.h b/coregrade/src/confdefs.h new file mode 100644 index 0000000..2562721 --- /dev/null +++ b/coregrade/src/confdefs.h @@ -0,0 +1,20 @@ +/* confdefs.h */ +#define PACKAGE_NAME "" +#define PACKAGE_TARNAME "" +#define PACKAGE_VERSION "" +#define PACKAGE_STRING "" +#define PACKAGE_BUGREPORT "" +#define PACKAGE_URL "" +#define COMPILE_DL_COREGRADE_API 1 +#define STDC_HEADERS 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_SYS_STAT_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STRING_H 1 +#define HAVE_MEMORY_H 1 +#define HAVE_STRINGS_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_UNISTD_H 1 +#define HAVE_DLFCN_H 1 +#define LT_OBJDIR ".libs/" diff --git a/coregrade/src/config.guess b/coregrade/src/config.guess new file mode 100755 index 0000000..b79252d --- /dev/null +++ b/coregrade/src/config.guess @@ -0,0 +1,1558 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright 1992-2013 Free Software Foundation, Inc. + +timestamp='2013-06-10' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# Originally written by Per Bothner. +# +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +# +# Please send patches with a ChangeLog entry to config-patches@gnu.org. + + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright 1992-2013 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +case "${UNAME_SYSTEM}" in +Linux|GNU|GNU/*) + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + LIBC=gnu + + eval $set_cc_for_build + cat <<-EOF > $dummy.c + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #else + LIBC=gnu + #endif + EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` + ;; +esac + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + s390x:SunOS:*:*) + echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux${UNAME_RELEASE} + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + eval $set_cc_for_build + SUN_ARCH="i386" + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH="x86_64" + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[4567]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`/usr/bin/uname -p` + case ${UNAME_PROCESSOR} in + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + *:MINGW64*:*) + echo ${UNAME_MACHINE}-pc-mingw64 + exit ;; + *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + i*:MSYS*:*) + echo ${UNAME_MACHINE}-pc-msys + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + *:Interix*:*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + 8664:Windows_NT:*) + echo x86_64-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + aarch64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC="gnulibc1" ; fi + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + arc:Linux:*:* | arceb:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi + else + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf + fi + fi + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + cris:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-${LIBC} + exit ;; + crisv32:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-${LIBC} + exit ;; + frv:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + hexagon:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + i*86:Linux:*:*) + echo ${UNAME_MACHINE}-pc-linux-${LIBC} + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=${UNAME_MACHINE}el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=${UNAME_MACHINE} + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } + ;; + or1k:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + or32:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-${LIBC} + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-${LIBC} + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; + PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; + *) echo hppa-unknown-linux-${LIBC} ;; + esac + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-${LIBC} + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-${LIBC} + exit ;; + ppc64le:Linux:*:*) + echo powerpc64le-unknown-linux-${LIBC} + exit ;; + ppcle:Linux:*:*) + echo powerpcle-unknown-linux-${LIBC} + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux-${LIBC} + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + tile*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-${LIBC} + exit ;; + x86_64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configury will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + x86_64:Haiku:*:*) + echo x86_64-unknown-haiku + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + eval $set_cc_for_build + if test "$UNAME_PROCESSOR" = unknown ; then + UNAME_PROCESSOR=powerpc + fi + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + fi + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NEO-?:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk${UNAME_RELEASE} + exit ;; + NSE-*:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; + x86_64:VMkernel:*:*) + echo ${UNAME_MACHINE}-unknown-esx + exit ;; +esac + +eval $set_cc_for_build +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix\n"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + c34*) + echo c34-convex-bsd + exit ;; + c38*) + echo c38-convex-bsd + exit ;; + c4*) + echo c4-convex-bsd + exit ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/coregrade/src/config.h b/coregrade/src/config.h new file mode 100644 index 0000000..7b213f5 --- /dev/null +++ b/coregrade/src/config.h @@ -0,0 +1,63 @@ +/* config.h. Generated from config.h.in by configure. */ +/* config.h.in. Generated from configure.in by autoheader. */ + +/* Whether to build coregrade_api as dynamic module */ +#define COMPILE_DL_COREGRADE_API 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#define LT_OBJDIR ".libs/" + +/* Define to 1 if your C compiler doesn't accept -c and -o together. */ +/* #undef NO_MINUS_C_MINUS_O */ + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "" + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 diff --git a/coregrade/src/config.h.in b/coregrade/src/config.h.in new file mode 100644 index 0000000..26ec2cd --- /dev/null +++ b/coregrade/src/config.h.in @@ -0,0 +1,62 @@ +/* config.h.in. Generated from configure.in by autoheader. */ + +/* Whether to build coregrade_api as dynamic module */ +#undef COMPILE_DL_COREGRADE_API + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#undef LT_OBJDIR + +/* Define to 1 if your C compiler doesn't accept -c and -o together. */ +#undef NO_MINUS_C_MINUS_O + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS diff --git a/coregrade/src/config.log b/coregrade/src/config.log new file mode 100644 index 0000000..f6cdac9 --- /dev/null +++ b/coregrade/src/config.log @@ -0,0 +1,761 @@ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by configure, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ ./configure --enable-coregrade_api + +## --------- ## +## Platform. ## +## --------- ## + +hostname = localhost.localdomain +uname -m = x86_64 +uname -r = 3.10.0-1062.9.1.el7.x86_64 +uname -s = Linux +uname -v = #1 SMP Fri Dec 6 15:49:49 UTC 2019 + +/usr/bin/uname -p = x86_64 +/bin/uname -X = unknown + +/bin/arch = x86_64 +/usr/bin/arch -k = unknown +/usr/convex/getsysinfo = unknown +/usr/bin/hostinfo = unknown +/bin/machine = unknown +/usr/bin/oslevel = unknown +/bin/universe = unknown + +PATH: /usr/local/bin +PATH: /bin +PATH: /usr/bin +PATH: /usr/local/sbin +PATH: /usr/sbin +PATH: /home/oameye/.local/bin +PATH: /home/oameye/bin + + +## ----------- ## +## Core tests. ## +## ----------- ## + +configure:2209: checking for grep that handles long lines and -e +configure:2267: result: /bin/grep +configure:2272: checking for egrep +configure:2334: result: /bin/grep -E +configure:2339: checking for a sed that does not truncate output +configure:2403: result: /bin/sed +configure:2537: checking for cc +configure:2553: found /bin/cc +configure:2564: result: cc +configure:2595: checking for C compiler version +configure:2604: cc --version >&5 +cc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39) +Copyright (C) 2015 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +configure:2615: $? = 0 +configure:2604: cc -v >&5 +Using built-in specs. +COLLECT_GCC=cc +COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper +Target: x86_64-redhat-linux +Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux +Thread model: posix +gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) +configure:2615: $? = 0 +configure:2604: cc -V >&5 +cc: error: unrecognized command line option '-V' +cc: fatal error: no input files +compilation terminated. +configure:2615: $? = 4 +configure:2604: cc -qversion >&5 +cc: error: unrecognized command line option '-qversion' +cc: fatal error: no input files +compilation terminated. +configure:2615: $? = 4 +configure:2635: checking whether the C compiler works +configure:2657: cc conftest.c >&5 +configure:2661: $? = 0 +configure:2709: result: yes +configure:2712: checking for C compiler default output file name +configure:2714: result: a.out +configure:2720: checking for suffix of executables +configure:2727: cc -o conftest conftest.c >&5 +configure:2731: $? = 0 +configure:2753: result: +configure:2775: checking whether we are cross compiling +configure:2783: cc -o conftest conftest.c >&5 +configure:2787: $? = 0 +configure:2794: ./conftest +configure:2798: $? = 0 +configure:2813: result: no +configure:2818: checking for suffix of object files +configure:2840: cc -c conftest.c >&5 +configure:2844: $? = 0 +configure:2865: result: o +configure:2869: checking whether we are using the GNU C compiler +configure:2888: cc -c conftest.c >&5 +configure:2888: $? = 0 +configure:2897: result: yes +configure:2906: checking whether cc accepts -g +configure:2926: cc -c -g conftest.c >&5 +configure:2926: $? = 0 +configure:2967: result: yes +configure:2984: checking for cc option to accept ISO C89 +configure:3047: cc -c -g -O2 conftest.c >&5 +configure:3047: $? = 0 +configure:3060: result: none needed +configure:3086: checking how to run the C preprocessor +configure:3117: cc -E conftest.c +configure:3117: $? = 0 +configure:3131: cc -E conftest.c +conftest.c:9:28: fatal error: ac_nonexistent.h: No such file or directory + #include + ^ +compilation terminated. +configure:3131: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| /* end confdefs.h. */ +| #include +configure:3156: result: cc -E +configure:3176: cc -E conftest.c +configure:3176: $? = 0 +configure:3190: cc -E conftest.c +conftest.c:9:28: fatal error: ac_nonexistent.h: No such file or directory + #include + ^ +compilation terminated. +configure:3190: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| /* end confdefs.h. */ +| #include +configure:3221: checking for icc +configure:3230: result: no +configure:3244: checking for suncc +configure:3253: result: no +configure:3271: checking whether cc understands -c and -o together +configure:3299: cc -c conftest.c -o conftest2.o >&5 +configure:3303: $? = 0 +configure:3309: cc -c conftest.c -o conftest2.o >&5 +configure:3313: $? = 0 +configure:3368: result: yes +configure:3382: checking for system library directory +configure:3397: result: lib +configure:3404: checking if compiler supports -R +configure:3423: cc -o conftest -g -O2 conftest.c -R /usr/lib >&5 +cc: error: unrecognized command line option '-R' +configure:3423: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| /* end confdefs.h. */ +| +| int +| main () +| { +| +| ; +| return 0; +| } +configure:3433: result: no +configure:3438: checking if compiler supports -Wl,-rpath, +configure:3457: cc -o conftest -g -O2 conftest.c -Wl,-rpath,/usr/lib >&5 +configure:3457: $? = 0 +configure:3467: result: yes +configure:3512: checking build system type +configure:3526: result: x86_64-unknown-linux-gnu +configure:3546: checking host system type +configure:3559: result: x86_64-unknown-linux-gnu +configure:3579: checking target system type +configure:3592: result: x86_64-unknown-linux-gnu +configure:3695: checking for PHP prefix +configure:3697: result: /usr +configure:3699: checking for PHP includes +configure:3701: result: -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib +configure:3703: checking for PHP extension directory +configure:3705: result: /usr/lib64/php/modules +configure:3707: checking for PHP installed headers prefix +configure:3709: result: /usr/include/php +configure:3712: checking if debug is enabled +configure:3738: result: no +configure:3741: checking if zts is enabled +configure:3767: result: no +configure:3838: checking for re2c +configure:3868: result: no +configure:3893: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers. +configure:3907: checking for gawk +configure:3924: found /bin/gawk +configure:3935: result: gawk +configure:3978: checking Whether to enable the "coregrade_api" extension +configure:4017: result: yes, shared +configure:4084: checking for g++ +configure:4100: found /bin/g++ +configure:4111: result: g++ +configure:4138: checking for C++ compiler version +configure:4147: g++ --version >&5 +g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39) +Copyright (C) 2015 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +configure:4158: $? = 0 +configure:4147: g++ -v >&5 +Using built-in specs. +COLLECT_GCC=g++ +COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper +Target: x86_64-redhat-linux +Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux +Thread model: posix +gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) +configure:4158: $? = 0 +configure:4147: g++ -V >&5 +g++: error: unrecognized command line option '-V' +g++: fatal error: no input files +compilation terminated. +configure:4158: $? = 4 +configure:4147: g++ -qversion >&5 +g++: error: unrecognized command line option '-qversion' +g++: fatal error: no input files +compilation terminated. +configure:4158: $? = 4 +configure:4162: checking whether we are using the GNU C++ compiler +configure:4181: g++ -c conftest.cpp >&5 +configure:4181: $? = 0 +configure:4190: result: yes +configure:4199: checking whether g++ accepts -g +configure:4219: g++ -c -g conftest.cpp >&5 +configure:4219: $? = 0 +configure:4260: result: yes +configure:4288: checking how to run the C++ preprocessor +configure:4315: g++ -E conftest.cpp +configure:4315: $? = 0 +configure:4329: g++ -E conftest.cpp +conftest.cpp:9:28: fatal error: ac_nonexistent.h: No such file or directory + #include + ^ +compilation terminated. +configure:4329: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| /* end confdefs.h. */ +| #include +configure:4354: result: g++ -E +configure:4374: g++ -E conftest.cpp +configure:4374: $? = 0 +configure:4388: g++ -E conftest.cpp +conftest.cpp:9:28: fatal error: ac_nonexistent.h: No such file or directory + #include + ^ +compilation terminated. +configure:4388: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| /* end confdefs.h. */ +| #include +configure:5112: checking how to print strings +configure:5139: result: printf +configure:5160: checking for a sed that does not truncate output +configure:5224: result: /bin/sed +configure:5242: checking for fgrep +configure:5304: result: /bin/grep -F +configure:5339: checking for ld used by cc +configure:5406: result: /bin/ld +configure:5413: checking if the linker (/bin/ld) is GNU ld +configure:5428: result: yes +configure:5440: checking for BSD- or MS-compatible name lister (nm) +configure:5489: result: /bin/nm -B +configure:5619: checking the name lister (/bin/nm -B) interface +configure:5626: cc -c -g -O2 conftest.c >&5 +configure:5629: /bin/nm -B "conftest.o" +configure:5632: output +0000000000000000 B some_variable +configure:5639: result: BSD nm +configure:5642: checking whether ln -s works +configure:5646: result: yes +configure:5654: checking the maximum length of command line arguments +configure:5784: result: 1572864 +configure:5801: checking whether the shell understands some XSI constructs +configure:5811: result: yes +configure:5815: checking whether the shell understands "+=" +configure:5821: result: yes +configure:5856: checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format +configure:5896: result: func_convert_file_noop +configure:5903: checking how to convert x86_64-unknown-linux-gnu file names to toolchain format +configure:5923: result: func_convert_file_noop +configure:5930: checking for /bin/ld option to reload object files +configure:5937: result: -r +configure:6011: checking for objdump +configure:6027: found /bin/objdump +configure:6038: result: objdump +configure:6070: checking how to recognize dependent libraries +configure:6272: result: pass_all +configure:6357: checking for dlltool +configure:6387: result: no +configure:6417: checking how to associate runtime and link libraries +configure:6444: result: printf %s\n +configure:6504: checking for ar +configure:6520: found /bin/ar +configure:6531: result: ar +configure:6568: checking for archiver @FILE support +configure:6585: cc -c -g -O2 conftest.c >&5 +configure:6585: $? = 0 +configure:6588: ar cru libconftest.a @conftest.lst >&5 +configure:6591: $? = 0 +configure:6596: ar cru libconftest.a @conftest.lst >&5 +ar: conftest.o: No such file or directory +configure:6599: $? = 1 +configure:6611: result: @ +configure:6669: checking for strip +configure:6685: found /bin/strip +configure:6696: result: strip +configure:6768: checking for ranlib +configure:6784: found /bin/ranlib +configure:6795: result: ranlib +configure:6872: checking for gawk +configure:6899: result: gawk +configure:6939: checking command to parse /bin/nm -B output from cc object +configure:7059: cc -c -g -O2 conftest.c >&5 +configure:7062: $? = 0 +configure:7066: /bin/nm -B conftest.o \| sed -n -e 's/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p' | sed '/ __gnu_lto/d' \> conftest.nm +configure:7069: $? = 0 +configure:7135: cc -o conftest -g -O2 -Wl,-rpath,/home/oameye/coregrade/coregrade/src/libconfig-1.3.1/.libs/ -L/home/oameye/coregrade/coregrade/src/libconfig-1.3.1/.libs/ conftest.c conftstm.o >&5 +configure:7138: $? = 0 +configure:7176: result: ok +configure:7213: checking for sysroot +configure:7243: result: no +configure:7320: cc -c -g -O2 conftest.c >&5 +configure:7323: $? = 0 +configure:7499: checking for mt +configure:7529: result: no +configure:7549: checking if : is a manifest tool +configure:7555: : '-?' +configure:7563: result: no +configure:8200: checking for ANSI C header files +configure:8220: cc -c -g -O2 conftest.c >&5 +configure:8220: $? = 0 +configure:8293: cc -o conftest -g -O2 -Wl,-rpath,/home/oameye/coregrade/coregrade/src/libconfig-1.3.1/.libs/ -L/home/oameye/coregrade/coregrade/src/libconfig-1.3.1/.libs/ conftest.c -lconfig++ -lstdc++ >&5 +configure:8293: $? = 0 +configure:8293: ./conftest +configure:8293: $? = 0 +configure:8304: result: yes +configure:8317: checking for sys/types.h +configure:8317: cc -c -g -O2 conftest.c >&5 +configure:8317: $? = 0 +configure:8317: result: yes +configure:8317: checking for sys/stat.h +configure:8317: cc -c -g -O2 conftest.c >&5 +configure:8317: $? = 0 +configure:8317: result: yes +configure:8317: checking for stdlib.h +configure:8317: cc -c -g -O2 conftest.c >&5 +configure:8317: $? = 0 +configure:8317: result: yes +configure:8317: checking for string.h +configure:8317: cc -c -g -O2 conftest.c >&5 +configure:8317: $? = 0 +configure:8317: result: yes +configure:8317: checking for memory.h +configure:8317: cc -c -g -O2 conftest.c >&5 +configure:8317: $? = 0 +configure:8317: result: yes +configure:8317: checking for strings.h +configure:8317: cc -c -g -O2 conftest.c >&5 +configure:8317: $? = 0 +configure:8317: result: yes +configure:8317: checking for inttypes.h +configure:8317: cc -c -g -O2 conftest.c >&5 +configure:8317: $? = 0 +configure:8317: result: yes +configure:8317: checking for stdint.h +configure:8317: cc -c -g -O2 conftest.c >&5 +configure:8317: $? = 0 +configure:8317: result: yes +configure:8317: checking for unistd.h +configure:8317: cc -c -g -O2 conftest.c >&5 +configure:8317: $? = 0 +configure:8317: result: yes +configure:8331: checking for dlfcn.h +configure:8331: cc -c -g -O2 conftest.c >&5 +configure:8331: $? = 0 +configure:8331: result: yes +configure:8548: checking for objdir +configure:8563: result: .libs +configure:8834: checking if cc supports -fno-rtti -fno-exceptions +configure:8852: cc -c -g -O2 -fno-rtti -fno-exceptions conftest.c >&5 +cc1: warning: command line option '-fno-rtti' is valid for C++/ObjC++ but not for C [enabled by default] +configure:8856: $? = 0 +configure:8869: result: no +configure:9196: checking for cc option to produce PIC +configure:9203: result: -fPIC -DPIC +configure:9211: checking if cc PIC flag -fPIC -DPIC works +configure:9229: cc -c -g -O2 -fPIC -DPIC -DPIC conftest.c >&5 +configure:9233: $? = 0 +configure:9246: result: yes +configure:9275: checking if cc static flag -static works +configure:9303: result: no +configure:9318: checking if cc supports -c -o file.o +configure:9339: cc -c -g -O2 -o out/conftest2.o conftest.c >&5 +configure:9343: $? = 0 +configure:9365: result: yes +configure:9373: checking if cc supports -c -o file.o +configure:9420: result: yes +configure:9453: checking whether the cc linker (/bin/ld -m elf_x86_64) supports shared libraries +configure:10606: result: yes +configure:10643: checking whether -lc should be explicitly linked in +configure:10651: cc -c -g -O2 conftest.c >&5 +configure:10654: $? = 0 +configure:10669: cc -shared -fPIC -DPIC conftest.o -v -Wl,-soname -Wl,conftest -o conftest 2\>\&1 \| /bin/grep -lc \>/dev/null 2\>\&1 +configure:10672: $? = 0 +configure:10686: result: no +configure:10846: checking dynamic linker characteristics +configure:11357: cc -o conftest -g -O2 -Wl,-rpath,/home/oameye/coregrade/coregrade/src/libconfig-1.3.1/.libs/ -L/home/oameye/coregrade/coregrade/src/libconfig-1.3.1/.libs/ -Wl,-rpath -Wl,/foo conftest.c -lconfig++ -lstdc++ >&5 +configure:11357: $? = 0 +configure:11583: result: GNU/Linux ld.so +configure:11690: checking how to hardcode library paths into programs +configure:11715: result: immediate +configure:12255: checking whether stripping libraries is possible +configure:12260: result: yes +configure:12295: checking if libtool supports shared libraries +configure:12297: result: yes +configure:12300: checking whether to build shared libraries +configure:12321: result: yes +configure:12324: checking whether to build static libraries +configure:12328: result: no +configure:12351: checking how to run the C++ preprocessor +configure:12417: result: g++ -E +configure:12437: g++ -E conftest.cpp +configure:12437: $? = 0 +configure:12451: g++ -E conftest.cpp +conftest.cpp:22:28: fatal error: ac_nonexistent.h: No such file or directory + #include + ^ +compilation terminated. +configure:12451: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "" +| #define PACKAGE_TARNAME "" +| #define PACKAGE_VERSION "" +| #define PACKAGE_STRING "" +| #define PACKAGE_BUGREPORT "" +| #define PACKAGE_URL "" +| #define COMPILE_DL_COREGRADE_API 1 +| #define STDC_HEADERS 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_DLFCN_H 1 +| #define LT_OBJDIR ".libs/" +| /* end confdefs.h. */ +| #include +configure:12620: checking for ld used by g++ +configure:12687: result: /bin/ld -m elf_x86_64 +configure:12694: checking if the linker (/bin/ld -m elf_x86_64) is GNU ld +configure:12709: result: yes +configure:12764: checking whether the g++ linker (/bin/ld -m elf_x86_64) supports shared libraries +configure:13769: result: yes +configure:13805: g++ -c -g -O2 conftest.cpp >&5 +configure:13808: $? = 0 +configure:14328: checking for g++ option to produce PIC +configure:14335: result: -fPIC -DPIC +configure:14343: checking if g++ PIC flag -fPIC -DPIC works +configure:14361: g++ -c -g -O2 -fPIC -DPIC -DPIC conftest.cpp >&5 +configure:14365: $? = 0 +configure:14378: result: yes +configure:14401: checking if g++ static flag -static works +configure:14429: result: no +configure:14441: checking if g++ supports -c -o file.o +configure:14462: g++ -c -g -O2 -o out/conftest2.o conftest.cpp >&5 +configure:14466: $? = 0 +configure:14488: result: yes +configure:14493: checking if g++ supports -c -o file.o +configure:14540: result: yes +configure:14570: checking whether the g++ linker (/bin/ld -m elf_x86_64) supports shared libraries +configure:14606: result: yes +configure:14747: checking dynamic linker characteristics +configure:15418: result: GNU/Linux ld.so +configure:15471: checking how to hardcode library paths into programs +configure:15496: result: immediate +configure:15796: creating ./config.status + +## ---------------------- ## +## Running config.status. ## +## ---------------------- ## + +This file was extended by config.status, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = + CONFIG_HEADERS = + CONFIG_LINKS = + CONFIG_COMMANDS = + $ ./config.status + +on localhost.localdomain + +config.status:942: creating config.h +config.status:1032: config.h is unchanged +config.status:1046: executing libtool commands + +## ---------------- ## +## Cache variables. ## +## ---------------- ## + +ac_cv_build=x86_64-unknown-linux-gnu +ac_cv_c_compiler_gnu=yes +ac_cv_cxx_compiler_gnu=yes +ac_cv_env_CCC_set= +ac_cv_env_CCC_value= +ac_cv_env_CC_set= +ac_cv_env_CC_value= +ac_cv_env_CFLAGS_set= +ac_cv_env_CFLAGS_value= +ac_cv_env_CPPFLAGS_set= +ac_cv_env_CPPFLAGS_value= +ac_cv_env_CPP_set= +ac_cv_env_CPP_value= +ac_cv_env_CXXCPP_set= +ac_cv_env_CXXCPP_value= +ac_cv_env_CXXFLAGS_set= +ac_cv_env_CXXFLAGS_value= +ac_cv_env_CXX_set= +ac_cv_env_CXX_value= +ac_cv_env_LDFLAGS_set= +ac_cv_env_LDFLAGS_value= +ac_cv_env_LIBS_set= +ac_cv_env_LIBS_value= +ac_cv_env_build_alias_set= +ac_cv_env_build_alias_value= +ac_cv_env_host_alias_set= +ac_cv_env_host_alias_value= +ac_cv_env_target_alias_set= +ac_cv_env_target_alias_value= +ac_cv_header_dlfcn_h=yes +ac_cv_header_inttypes_h=yes +ac_cv_header_memory_h=yes +ac_cv_header_stdc=yes +ac_cv_header_stdint_h=yes +ac_cv_header_stdlib_h=yes +ac_cv_header_string_h=yes +ac_cv_header_strings_h=yes +ac_cv_header_sys_stat_h=yes +ac_cv_header_sys_types_h=yes +ac_cv_header_unistd_h=yes +ac_cv_host=x86_64-unknown-linux-gnu +ac_cv_objext=o +ac_cv_path_EGREP='/bin/grep -E' +ac_cv_path_FGREP='/bin/grep -F' +ac_cv_path_GREP=/bin/grep +ac_cv_path_SED=/bin/sed +ac_cv_prog_AWK=gawk +ac_cv_prog_CPP='cc -E' +ac_cv_prog_CXXCPP='g++ -E' +ac_cv_prog_ac_ct_AR=ar +ac_cv_prog_ac_ct_CC=cc +ac_cv_prog_ac_ct_CXX=g++ +ac_cv_prog_ac_ct_OBJDUMP=objdump +ac_cv_prog_ac_ct_RANLIB=ranlib +ac_cv_prog_ac_ct_STRIP=strip +ac_cv_prog_cc_c89= +ac_cv_prog_cc_cc_c_o=yes +ac_cv_prog_cc_g=yes +ac_cv_prog_cxx_g=yes +ac_cv_target=x86_64-unknown-linux-gnu +lt_cv_ar_at_file=@ +lt_cv_archive_cmds_need_lc=no +lt_cv_deplibs_check_method=pass_all +lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_ld_reload_flag=-r +lt_cv_nm_interface='BSD nm' +lt_cv_objdir=.libs +lt_cv_path_LD=/bin/ld +lt_cv_path_LDCXX='/bin/ld -m elf_x86_64' +lt_cv_path_NM='/bin/nm -B' +lt_cv_path_mainfest_tool=no +lt_cv_prog_compiler_c_o=yes +lt_cv_prog_compiler_c_o_CXX=yes +lt_cv_prog_compiler_pic='-fPIC -DPIC' +lt_cv_prog_compiler_pic_CXX='-fPIC -DPIC' +lt_cv_prog_compiler_pic_works=yes +lt_cv_prog_compiler_pic_works_CXX=yes +lt_cv_prog_compiler_rtti_exceptions=no +lt_cv_prog_compiler_static_works=no +lt_cv_prog_compiler_static_works_CXX=no +lt_cv_prog_gnu_ld=yes +lt_cv_prog_gnu_ldcxx=yes +lt_cv_sharedlib_from_linklib_cmd='printf %s\n' +lt_cv_shlibpath_overrides_runpath=no +lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p'\'' | sed '\''/ __gnu_lto/d'\''' +lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \([^ ]*\)[ ]*$/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"\2", (void *) \&\2},/p'\''' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='sed -n -e '\''s/^: \([^ ]*\)[ ]*$/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \(lib[^ ]*\)$/ {"\2", (void *) \&\2},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"lib\2", (void *) \&\2},/p'\''' +lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^T .* \(.*\)$/extern int \1();/p'\'' -e '\''s/^[ABCDGIRSTW]* .* \(.*\)$/extern char \1;/p'\''' +lt_cv_sys_max_cmd_len=1572864 +lt_cv_to_host_file_cmd=func_convert_file_noop +lt_cv_to_tool_file_cmd=func_convert_file_noop +php_cv_cc_dashr=no +php_cv_cc_rpath=yes + +## ----------------- ## +## Output variables. ## +## ----------------- ## + +AR='ar' +AWK='gawk' +CC='cc' +CFLAGS='-g -O2' +CONFIGURE_COMMAND=' '\''./configure'\'' '\''--enable-coregrade_api'\''' +CONFIGURE_OPTIONS=' '\''--enable-coregrade_api'\''' +CPP='cc -E' +CPPFLAGS=' -DHAVE_CONFIG_H' +CXX='g++' +CXXCPP='g++ -E' +CXXFLAGS='-g -O2' +DEFS='-DHAVE_CONFIG_H' +DLLTOOL='false' +DSYMUTIL='' +DUMPBIN='' +ECHO_C='' +ECHO_N='-n' +ECHO_T='' +EGREP='/bin/grep -E' +EXEEXT='' +FGREP='/bin/grep -F' +GREP='/bin/grep' +LD='/bin/ld -m elf_x86_64' +LDFLAGS=' -Wl,-rpath,/home/oameye/coregrade/coregrade/src/libconfig-1.3.1/.libs/ -L/home/oameye/coregrade/coregrade/src/libconfig-1.3.1/.libs/' +LIBOBJS='' +LIBS='-lconfig++ -lstdc++ ' +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +LIPO='' +LN_S='ln -s' +LTLIBOBJS='' +MANIFEST_TOOL=':' +NM='/bin/nm -B' +NMEDIT='' +OBJDUMP='objdump' +OBJEXT='o' +OTOOL64='' +OTOOL='' +PACKAGE_BUGREPORT='' +PACKAGE_NAME='' +PACKAGE_STRING='' +PACKAGE_TARNAME='' +PACKAGE_URL='' +PACKAGE_VERSION='' +PATH_SEPARATOR=':' +RANLIB='ranlib' +RE2C='exit 0;' +SED='/bin/sed' +SHELL='/bin/sh' +SHLIB_DL_SUFFIX_NAME='so' +SHLIB_SUFFIX_NAME='so' +STRIP='strip' +ac_ct_AR='ar' +ac_ct_CC='cc' +ac_ct_CXX='g++' +ac_ct_DUMPBIN='' +bindir='${exec_prefix}/bin' +build='x86_64-unknown-linux-gnu' +build_alias='' +build_cpu='x86_64' +build_os='linux-gnu' +build_vendor='unknown' +datadir='${datarootdir}' +datarootdir='${prefix}/share' +docdir='${datarootdir}/doc/${PACKAGE}' +dvidir='${docdir}' +exec_prefix='$(prefix)' +host='x86_64-unknown-linux-gnu' +host_alias='x86_64-unknown-linux-gnu' +host_cpu='x86_64' +host_os='linux-gnu' +host_vendor='unknown' +htmldir='${docdir}' +includedir='${prefix}/include' +infodir='${datarootdir}/info' +libdir='${exec_prefix}/lib' +libexecdir='${exec_prefix}/libexec' +localedir='${datarootdir}/locale' +localstatedir='${prefix}/var' +mandir='${datarootdir}/man' +oldincludedir='/usr/include' +pdfdir='${docdir}' +prefix='/usr' +program_transform_name='s,x,x,' +psdir='${docdir}' +sbindir='${exec_prefix}/sbin' +sharedstatedir='${prefix}/com' +sysconfdir='${prefix}/etc' +target='x86_64-unknown-linux-gnu' +target_alias='' +target_cpu='x86_64' +target_os='linux-gnu' +target_vendor='unknown' + +## ----------- ## +## confdefs.h. ## +## ----------- ## + +/* confdefs.h */ +#define PACKAGE_NAME "" +#define PACKAGE_TARNAME "" +#define PACKAGE_VERSION "" +#define PACKAGE_STRING "" +#define PACKAGE_BUGREPORT "" +#define PACKAGE_URL "" +#define COMPILE_DL_COREGRADE_API 1 +#define STDC_HEADERS 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_SYS_STAT_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STRING_H 1 +#define HAVE_MEMORY_H 1 +#define HAVE_STRINGS_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_UNISTD_H 1 +#define HAVE_DLFCN_H 1 +#define LT_OBJDIR ".libs/" + +configure: exit 0 diff --git a/coregrade/src/config.m4 b/coregrade/src/config.m4 new file mode 100644 index 0000000..a0ec6c7 --- /dev/null +++ b/coregrade/src/config.m4 @@ -0,0 +1,31 @@ +PHP_ARG_ENABLE(coregrade_api, + [Whether to enable the "coregrade_api" extension], + [ --enable-coregrade_api Enable "coregrade_api" extension support]) + +if test $PHP_COREGRADE_API != "no"; then + PHP_REQUIRE_CXX() + PHP_SUBST(COREGRADE_API_SHARED_LIBADD) + PHP_ADD_LIBRARY(stdc++, 1, COREGRADE_API_SHARED_LIBADD) + PHP_ADD_INCLUDE(/usr/include/pgsql) + PHP_ADD_LIBRARY_WITH_PATH(pq, /usr/lib64, COREGRADE_API_SHARED_LIBADD) + PHP_ADD_LIBRARY(curl, 1, COREGRADE_API_SHARED_LIBADD) + PHP_ADD_LIBRARY(config++, 1, COREGRADE_API_SHARED_LIBADD) + PHP_ADD_LIBRARY(gsoapssl++, 1, COREGRADE_API_SHARED_LIBADD) + PHP_ADD_LIBRARY(ssl, 1, COREGRADE_API_SHARED_LIBADD) + PHP_ADD_LIBRARY(z, 1, COREGRADE_API_SHARED_LIBADD) + + LIBCFG_DIR="`pwd`/libconfig-1.3.1" + + PHP_ADD_LIBRARY_WITH_PATH(config++, "$LIBCFG_DIR/.libs/") + + PHP_NEW_EXTENSION( + coregrade_api, + core/*.cc shared_tool/*.cc, + $ext_shared, + ,-I@ext_srcdir@/libconfig-1.3.1) + PHP_DEFINE([COREGRADE_API_NS],[\"coregrade_api_`id -u -n`\"],[]) + PHP_DEFINE([COREGRADE_CONFIG],[\"`pwd|sed s/src//`etc/\"],[]) + PHP_DEFINE([COREGRADE_LOG],[\"`pwd|sed s/src//`logs/coregrade_api.log\"],[]) + PHP_DEFINE([TMPL_PREFIX],[\"`pwd|sed s/src//`email/\"],[]) + PHP_DEFINE([FILELOG_MAX_LEVEL],[9],[]) +fi diff --git a/coregrade/src/config.nice b/coregrade/src/config.nice new file mode 100755 index 0000000..6060804 --- /dev/null +++ b/coregrade/src/config.nice @@ -0,0 +1,7 @@ +#! /bin/sh +# +# Created by configure + +'./configure' \ +'--enable-coregrade_api' \ +"$@" diff --git a/coregrade/src/config.status b/coregrade/src/config.status new file mode 100755 index 0000000..b0877a6 --- /dev/null +++ b/coregrade/src/config.status @@ -0,0 +1,1855 @@ +#! /bin/sh +# Generated by configure. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by $as_me, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +# Files that config.status was made for. +config_headers=" config.h" +config_commands=" libtool" + +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to the package provider." + +ac_cs_config="'--enable-coregrade_api'" +ac_cs_version="\ +config.status +configured by ./configure, generated by GNU Autoconf 2.69, + with options \"$ac_cs_config\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='/home/oameye/coregrade/coregrade/src' +srcdir='.' +AWK='gawk' +test -n "$AWK" || AWK=awk +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +if $ac_cs_recheck; then + set X /bin/sh './configure' '--enable-coregrade_api' $ac_configure_extra_args --no-create --no-recursion + shift + $as_echo "running CONFIG_SHELL=/bin/sh $*" >&6 + CONFIG_SHELL='/bin/sh' + export CONFIG_SHELL + exec "$@" +fi + +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +# +# INIT-COMMANDS +# + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' +double_quote_subst='s/\(["`\\]\)/\\\1/g' +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' +macro_version='2.4.2' +macro_revision='1.3337' +enable_shared='yes' +enable_static='no' +pic_mode='default' +enable_fast_install='yes' +SHELL='/bin/sh' +ECHO='printf %s\n' +PATH_SEPARATOR=':' +host_alias='x86_64-unknown-linux-gnu' +host='x86_64-unknown-linux-gnu' +host_os='linux-gnu' +build_alias='' +build='x86_64-unknown-linux-gnu' +build_os='linux-gnu' +SED='/bin/sed' +Xsed='/bin/sed -e 1s/^X//' +GREP='/bin/grep' +EGREP='/bin/grep -E' +FGREP='/bin/grep -F' +LD='/bin/ld -m elf_x86_64' +NM='/bin/nm -B' +LN_S='ln -s' +max_cmd_len='1572864' +ac_objext='o' +exeext='' +lt_unset='unset' +lt_SP2NL='tr \040 \012' +lt_NL2SP='tr \015\012 \040\040' +lt_cv_to_host_file_cmd='func_convert_file_noop' +lt_cv_to_tool_file_cmd='func_convert_file_noop' +reload_flag=' -r' +reload_cmds='$LD$reload_flag -o $output$reload_objs' +OBJDUMP='objdump' +deplibs_check_method='pass_all' +file_magic_cmd='$MAGIC_CMD' +file_magic_glob='' +want_nocaseglob='no' +DLLTOOL='false' +sharedlib_from_linklib_cmd='printf %s\n' +AR='ar' +AR_FLAGS='cru' +archiver_list_spec='@' +STRIP='strip' +RANLIB='ranlib' +old_postinstall_cmds='chmod 644 $oldlib~$RANLIB $tool_oldlib' +old_postuninstall_cmds='' +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs~$RANLIB $tool_oldlib' +lock_old_archive_extraction='no' +CC='cc' +CFLAGS='-g -O2' +compiler='g++' +GCC='yes' +lt_cv_sys_global_symbol_pipe='sed -n -e '\''s/^.*[ ]\([ABCDGIRSTW][ABCDGIRSTW]*\)[ ][ ]*\([_A-Za-z][_A-Za-z0-9]*\)$/\1 \2 \2/p'\'' | sed '\''/ __gnu_lto/d'\''' +lt_cv_sys_global_symbol_to_cdecl='sed -n -e '\''s/^T .* \(.*\)$/extern int \1();/p'\'' -e '\''s/^[ABCDGIRSTW]* .* \(.*\)$/extern char \1;/p'\''' +lt_cv_sys_global_symbol_to_c_name_address='sed -n -e '\''s/^: \([^ ]*\)[ ]*$/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"\2", (void *) \&\2},/p'\''' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='sed -n -e '\''s/^: \([^ ]*\)[ ]*$/ {\"\1\", (void *) 0},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \(lib[^ ]*\)$/ {"\2", (void *) \&\2},/p'\'' -e '\''s/^[ABCDGIRSTW]* \([^ ]*\) \([^ ]*\)$/ {"lib\2", (void *) \&\2},/p'\''' +nm_file_list_spec='@' +lt_sysroot='' +objdir='.libs' +MAGIC_CMD='file' +lt_prog_compiler_no_builtin_flag=' -fno-builtin' +lt_prog_compiler_pic=' -fPIC -DPIC' +lt_prog_compiler_wl='-Wl,' +lt_prog_compiler_static='' +lt_cv_prog_compiler_c_o='yes' +need_locks='no' +MANIFEST_TOOL=':' +DSYMUTIL='' +NMEDIT='' +LIPO='' +OTOOL='' +OTOOL64='' +libext='a' +shrext_cmds='.so' +extract_expsyms_cmds='' +archive_cmds_need_lc='no' +enable_shared_with_static_runtimes='no' +export_dynamic_flag_spec='${wl}--export-dynamic' +whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' +compiler_needs_object='no' +old_archive_from_new_cmds='' +old_archive_from_expsyms_cmds='' +archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' +module_cmds='' +module_expsym_cmds='' +with_gnu_ld='yes' +allow_undefined_flag='' +no_undefined_flag='' +hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +hardcode_libdir_separator='' +hardcode_direct='no' +hardcode_direct_absolute='no' +hardcode_minus_L='no' +hardcode_shlibpath_var='unsupported' +hardcode_automatic='no' +inherit_rpath='no' +link_all_deplibs='unknown' +always_export_symbols='no' +export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' +exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' +include_expsyms='' +prelink_cmds='' +postlink_cmds='' +file_list_spec='' +variables_saved_for_relink='PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH' +need_lib_prefix='no' +need_version='no' +version_type='linux' +runpath_var='LD_RUN_PATH' +shlibpath_var='LD_LIBRARY_PATH' +shlibpath_overrides_runpath='no' +libname_spec='lib$name' +library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +soname_spec='${libname}${release}${shared_ext}$major' +install_override_mode='' +postinstall_cmds='' +postuninstall_cmds='' +finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' +finish_eval='' +hardcode_into_libs='yes' +sys_lib_search_path_spec='/usr/lib/gcc/x86_64-redhat-linux/4.8.5 /usr/lib64 /lib64 ' +sys_lib_dlsearch_path_spec='/lib64 /usr/lib64 /lib /usr/lib /usr/lib64//bind9-export/ /usr/lib64/dyninst /usr/lib64/mysql ' +hardcode_action='immediate' +enable_dlopen='unknown' +enable_dlopen_self='unknown' +enable_dlopen_self_static='unknown' +old_striplib='strip --strip-debug' +striplib='strip --strip-unneeded' +compiler_lib_search_dirs='' +predep_objects='' +postdep_objects='' +predeps='' +postdeps='' +compiler_lib_search_path='' +LD_CXX='/bin/ld -m elf_x86_64' +reload_flag_CXX=' -r' +reload_cmds_CXX='$LD$reload_flag -o $output$reload_objs' +old_archive_cmds_CXX='$AR $AR_FLAGS $oldlib$oldobjs~$RANLIB $tool_oldlib' +compiler_CXX='g++' +GCC_CXX='yes' +lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' +lt_prog_compiler_pic_CXX=' -fPIC -DPIC' +lt_prog_compiler_wl_CXX='-Wl,' +lt_prog_compiler_static_CXX='' +lt_cv_prog_compiler_c_o_CXX='yes' +archive_cmds_need_lc_CXX='no' +enable_shared_with_static_runtimes_CXX='no' +export_dynamic_flag_spec_CXX='${wl}--export-dynamic' +whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' +compiler_needs_object_CXX='no' +old_archive_from_new_cmds_CXX='' +old_archive_from_expsyms_cmds_CXX='' +archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' +archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +module_cmds_CXX='' +module_expsym_cmds_CXX='' +with_gnu_ld_CXX='yes' +allow_undefined_flag_CXX='' +no_undefined_flag_CXX='' +hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' +hardcode_libdir_separator_CXX='' +hardcode_direct_CXX='no' +hardcode_direct_absolute_CXX='no' +hardcode_minus_L_CXX='no' +hardcode_shlibpath_var_CXX='unsupported' +hardcode_automatic_CXX='no' +inherit_rpath_CXX='no' +link_all_deplibs_CXX='unknown' +always_export_symbols_CXX='no' +export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' +exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' +include_expsyms_CXX='' +prelink_cmds_CXX='' +postlink_cmds_CXX='' +file_list_spec_CXX='' +hardcode_action_CXX='immediate' +compiler_lib_search_dirs_CXX='/usr/lib/gcc/x86_64-redhat-linux/4.8.5 /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64 /lib/../lib64 /usr/lib/../lib64 /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../..' +predep_objects_CXX='/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/crti.o /usr/lib/gcc/x86_64-redhat-linux/4.8.5/crtbeginS.o' +postdep_objects_CXX='/usr/lib/gcc/x86_64-redhat-linux/4.8.5/crtendS.o /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/crtn.o' +predeps_CXX='' +postdeps_CXX='-lstdc++ -lm -lgcc_s -lc -lgcc_s' +compiler_lib_search_path_CXX='-L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../..' + +LTCC='cc' +LTCFLAGS='-g -O2' +compiler='cc' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in SHELL ECHO PATH_SEPARATOR SED GREP EGREP FGREP LD NM LN_S lt_SP2NL lt_NL2SP reload_flag OBJDUMP deplibs_check_method file_magic_cmd file_magic_glob want_nocaseglob DLLTOOL sharedlib_from_linklib_cmd AR AR_FLAGS archiver_list_spec STRIP RANLIB CC CFLAGS compiler lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl lt_cv_sys_global_symbol_to_c_name_address lt_cv_sys_global_symbol_to_c_name_address_lib_prefix nm_file_list_spec lt_prog_compiler_no_builtin_flag lt_prog_compiler_pic lt_prog_compiler_wl lt_prog_compiler_static lt_cv_prog_compiler_c_o need_locks MANIFEST_TOOL DSYMUTIL NMEDIT LIPO OTOOL OTOOL64 shrext_cmds export_dynamic_flag_spec whole_archive_flag_spec compiler_needs_object with_gnu_ld allow_undefined_flag no_undefined_flag hardcode_libdir_flag_spec hardcode_libdir_separator exclude_expsyms include_expsyms file_list_spec variables_saved_for_relink libname_spec library_names_spec soname_spec install_override_mode finish_eval old_striplib striplib compiler_lib_search_dirs predep_objects postdep_objects predeps postdeps compiler_lib_search_path LD_CXX reload_flag_CXX compiler_CXX lt_prog_compiler_no_builtin_flag_CXX lt_prog_compiler_pic_CXX lt_prog_compiler_wl_CXX lt_prog_compiler_static_CXX lt_cv_prog_compiler_c_o_CXX export_dynamic_flag_spec_CXX whole_archive_flag_spec_CXX compiler_needs_object_CXX with_gnu_ld_CXX allow_undefined_flag_CXX no_undefined_flag_CXX hardcode_libdir_flag_spec_CXX hardcode_libdir_separator_CXX exclude_expsyms_CXX include_expsyms_CXX file_list_spec_CXX compiler_lib_search_dirs_CXX predep_objects_CXX postdep_objects_CXX predeps_CXX postdeps_CXX compiler_lib_search_path_CXX; do + case `eval \\$ECHO \\""\\$$var"\\"` in + *[\\\`\"\$]*) + eval "lt_$var=\\\"\`\$ECHO \"\$$var\" | \$SED \"\$sed_quote_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\$$var\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds old_postinstall_cmds old_postuninstall_cmds old_archive_cmds extract_expsyms_cmds old_archive_from_new_cmds old_archive_from_expsyms_cmds archive_cmds archive_expsym_cmds module_cmds module_expsym_cmds export_symbols_cmds prelink_cmds postlink_cmds postinstall_cmds postuninstall_cmds finish_cmds sys_lib_search_path_spec sys_lib_dlsearch_path_spec reload_cmds_CXX old_archive_cmds_CXX old_archive_from_new_cmds_CXX old_archive_from_expsyms_cmds_CXX archive_cmds_CXX archive_expsym_cmds_CXX module_cmds_CXX module_expsym_cmds_CXX export_symbols_cmds_CXX prelink_cmds_CXX postlink_cmds_CXX; do + case `eval \\$ECHO \\""\\$$var"\\"` in + *[\\\`\"\$]*) + eval "lt_$var=\\\"\`\$ECHO \"\$$var\" | \$SED -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\$$var\\\"" + ;; + esac +done + +ac_aux_dir='.' +xsi_shell='yes' +lt_shell_append='yes' + +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes INIT. +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='' + VERSION='' + TIMESTAMP='' + RM='rm -f' + ofile='libtool' + + + + + + + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +D["PACKAGE_NAME"]=" \"\"" +D["PACKAGE_TARNAME"]=" \"\"" +D["PACKAGE_VERSION"]=" \"\"" +D["PACKAGE_STRING"]=" \"\"" +D["PACKAGE_BUGREPORT"]=" \"\"" +D["PACKAGE_URL"]=" \"\"" +D["COMPILE_DL_COREGRADE_API"]=" 1" +D["STDC_HEADERS"]=" 1" +D["HAVE_SYS_TYPES_H"]=" 1" +D["HAVE_SYS_STAT_H"]=" 1" +D["HAVE_STDLIB_H"]=" 1" +D["HAVE_STRING_H"]=" 1" +D["HAVE_MEMORY_H"]=" 1" +D["HAVE_STRINGS_H"]=" 1" +D["HAVE_INTTYPES_H"]=" 1" +D["HAVE_STDINT_H"]=" 1" +D["HAVE_UNISTD_H"]=" 1" +D["HAVE_DLFCN_H"]=" 1" +D["LT_OBJDIR"]=" \".libs/\"" + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+[_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ][_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*([\t (]|$)/ { + line = $ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "libtool":C) + + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL + +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + +# The names of the tagged configurations supported by this script. +available_tags="CXX " + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that protects backslashes. +ECHO=$lt_ECHO + +# The PATH separator for the build system. +PATH_SEPARATOR=$lt_PATH_SEPARATOR + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# convert \$build file names to \$host format. +to_host_file_cmd=$lt_cv_to_host_file_cmd + +# convert \$build files to toolchain format. +to_tool_file_cmd=$lt_cv_to_tool_file_cmd + +# An object symbol dumper. +OBJDUMP=$lt_OBJDUMP + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method = "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob=$lt_file_magic_glob + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob=$lt_want_nocaseglob + +# DLL creation program. +DLLTOOL=$lt_DLLTOOL + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd + +# The archiver. +AR=$lt_AR + +# Flags to create an archive. +AR_FLAGS=$lt_AR_FLAGS + +# How to feed a file listing to the archiver. +archiver_list_spec=$lt_archiver_list_spec + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=$lock_old_archive_extraction + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# Specify filename containing input files for \$NM. +nm_file_list_spec=$lt_nm_file_list_spec + +# The root where to search for dependent libraries,and in which our libraries should be installed. +lt_sysroot=$lt_sysroot + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Manifest tool. +MANIFEST_TOOL=$lt_MANIFEST_TOOL + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Permission mode override for installation of shared libraries. +install_override_mode=$lt_install_override_mode + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects +postdep_objects=$lt_postdep_objects +predeps=$lt_predeps +postdeps=$lt_postdeps + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path + +# ### END LIBTOOL CONFIG + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + +ltmain="$ac_aux_dir/ltmain.sh" + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + if test x"$xsi_shell" = xyes; then + sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ +func_dirname ()\ +{\ +\ case ${1} in\ +\ */*) func_dirname_result="${1%/*}${2}" ;;\ +\ * ) func_dirname_result="${3}" ;;\ +\ esac\ +} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_basename ()$/,/^} # func_basename /c\ +func_basename ()\ +{\ +\ func_basename_result="${1##*/}"\ +} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ +func_dirname_and_basename ()\ +{\ +\ case ${1} in\ +\ */*) func_dirname_result="${1%/*}${2}" ;;\ +\ * ) func_dirname_result="${3}" ;;\ +\ esac\ +\ func_basename_result="${1##*/}"\ +} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ +func_stripname ()\ +{\ +\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ +\ # positional parameters, so assign one to ordinary parameter first.\ +\ func_stripname_result=${3}\ +\ func_stripname_result=${func_stripname_result#"${1}"}\ +\ func_stripname_result=${func_stripname_result%"${2}"}\ +} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ +func_split_long_opt ()\ +{\ +\ func_split_long_opt_name=${1%%=*}\ +\ func_split_long_opt_arg=${1#*=}\ +} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ +func_split_short_opt ()\ +{\ +\ func_split_short_opt_arg=${1#??}\ +\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ +} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ +func_lo2o ()\ +{\ +\ case ${1} in\ +\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ +\ *) func_lo2o_result=${1} ;;\ +\ esac\ +} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_xform ()$/,/^} # func_xform /c\ +func_xform ()\ +{\ + func_xform_result=${1%.*}.lo\ +} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_arith ()$/,/^} # func_arith /c\ +func_arith ()\ +{\ + func_arith_result=$(( $* ))\ +} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_len ()$/,/^} # func_len /c\ +func_len ()\ +{\ + func_len_result=${#1}\ +} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + +fi + +if test x"$lt_shell_append" = xyes; then + sed -e '/^func_append ()$/,/^} # func_append /c\ +func_append ()\ +{\ + eval "${1}+=\\${2}"\ +} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ +func_append_quoted ()\ +{\ +\ func_quote_for_eval "${2}"\ +\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ +} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + # Save a `func_append' function call where possible by direct use of '+=' + sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +else + # Save a `func_append' function call even when '+=' is not available + sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +fi + +if test x"$_lt_function_replace_fail" = x":"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 +$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} +fi + + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + + cat <<_LT_EOF >> "$ofile" + +# ### BEGIN LIBTOOL TAG CONFIG: CXX + +# The linker used to build libraries. +LD=$lt_LD_CXX + +# How to create reloadable object files. +reload_flag=$lt_reload_flag_CXX +reload_cmds=$lt_reload_cmds_CXX + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds_CXX + +# A language specific compiler. +CC=$lt_compiler_CXX + +# Is the compiler the GNU compiler? +with_gcc=$GCC_CXX + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_CXX + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_CXX + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_CXX + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object_CXX + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds_CXX +archive_expsym_cmds=$lt_archive_expsym_cmds_CXX + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds_CXX +module_expsym_cmds=$lt_module_expsym_cmds_CXX + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld_CXX + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_CXX + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_CXX + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct_CXX + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute_CXX + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L_CXX + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic_CXX + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath_CXX + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_CXX + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols_CXX + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_CXX + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_CXX + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_CXX + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds_CXX + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds_CXX + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec_CXX + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_CXX + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects_CXX +postdep_objects=$lt_postdep_objects_CXX +predeps=$lt_predeps_CXX +postdeps=$lt_postdeps_CXX + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_CXX + +# ### END LIBTOOL TAG CONFIG: CXX +_LT_EOF + + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 diff --git a/coregrade/src/config.sub b/coregrade/src/config.sub new file mode 100755 index 0000000..d2a9613 --- /dev/null +++ b/coregrade/src/config.sub @@ -0,0 +1,1791 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright 1992-2013 Free Software Foundation, Inc. + +timestamp='2013-08-10' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). + + +# Please send patches with a ChangeLog entry to config-patches@gnu.org. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright 1992-2013 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | \ + kopensolaris*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + android-linux) + os=-linux-android + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray | -microblaze*) + os= + basic_machine=$1 + ;; + -bluegene*) + os=-cnk + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*178) + os=-lynxos178 + ;; + -lynx*5) + os=-lynxos5 + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | aarch64 | aarch64_be \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arceb \ + | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ + | avr | avr32 \ + | be32 | be64 \ + | bfin \ + | c4x | c8051 | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | epiphany \ + | fido | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | le32 | le64 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipsr5900 | mipsr5900el \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nios | nios2 | nios2eb | nios2el \ + | ns16k | ns32k \ + | open8 \ + | or1k | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ + | pyramid \ + | rl78 | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu \ + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ + | we32k \ + | x86 | xc16x | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + c54x) + basic_machine=tic54x-unknown + ;; + c55x) + basic_machine=tic55x-unknown + ;; + c6x) + basic_machine=tic6x-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; + xgate) + basic_machine=$basic_machine-unknown + os=-none + ;; + xscaleeb) + basic_machine=armeb-unknown + ;; + + xscaleel) + basic_machine=armel-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | aarch64-* | aarch64_be-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | be32-* | be64-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* \ + | c8051-* | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | hexagon-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | le32-* | le64-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ + | microblaze-* | microblazeel-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipsr5900-* | mipsr5900el-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nds32-* | nds32le-* | nds32be-* \ + | nios-* | nios2-* | nios2eb-* | nios2el-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | open8-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ + | pyramid-* \ + | rl78-* | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ + | tahoe-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tile*-* \ + | tron-* \ + | ubicom32-* \ + | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ + | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aros) + basic_machine=i386-pc + os=-aros + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; + c54x-*) + basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c55x-*) + basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c6x-*) + basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16 | cr16-*) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + microblaze*) + basic_machine=microblaze-xilinx + ;; + mingw64) + basic_machine=x86_64-pc + os=-mingw64 + ;; + mingw32) + basic_machine=i686-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + msys) + basic_machine=i686-pc + os=-msys + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + nacl) + basic_machine=le32-unknown + os=-nacl + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + neo-tandem) + basic_machine=neo-tandem + ;; + nse-tandem) + basic_machine=nse-tandem + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc | ppcbe) basic_machine=powerpc-unknown + ;; + ppc-* | ppcbe-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-* | ppc64p7-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + os=-rdos + ;; + rdos32) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + strongarm-* | thumb-*) + basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tile*) + basic_machine=$basic_machine-unknown + os=-linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + xscale-* | xscalee[bl]-*) + basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + z80-*-coff) + basic_machine=z80-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -auroraux) + os=-auroraux + ;; + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* | -plan9* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -bitrig* | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* \ + | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-musl* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -zvmoe) + os=-zvmoe + ;; + -dicos*) + os=-dicos + ;; + -nacl*) + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + c8051-*) + os=-elf + ;; + hexagon-*) + os=-elf + ;; + tic54x-*) + os=-coff + ;; + tic55x-*) + os=-coff + ;; + tic6x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + ;; + m68*-cisco) + os=-aout + ;; + mep-*) + os=-elf + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or1k-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -cnk*|-aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/coregrade/src/configure b/coregrade/src/configure new file mode 100755 index 0000000..781d446 --- /dev/null +++ b/coregrade/src/configure @@ -0,0 +1,17887 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.69. +# +# +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1 + + test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ + || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, +$0: including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + +SHELL=${CONFIG_SHELL-/bin/sh} + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= +PACKAGE_URL= + +ac_unique_file="config.m4" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='LTLIBOBJS +LIBOBJS +OTOOL64 +OTOOL +LIPO +NMEDIT +DSYMUTIL +MANIFEST_TOOL +RANLIB +STRIP +ac_ct_AR +AR +DLLTOOL +OBJDUMP +LN_S +NM +ac_ct_DUMPBIN +DUMPBIN +LD +FGREP +LIBTOOL +CXXCPP +ac_ct_CXX +CXXFLAGS +CXX +AWK +RE2C +SHLIB_DL_SUFFIX_NAME +SHLIB_SUFFIX_NAME +target_os +target_vendor +target_cpu +target +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +CPP +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +CONFIGURE_OPTIONS +CONFIGURE_COMMAND +SED +EGREP +GREP +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +with_libdir +with_php_config +enable_coregrade_api +enable_shared +enable_static +with_pic +enable_fast_install +with_gnu_ld +with_sysroot +enable_libtool_lock +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +CXX +CXXFLAGS +CCC +CXXCPP' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures this package to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] + --target=TARGET configure for building compilers for TARGET [HOST] +_ACEOF +fi + +if test -n "$ac_init_help"; then + + cat <<\_ACEOF + +Optional Features and Packages: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-libdir=NAME Look for libraries in .../NAME rather than .../lib + --with-php-config=PATH Path to php-config php-config + --enable-coregrade_api Enable "coregrade_api" extension support + --enable-shared[=PKGS] build shared libraries [default=yes] + --enable-static[=PKGS] build static libraries [default=yes] + --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use + both] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-sysroot=DIR Search for dependent libraries within DIR + (or the compiler's sysroot if not specified). + --disable-libtool-lock avoid locking (might break parallel builds) + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + CXX C++ compiler command + CXXFLAGS C++ compiler flags + CXXCPP C++ preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to the package provider. +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +configure +generated by GNU Autoconf 2.69 + +Copyright (C) 2012 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_cxx_try_compile LINENO +# ---------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_compile + +# ac_fn_cxx_try_cpp LINENO +# ------------------------ +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_cpp + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + +# ac_fn_cxx_try_link LINENO +# ------------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_link +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by $as_me, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if ${ac_cv_path_SED+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + + + + + + + PHP_VAR_SUBST="$PHP_VAR_SUBST EGREP" + + + + + + PHP_VAR_SUBST="$PHP_VAR_SUBST SED" + + + + test -f config.nice && mv config.nice config.nice.old + rm -f config.nice.old + cat >config.nice<> config.nice + fi + done + + echo "'$0' \\" >> config.nice + if test `expr -- $0 : "'.*"` = 0; then + CONFIGURE_COMMAND="$CONFIGURE_COMMAND '$0'" + else + CONFIGURE_COMMAND="$CONFIGURE_COMMAND $0" + fi + for arg in $ac_configure_args; do + if test `expr -- $arg : "'.*"` = 0; then + if test `expr -- $arg : "--.*"` = 0; then + break; + fi + echo "'$arg' \\" >> config.nice + CONFIGURE_OPTIONS="$CONFIGURE_OPTIONS '$arg'" + else + if test `expr -- $arg : "'--.*"` = 0; then + break; + fi + echo "$arg \\" >> config.nice + CONFIGURE_OPTIONS="$CONFIGURE_OPTIONS $arg" + fi + done + echo '"$@"' >> config.nice + chmod +x config.nice + CONFIGURE_COMMAND="$CONFIGURE_COMMAND $CONFIGURE_OPTIONS" + + + PHP_VAR_SUBST="$PHP_VAR_SUBST CONFIGURE_COMMAND" + + + + + + PHP_VAR_SUBST="$PHP_VAR_SUBST CONFIGURE_OPTIONS" + + + + + + +test -z "$CFLAGS" && auto_cflags=1 + +abs_srcdir=`(cd $srcdir && pwd)` +abs_builddir=`pwd` + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in cc gcc + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cc gcc +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + ICC="no" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for icc" >&5 +$as_echo_n "checking for icc... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +__INTEL_COMPILER +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "^__INTEL_COMPILER" >/dev/null 2>&1; then : + ICC="no" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +else + ICC="yes" + GCC="no" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +fi +rm -f conftest* + + + + SUNCC="no" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suncc" >&5 +$as_echo_n "checking for suncc... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +__SUNPRO_C +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "^__SUNPRO_C" >/dev/null 2>&1; then : + SUNCC="no" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +else + SUNCC="yes" + GCC="no" + test -n "$auto_cflags" && CFLAGS="-O -xs -xstrconst -zlazyload" + GCC="" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +fi +rm -f conftest* + + +if test "x$CC" != xcc; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5 +$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5 +$as_echo_n "checking whether cc understands -c and -o together... " >&6; } +fi +set dummy $CC; ac_cc=`$as_echo "$2" | + sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` +if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +# Make sure it works both with $CC and with simple cc. +# We do the test twice because some compilers refuse to overwrite an +# existing .o file with -o, though they will create one. +ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5' +rm -f conftest2.* +if { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && + test -f conftest2.$ac_objext && { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; +then + eval ac_cv_prog_cc_${ac_cc}_c_o=yes + if test "x$CC" != xcc; then + # Test first that cc exists at all. + if { ac_try='cc -c conftest.$ac_ext >&5' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5' + rm -f conftest2.* + if { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && + test -f conftest2.$ac_objext && { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; + then + # cc works too. + : + else + # cc exists but doesn't like -o. + eval ac_cv_prog_cc_${ac_cc}_c_o=no + fi + fi + fi +else + eval ac_cv_prog_cc_${ac_cc}_c_o=no +fi +rm -f core conftest* + +fi +if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +$as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h + +fi + + + +php_with_libdir=lib + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for system library directory" >&5 +$as_echo_n "checking for system library directory... " >&6; } + +# Check whether --with-libdir was given. +if test "${with_libdir+set}" = set; then : + withval=$with_libdir; PHP_LIBDIR=$withval +else + + PHP_LIBDIR=lib + + +fi + + +ext_output=$PHP_LIBDIR +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +$as_echo "$ext_output" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler supports -R" >&5 +$as_echo_n "checking if compiler supports -R... " >&6; } +if ${php_cv_cc_dashr+:} false; then : + $as_echo_n "(cached) " >&6 +else + + SAVE_LIBS=$LIBS + LIBS="-R /usr/$PHP_LIBDIR $LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + php_cv_cc_dashr=yes +else + php_cv_cc_dashr=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$SAVE_LIBS +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $php_cv_cc_dashr" >&5 +$as_echo "$php_cv_cc_dashr" >&6; } +if test $php_cv_cc_dashr = "yes"; then + ld_runpath_switch=-R +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler supports -Wl,-rpath," >&5 +$as_echo_n "checking if compiler supports -Wl,-rpath,... " >&6; } + if ${php_cv_cc_rpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + + SAVE_LIBS=$LIBS + LIBS="-Wl,-rpath,/usr/$PHP_LIBDIR $LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + php_cv_cc_rpath=yes +else + php_cv_cc_rpath=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS=$SAVE_LIBS +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $php_cv_cc_rpath" >&5 +$as_echo "$php_cv_cc_rpath" >&6; } + if test $php_cv_cc_rpath = "yes"; then + ld_runpath_switch=-Wl,-rpath, + else + ld_runpath_switch=-L + fi +fi +if test "$PHP_RPATH" = "no"; then + ld_runpath_switch= +fi + +ac_aux_dir= +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 +$as_echo_n "checking target system type... " >&6; } +if ${ac_cv_target+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$target_alias" = x; then + ac_cv_target=$ac_cv_host +else + ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 +$as_echo "$ac_cv_target" >&6; } +case $ac_cv_target in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; +esac +target=$ac_cv_target +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_target +shift +target_cpu=$1 +target_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +target_os=$* +IFS=$ac_save_IFS +case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac + + +# The aliases save the names the user supplied, while $host etc. +# will get canonicalized. +test -n "$target_alias" && + test "$program_prefix$program_suffix$program_transform_name" = \ + NONENONEs,x,x, && + program_prefix=${target_alias}- + + if test -z "$host_alias" && test -n "$host"; then + host_alias=$host + fi + if test -z "$host_alias"; then + as_fn_error $? "host_alias is not set!" "$LINENO" 5 + fi + + + + + PHP_VAR_SUBST="$PHP_VAR_SUBST SHLIB_SUFFIX_NAME" + + + + + + PHP_VAR_SUBST="$PHP_VAR_SUBST SHLIB_DL_SUFFIX_NAME" + + + + SHLIB_SUFFIX_NAME=so + SHLIB_DL_SUFFIX_NAME=$SHLIB_SUFFIX_NAME + case $host_alias in + *hpux*) + SHLIB_SUFFIX_NAME=sl + SHLIB_DL_SUFFIX_NAME=sl + ;; + *darwin*) + SHLIB_SUFFIX_NAME=dylib + SHLIB_DL_SUFFIX_NAME=so + ;; + esac + + + +php_with_php_config=php-config + + + +# Check whether --with-php-config was given. +if test "${with_php_config+set}" = set; then : + withval=$with_php_config; PHP_PHP_CONFIG=$withval +else + + PHP_PHP_CONFIG=php-config + + +fi + + +ext_output=$PHP_PHP_CONFIG + + + + + +PHP_CONFIG=$PHP_PHP_CONFIG +prefix=`$PHP_CONFIG --prefix 2>/dev/null` +phpincludedir=`$PHP_CONFIG --include-dir 2>/dev/null` +INCLUDES=`$PHP_CONFIG --includes 2>/dev/null` +EXTENSION_DIR=`$PHP_CONFIG --extension-dir 2>/dev/null` +PHP_EXECUTABLE=`$PHP_CONFIG --php-binary 2>/dev/null` + +if test -z "$prefix"; then + as_fn_error $? "Cannot find php-config. Please use --with-php-config=PATH" "$LINENO" 5 +fi + +php_shtool=$srcdir/build/shtool + +test -d include || $php_shtool mkdir include +> Makefile.objects +> Makefile.fragments +pattern=define +$EGREP $pattern'.*include/php' $srcdir/configure|$SED 's/.*>//'|xargs touch 2>/dev/null + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PHP prefix" >&5 +$as_echo_n "checking for PHP prefix... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $prefix" >&5 +$as_echo "$prefix" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PHP includes" >&5 +$as_echo_n "checking for PHP includes... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INCLUDES" >&5 +$as_echo "$INCLUDES" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PHP extension directory" >&5 +$as_echo_n "checking for PHP extension directory... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $EXTENSION_DIR" >&5 +$as_echo "$EXTENSION_DIR" >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PHP installed headers prefix" >&5 +$as_echo_n "checking for PHP installed headers prefix... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $phpincludedir" >&5 +$as_echo "$phpincludedir" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if debug is enabled" >&5 +$as_echo_n "checking if debug is enabled... " >&6; } +old_CPPFLAGS=$CPPFLAGS +CPPFLAGS="-I$phpincludedir" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include
+#if ZEND_DEBUG +php_debug_is_enabled +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "php_debug_is_enabled" >/dev/null 2>&1; then : + + PHP_DEBUG=yes + +else + + PHP_DEBUG=no + +fi +rm -f conftest* + +CPPFLAGS=$old_CPPFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $PHP_DEBUG" >&5 +$as_echo "$PHP_DEBUG" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if zts is enabled" >&5 +$as_echo_n "checking if zts is enabled... " >&6; } +old_CPPFLAGS=$CPPFLAGS +CPPFLAGS="-I$phpincludedir" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include
+#if ZTS +php_zts_is_enabled +#endif + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "php_zts_is_enabled" >/dev/null 2>&1; then : + + PHP_THREAD_SAFETY=yes + +else + + PHP_THREAD_SAFETY=no + +fi +rm -f conftest* + +CPPFLAGS=$old_CPPFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $PHP_DEBUG" >&5 +$as_echo "$PHP_DEBUG" >&6; } + +ZEND_EXT_TYPE="zend_extension" + + PHP_VAR_SUBST="$PHP_VAR_SUBST ZEND_EXT_TYPE" + + +if test "$PHP_DEBUG" = "yes"; then + PHP_DEBUG=1 + ZEND_DEBUG=yes + + CFLAGS=`echo "$CFLAGS" | $SED -e 's/-O[0-9s]*//g'` + CXXFLAGS=`echo "$CXXFLAGS" | $SED -e 's/-O[0-9s]*//g'` + + if test "$GCC" = "yes" || test "$ICC" = "yes"; then + CFLAGS="$CFLAGS -O0" + CXXFLAGS="$CXXFLAGS -g -O0" + fi + if test "$SUNCC" = "yes"; then + if test -n "$auto_cflags"; then + CFLAGS="-g" + CXXFLAGS="-g" + else + CFLAGS="$CFLAGS -g" + CXXFLAGS="$CFLAGS -g" + fi + fi +else + PHP_DEBUG=0 + ZEND_DEBUG=no +fi + + + + php_c_pre='$(LIBTOOL) --mode=compile $(CC)' + php_c_meta='$(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS)' + php_c_post= + php_cxx_pre='$(LIBTOOL) --mode=compile $(CXX)' + php_cxx_meta='$(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS)' + php_cxx_post= + php_lo=lo + + case $with_pic in + yes) pic_setting='-prefer-pic';; + no) pic_setting='-prefer-non-pic';; + esac + + shared_c_pre='$(LIBTOOL) --mode=compile $(CC)' + shared_c_meta='$(COMMON_FLAGS) $(CFLAGS_CLEAN) $(EXTRA_CFLAGS) '$pic_setting + shared_c_post= + shared_cxx_pre='$(LIBTOOL) --mode=compile $(CXX)' + shared_cxx_meta='$(COMMON_FLAGS) $(CXXFLAGS_CLEAN) $(EXTRA_CXXFLAGS) '$pic_setting + shared_cxx_post= + shared_lo=lo + + OVERALL_TARGET=libphp$PHP_MAJOR_VERSION.la + php_sapi_module=shared + + php_c_pre=$shared_c_pre + php_c_meta=$shared_c_meta + php_c_post=$shared_c_post + php_cxx_pre=$shared_cxx_pre + php_cxx_meta=$shared_cxx_meta + php_cxx_post=$shared_cxx_post + php_lo=$shared_lo + + + + # Extract the first word of "re2c", so it can be a program name with args. +set dummy re2c; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RE2C+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RE2C"; then + ac_cv_prog_RE2C="$RE2C" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RE2C="re2c" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RE2C=$ac_cv_prog_RE2C +if test -n "$RE2C"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RE2C" >&5 +$as_echo "$RE2C" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + if test -n "$RE2C"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for re2c version" >&5 +$as_echo_n "checking for re2c version... " >&6; } +if ${php_cv_re2c_version+:} false; then : + $as_echo_n "(cached) " >&6 +else + + re2c_vernum=`$RE2C --vernum 2>/dev/null` + if test -z "$re2c_vernum" || test "$re2c_vernum" -lt "1304"; then + php_cv_re2c_version=invalid + else + php_cv_re2c_version="`$RE2C --version | cut -d ' ' -f 2 2>/dev/null` (ok)" + fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $php_cv_re2c_version" >&5 +$as_echo "$php_cv_re2c_version" >&6; } + fi + case $php_cv_re2c_version in + ""|invalid) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers." >&5 +$as_echo "$as_me: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers." >&2;} + RE2C="exit 0;" + ;; + esac + + PHP_VAR_SUBST="$PHP_VAR_SUBST RE2C" + + + + for ac_prog in gawk nawk awk mawk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_dummy="/usr/xpg4/bin/:$PATH" +for as_dir in $as_dummy +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done +test -n "$AWK" || AWK="bork" + + case "$AWK" in + *mawk) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: mawk is known to have problems on some systems. You should install GNU awk" >&5 +$as_echo "$as_me: WARNING: mawk is known to have problems on some systems. You should install GNU awk" >&2;} + ;; + *gawk) + ;; + bork) + as_fn_error $? "Could not find awk; Install GNU awk" "$LINENO" 5 + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $AWK is broken" >&5 +$as_echo_n "checking if $AWK is broken... " >&6; } + if ! $AWK 'function foo() {}' >/dev/null 2>&1 ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + as_fn_error $? "You should install GNU awk" "$LINENO" 5 + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + ;; + esac + + PHP_VAR_SUBST="$PHP_VAR_SUBST AWK" + + + + +php_enable_coregrade_api=no + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking Whether to enable the \"coregrade_api\" extension" >&5 +$as_echo_n "checking Whether to enable the \"coregrade_api\" extension... " >&6; } +# Check whether --enable-coregrade_api was given. +if test "${enable_coregrade_api+set}" = set; then : + enableval=$enable_coregrade_api; PHP_COREGRADE_API=$enableval +else + + PHP_COREGRADE_API=no + test "$PHP_ENABLE_ALL" && PHP_COREGRADE_API=$PHP_ENABLE_ALL + +fi + + + +ext_output="yes, shared" +ext_shared=yes +case $PHP_COREGRADE_API in +shared,*) + PHP_COREGRADE_API=`echo "$PHP_COREGRADE_API"|$SED 's/^shared,//'` + ;; +shared) + PHP_COREGRADE_API=yes + ;; +no) + ext_output=no + ext_shared=no + ;; +*) + ext_output=yes + ext_shared=no + ;; +esac + + + ext_output="yes, shared" + ext_shared=yes + test "$PHP_COREGRADE_API" = "no" && PHP_COREGRADE_API=yes + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ext_output" >&5 +$as_echo "$ext_output" >&6; } + + + + +if test $PHP_COREGRADE_API != "no"; then + + if test -z "$php_cxx_done"; then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +$as_echo "$CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if ${ac_cv_cxx_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if ${ac_cv_prog_cxx_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +else + CXXFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + +else + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 +$as_echo_n "checking how to run the C++ preprocessor... " >&6; } +if test -z "$CXXCPP"; then + if ${ac_cv_prog_CXXCPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 +$as_echo "$CXXCPP" >&6; } +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + case stdc++ in + c|c_r|pthread*) ;; + *) + LIBS="-lstdc++ $LIBS" + ;; + esac + + + php_cxx_done=yes + fi + + + PHP_VAR_SUBST="$PHP_VAR_SUBST COREGRADE_API_SHARED_LIBADD" + + + + case stdc++ in + c|c_r|pthread*) ;; + *) + if test "$ext_shared" = "yes"; then + COREGRADE_API_SHARED_LIBADD="$COREGRADE_API_SHARED_LIBADD -lstdc++" + else + + + case stdc++ in + c|c_r|pthread*) ;; + *) + LIBS="$LIBS -lstdc++" + ;; + esac + + + fi + ;; + esac + + + + if test "/usr/include/pgsql" != "/usr/include"; then + + if test -z "/usr/include/pgsql" || echo "/usr/include/pgsql" | grep '^/' >/dev/null ; then + ai_p=/usr/include/pgsql + else + + ep_dir="`echo /usr/include/pgsql|$SED 's%/*[^/][^/]*/*$%%'`" + + ep_realdir="`(cd \"$ep_dir\" && pwd)`" + ai_p="$ep_realdir/`basename \"/usr/include/pgsql\"`" + fi + + + + unique=`echo $ai_p|$SED 's/[^a-zA-Z0-9]/_/g'` + + cmd="echo $ac_n \"\$INCLUDEPATH$unique$ac_c\"" + if test -n "$unique" && test "`eval $cmd`" = "" ; then + eval "INCLUDEPATH$unique=set" + + if test ""; then + INCLUDES="-I$ai_p $INCLUDES" + else + INCLUDES="$INCLUDES -I$ai_p" + fi + + fi + + fi + + + + if test "$ext_shared" = "yes"; then + COREGRADE_API_SHARED_LIBADD="-lpq $COREGRADE_API_SHARED_LIBADD" + if test -n "/usr/lib64"; then + + if test "/usr/lib64" != "/usr/$PHP_LIBDIR" && test "/usr/lib64" != "/usr/lib"; then + + if test -z "/usr/lib64" || echo "/usr/lib64" | grep '^/' >/dev/null ; then + ai_p=/usr/lib64 + else + + ep_dir="`echo /usr/lib64|$SED 's%/*[^/][^/]*/*$%%'`" + + ep_realdir="`(cd \"$ep_dir\" && pwd)`" + ai_p="$ep_realdir/`basename \"/usr/lib64\"`" + fi + + + if test "$ext_shared" = "yes"; then + COREGRADE_API_SHARED_LIBADD="-L$ai_p $COREGRADE_API_SHARED_LIBADD" + test -n "$ld_runpath_switch" && COREGRADE_API_SHARED_LIBADD="$ld_runpath_switch$ai_p $COREGRADE_API_SHARED_LIBADD" + else + + + + unique=`echo $ai_p|$SED 's/[^a-zA-Z0-9]/_/g'` + + cmd="echo $ac_n \"\$LIBPATH$unique$ac_c\"" + if test -n "$unique" && test "`eval $cmd`" = "" ; then + eval "LIBPATH$unique=set" + + test -n "$ld_runpath_switch" && LDFLAGS="$LDFLAGS $ld_runpath_switch$ai_p" + LDFLAGS="$LDFLAGS -L$ai_p" + PHP_RPATHS="$PHP_RPATHS $ai_p" + + fi + + + fi + + fi + + fi + else + + + if test -n "/usr/lib64"; then + + if test "/usr/lib64" != "/usr/$PHP_LIBDIR" && test "/usr/lib64" != "/usr/lib"; then + + if test -z "/usr/lib64" || echo "/usr/lib64" | grep '^/' >/dev/null ; then + ai_p=/usr/lib64 + else + + ep_dir="`echo /usr/lib64|$SED 's%/*[^/][^/]*/*$%%'`" + + ep_realdir="`(cd \"$ep_dir\" && pwd)`" + ai_p="$ep_realdir/`basename \"/usr/lib64\"`" + fi + + + + + + unique=`echo $ai_p|$SED 's/[^a-zA-Z0-9]/_/g'` + + cmd="echo $ac_n \"\$LIBPATH$unique$ac_c\"" + if test -n "$unique" && test "`eval $cmd`" = "" ; then + eval "LIBPATH$unique=set" + + test -n "$ld_runpath_switch" && LDFLAGS="$LDFLAGS $ld_runpath_switch$ai_p" + LDFLAGS="$LDFLAGS -L$ai_p" + PHP_RPATHS="$PHP_RPATHS $ai_p" + + fi + + + + fi + + fi + + + case pq in + c|c_r|pthread*) ;; + *) + LIBS="-lpq $LIBS" + ;; + esac + + + + + fi + + + + + case curl in + c|c_r|pthread*) ;; + *) + if test "$ext_shared" = "yes"; then + COREGRADE_API_SHARED_LIBADD="$COREGRADE_API_SHARED_LIBADD -lcurl" + else + + + case curl in + c|c_r|pthread*) ;; + *) + LIBS="$LIBS -lcurl" + ;; + esac + + + fi + ;; + esac + + + + + case config++ in + c|c_r|pthread*) ;; + *) + if test "$ext_shared" = "yes"; then + COREGRADE_API_SHARED_LIBADD="$COREGRADE_API_SHARED_LIBADD -lconfig++" + else + + + case config++ in + c|c_r|pthread*) ;; + *) + LIBS="$LIBS -lconfig++" + ;; + esac + + + fi + ;; + esac + + + + + case gsoapssl++ in + c|c_r|pthread*) ;; + *) + if test "$ext_shared" = "yes"; then + COREGRADE_API_SHARED_LIBADD="$COREGRADE_API_SHARED_LIBADD -lgsoapssl++" + else + + + case gsoapssl++ in + c|c_r|pthread*) ;; + *) + LIBS="$LIBS -lgsoapssl++" + ;; + esac + + + fi + ;; + esac + + + + + case ssl in + c|c_r|pthread*) ;; + *) + if test "$ext_shared" = "yes"; then + COREGRADE_API_SHARED_LIBADD="$COREGRADE_API_SHARED_LIBADD -lssl" + else + + + case ssl in + c|c_r|pthread*) ;; + *) + LIBS="$LIBS -lssl" + ;; + esac + + + fi + ;; + esac + + + + + case z in + c|c_r|pthread*) ;; + *) + if test "$ext_shared" = "yes"; then + COREGRADE_API_SHARED_LIBADD="$COREGRADE_API_SHARED_LIBADD -lz" + else + + + case z in + c|c_r|pthread*) ;; + *) + LIBS="$LIBS -lz" + ;; + esac + + + fi + ;; + esac + + + + LIBCFG_DIR="`pwd`/libconfig-1.3.1" + + + + if test -n ""$LIBCFG_DIR/.libs/""; then + + if test ""$LIBCFG_DIR/.libs/"" != "/usr/$PHP_LIBDIR" && test ""$LIBCFG_DIR/.libs/"" != "/usr/lib"; then + + if test -z ""$LIBCFG_DIR/.libs/"" || echo ""$LIBCFG_DIR/.libs/"" | grep '^/' >/dev/null ; then + ai_p="$LIBCFG_DIR/.libs/" + else + + ep_dir="`echo "$LIBCFG_DIR/.libs/"|$SED 's%/*[^/][^/]*/*$%%'`" + + ep_realdir="`(cd \"$ep_dir\" && pwd)`" + ai_p="$ep_realdir/`basename \""$LIBCFG_DIR/.libs/"\"`" + fi + + + + + + unique=`echo $ai_p|$SED 's/[^a-zA-Z0-9]/_/g'` + + cmd="echo $ac_n \"\$LIBPATH$unique$ac_c\"" + if test -n "$unique" && test "`eval $cmd`" = "" ; then + eval "LIBPATH$unique=set" + + test -n "$ld_runpath_switch" && LDFLAGS="$LDFLAGS $ld_runpath_switch$ai_p" + LDFLAGS="$LDFLAGS -L$ai_p" + PHP_RPATHS="$PHP_RPATHS $ai_p" + + fi + + + + fi + + fi + + + case config++ in + c|c_r|pthread*) ;; + *) + LIBS="-lconfig++ $LIBS" + ;; + esac + + + + + + + ext_builddir=. + ext_srcdir=$abs_srcdir + + ac_extra=`echo "-I@ext_srcdir@/libconfig-1.3.1"|$SED s#@ext_srcdir@#$ext_srcdir#g|$SED s#@ext_builddir@#$ext_builddir#g` + + if test "$ext_shared" != "shared" && test "$ext_shared" != "yes" && test "" != "cli"; then + PHP_COREGRADE_API_SHARED=no + + + case "" in + "") ac_srcdir="$abs_srcdir/"; unset ac_bdir; ac_inc="-I. -I$abs_srcdir" ;; + /*) ac_srcdir=`echo """"|cut -c 2-`"/"; ac_bdir=$ac_srcdir; ac_inc="-I$ac_bdir -I$abs_srcdir/$ac_bdir" ;; + *) ac_srcdir="$abs_srcdir/""/"; ac_bdir="""/"; ac_inc="-I$ac_bdir -I$ac_srcdir" ;; + esac + + + + b_c_pre=$php_c_pre + b_cxx_pre=$php_cxx_pre + b_c_meta=$php_c_meta + b_cxx_meta=$php_cxx_meta + b_c_post=$php_c_post + b_cxx_post=$php_cxx_post + b_lo=$php_lo + + + old_IFS=$IFS + for ac_src in core/*.cc shared_tool/*.cc; do + + IFS=. + set $ac_src + ac_obj=$1 + IFS=$old_IFS + + PHP_GLOBAL_OBJS="$PHP_GLOBAL_OBJS $ac_bdir$ac_obj.lo" + + case $ac_src in + *.c) ac_comp="$b_c_pre $ac_extra $ac_inc $b_c_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_c_post" ;; + *.s) ac_comp="$b_c_pre $ac_extra $ac_inc $b_c_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_c_post" ;; + *.S) ac_comp="$b_c_pre $ac_extra $ac_inc $b_c_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_c_post" ;; + *.cpp|*.cc|*.cxx) ac_comp="$b_cxx_pre $ac_extra $ac_inc $b_cxx_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_cxx_post" ;; + esac + + cat >>Makefile.objects<>Makefile.objects<>Makefile.objects<>Makefile.objects<>confdefs.h <<_ACEOF +#define COMPILE_DL_COREGRADE_API 1 +_ACEOF + + fi + fi + + if test "$ext_shared" != "shared" && test "$ext_shared" != "yes" && test "" = "cli"; then + PHP_COREGRADE_API_SHARED=no + case "$PHP_SAPI" in + cgi|embed) + + + case "" in + "") ac_srcdir="$abs_srcdir/"; unset ac_bdir; ac_inc="-I. -I$abs_srcdir" ;; + /*) ac_srcdir=`echo """"|cut -c 2-`"/"; ac_bdir=$ac_srcdir; ac_inc="-I$ac_bdir -I$abs_srcdir/$ac_bdir" ;; + *) ac_srcdir="$abs_srcdir/""/"; ac_bdir="""/"; ac_inc="-I$ac_bdir -I$ac_srcdir" ;; + esac + + + + b_c_pre=$php_c_pre + b_cxx_pre=$php_cxx_pre + b_c_meta=$php_c_meta + b_cxx_meta=$php_cxx_meta + b_c_post=$php_c_post + b_cxx_post=$php_cxx_post + b_lo=$php_lo + + + old_IFS=$IFS + for ac_src in core/*.cc shared_tool/*.cc; do + + IFS=. + set $ac_src + ac_obj=$1 + IFS=$old_IFS + + PHP_GLOBAL_OBJS="$PHP_GLOBAL_OBJS $ac_bdir$ac_obj.lo" + + case $ac_src in + *.c) ac_comp="$b_c_pre $ac_extra $ac_inc $b_c_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_c_post" ;; + *.s) ac_comp="$b_c_pre $ac_extra $ac_inc $b_c_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_c_post" ;; + *.S) ac_comp="$b_c_pre $ac_extra $ac_inc $b_c_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_c_post" ;; + *.cpp|*.cc|*.cxx) ac_comp="$b_cxx_pre $ac_extra $ac_inc $b_cxx_meta -c $ac_srcdir$ac_src -o $ac_bdir$ac_obj.$b_lo $b_cxx_post" ;; + esac + + cat >>Makefile.objects<>Makefile.objects< include/php_coregrade_api_ns.h + + + echo "#define COREGRADE_CONFIG \"`pwd|sed s/src//`etc/\"" > include/php_coregrade_config.h + + + echo "#define COREGRADE_LOG \"`pwd|sed s/src//`logs/coregrade_api.log\"" > include/php_coregrade_log.h + + + echo "#define TMPL_PREFIX \"`pwd|sed s/src//`email/\"" > include/php_tmpl_prefix.h + + + echo "#define FILELOG_MAX_LEVEL 9" > include/php_filelog_max_level.h + +fi + + +enable_static=no +enable_shared=yes + + +case `pwd` in + *\ * | *\ *) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; +esac + + + +macro_version='2.4.2' +macro_revision='1.3337' + + + + + + + + + + + + + +ltmain="$ac_aux_dir/ltmain.sh" + +# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 +$as_echo_n "checking how to print strings... " >&6; } +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "" +} + +case "$ECHO" in + printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 +$as_echo "printf" >&6; } ;; + print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 +$as_echo "print -r" >&6; } ;; + *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 +$as_echo "cat" >&6; } ;; +esac + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if ${ac_cv_path_SED+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +$as_echo_n "checking for fgrep... " >&6; } +if ${ac_cv_path_FGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 + then ac_cv_path_FGREP="$GREP -F" + else + if test -z "$FGREP"; then + ac_path_FGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in fgrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_FGREP" || continue +# Check for GNU ac_path_FGREP and select it if it is found. + # Check for GNU $ac_path_FGREP +case `"$ac_path_FGREP" --version 2>&1` in +*GNU*) + ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'FGREP' >> "conftest.nl" + "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_FGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_FGREP="$ac_path_FGREP" + ac_path_FGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_FGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_FGREP"; then + as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_FGREP=$FGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +$as_echo "$ac_cv_path_FGREP" >&6; } + FGREP="$ac_cv_path_FGREP" + + +test -z "$GREP" && GREP=grep + + + + + + + + + + + + + + + + + + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if ${lt_cv_path_NM+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + : ${lt_cv_path_NM=no} +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +$as_echo "$lt_cv_path_NM" >&6; } +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + if test -n "$ac_tool_prefix"; then + for ac_prog in dumpbin "link -dump" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DUMPBIN"; then + ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DUMPBIN=$ac_cv_prog_DUMPBIN +if test -n "$DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +$as_echo "$DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$DUMPBIN" && break + done +fi +if test -z "$DUMPBIN"; then + ac_ct_DUMPBIN=$DUMPBIN + for ac_prog in dumpbin "link -dump" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DUMPBIN"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN +if test -n "$ac_ct_DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +$as_echo "$ac_ct_DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_DUMPBIN" && break +done + + if test "x$ac_ct_DUMPBIN" = x; then + DUMPBIN=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DUMPBIN=$ac_ct_DUMPBIN + fi +fi + + case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols" + ;; + *) + DUMPBIN=: + ;; + esac + fi + + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" + fi +fi +test -z "$NM" && NM=nm + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +$as_echo_n "checking the name lister ($NM) interface... " >&6; } +if ${lt_cv_nm_interface+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: output\"" >&5) + cat conftest.out >&5 + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +$as_echo "$lt_cv_nm_interface" >&6; } + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi + +# find the maximum length of command line arguments +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +$as_echo_n "checking the maximum length of command line arguments... " >&6; } +if ${lt_cv_sys_max_cmd_len+:} false; then : + $as_echo_n "(cached) " >&6 +else + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + os2*) + # The test takes a long time on OS/2. + lt_cv_sys_max_cmd_len=8192 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8 ; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac + +fi + +if test -n $lt_cv_sys_max_cmd_len ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +$as_echo "$lt_cv_sys_max_cmd_len" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +$as_echo "none" >&6; } +fi +max_cmd_len=$lt_cv_sys_max_cmd_len + + + + + + +: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 +$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } +# Try some XSI features +xsi_shell=no +( _lt_dummy="a/b/c" + test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,b/c, \ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ + && xsi_shell=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 +$as_echo "$xsi_shell" >&6; } + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 +$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } +lt_shell_append=no +( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ + >/dev/null 2>&1 \ + && lt_shell_append=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 +$as_echo "$lt_shell_append" >&6; } + + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi + + + + + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 +$as_echo_n "checking how to convert $build file names to $host format... " >&6; } +if ${lt_cv_to_host_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac + +fi + +to_host_file_cmd=$lt_cv_to_host_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 +$as_echo "$lt_cv_to_host_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 +$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } +if ${lt_cv_to_tool_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + #assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac + +fi + +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 +$as_echo "$lt_cv_to_tool_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +$as_echo_n "checking for $LD option to reload object files... " >&6; } +if ${lt_cv_ld_reload_flag+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_reload_flag='-r' +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +$as_echo "$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + if test "$GCC" != yes; then + reload_cmds=false + fi + ;; + darwin*) + if test "$GCC" = yes; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +$as_echo_n "checking how to recognize dependent libraries... " >&6; } +if ${lt_cv_deplibs_check_method+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[4-9]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. + if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +$as_echo "$lt_cv_deplibs_check_method" >&6; } + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + + + + + + + + + + + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 +$as_echo_n "checking how to associate runtime and link libraries... " >&6; } +if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh + # decide which to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd="$ECHO" + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 +$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + + + + + + + +if test -n "$ac_tool_prefix"; then + for ac_prog in ar + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +fi + +: ${AR=ar} +: ${AR_FLAGS=cru} + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 +$as_echo_n "checking for archiver @FILE support... " >&6; } +if ${lt_cv_ar_at_file+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ar_at_file=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -eq 0; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -ne 0; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 +$as_echo "$lt_cv_ar_at_file" >&6; } + +if test "x$lt_cv_ar_at_file" = xno; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +test -z "$STRIP" && STRIP=: + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +test -z "$RANLIB" && RANLIB=: + + + + + + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac + + + + + + + + + + + + + + + + + + + + + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + + + + + + + + + + + + + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +if ${lt_cv_sys_global_symbol_pipe+:} false; then : + $as_echo_n "(cached) " >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[ABCDGISTW]' + ;; +hpux*) + if test "$host_cpu" = ia64; then + symcode='[ABCDEGRST]' + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function + # and D for any global variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK '"\ +" {last_section=section; section=\$ 3};"\ +" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 + (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +$as_echo "failed" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 +$as_echo_n "checking for sysroot... " >&6; } + +# Check whether --with-sysroot was given. +if test "${with_sysroot+set}" = set; then : + withval=$with_sysroot; +else + with_sysroot=no +fi + + +lt_sysroot= +case ${with_sysroot} in #( + yes) + if test "$GCC" = yes; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 +$as_echo "${with_sysroot}" >&6; } + as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 + ;; +esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 +$as_echo "${lt_sysroot:-no}" >&6; } + + + + + +# Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then : + enableval=$enable_libtool_lock; +fi + +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +$as_echo_n "checking whether the C compiler needs -belf... " >&6; } +if ${lt_cv_cc_needs_belf+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_cc_needs_belf=yes +else + lt_cv_cc_needs_belf=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +$as_echo "$lt_cv_cc_needs_belf" >&6; } + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) + case $host in + i?86-*-solaris*) + LD="${LD-ld} -m elf_x86_64" + ;; + sparc*-*-solaris*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + # GNU ld 2.21 introduced _sol2 emulations. Use them if available. + if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then + LD="${LD-ld}_sol2" + fi + ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks="$enable_libtool_lock" + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. +set dummy ${ac_tool_prefix}mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$MANIFEST_TOOL"; then + ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL +if test -n "$MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 +$as_echo "$MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_MANIFEST_TOOL"; then + ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL + # Extract the first word of "mt", so it can be a program name with args. +set dummy mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_MANIFEST_TOOL"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL +if test -n "$ac_ct_MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 +$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_MANIFEST_TOOL" = x; then + MANIFEST_TOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL + fi +else + MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" +fi + +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 +$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } +if ${lt_cv_path_mainfest_tool+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&5 + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 +$as_echo "$lt_cv_path_mainfest_tool" >&6; } +if test "x$lt_cv_path_mainfest_tool" != xyes; then + MANIFEST_TOOL=: +fi + + + + + + + case $host_os in + rhapsody* | darwin*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +$as_echo "$DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +$as_echo "$ac_ct_DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DSYMUTIL" = x; then + DSYMUTIL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DSYMUTIL=$ac_ct_DSYMUTIL + fi +else + DSYMUTIL="$ac_cv_prog_DSYMUTIL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +$as_echo "$NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +$as_echo "$ac_ct_NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_NMEDIT" = x; then + NMEDIT=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + NMEDIT=$ac_ct_NMEDIT + fi +else + NMEDIT="$ac_cv_prog_NMEDIT" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. +set dummy ${ac_tool_prefix}lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$LIPO"; then + ac_cv_prog_LIPO="$LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_LIPO="${ac_tool_prefix}lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +LIPO=$ac_cv_prog_LIPO +if test -n "$LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +$as_echo "$LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_LIPO"; then + ac_ct_LIPO=$LIPO + # Extract the first word of "lipo", so it can be a program name with args. +set dummy lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_LIPO"; then + ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_LIPO="lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO +if test -n "$ac_ct_LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +$as_echo "$ac_ct_LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_LIPO" = x; then + LIPO=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + LIPO=$ac_ct_LIPO + fi +else + LIPO="$ac_cv_prog_LIPO" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL"; then + ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL="${ac_tool_prefix}otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL=$ac_cv_prog_OTOOL +if test -n "$OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +$as_echo "$OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL"; then + ac_ct_OTOOL=$OTOOL + # Extract the first word of "otool", so it can be a program name with args. +set dummy otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL"; then + ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL="otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL +if test -n "$ac_ct_OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +$as_echo "$ac_ct_OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL" = x; then + OTOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL=$ac_ct_OTOOL + fi +else + OTOOL="$ac_cv_prog_OTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL64"; then + ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL64=$ac_cv_prog_OTOOL64 +if test -n "$OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +$as_echo "$OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL64"; then + ac_ct_OTOOL64=$OTOOL64 + # Extract the first word of "otool64", so it can be a program name with args. +set dummy otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL64"; then + ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL64="otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 +if test -n "$ac_ct_OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +$as_echo "$ac_ct_OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL64" = x; then + OTOOL64=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL64=$ac_ct_OTOOL64 + fi +else + OTOOL64="$ac_cv_prog_OTOOL64" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +$as_echo_n "checking for -single_module linker flag... " >&6; } +if ${lt_cv_apple_cc_single_mod+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + # If there is a non-empty error log, and "single_module" + # appears in it, assume the flag caused a linker warning + if test -s conftest.err && $GREP single_module conftest.err; then + cat conftest.err >&5 + # Otherwise, if the output was created with a 0 exit code from + # the compiler, it worked. + elif test -f libconftest.dylib && test $_lt_result -eq 0; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&5 + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +$as_echo "$lt_cv_apple_cc_single_mod" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } +if ${lt_cv_ld_exported_symbols_list+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_ld_exported_symbols_list=yes +else + lt_cv_ld_exported_symbols_list=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 +$as_echo_n "checking for -force_load linker flag... " >&6; } +if ${lt_cv_ld_force_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 + echo "$AR cru libconftest.a conftest.o" >&5 + $AR cru libconftest.a conftest.o 2>&5 + echo "$RANLIB libconftest.a" >&5 + $RANLIB libconftest.a 2>&5 + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -s conftest.err && $GREP force_load conftest.err; then + cat conftest.err >&5 + elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&5 + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 +$as_echo "$lt_cv_ld_force_load" >&6; } + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[91]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[012]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in dlfcn.h +do : + ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +" +if test "x$ac_cv_header_dlfcn_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_DLFCN_H 1 +_ACEOF + +fi + +done + + + + +func_stripname_cnf () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + esac +} # func_stripname_cnf + + + + + +# Set options + + + + enable_dlopen=no + + + enable_win32_dll=no + + + # Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then : + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_shared=yes +fi + + + + + + + + + + # Check whether --enable-static was given. +if test "${enable_static+set}" = set; then : + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_static=yes +fi + + + + + + + + + + +# Check whether --with-pic was given. +if test "${with_pic+set}" = set; then : + withval=$with_pic; lt_p=${PACKAGE-default} + case $withval in + yes|no) pic_mode=$withval ;; + *) + pic_mode=default + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for lt_pkg in $withval; do + IFS="$lt_save_ifs" + if test "X$lt_pkg" = "X$lt_p"; then + pic_mode=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + pic_mode=default +fi + + +test -z "$pic_mode" && pic_mode=default + + + + + + + + # Check whether --enable-fast-install was given. +if test "${enable_fast_install+set}" = set; then : + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_fast_install=yes +fi + + + + + + + + + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ltmain" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +test -z "$LN_S" && LN_S="ln -s" + + + + + + + + + + + + + + +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +$as_echo_n "checking for objdir... " >&6; } +if ${lt_cv_objdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +$as_echo "$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +cat >>confdefs.h <<_ACEOF +#define LT_OBJDIR "$lt_cv_objdir/" +_ACEOF + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld="$lt_cv_prog_gnu_ld" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` + + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/${ac_tool_prefix}file; then + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +$as_echo_n "checking for file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/file; then + lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +# Use C for the default configuration in the libtool script + +lt_save_CC="$CC" +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + +lt_prog_compiler_no_builtin_flag= + +if test "$GCC" = yes; then + case $cc_basename in + nvcc*) + lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; + *) + lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + + + + + + + lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + + + if test "$GCC" = yes; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + lt_prog_compiler_wl='-Xlinker ' + if test -n "$lt_prog_compiler_pic"; then + lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" + fi + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + # old Intel for x86_64 which still supported -KPIC. + ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-qpic' + lt_prog_compiler_static='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + *Sun\ F* | *Sun*Fortran*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Qoption ld ' + ;; + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + *Intel*\ [CF]*Compiler*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + *Portland\ Group*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + esac + ;; + esac + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic=$lt_prog_compiler_pic +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 +$as_echo "$lt_cv_prog_compiler_pic" >&6; } +lt_prog_compiler_pic=$lt_cv_prog_compiler_pic + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if ${lt_cv_prog_compiler_pic_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works" = xyes; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi + + + + + + + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +$as_echo "$lt_cv_prog_compiler_static_works" >&6; } + +if test x"$lt_cv_prog_compiler_static_works" = xyes; then + : +else + lt_prog_compiler_static= +fi + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test "$hard_links" = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag= + always_export_symbols=no + archive_cmds= + archive_expsym_cmds= + compiler_needs_object=no + enable_shared_with_static_runtimes=no + export_dynamic_flag_spec= + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + hardcode_automatic=no + hardcode_direct=no + hardcode_direct_absolute=no + hardcode_libdir_flag_spec= + hardcode_libdir_separator= + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + inherit_rpath=no + link_all_deplibs=unknown + module_cmds= + module_expsym_cmds= + old_archive_from_new_cmds= + old_archive_from_expsyms_cmds= + thread_safe_flag_spec= + whole_archive_flag_spec= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test "$with_gnu_ld" = yes; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; + *\ \(GNU\ Binutils\)\ [3-9]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test "$lt_use_gnu_ld_interface" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + export_dynamic_flag_spec='${wl}--export-all-symbols' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + haiku*) + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + link_all_deplibs=yes + ;; + + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test "$tmp_diet" = no + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; + xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + ld_shlibs=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = no; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global + # defined symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_direct_absolute=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + file_list_spec='${wl}-f,' + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + export_dynamic_flag_spec='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_="/usr/lib:/lib" + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_="/usr/lib:/lib" + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' ${wl}-bernotok' + allow_undefined_flag=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + fi + archive_cmds_need_lc=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + always_export_symbols=yes + file_list_spec='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, )='true' + enable_shared_with_static_runtimes=yes + exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + old_postinstall_cmds='chmod 644 $oldlib' + postlink_cmds='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + enable_shared_with_static_runtimes=yes + ;; + esac + ;; + + darwin* | rhapsody*) + + + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + if test "$lt_cv_ld_force_load" = "yes"; then + whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + + else + whole_archive_flag_spec='' + fi + link_all_deplibs=yes + allow_undefined_flag="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=func_echo_all + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + + else + ld_shlibs=no + fi + + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2.*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='${wl}-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 +$as_echo_n "checking if $CC understands -b... " >&6; } +if ${lt_cv_prog_compiler__b+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler__b=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -b" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler__b=yes + fi + else + lt_cv_prog_compiler__b=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 +$as_echo "$lt_cv_prog_compiler__b" >&6; } + +if test x"$lt_cv_prog_compiler__b" = xyes; then + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +fi + + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 +$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } +if ${lt_cv_irix_exported_symbol+:} false; then : + $as_echo_n "(cached) " >&6 +else + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo (void) { return 0; } +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_irix_exported_symbol=yes +else + lt_cv_irix_exported_symbol=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 +$as_echo "$lt_cv_irix_exported_symbol" >&6; } + if test "$lt_cv_irix_exported_symbol" = yes; then + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + fi + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + inherit_rpath=yes + link_all_deplibs=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + hardcode_direct_absolute=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + archive_cmds_need_lc='no' + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z defs' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='${wl}' + archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag='${wl}-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='${wl}-z,text' + allow_undefined_flag='${wl}-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-R,$libdir' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + + if test x$host_vendor = xsni; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + export_dynamic_flag_spec='${wl}-Blargedynsym' + ;; + esac + fi + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +$as_echo "$ld_shlibs" >&6; } +test "$ld_shlibs" = no && can_build_shared=no + +with_gnu_ld=$with_gnu_ld + + + + + + + + + + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } + archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; + *) lt_sed_strip_eq="s,=/,/,g" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's,/\([A-Za-z]:\),\1,g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[4-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + library_names_spec='${libname}.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec="$LIB" + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[23].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Add ABI-specific directories to the system library path. + sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" + + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || + test -n "$runpath_var" || + test "X$hardcode_automatic" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +$as_echo "$hardcode_action" >&6; } + +if test "$hardcode_action" = relink || + test "$inherit_rpath" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = xyes; then : + lt_cv_dlopen="shl_load" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +$as_echo_n "checking for shl_load in -ldld... " >&6; } +if ${ac_cv_lib_dld_shl_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_shl_load=yes +else + ac_cv_lib_dld_shl_load=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes; then : + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" +else + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +$as_echo_n "checking for dlopen in -lsvld... " >&6; } +if ${ac_cv_lib_svld_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_svld_dlopen=yes +else + ac_cv_lib_svld_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +$as_echo_n "checking for dld_link in -ldld... " >&6; } +if ${ac_cv_lib_dld_dld_link+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (); +int +main () +{ +return dld_link (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_dld_link=yes +else + ac_cv_lib_dld_dld_link=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +$as_echo "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes; then : + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +$as_echo_n "checking whether a program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +$as_echo "$lt_cv_dlopen_self" >&6; } + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self_static+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +$as_echo "$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + + + + + + + + + + + + + + + + +striplib= +old_striplib= +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +$as_echo_n "checking whether stripping libraries is possible... " >&6; } +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ;; + esac +fi + + + + + + + + + + + + + # Report which library types will actually be built + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[4-9]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } + + + + +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 +$as_echo_n "checking how to run the C++ preprocessor... " >&6; } +if test -z "$CXXCPP"; then + if ${ac_cv_prog_CXXCPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 +$as_echo "$CXXCPP" >&6; } +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +else + _lt_caught_CXX_error=yes +fi + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +archive_cmds_need_lc_CXX=no +allow_undefined_flag_CXX= +always_export_symbols_CXX=no +archive_expsym_cmds_CXX= +compiler_needs_object_CXX=no +export_dynamic_flag_spec_CXX= +hardcode_direct_CXX=no +hardcode_direct_absolute_CXX=no +hardcode_libdir_flag_spec_CXX= +hardcode_libdir_separator_CXX= +hardcode_minus_L_CXX=no +hardcode_shlibpath_var_CXX=unsupported +hardcode_automatic_CXX=no +inherit_rpath_CXX=no +module_cmds_CXX= +module_expsym_cmds_CXX= +link_all_deplibs_CXX=unknown +old_archive_cmds_CXX=$old_archive_cmds +reload_flag_CXX=$reload_flag +reload_cmds_CXX=$reload_cmds +no_undefined_flag_CXX= +whole_archive_flag_spec_CXX= +enable_shared_with_static_runtimes_CXX=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +objext_CXX=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_caught_CXX_error" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + + # save warnings/boilerplate of simple test code + ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + + ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + compiler_CXX=$CC + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` + + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test "$GXX" = yes; then + lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' + else + lt_prog_compiler_no_builtin_flag_CXX= + fi + + if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_CXX= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + ld_shlibs_CXX=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_CXX='' + hardcode_direct_CXX=yes + hardcode_direct_absolute_CXX=yes + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + file_list_spec_CXX='${wl}-f,' + + if test "$GXX" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct_CXX=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_CXX=yes + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_libdir_separator_CXX= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + export_dynamic_flag_spec_CXX='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + always_export_symbols_CXX=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_CXX='-berok' + # Determine the default libpath from the value encoded in an empty + # executable. + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath__CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX="/usr/lib:/lib" + fi + +fi + + aix_libpath=$lt_cv_aix_libpath__CXX +fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + + archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_CXX="-z nodefs" + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath__CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX="/usr/lib:/lib" + fi + +fi + + aix_libpath=$lt_cv_aix_libpath__CXX +fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_CXX=' ${wl}-bernotok' + allow_undefined_flag_CXX=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_CXX='$convenience' + fi + archive_cmds_need_lc_CXX=yes + # This is similar to how AIX traditionally builds its shared + # libraries. + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_CXX=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_CXX=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_CXX=' ' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=yes + file_list_spec_CXX='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' + enable_shared_with_static_runtimes_CXX=yes + # Don't use ranlib + old_postinstall_cmds_CXX='chmod 644 $oldlib' + postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_CXX='-L$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-all-symbols' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=no + enable_shared_with_static_runtimes_CXX=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_CXX=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + + + archive_cmds_need_lc_CXX=no + hardcode_direct_CXX=no + hardcode_automatic_CXX=yes + hardcode_shlibpath_var_CXX=unsupported + if test "$lt_cv_ld_force_load" = "yes"; then + whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + + else + whole_archive_flag_spec_CXX='' + fi + link_all_deplibs_CXX=yes + allow_undefined_flag_CXX="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=func_echo_all + archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + if test "$lt_cv_apple_cc_single_mod" != "yes"; then + archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" + archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" + fi + + else + ld_shlibs_CXX=no + fi + + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + freebsd2.*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + ld_shlibs_CXX=no + ;; + + freebsd-elf*) + archive_cmds_need_lc_CXX=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + ld_shlibs_CXX=yes + ;; + + gnu*) + ;; + + haiku*) + archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + link_all_deplibs_CXX=yes + ;; + + hpux9*) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='${wl}-E' + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + export_dynamic_flag_spec_CXX='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + ;; + *) + hardcode_direct_CXX=yes + hardcode_direct_absolute_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + interix[3-9]*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' + fi + fi + link_all_deplibs_CXX=yes + ;; + esac + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + inherit_rpath_CXX=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [1-5].* | *pgcpp\ [1-5].*) + prelink_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + old_archive_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + archive_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + archive_expsym_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + esac + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + hardcode_libdir_flag_spec_CXX='-R$libdir' + whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object_CXX=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + ld_shlibs_CXX=yes + ;; + + openbsd2*) + # C++ shared libraries are fairly broken + ld_shlibs_CXX=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + hardcode_direct_absolute_CXX=yes + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + export_dynamic_flag_spec_CXX='${wl}-E' + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + ld_shlibs_CXX=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + case $host in + osf3*) + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + ;; + *) + allow_undefined_flag_CXX=' -expect_unresolved \*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ + $RM $lib.exp' + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + ;; + esac + + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + case $host in + osf3*) + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + *) + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + esac + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + archive_cmds_need_lc_CXX=yes + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_shlibpath_var_CXX=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' + ;; + esac + link_all_deplibs_CXX=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + no_undefined_flag_CXX=' ${wl}-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + fi + + hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag_CXX='${wl}-z,text' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_CXX='${wl}-z,text' + allow_undefined_flag_CXX='${wl}-z,nodefs' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir' + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + export_dynamic_flag_spec_CXX='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ + '"$old_archive_cmds_CXX" + reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ + '"$reload_cmds_CXX" + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } + test "$ld_shlibs_CXX" = no && can_build_shared=no + + GCC_CXX="$GXX" + LD_CXX="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + # Dependencies to place before and after the object being linked: +predep_objects_CXX= +postdep_objects_CXX= +predeps_CXX= +postdeps_CXX= +compiler_lib_search_path_CXX= + +cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF + + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; +esac + +if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case ${prev}${p} in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" || + test $p = "-R"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test "$pre_test_object_deps_done" = no; then + case ${prev} in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$compiler_lib_search_path_CXX"; then + compiler_lib_search_path_CXX="${prev}${p}" + else + compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$postdeps_CXX"; then + postdeps_CXX="${prev}${p}" + else + postdeps_CXX="${postdeps_CXX} ${prev}${p}" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$predep_objects_CXX"; then + predep_objects_CXX="$p" + else + predep_objects_CXX="$predep_objects_CXX $p" + fi + else + if test -z "$postdep_objects_CXX"; then + postdep_objects_CXX="$p" + else + postdep_objects_CXX="$postdep_objects_CXX $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling CXX test program" +fi + +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS + +# PORTME: override above test on systems where it is broken +case $host_os in +interix[3-9]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + predep_objects_CXX= + postdep_objects_CXX= + postdeps_CXX= + ;; + +linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + if test "$solaris_use_stlport4" != yes; then + postdeps_CXX='-library=Cstd -library=Crun' + fi + ;; + esac + ;; + +solaris*) + case $cc_basename in + CC* | sunCC*) + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + if test "$solaris_use_stlport4" != yes; then + postdeps_CXX='-library=Cstd -library=Crun' + fi + ;; + esac + ;; +esac + + +case " $postdeps_CXX " in +*" -lc "*) archive_cmds_need_lc_CXX=no ;; +esac + compiler_lib_search_dirs_CXX= +if test -n "${compiler_lib_search_path_CXX}"; then + compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + lt_prog_compiler_wl_CXX= +lt_prog_compiler_pic_CXX= +lt_prog_compiler_static_CXX= + + + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic_CXX='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_CXX='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + lt_prog_compiler_pic_CXX= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static_CXX= + ;; + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_CXX=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_CXX='-fPIC -shared' + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + else + case $host_os in + aix[4-9]*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + else + lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + dgux*) + case $cc_basename in + ec++*) + lt_prog_compiler_pic_CXX='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + lt_prog_compiler_pic_CXX='+Z' + fi + ;; + aCC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_CXX='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler + lt_prog_compiler_wl_CXX='--backend -Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64 which still supported -KPIC. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + lt_prog_compiler_static_CXX='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fpic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-qpic' + lt_prog_compiler_static_CXX='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + lt_prog_compiler_pic_CXX='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_CXX='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + lt_prog_compiler_wl_CXX='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + lt_prog_compiler_pic_CXX='-pic' + ;; + cxx*) + # Digital/Compaq C++ + lt_prog_compiler_wl_CXX='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + lt_prog_compiler_pic_CXX='-pic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + lcc*) + # Lucid + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + lt_prog_compiler_pic_CXX='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + lt_prog_compiler_can_build_shared_CXX=no + ;; + esac + fi + +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_CXX= + ;; + *) + lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } +lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } +if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works_CXX=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works_CXX=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then + case $lt_prog_compiler_pic_CXX in + "" | " "*) ;; + *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; + esac +else + lt_prog_compiler_pic_CXX= + lt_prog_compiler_can_build_shared_CXX=no +fi + +fi + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works_CXX=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works_CXX=yes + fi + else + lt_cv_prog_compiler_static_works_CXX=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } + +if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then + : +else + lt_prog_compiler_static_CXX= +fi + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } + + + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test "$hard_links" = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + case $host_os in + aix[4-9]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global defined + # symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + export_symbols_cmds_CXX="$ltdll_cmds" + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) + exclude_expsyms_CXX='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + ;; + esac + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } +test "$ld_shlibs_CXX" = no && can_build_shared=no + +with_gnu_ld_CXX=$with_gnu_ld + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_CXX" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_CXX=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_CXX in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_CXX + pic_flag=$lt_prog_compiler_pic_CXX + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_CXX + allow_undefined_flag_CXX= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc_CXX=no + else + lt_cv_archive_cmds_need_lc_CXX=yes + fi + allow_undefined_flag_CXX=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } + archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[4-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + library_names_spec='${libname}.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec="$LIB" + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[23].*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2.*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +haiku*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux # correct to gnu/linux during the next big refactor + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be glibc/ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Add ABI-specific directories to the system library path. + sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" + + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux # correct to gnu/linux during the next big refactor + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux # correct to gnu/linux during the next big refactor + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action_CXX= +if test -n "$hardcode_libdir_flag_spec_CXX" || + test -n "$runpath_var_CXX" || + test "X$hardcode_automatic_CXX" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$hardcode_direct_CXX" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no && + test "$hardcode_minus_L_CXX" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_CXX=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_CXX=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_CXX=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 +$as_echo "$hardcode_action_CXX" >&6; } + +if test "$hardcode_action_CXX" = relink || + test "$inherit_rpath_CXX" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test "$_lt_caught_CXX_error" != yes + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + + + + + + + + + ac_config_commands="$ac_config_commands libtool" + + + + +# Only expand once: + + + +all_targets='$(PHP_MODULES) $(PHP_ZEND_EX)' +install_targets="install-modules install-headers" +phplibdir="`pwd`/modules" +CPPFLAGS="$CPPFLAGS -DHAVE_CONFIG_H" +CFLAGS_CLEAN='$(CFLAGS)' +CXXFLAGS_CLEAN='$(CXXFLAGS)' + +test "$prefix" = "NONE" && prefix="/usr/local" +test "$exec_prefix" = "NONE" && exec_prefix='$(prefix)' + + + PHP_VAR_SUBST="$PHP_VAR_SUBST PHP_MODULES" + + + PHP_VAR_SUBST="$PHP_VAR_SUBST PHP_ZEND_EX" + + + + PHP_VAR_SUBST="$PHP_VAR_SUBST all_targets" + + + PHP_VAR_SUBST="$PHP_VAR_SUBST install_targets" + + + + PHP_VAR_SUBST="$PHP_VAR_SUBST prefix" + + + PHP_VAR_SUBST="$PHP_VAR_SUBST exec_prefix" + + + PHP_VAR_SUBST="$PHP_VAR_SUBST libdir" + + + PHP_VAR_SUBST="$PHP_VAR_SUBST prefix" + + + PHP_VAR_SUBST="$PHP_VAR_SUBST phplibdir" + + + PHP_VAR_SUBST="$PHP_VAR_SUBST phpincludedir" + + + + PHP_VAR_SUBST="$PHP_VAR_SUBST CC" + + + PHP_VAR_SUBST="$PHP_VAR_SUBST CFLAGS" + + + PHP_VAR_SUBST="$PHP_VAR_SUBST CFLAGS_CLEAN" + + + PHP_VAR_SUBST="$PHP_VAR_SUBST CPP" + + + PHP_VAR_SUBST="$PHP_VAR_SUBST CPPFLAGS" + + + PHP_VAR_SUBST="$PHP_VAR_SUBST CXX" + + + PHP_VAR_SUBST="$PHP_VAR_SUBST CXXFLAGS" + + + PHP_VAR_SUBST="$PHP_VAR_SUBST CXXFLAGS_CLEAN" + + + PHP_VAR_SUBST="$PHP_VAR_SUBST EXTENSION_DIR" + + + PHP_VAR_SUBST="$PHP_VAR_SUBST PHP_EXECUTABLE" + + + PHP_VAR_SUBST="$PHP_VAR_SUBST EXTRA_LDFLAGS" + + + PHP_VAR_SUBST="$PHP_VAR_SUBST EXTRA_LIBS" + + + PHP_VAR_SUBST="$PHP_VAR_SUBST INCLUDES" + + + PHP_VAR_SUBST="$PHP_VAR_SUBST LFLAGS" + + + PHP_VAR_SUBST="$PHP_VAR_SUBST LDFLAGS" + + + PHP_VAR_SUBST="$PHP_VAR_SUBST SHARED_LIBTOOL" + + + PHP_VAR_SUBST="$PHP_VAR_SUBST LIBTOOL" + + + PHP_VAR_SUBST="$PHP_VAR_SUBST SHELL" + + + PHP_VAR_SUBST="$PHP_VAR_SUBST INSTALL_HEADERS" + + + + $php_shtool mkdir -p $BUILD_DIR + + + cat >Makefile <> Makefile + done + + cat $abs_srcdir/Makefile.global Makefile.fragments Makefile.objects >> Makefile + + +test -d modules || $php_shtool mkdir modules +touch .deps + +ac_config_headers="$ac_config_headers config.h" + + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by $as_me, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to the package provider." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +config.status +configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' +macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' +enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' +enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' +pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' +SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' +ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' +PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' +host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' +host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' +host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' +build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' +build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' +build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' +SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' +Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' +GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' +EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' +FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' +LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' +NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' +LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' +max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' +ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' +exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' +lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' +lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' +lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' +lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' +lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' +reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' +reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' +deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' +file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' +file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' +want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' +DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' +sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' +AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' +AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' +archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' +STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' +RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' +lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' +CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' +compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' +GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' +nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' +lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' +objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' +need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' +MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' +LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' +OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' +libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' +module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' +postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' +need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' +version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' +runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' +libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' +soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' +install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' +finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' +sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' +old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' +striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' +predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' +postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' +predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' +postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' +LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' +reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' +reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' +compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' +GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' +archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' +module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' +with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' +no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' +inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' +link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' +always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' +exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' +include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' +prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' +postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' +file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' +predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' +postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' +predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' +postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' + +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in SHELL \ +ECHO \ +PATH_SEPARATOR \ +SED \ +GREP \ +EGREP \ +FGREP \ +LD \ +NM \ +LN_S \ +lt_SP2NL \ +lt_NL2SP \ +reload_flag \ +OBJDUMP \ +deplibs_check_method \ +file_magic_cmd \ +file_magic_glob \ +want_nocaseglob \ +DLLTOOL \ +sharedlib_from_linklib_cmd \ +AR \ +AR_FLAGS \ +archiver_list_spec \ +STRIP \ +RANLIB \ +CC \ +CFLAGS \ +compiler \ +lt_cv_sys_global_symbol_pipe \ +lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_c_name_address \ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +nm_file_list_spec \ +lt_prog_compiler_no_builtin_flag \ +lt_prog_compiler_pic \ +lt_prog_compiler_wl \ +lt_prog_compiler_static \ +lt_cv_prog_compiler_c_o \ +need_locks \ +MANIFEST_TOOL \ +DSYMUTIL \ +NMEDIT \ +LIPO \ +OTOOL \ +OTOOL64 \ +shrext_cmds \ +export_dynamic_flag_spec \ +whole_archive_flag_spec \ +compiler_needs_object \ +with_gnu_ld \ +allow_undefined_flag \ +no_undefined_flag \ +hardcode_libdir_flag_spec \ +hardcode_libdir_separator \ +exclude_expsyms \ +include_expsyms \ +file_list_spec \ +variables_saved_for_relink \ +libname_spec \ +library_names_spec \ +soname_spec \ +install_override_mode \ +finish_eval \ +old_striplib \ +striplib \ +compiler_lib_search_dirs \ +predep_objects \ +postdep_objects \ +predeps \ +postdeps \ +compiler_lib_search_path \ +LD_CXX \ +reload_flag_CXX \ +compiler_CXX \ +lt_prog_compiler_no_builtin_flag_CXX \ +lt_prog_compiler_pic_CXX \ +lt_prog_compiler_wl_CXX \ +lt_prog_compiler_static_CXX \ +lt_cv_prog_compiler_c_o_CXX \ +export_dynamic_flag_spec_CXX \ +whole_archive_flag_spec_CXX \ +compiler_needs_object_CXX \ +with_gnu_ld_CXX \ +allow_undefined_flag_CXX \ +no_undefined_flag_CXX \ +hardcode_libdir_flag_spec_CXX \ +hardcode_libdir_separator_CXX \ +exclude_expsyms_CXX \ +include_expsyms_CXX \ +file_list_spec_CXX \ +compiler_lib_search_dirs_CXX \ +predep_objects_CXX \ +postdep_objects_CXX \ +predeps_CXX \ +postdeps_CXX \ +compiler_lib_search_path_CXX; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds \ +old_postinstall_cmds \ +old_postuninstall_cmds \ +old_archive_cmds \ +extract_expsyms_cmds \ +old_archive_from_new_cmds \ +old_archive_from_expsyms_cmds \ +archive_cmds \ +archive_expsym_cmds \ +module_cmds \ +module_expsym_cmds \ +export_symbols_cmds \ +prelink_cmds \ +postlink_cmds \ +postinstall_cmds \ +postuninstall_cmds \ +finish_cmds \ +sys_lib_search_path_spec \ +sys_lib_dlsearch_path_spec \ +reload_cmds_CXX \ +old_archive_cmds_CXX \ +old_archive_from_new_cmds_CXX \ +old_archive_from_expsyms_cmds_CXX \ +archive_cmds_CXX \ +archive_expsym_cmds_CXX \ +module_cmds_CXX \ +module_expsym_cmds_CXX \ +export_symbols_cmds_CXX \ +prelink_cmds_CXX \ +postlink_cmds_CXX; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +ac_aux_dir='$ac_aux_dir' +xsi_shell='$xsi_shell' +lt_shell_append='$lt_shell_append' + +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='$PACKAGE' + VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' + RM='$RM' + ofile='$ofile' + + + + + + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "libtool":C) + + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL + +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + +# The names of the tagged configurations supported by this script. +available_tags="CXX " + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that protects backslashes. +ECHO=$lt_ECHO + +# The PATH separator for the build system. +PATH_SEPARATOR=$lt_PATH_SEPARATOR + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# convert \$build file names to \$host format. +to_host_file_cmd=$lt_cv_to_host_file_cmd + +# convert \$build files to toolchain format. +to_tool_file_cmd=$lt_cv_to_tool_file_cmd + +# An object symbol dumper. +OBJDUMP=$lt_OBJDUMP + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method = "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob=$lt_file_magic_glob + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob=$lt_want_nocaseglob + +# DLL creation program. +DLLTOOL=$lt_DLLTOOL + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd + +# The archiver. +AR=$lt_AR + +# Flags to create an archive. +AR_FLAGS=$lt_AR_FLAGS + +# How to feed a file listing to the archiver. +archiver_list_spec=$lt_archiver_list_spec + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=$lock_old_archive_extraction + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# Specify filename containing input files for \$NM. +nm_file_list_spec=$lt_nm_file_list_spec + +# The root where to search for dependent libraries,and in which our libraries should be installed. +lt_sysroot=$lt_sysroot + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Manifest tool. +MANIFEST_TOOL=$lt_MANIFEST_TOOL + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Permission mode override for installation of shared libraries. +install_override_mode=$lt_install_override_mode + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects +postdep_objects=$lt_postdep_objects +predeps=$lt_predeps +postdeps=$lt_postdeps + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path + +# ### END LIBTOOL CONFIG + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + +ltmain="$ac_aux_dir/ltmain.sh" + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + if test x"$xsi_shell" = xyes; then + sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ +func_dirname ()\ +{\ +\ case ${1} in\ +\ */*) func_dirname_result="${1%/*}${2}" ;;\ +\ * ) func_dirname_result="${3}" ;;\ +\ esac\ +} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_basename ()$/,/^} # func_basename /c\ +func_basename ()\ +{\ +\ func_basename_result="${1##*/}"\ +} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ +func_dirname_and_basename ()\ +{\ +\ case ${1} in\ +\ */*) func_dirname_result="${1%/*}${2}" ;;\ +\ * ) func_dirname_result="${3}" ;;\ +\ esac\ +\ func_basename_result="${1##*/}"\ +} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ +func_stripname ()\ +{\ +\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ +\ # positional parameters, so assign one to ordinary parameter first.\ +\ func_stripname_result=${3}\ +\ func_stripname_result=${func_stripname_result#"${1}"}\ +\ func_stripname_result=${func_stripname_result%"${2}"}\ +} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ +func_split_long_opt ()\ +{\ +\ func_split_long_opt_name=${1%%=*}\ +\ func_split_long_opt_arg=${1#*=}\ +} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ +func_split_short_opt ()\ +{\ +\ func_split_short_opt_arg=${1#??}\ +\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ +} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ +func_lo2o ()\ +{\ +\ case ${1} in\ +\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ +\ *) func_lo2o_result=${1} ;;\ +\ esac\ +} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_xform ()$/,/^} # func_xform /c\ +func_xform ()\ +{\ + func_xform_result=${1%.*}.lo\ +} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_arith ()$/,/^} # func_arith /c\ +func_arith ()\ +{\ + func_arith_result=$(( $* ))\ +} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_len ()$/,/^} # func_len /c\ +func_len ()\ +{\ + func_len_result=${#1}\ +} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + +fi + +if test x"$lt_shell_append" = xyes; then + sed -e '/^func_append ()$/,/^} # func_append /c\ +func_append ()\ +{\ + eval "${1}+=\\${2}"\ +} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ +func_append_quoted ()\ +{\ +\ func_quote_for_eval "${2}"\ +\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ +} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + # Save a `func_append' function call where possible by direct use of '+=' + sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +else + # Save a `func_append' function call even when '+=' is not available + sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +fi + +if test x"$_lt_function_replace_fail" = x":"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 +$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} +fi + + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + + cat <<_LT_EOF >> "$ofile" + +# ### BEGIN LIBTOOL TAG CONFIG: CXX + +# The linker used to build libraries. +LD=$lt_LD_CXX + +# How to create reloadable object files. +reload_flag=$lt_reload_flag_CXX +reload_cmds=$lt_reload_cmds_CXX + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds_CXX + +# A language specific compiler. +CC=$lt_compiler_CXX + +# Is the compiler the GNU compiler? +with_gcc=$GCC_CXX + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_CXX + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_CXX + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_CXX + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object_CXX + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds_CXX +archive_expsym_cmds=$lt_archive_expsym_cmds_CXX + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds_CXX +module_expsym_cmds=$lt_module_expsym_cmds_CXX + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld_CXX + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_CXX + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_CXX + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct_CXX + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute_CXX + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L_CXX + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic_CXX + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath_CXX + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_CXX + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols_CXX + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_CXX + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_CXX + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_CXX + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds_CXX + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds_CXX + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec_CXX + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_CXX + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects_CXX +postdep_objects=$lt_postdep_objects_CXX +predeps=$lt_predeps_CXX +postdeps=$lt_postdeps_CXX + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_CXX + +# ### END LIBTOOL TAG CONFIG: CXX +_LT_EOF + + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + diff --git a/coregrade/src/configure.in b/coregrade/src/configure.in new file mode 100644 index 0000000..d745ca7 --- /dev/null +++ b/coregrade/src/configure.in @@ -0,0 +1,202 @@ +dnl This file becomes configure.in for self-contained extensions. + +AC_PREREQ(2.59) +AC_INIT(config.m4) +ifdef([AC_PRESERVE_HELP_ORDER], [AC_PRESERVE_HELP_ORDER], []) + +PHP_CONFIG_NICE(config.nice) + +dnl +AC_DEFUN([PHP_EXT_BUILDDIR],[.])dnl +AC_DEFUN([PHP_EXT_DIR],[""])dnl +AC_DEFUN([PHP_EXT_SRCDIR],[$abs_srcdir])dnl +AC_DEFUN([PHP_ALWAYS_SHARED],[ + ext_output="yes, shared" + ext_shared=yes + test "[$]$1" = "no" && $1=yes +])dnl +dnl + +test -z "$CFLAGS" && auto_cflags=1 + +abs_srcdir=`(cd $srcdir && pwd)` +abs_builddir=`pwd` + +AC_PROG_CC([cc gcc]) +PHP_DETECT_ICC +PHP_DETECT_SUNCC +AC_PROG_CC_C_O + +dnl Support systems with system libraries in e.g. /usr/lib64 +PHP_ARG_WITH(libdir, for system library directory, +[ --with-libdir=NAME Look for libraries in .../NAME rather than .../lib], lib, no) + +PHP_RUNPATH_SWITCH +PHP_SHLIB_SUFFIX_NAMES + +dnl Find php-config script +PHP_ARG_WITH(php-config,, +[ --with-php-config=PATH Path to php-config [php-config]], php-config, no) + +dnl For BC +PHP_CONFIG=$PHP_PHP_CONFIG +prefix=`$PHP_CONFIG --prefix 2>/dev/null` +phpincludedir=`$PHP_CONFIG --include-dir 2>/dev/null` +INCLUDES=`$PHP_CONFIG --includes 2>/dev/null` +EXTENSION_DIR=`$PHP_CONFIG --extension-dir 2>/dev/null` +PHP_EXECUTABLE=`$PHP_CONFIG --php-binary 2>/dev/null` + +if test -z "$prefix"; then + AC_MSG_ERROR([Cannot find php-config. Please use --with-php-config=PATH]) +fi + +php_shtool=$srcdir/build/shtool +PHP_INIT_BUILD_SYSTEM + +AC_MSG_CHECKING([for PHP prefix]) +AC_MSG_RESULT([$prefix]) +AC_MSG_CHECKING([for PHP includes]) +AC_MSG_RESULT([$INCLUDES]) +AC_MSG_CHECKING([for PHP extension directory]) +AC_MSG_RESULT([$EXTENSION_DIR]) +AC_MSG_CHECKING([for PHP installed headers prefix]) +AC_MSG_RESULT([$phpincludedir]) + +dnl Checks for PHP_DEBUG / ZEND_DEBUG / ZTS +AC_MSG_CHECKING([if debug is enabled]) +old_CPPFLAGS=$CPPFLAGS +CPPFLAGS="-I$phpincludedir" +AC_EGREP_CPP(php_debug_is_enabled,[ +#include
+#if ZEND_DEBUG +php_debug_is_enabled +#endif +],[ + PHP_DEBUG=yes +],[ + PHP_DEBUG=no +]) +CPPFLAGS=$old_CPPFLAGS +AC_MSG_RESULT([$PHP_DEBUG]) + +AC_MSG_CHECKING([if zts is enabled]) +old_CPPFLAGS=$CPPFLAGS +CPPFLAGS="-I$phpincludedir" +AC_EGREP_CPP(php_zts_is_enabled,[ +#include
+#if ZTS +php_zts_is_enabled +#endif +],[ + PHP_THREAD_SAFETY=yes +],[ + PHP_THREAD_SAFETY=no +]) +CPPFLAGS=$old_CPPFLAGS +AC_MSG_RESULT([$PHP_DEBUG]) + +dnl Support for building and testing Zend extensions +ZEND_EXT_TYPE="zend_extension" +PHP_SUBST(ZEND_EXT_TYPE) + +dnl Discard optimization flags when debugging is enabled +if test "$PHP_DEBUG" = "yes"; then + PHP_DEBUG=1 + ZEND_DEBUG=yes + changequote({,}) + CFLAGS=`echo "$CFLAGS" | $SED -e 's/-O[0-9s]*//g'` + CXXFLAGS=`echo "$CXXFLAGS" | $SED -e 's/-O[0-9s]*//g'` + changequote([,]) + dnl add -O0 only if GCC or ICC is used + if test "$GCC" = "yes" || test "$ICC" = "yes"; then + CFLAGS="$CFLAGS -O0" + CXXFLAGS="$CXXFLAGS -g -O0" + fi + if test "$SUNCC" = "yes"; then + if test -n "$auto_cflags"; then + CFLAGS="-g" + CXXFLAGS="-g" + else + CFLAGS="$CFLAGS -g" + CXXFLAGS="$CFLAGS -g" + fi + fi +else + PHP_DEBUG=0 + ZEND_DEBUG=no +fi + +dnl Always shared +PHP_BUILD_SHARED + +dnl Required programs +PHP_PROG_RE2C +PHP_PROG_AWK + +sinclude(config.m4) + +enable_static=no +enable_shared=yes + +dnl Only allow AC_PROG_CXX and AC_PROG_CXXCPP if they are explicitly called (by PHP_REQUIRE_CXX). +dnl Otherwise AC_PROG_LIBTOOL fails if there is no working C++ compiler. +AC_PROVIDE_IFELSE([PHP_REQUIRE_CXX], [], [ + undefine([AC_PROG_CXX]) + AC_DEFUN([AC_PROG_CXX], []) + undefine([AC_PROG_CXXCPP]) + AC_DEFUN([AC_PROG_CXXCPP], [php_prog_cxxcpp=disabled]) +]) +AC_PROG_LIBTOOL + +all_targets='$(PHP_MODULES) $(PHP_ZEND_EX)' +install_targets="install-modules install-headers" +phplibdir="`pwd`/modules" +CPPFLAGS="$CPPFLAGS -DHAVE_CONFIG_H" +CFLAGS_CLEAN='$(CFLAGS)' +CXXFLAGS_CLEAN='$(CXXFLAGS)' + +test "$prefix" = "NONE" && prefix="/usr/local" +test "$exec_prefix" = "NONE" && exec_prefix='$(prefix)' + +PHP_SUBST(PHP_MODULES) +PHP_SUBST(PHP_ZEND_EX) + +PHP_SUBST(all_targets) +PHP_SUBST(install_targets) + +PHP_SUBST(prefix) +PHP_SUBST(exec_prefix) +PHP_SUBST(libdir) +PHP_SUBST(prefix) +PHP_SUBST(phplibdir) +PHP_SUBST(phpincludedir) + +PHP_SUBST(CC) +PHP_SUBST(CFLAGS) +PHP_SUBST(CFLAGS_CLEAN) +PHP_SUBST(CPP) +PHP_SUBST(CPPFLAGS) +PHP_SUBST(CXX) +PHP_SUBST(CXXFLAGS) +PHP_SUBST(CXXFLAGS_CLEAN) +PHP_SUBST(EXTENSION_DIR) +PHP_SUBST(PHP_EXECUTABLE) +PHP_SUBST(EXTRA_LDFLAGS) +PHP_SUBST(EXTRA_LIBS) +PHP_SUBST(INCLUDES) +PHP_SUBST(LFLAGS) +PHP_SUBST(LDFLAGS) +PHP_SUBST(SHARED_LIBTOOL) +PHP_SUBST(LIBTOOL) +PHP_SUBST(SHELL) +PHP_SUBST(INSTALL_HEADERS) + +PHP_GEN_BUILD_DIRS +PHP_GEN_GLOBAL_MAKEFILE + +test -d modules || $php_shtool mkdir modules +touch .deps + +AC_CONFIG_HEADER(config.h) + +AC_OUTPUT() diff --git a/coregrade/src/core/XmlElements.cc b/coregrade/src/core/XmlElements.cc new file mode 100644 index 0000000..160f035 --- /dev/null +++ b/coregrade/src/core/XmlElements.cc @@ -0,0 +1,283 @@ +//**************************************************************************** +// Filename: SimpleXMLParser.h +// Copyright 1999 Daniel X. Pape. All rights reserved. +// +// Description: implementation of the Element classes. +// +//**************************************************************************** +// Revision History: +// Thursday, July 08, 1999 - Original. Heavily based on "A Simple XML +// Parser" by Sebastien Andrivet. See Documentation. +//**************************************************************************** + +#include "XmlElements.h" + + + +// Our namespace +namespace SimpleXMLParser +{ + +// Null element +static ElementNull s_nullElem; +ElementNull& Element::nullElem = s_nullElem; + +// *************************************************************************** +// Function: Constructor +// Desc: +// *************************************************************************** +Attribute::Attribute(const std::string& name, const std::string& value) + : name_(name), value_(value) +{ +} + +// *************************************************************************** +// Function: Add +// Desc: Adds the string to the value +// *************************************************************************** +void +Value::Add(const std::string& strText) +{ + value_ += strText; +} + +// *************************************************************************** +// Function: Add +// Desc: Adds the character to the value +// *************************************************************************** +void +Value::Add(char c) +{ + value_ += c; +} + +// *************************************************************************** +// Function: string conversion operator +// Desc: +// *************************************************************************** +Value::operator const std::string&() const +{ + return(value_); +} + +// *************************************************************************** +// Function: Constructor +// Desc: +// *************************************************************************** +Element::Element(const std::string& strName) +: name_(strName) +{ +} + +// *************************************************************************** +// Function: IsNull +// Desc: All elements are not null except Element::nullElem +// *************************************************************************** +bool +Element::IsNull() const +{ + return(false); +} + +// *************************************************************************** +// Function: Constructor +// Desc: +// *************************************************************************** +ElementTag::ElementTag(const std::string& strName) +: Element(strName) +{ +} + +// *************************************************************************** +// Function: Destructor +// Desc: +// *************************************************************************** +ElementTag::~ElementTag() +{ + // Destroy attributes +// for(Attributes::iterator itAttrib = attributes_.begin(); +// itAttrib != attributes_.end(); ++itAttrib) +// delete *itAttrib; + + // Destroy childs + for(Elements::iterator itElem = children_.begin(); + itElem != children_.end(); ++itElem) + delete *itElem; +} + +// *************************************************************************** +// Function: AddChild +// Desc: +// *************************************************************************** +bool +ElementTag::AddChild(Element* pChild) +{ + children_.push_back(pChild); + return(true); +} + +// *************************************************************************** +// Function: GetChildren +// Desc: +// *************************************************************************** +const Elements* +ElementTag::GetChildren() const +{ + return(children_.empty() ? 0 : &children_); +} + +// *************************************************************************** +// Function: FindChild +// Desc: Find a child called szName starting at it +// *************************************************************************** +bool +ElementTag::FindChild(const char * szName, + Elements::const_iterator& it) const +{ + for(; it != children_.end(); ++it) + { + if((*it)->GetName() == szName) + return(true); + } + + return(false); +} + +// *************************************************************************** +// Function: GetChild +// Desc: Get the nth element called szName +// *************************************************************************** +const Element& +ElementTag::GetChild(const char * szName, int nIndex) const +{ + Elements::const_iterator it = children_.begin(); + + // Count the number of match to skip (less 1) + // Bug#0001: was ++nIndex instead of ++nCount + for(int nCount = 0; nCount < nIndex; ++nCount) + { + if(!FindChild(szName, it)) + return nullElem; + ++it; + } + + // Last search (we skip nIndex - 1) + if(!FindChild(szName, it)) + return nullElem; + + return(**it); + +} + +// *************************************************************************** +// Function: GetAttributes +// Desc: return 0 if no attributes +// *************************************************************************** +const Attributes* +ElementTag::GetAttributes() const +{ + return(attributes_.empty() ? 0 : &attributes_); +} + +// *************************************************************************** +// Function: GetAttributeValue +// Desc: return "" if attribute doesn't exist +// *************************************************************************** +const std::string +ElementTag::GetAttributeValue(const std::string& attr) const +{ + Attributes::const_iterator a_it = attributes_.find(attr); + if(a_it != attributes_.end()) + return (*a_it).second; + else + return ""; +} + +// *************************************************************************** +// Function: Constructor +// Desc: +// *************************************************************************** +ElementSimple::ElementSimple(const std::string& strName) +: Element(strName) +{ +} + +// *************************************************************************** +// Function: AddChild +// Desc: Do nothing for ElementSimple ... no children. +// *************************************************************************** +bool +ElementSimple::AddChild(Element* /*pChild*/) +{ + return false; +} + +// *************************************************************************** +// Function: Destructor +// Desc: No children. +// *************************************************************************** +const Elements* +ElementSimple::GetChildren() const +{ + return 0; +} + +// *************************************************************************** +// Function: GetChild +// Desc: Get the nth element called szName - return nullElem. +// *************************************************************************** +const Element& +ElementSimple::GetChild(const char * /*szName*/, int /*nIndex*/) const +{ + return nullElem; +} + +// *************************************************************************** +// Function: GetAttributes +// Desc: No attributes - return 0 +// *************************************************************************** +const Attributes* +ElementSimple::GetAttributes() const +{ + return 0; +} + +// *************************************************************************** +// Function: GetAttributeValue +// Desc: No attributes - return "" +// *************************************************************************** +const std::string ElementSimple::GetAttributeValue(const std::string&) const +{ + return ""; +} + +// *************************************************************************** +// Function: Constructor +// Desc: +// *************************************************************************** +ElementComment::ElementComment(const std::string& strComment) +: ElementSimple("!") +{ + AddValue(strComment); +} + +// *************************************************************************** +// Function: Constructor +// Desc: +// *************************************************************************** +ElementNull::ElementNull() +: ElementSimple("") +{ +} + +// *************************************************************************** +// Function: IsNull +// Desc: +// *************************************************************************** +bool ElementNull::IsNull() const +{ + return true; +} + +} // end namespace + diff --git a/coregrade/src/core/XmlParser.cc b/coregrade/src/core/XmlParser.cc new file mode 100644 index 0000000..9803950 --- /dev/null +++ b/coregrade/src/core/XmlParser.cc @@ -0,0 +1,971 @@ +//**************************************************************************** +// Filename: XmlElements.h +// Copyright 1999 Daniel X. Pape. All rights reserved. +// +// Description: A set of classes for reading and parsing simple XML files. +// +//**************************************************************************** +// Revision History: +// Thursday, July 08, 1999 - Original. Heavily based on "A Simple XML +// Parser" by Sebastien Andrivet. See Documentation. +//**************************************************************************** + +#include "XmlParser.h" + +using std::string; +using std::auto_ptr; + + +// Macro to get the number of elements in a array +#ifndef elemof +#define elemof(array) (sizeof(array) / sizeof((array)[0])) +#endif + +// Our namespace +namespace SimpleXMLParser +{ + +// *************************************************************************** +// Function: Constructor +// Desc: +// *************************************************************************** +XmlParser::XmlParser() + : source_(0), sourceCurrent_(0), sourceEnd_(0), + line_(1), column_(1), xmlVersion_("1.0") +{ +} + +// *************************************************************************** +// Function: SyntaxError +// Desc: Syntax error (throw exception) +// *************************************************************************** +void XmlParser::SyntaxError() +{ + throw XmlException(line_, column_); +} + +// *************************************************************************** +// Function: NextChar +// Desc: Next char (next position) +// *************************************************************************** +char XmlParser::NextChar() +{ + if(sourceCurrent_ >= sourceEnd_) return(0); + char c = *sourceCurrent_++; + + // Skip \r if any + if(c == '\r') + { + if(sourceCurrent_ >= sourceEnd_) return(0); + c = *sourceCurrent_++; + } + + if(c == '\n') + ++line_, column_ = 1; + else + ++column_; + + return(c); +} + +// *************************************************************************** +// Function: PreviousChar +// Desc: Previous position +// *************************************************************************** +void XmlParser::PreviousChar() +{ + if(sourceCurrent_ - 1 < source_) + sourceCurrent_ = source_; + else + sourceCurrent_ -= 1; +} + +// *************************************************************************** +// Function: ParseString +// Desc: +// *************************************************************************** +bool XmlParser::ParseString(const char* str) +{ + Bookmark bookmark(*this); + + // not end of string ? + while(*str != 0) + { + // Next char + char c = NextChar(); + // Same ? + if(c != *str) + { + // Not the same so revert back to + // the previous position + bookmark.Restore(); + return(false); + } + + // Next char of the string + ++str; + } + + return(true); +} + +// *************************************************************************** +// Function: ParseStringNoCase +// Desc: Read the given string (not case sensitive) +// *************************************************************************** +bool XmlParser::ParseStringNoCase(const char* str) +{ + Bookmark bookmark(*this); + + // not end of string ? + while(*str != 0) + { + // Next char + char c = NextChar(); + // Same (not case sensitive) ? + if(LowCase(c) != LowCase(*str)) + { + // Not the same so revert back to + // the previous position + bookmark.Restore(); + return(false); + } + + // Next char of the string + ++str; + } + + return(true); +} + +// *************************************************************************** +// Function: ParseNumber +// Desc: Read a (decimal) number +// *************************************************************************** +bool XmlParser::ParseNumber(int& n) +{ + char c = NextChar(); + + if(!IsDigit(c)) + return(false); // not a number + + n = 0; + while(IsDigit(c)) + { + // Compute new number + n = n * 10 + c - '0'; + // Next char + c = NextChar(); + } + + // The current char if not part of the number + PreviousChar(); + + return(true); +} + +// *************************************************************************** +// Function: ParseHexNumber +// Desc: Read an hexadecimal number +// *************************************************************************** +bool XmlParser::ParseHexNumber(int& n) +{ + char c = NextChar(); + + if(!IsHexDigit(c)) + return(false); + + n = 0; + // Read all digits possible + while(IsHexDigit(c)) + { + // Compute new number + n = n * 16 + HexDigitValue(c); + // Next char + c = NextChar(); + } + + // The current char if not part of the number + PreviousChar(); + + return(true); +} + +// *************************************************************************** +// Function: ParseChar +// Desc: +// *************************************************************************** +bool XmlParser::ParseChar(char c) +{ + if(NextChar() != c) + { + PreviousChar(); + return(false); + } + return(true); +} + +// *************************************************************************** +// Function: ParseSpaces +// Desc: Read One or more spaces +// S ::= (#x20 | #x9 | #xD | #xA)+ +// *************************************************************************** +bool XmlParser::ParseSpaces() +{ + char c = NextChar(); + if(!IsSpace(c)) + { + PreviousChar(); + return(false); + } + + do c = NextChar(); + while(IsSpace(c)); + + PreviousChar(); + + return(true); +} + +// *************************************************************************** +// Function: ParseDeclBegining +// Desc: Parse a declaration (like: version = ) +// S Eq +// *************************************************************************** +bool XmlParser::ParseDeclBegining(const char * szString) +{ + // Parse: S + char c = NextChar(); + if(!IsSpace(c)) + { + PreviousChar(); + return(false); + } + ParseSpaces(); + + // Parse: + if(!ParseString(szString)) + return(false); + + // Parse: Eq + if(!ParseEq()) + SyntaxError(); + + return(true); +} + +// *************************************************************************** +// Function: ParseXMLDecl +// Desc: Parse XML declaration +// XMLDecl ::= '' +// Marker: '' + if(!ParseVersionInfo(xmlVersion_)) + SyntaxError(); + + // Parse EncodingDecl (optional) + ParseEncodingDecl(); + // Parse S (spaces) (optional) + ParseSpaces(); + + // Parse end of declaration '?>' + if(!ParseString("?>")) + SyntaxError(); + + return(true); +} + +// *************************************************************************** +// Function: ParseEq +// Desc: Parse equal sign +// Eq ::= S? '=' S? +// Marker: '=' +// *************************************************************************** +bool XmlParser::ParseEq() +{ + // Record the current position + Bookmark bookmark(*this); + + // Parse spaces (optional) + ParseSpaces(); + // Is an equal sign ? + if(!ParseChar('=')) + { + // No, so revert to the previous position + bookmark.Restore(); + return(false); + } + // Skip spaces if any + ParseSpaces(); + + return(true); +} + +// *************************************************************************** +// Function: ParseVersionInfo +// Desc: Parse XML version +// VersionInfo ::= S 'version' Eq (' VersionNum ' | " VersionNum ") +// Marker: 'version' +// *************************************************************************** +bool XmlParser::ParseVersionInfo(string& version) +{ + // Parse: S 'version' Eq + if(!ParseDeclBegining("version")) + return(false); + + // Parse: (' VersionNum ' | " VersionNum ") + char c = NextChar(); + if(c != '\'' && c != '\"') + SyntaxError(); + + // Parse version number and check the delimiter + if(!ParseVersionNum(version) || NextChar() != c) + SyntaxError(); + + return(true); +} + +// *************************************************************************** +// Function: ParseVersionNum +// Desc: Parse XML version number +// VersionNum ::= ([a-zA-Z0-9_.:] | '-')+ +// *************************************************************************** +bool XmlParser::ParseVersionNum(string& version) +{ + // Record the current position + Bookmark bookmark(*this); + + char c = NextChar(); + // Is an allowed character ? + if(!IsAlphaDigitEx(c)) + return(false); + + c = NextChar(); + // Get as more char as possible + while(IsAlphaDigitEx(c)) + c = NextChar(); + + // Current character is not part of the version num. + PreviousChar(); + + // Get the version number + bookmark.GetSubString(version); + return(true); +} + +// *************************************************************************** +// Function: ParseEncodingDecl +// Desc: Parse XML encoding declaration +// EncodingDecl ::= S 'encoding' Eq +// ('"' EncName '"' | "'" EncName "'") +// Marker: 'encoding' +// *************************************************************************** +bool XmlParser::ParseEncodingDecl() +{ + // Parse: S 'encoding' Eq + if(!ParseDeclBegining("encoding")) + return(false); + + // Parse: ('"' EncName '"' | "'" EncName "'") + char c = NextChar(); + if(c != '\'' && c != '\"') + SyntaxError(); + + // Parse encoding name and check delimiter + // Bug#0002: Was ParseEncName() instead of !ParseEncName() + if(!ParseEncName() || NextChar() != c) + SyntaxError(); + + return(true); +} + +// *************************************************************************** +// Function: ParseEncName +// Desc: Parse encoding name +// EncName ::= [A-Za-z] ([A-Za-z0-9._] | '-')* +// *************************************************************************** +bool XmlParser::ParseEncName() +{ + char c = NextChar(); + // Is an allowed character ? + if(!IsAlpha(c)) + return(false); + + c = NextChar(); + // Get as more char as possible + while(IsAlphaDigitEx(c)) + c = NextChar(); + + // Current character is not part of the version num. + PreviousChar(); + + // In this version, the encoding is not used + return(true); +} + +// *************************************************************************** +// Function: ParseMiscs +// Desc: Parse Comments, spaces, etc. +// Misc* +// Misc ::= Comment | S +// *************************************************************************** +void XmlParser::ParseMiscs() +{ + for(;;) + { + // Parse spaces if any + ParseSpaces(); + + // Parse comment if any + auto_ptr pElem(ParseComment()); + if(0 == pElem.get()) + break; + } +} + +// *************************************************************************** +// Function: ParseComment +// Desc: Parse comment and construct an element +// Comment ::= '' +// *************************************************************************** +ElementComment* XmlParser::ParseComment() +{ + // Check the start of the comment + if(!ParseString("", i ); + snprintf( s2, sizeof(s2), "", i ); + c1 = strstr(buf, s1); + c2 = strstr(buf, s2); + if (!c1 || !c2) break; + c1 += strlen(s1); + + snprintf( s2, sizeof(s2), "section%d", i ); + + char * buf = new char[c2-c1+1]; + memcpy( buf, c1, c2-c1 ); + buf[c2-c1] = 0; + char * temp = RFormBuffer( buf ); + delete buf; + LetStr( s2, temp ); + free( temp ); + +// LetStr( s2, c1, c2-c1 ); + +// logfmt( FLOG_MAX, "%s=%s", s2, GetVariable(s2) ); + + } + + logfmt( FLOG_MAX, "%d sections found", i-1 ); + + free( buf ); +} + + +bool C_CGI_Form::ParseNewTemplate( char * fname /*= NULL*/ ) + // returns false if this seems to be wrong format template +{ + char * global_template = fname?fname:this->global_template; + + logfmt( FLOG_MAX, "ParseNewTemplate( \"%s\" )", global_template ); + struct stat stats; + if ( stat(global_template, &stats)==-1 ) + { +// delete filename; + + logfmt( FLOG_MAX, "stat() error: %s, '%s'", strerror(errno), global_template ); + return true; + } + + char * buf = (char *)malloc(stats.st_size+1); + + if (!buf) + { +// delete filename; + logfmt( logERROR, "Could not allocate %d bytes for global template %s", stats.st_size+1, global_template ); + return true; + } + + FILE * f = fopen( global_template, "r" ); + +// delete filename; + + if (!f) + { + logfmt( logERROR, "Could not read global template '%s'", global_template ); + return true; + } + + fread( buf, 1, stats.st_size, f ); + buf[stats.st_size] = 0; + fclose( f ); + + + logfmt( FLOG_MAX, "New template loaded '%s', size=%d bytes", global_template, stats.st_size ); + + int i; + char name[50], *c1, *c2; + + c1 = buf; + if ( c1[0]!='[' ) + { + c1 = strstr( c1, "\n[" ); + if (c1) c1++; + } + + bool result = true; + + if ( !c1 ) + result = false; + + while (c1) + { + c1++; + c2 = strchr( c1, ']' ); + strnsafecpy( name, c1, c2-c1, sizeof(name) ); + c2++; + c1 = c2+strspn( c2, " \t\r\n" ); // ignore initial spaces + + if ( *c1=='[' ) // blank variable + { + LetStr( name, "" ); + continue; + } + + c2 = strstr( c1, "\n[" ); + if (c2) + { + *c2 = 0; + c2++; + } + + char * c = (c2?c2:(buf+stats.st_size)) -1; + + while ( c>=c1 && strchr( " \t\r\n", *c ) ) + { + *c = 0; c--; + } + + LetStr( name, c1 = RFormBuffer(c1) ); + free( c1 ); + +// logfmt( FLOG_MAX, "FOUND: %s, len = '%d'", name, strlen(GetVariable(name)) ); + + c1 = c2; + } + + + free( buf ); + + return result; +} + + +bool C_CGI_Form::Form( FILE * fout ) +{ + fprintf( fout, "Content-Type: text/html; charset=UTF-8\n\n"); + + if (global_template) ParseGlobalTemplate(); + +CTimer timer; + + char * c = FormFile( template_file ); + +logfmt( logINFO, "FormFile() took %.3f sec", timer.elapsed()/1e6 ); +logfmt( logINFO, "strlen(c)=%d", strlen(c) ); + + int r; + if ( r = ferror( fout ) ) logfmt( logWARNING, "ferror() returned %d: %s", r, strerror(r) ); + fprintf( fout, "%s", c ); +logfmt( FLOG_MAX, "DEBUG" ); + if ( r = ferror( fout ) ) logfmt( logWARNING, "ferror() returned %d: %s", r, strerror(r) ); + fflush( fout ); +logfmt( FLOG_MAX, "DEBUG" ); + delete c; + +logfmt( logINFO, "fprintf()/fflush() took %.3f sec", timer.elapsed()/1e6 ); + + return true; +} + +bool C_CGI_Form::Form( FILE * fout, char * template_file ) +{ + char * c = FormFile( template_file ); + fprintf( fout, c ); fflush( fout ); + delete c; + + return true; +} + + +int C_CGI_Form::GetParam( char name[], char *value, int valuelen, char ** end /*= NULL*/, char * start /*= NULL*/ ) +{ +// logfmt( FLOG_MAX, "C_CGI_Form::GetParam( name='%s', sz=%d )", name, valuelen ); +// printf("C_CGI_Form() on params=%s \n", params); + + int result; + char * qs; + + if (start) + result = ::GetParam( start, name, value, valuelen, end ); + else + { + qs = getenv("QUERY_STRING"); + + //logfmt( FLOG_MAX, "qs='%s'", qs ); + + if ( !qs || !(result = ::GetParam( qs, name, value, valuelen, end ) ) ) + result = ::GetParam( params, name, value, valuelen, end ); + } + +// if ( !value[0] ) + + +// logfmt( FLOG_MAX, "GetParam returns '%s'='%s', qs='%s'", name, value, qs ); + + return result; +} + +int C_CGI_Form::GetParamMul( char name[], TList ** list ) +{ + char value[100]; + int r, i=0; + + char * qs = params; + + logfmt( FLOG_MAX, "params=%s", qs ); +// getenv("QUERY_STRING"); if (!qs) qs = params; + + char *start = qs, * end; + + TList *top=NULL, *cur=NULL, *tmp; + + do { + r = GetParam( name, value, sizeof(value), &end, start ); + logfmt( FLOG_MAX, "%s[%d]=%s", name, i, value ); + start = end; + if (r) + { + tmp = new TList; + tmp->text = strdup( value ); + tmp->next = NULL; + + if (cur) + { + cur->next = tmp; + cur = cur->next; + } + else + top = cur = tmp; + + i++; + } + } while (r); + + if (list) *list = top; + return i; +} + + +int C_CGI_Form::GetCommand( char * commands[], int n ) +{ + char cmd[30]; + + cmd[0] = 0; + +/* LOG( argv[1], LOG_MAX ); + if (argc>1) + { + ::GetParam( argv[1], "action", cmd, sizeof(cmd) ); + if (cmd[0]) + logfmt( FLOG_MAX, "Command given as a parameter: %s", cmd); + }*/ + +/* + char * qs = getenv("QUERY_STRING"); + if (qs) + { + ::GetParam( qs, "action", cmd, sizeof(cmd) ); + if (cmd[0]) + logfmt( FLOG_MAX, "Command given as a parameter: %s", cmd); + } + + if ( !cmd[0] )*/ + + GetParam( "action", cmd, sizeof(cmd) ); + + if ( !cmd[0] ) + { + char * c; + + c = strcasestr( params, ".x=" ); + if (!c) + return -1; + + char * c1 = strchr( c, '&' ); + if (!c1) return -1; + + + c1++; + c = strchr( c1, '.' ); + if (!c) return -1; + + + if (c-c1 < sizeof(cmd) ) + strncpy( cmd, c1, c-c1 ); + else + return -1; + + cmd[c-c1] = 0; + } + + //logfmt( FLOG_MAX, "command=%s", cmd); // LOG + + int i; + + for ( i=0; i%1$s", explanation?explanation:"Invalid input" ); + + logfmt( FLOG_MAX, "Flagged %s", buf ); +} + + +void C_CGI_Form::Flag( CGI_Variable * var ) +{ + if ( var && var->pattern ) + Flag( var->name, var->pattern->explanation ); +} + + +void C_CGI_Form::MatchVariable( CGI_Variable * var, bool optional /*= false*/, bool flag_if_mismatch /*= true*/ ) +{ + char s[500]; + char buf[500]; + regex_t compiled; + char smatch[500], fc; + unsigned int i; + int n = 0; + ULONG * t = (ULONG*)var->target; + double amount; + +// typedef *ULONG PULONG; +// (ULONG *) t[100]; +// t = var->target; + + if ( var->type != CGI_CHECKBOXLIST && var->type != CGI_CHECKBOXLIST_ARRAY) + { + GetParam( var->name, s, sizeof( s ) ); + + var->match = true; // Let's not raise hell + + strsafecpy( smatch, s, sizeof(smatch) ); // in case it doesn't get filled in + + if ( optional && smatch[0]==0 /*&& var->type==CGI_STRING*/ ) + var->match = true; + else + { + if ( var->pattern ) // Matching requested? + { + regmatch_t match[2]; + + if ( regcomp( &compiled, var->pattern->mask, REG_EXTENDED ) != 0 ) + { + logfmt( logWARNING, "regcomp returned non-0, assuming a match" ); + } + else + { + size_t r = regexec( &compiled, s, 2, match, 0 ); + + if ( r==0 ) // match + { + int len = match[1].rm_eo-match[1].rm_so; + if ( len>=sizeof(smatch) ) + len = sizeof(smatch)-1; // to be safe + + strncpy( smatch, &s[ match[1].rm_so ], len ); + smatch[ len ] = 0; + + } + else + var->match = false; + + regfree( &compiled ); + } + } + + // Too short or too long? + + if ( ( var->minlen>=0 && strlen( smatch )minlen ) || + ( var->maxlen>=0 && strlen( smatch )>var->maxlen ) + ) + var->match = false; + } + + LetStr( var->name, smatch ); + + } + else + var->match = true; + + if ( ( var->type==CGI_RADIO || var->type==CGI_RADIO_INT || var->type==CGI_RADIO_INT2 ) && smatch[0]==0 ) + var->match = false; + + + // If match => store it + + + bool *_bool = (bool*)var->target; + + + if ( var->match ) + { + switch ( var->type ) + { + case CGI_STRING: + + strsafecpy( (char *)var->target, smatch, var->size ); + break; + + case CGI_RADIO: + + for ( i=0; inradio; i++ ) + if ( strcasecmp( var->radio[i], smatch ) == 0 ) + break; + + if ( i == var->nradio ) + var->match = 0; + else + { + *(unsigned char*)var->target = i; + + snprintf( buf, sizeof(buf), "%schecked", smatch ); + LetStr( buf, "checked" ); + } + + break; + + case CGI_RADIO_INT: + + snprintf( buf, sizeof(buf), "%c%s", var->name[0], smatch ); + LetStr( buf, "checked" ); + + + char * endptr; + *(short*)var->target = (short)strtol( smatch, &endptr, 10 ); + var->match = smatch[0]!=0 && *endptr==0; + + break; + + case CGI_RADIO_INT2: + + snprintf( buf, sizeof(buf), "%.2s%s", var->name, smatch ); + LetStr( buf, "checked" ); + + + *(short*)var->target = (short)strtol( smatch, &endptr, 10 ); + var->match = smatch[0]!=0 && *endptr==0; + + break; + + case CGI_SELECT: + + logfmt( FLOG_MAX, "CGI_SELECT" ); + memset( var->target, 0, var->size ); + *(unsigned short*)var->target = atol( smatch ); + + if ( var->radio ) + fc = (char)*(*(var->radio+0)+0); + else + fc = var->name[0]; + + snprintf( buf, sizeof(buf), "%c%s", fc, smatch ); + LetStr( buf, "selected" ); + + break; + + case CGI_SELECT_LOOKUP: + + memset( var->target, 0, var->size ); + + strsafecpy( (char *)var->target, smatch, var->size ); + + + if ( var->radio ) + fc = (char)*(*(var->radio+0)+0); + else + fc = var->name[0]; + + snprintf( buf, sizeof(buf), "%c%s", fc, smatch ); + LetStr( buf, "selected" ); + + break; + + + case CGI_CHECKBOX: + + // target is a boolean + + *_bool = 0==strcasecmp( smatch, "on" ); + + if ( *_bool ) + { + snprintf( buf, sizeof(buf), "%schecked", var->name ); + LetStr( buf, "checked" ); + } + + break; + + + case CGI_CHECKBOXLIST: + + // target is a ULONG 32-bit? + + *(ULONG*)var->target = 0; + for (i=0; imaxlen && iradio[0], i+1 ); + GetParam( s, buf, sizeof(buf) ); + + logfmt( FLOG_MAX, "CHECKBOX_LIST '%s' %s=%s", var->name, s, buf ); + + if (buf[0]) + { +// logfmt( FLOG_MAX, "CGI_CHECKBOXLIST: %d=%s, target=%lu", i+1, buf, +// *(ULONG*)var->target ); + *(ULONG*)var->target |= (1<target ); + LetStr( s, "checked" ); + } + } + + break; + + case CGI_CHECKBOXLIST_ARRAY: + + // target is a ULONG 32-bit? + +// *(ULONG*)var->target = 0; + for (i=0; imaxlen; i++) //&& iradio[0], i ); + GetParam( s, buf, sizeof(buf) ); + if (buf[0]) + { + t[n] = atol( buf ); n++; +// logfmt( FLOG_MAX, "CGI_CHECKBOXLIST: %d=%s, target=%lu", i+1, buf, +// *(ULONG*)var->target ); +// *(ULONG*)var->target |= (1<target ); + LetStr( s, "checked" ); + } + } + t[n] = 0; + + if ( nminlen ) // minimum required number of checked boxes + var->match = false; + + break; + + case CGI_SELECT_MUL: + + TList *list, *cur; + GetParamMul( var->name, &list ); + //PrintList( list ); + + cur = list; + + for (i=0; cur; i++) + { + if ( var->radio ) + if ( *(char*)var->radio==cur->text[0] ) + { + t[n] = atol( &cur->text[1] ); n++; + } + else + { + cur = cur->next; + continue; + } + else + { + t[n] = atol( cur->text ); n++; + } + + LetStr( cur->text, "selected" ); + + + + + cur = cur->next; + } + t[n] = 0; + + if ( nminlen ) // minimum required number of checked boxes + var->match = false; + + cur = list; + + DestroyList( list ); + + break; + + case CGI_LONG: + + // target is a 32-bit long + + *(long*)var->target = strtol( smatch, &endptr, 10 ); + var->match = smatch[0]!=0 && *endptr==0; + + break; + + case CGI_FLOAT: + + *(float*)var->target = strtod( smatch, &endptr ); + var->match = smatch[0]!=0 && *endptr==0; + + break; + + + case CGI_AMOUNT: + + amount = strtod( smatch, &endptr ); + var->match = smatch[0]!=0 && *endptr==0;; + *(unsigned long*)var->target = (ULONG)(amount*100.0+0.5); + + break; + + + default: ; // do not let this happen, ok? + + } // switch + + + } + +// else + + if ( !var->match ) + { + + + + + if ( var->pattern /*&& !optional*/ && flag_if_mismatch ) + { + Flag( var ); + } + +// PrintVars(); + + } + + if ( optional && !var->match ) + { + logfmt( FLOG_MAX, "Resetting '%s'", var->name ); + memset( var->target, 0xFF, var->size ); + + if ( var->type== CGI_SELECT ) + logfmt( FLOG_MAX, "%s, smatch=%s", var->name, smatch ); + + // Clear the flag if blank + if ( !smatch[0] ) + Flag( var->name, CGI_FLAG_CLEAR ); + } + + if ( optional && var->type!=CGI_STRING ) + var->match = true; + +// logfmt( FLOG_MAX, "MatchVariable(): %s=%s, match=%s", var->name, smatch, var->match?"true":"false" ); +} + +void C_CGI_Form::SetVariable( CGI_Variable * var ) +{ + char buf[100], s[100]; + int i; + + switch ( var->type ) + { + case CGI_STRING: + + LetStr( var->name, (char*)var->target ); + break; + + case CGI_RADIO: + + snprintf( buf, sizeof(buf), "%schecked", var->radio[ *(unsigned char *)var->target ] ); + LetStr( buf, "checked" ); + + break; + + case CGI_RADIO_INT: + + snprintf( buf, sizeof(buf), "%c%d", var->name[0], *(short *)var->target ); + LetStr( buf, "checked" ); + + break; + + case CGI_RADIO_INT2: + + snprintf( buf, sizeof(buf), "%.2s%d", var->name, *(short*)var->target ); + LetStr( buf, "checked" ); + + break; + + + case CGI_SELECT: + + snprintf( buf, sizeof(buf), "%c%d", var->name[0], *(unsigned short*)var->target ); + LetStr( buf, "selected" ); + + break; + + case CGI_SELECT_LOOKUP: + + snprintf( buf, sizeof(buf), "%c%s", + var->radio ? (char)*(*(var->radio+0)+0) : var->name[0], + + (char *)var->target ); + LetStr( buf, "selected" ); + + break; + + case CGI_CHECKBOX: + + // target is a boolean + if (var->target) + { + snprintf( buf, sizeof(buf), "%schecked", var->name ); + LetStr( buf, "checked" ); + } + + break; + + case CGI_CHECKBOXLIST: + + // target is a ULONG 32-bit? + + for (i=0; imaxlen && itarget & 1<radio[0], i+1 ); + LetStr( s, "checked" ); + } + } + + break; + + case CGI_LONG: + + // target is a 32-bit long + snprintf( s, sizeof(s), "%lu", *(ULONG*)var->target ); + LetStr( var->name, s ); + + break; + + case CGI_FLOAT: + + LetStrf( var->name, "%.2f", *(float*)var->target ); + break; + + case CGI_AMOUNT: + + // target is a 32-bit long + snprintf( s, sizeof(s), "%.2f", (*(ULONG*)var->target)/100.0 ); + LetStr( var->name, s ); + + break; + + + default: ; // do not let this happen, ok? + + }// switch +} + + +void C_CGI_Form::Email( char * fname, char * from/*=NULL*/ ) +{ + char name[100], headers[100]; + snprintf( name, sizeof(name), EMAIL_PREFIX"/%s", fname ); + + char * c = FormFile( name ); + + logfmt( FLOG_MAX, "Template parsed: %s", name ); + +// logfmt( FLOG_MAX, "body=%s", c ); + +// Strip 8-bit content + + int len = strlen( c ); + for ( int i=0; i5) ? from : CfgReadChar( "mailsend.from" ), // From: "support@chiefsoft.com" + GetVariable("email"), + c, + CfgReadChar( "mailsend.domain" ), + CfgReadChar( "mailsend.user" ), + CfgReadChar( "mailsend.pass" ), + CfgReadChar( "mailsend.name" )); + + free(c); +} + +CGIList::CGIList( C_CGI_Form * _form, char * name ) + + // Instantiates a CGI_List object + // _form points to the parent form object + // name - name of the list as used in template + + { +// logfmt( FLOG_MAX, "CGIList::CGIList()" ); + form = _form; n = 0; listname = strdup(name); + if (!listname) + logfmt( FLOG_MAX, "Out of memory" ); + + listn = form->nlists; + form->lists[ listn ] = this; + form->nlists++; +// logfmt( FLOG_MAX, "/CGIList::CGIList(), form->lists[%d]='%s'", form->nlists-1, listname ); + }; + + +void CGIList::LetStrf( char * var, const char * format, ... ) +{ + char buf[100]; + snprintf( buf, sizeof(buf), "__list_%s_%d_%s", listname, n, var ); + + va_list ap; + va_start( ap, format ); + + form->vLetStrf( buf, format, ap ); + + va_end( ap ); + +} + + +void CGIList::LetStr( char * var, char * value ) +{ + char buf[100]; + + snprintf( buf, sizeof(buf), "__list_%s_%d_%s", listname, n, var ); + form->LetStr( buf, value ); +} + +void CGIList::LetStr( char * var, const char * format, ... ) +{ + char buf[100]; + snprintf( buf, sizeof(buf), "__list_%s_%d_%s", listname, n, var ); + + char tmp[1000]; + + va_list ap; + va_start( ap, format ); + vsnprintf( tmp, sizeof(tmp), format, ap ); + va_end( ap ); + + form->LetStr( buf, tmp ); +} + +void CGIList::LetInt16( char * var, const int value ) +{ + char buf[100]; + + snprintf( buf, sizeof(buf), "__list_%s_%d_%s", listname, n, var ); + form->LetInt16( buf, value ); +// logfmt( FLOG_MAX, "Setting %s=%d", buf, value ); +} + + +char * CGIList::GetVariable( char * var, char * result, int size ) +{ + char buf[100]; + + snprintf( buf, sizeof(buf), "__list_%s_%d_%s", listname, n, var ); + return form->GetVariable( buf, result, size ); +} + + +void CInputError::Log() +{ + L_Variables * v; + v = this->var_top; + + if ( !v ) return; + + while ( v ) + { + logfmt( FLOG_MAX, "%d: %s = %s", v->opts, v->name, v->value ); + v = v->next; + } + +} + +void CInputError::Add( bool text, const char * var, const char * explanation, ... ) +{ + char *tmp; + int size; + + va_list ap; + va_start( ap, explanation ); + size = vsnprintf( NULL, 0, explanation, ap ) + 1; + tmp = (char*)malloc( size ); + vsnprintf( tmp, size, explanation, ap ); + va_end( ap ); + + + L_Variables * v; + v = FindVariable( var, true ); + + if (v->value) + free( v->value ); + + v->value = strdup( tmp ); + + v->opts = text; + + free( tmp ); +} + + +char *CInputError::Get( const char * var, bool *text ) +{ + L_Variables * v; + + v = FindVariable( var ); + + if ( !v ) + return NULL; + else + { + *text = v->opts; + return v->value; + } +} + +void C_CGI_Form::ClearVariable( CGI_Variable var ) +{ + char tmp[200]; + LetStr( var.name, "" ); + snprintf( tmp, sizeof(tmp), "err_%s", var.name ); + LetStr( tmp, "" ); +} diff --git a/coregrade/src/core/clog.cc b/coregrade/src/core/clog.cc new file mode 100644 index 0000000..23b88f6 --- /dev/null +++ b/coregrade/src/core/clog.cc @@ -0,0 +1,42 @@ +#include "clog.h" +#include "php_coregrade_log.h" + +void logfmt( TLogLevel level, const char * format, ... ) { + try { + //FILELog::ReportingLevel() = level; + va_list args; + va_start (args, format); + if (level > FILELOG_MAX_LEVEL) ; + else if (level > FILELog::ReportingLevel() || !Output2FILE::Stream()) ; + else { + FILE *f = Output2FILE::Stream(); + fprintf(f, "- %s %s [%ld]: %c", + NowTime().c_str(), + FILELog::ToString(level).c_str(), + getpid(), + (level > logDEBUG ? level - logDEBUG : 0, '\t')); + vfprintf(f, format, args); + fprintf(f, "\n"); + } + va_end (args); + } catch(const std::exception& e) { + FILE_LOG(logERROR) << e.what(); + } +} +/* +void logfmt( TLogLevel level, const char * format, ... ) { + try { + //FILELog::ReportingLevel() = level; + char buffer[2048]; + va_list args; + va_start (args, format); + vsprintf (buffer, format, args); + //perror (buffer); + va_end (args); + FILE_LOG(level) << buffer; + } catch(const std::exception& e) { + FILE_LOG(logERROR) << e.what(); + } +} +*/ + diff --git a/coregrade/src/core/coregrade.cc b/coregrade/src/core/coregrade.cc new file mode 100644 index 0000000..f33e4e2 --- /dev/null +++ b/coregrade/src/core/coregrade.cc @@ -0,0 +1,75 @@ +#include "coregrade.h" +#include "clog.h" +#include "cfg.h" +#include "exceptions.h" +#include "input.h" +#include "coregrade_api.h" +#include "pgsql.h" + +#include "coregrade_api_main.h" + +#include +#include + +CoreGrade::CoreGrade() { + // Open config + this->pFile = fopen(COREGRADE_LOG, "a"); + Output2FILE::Stream() = pFile; + FILE_LOG(logINFO) << "COREGRADE is starting..."; + + CfgReadConfig(); + logfmt(logINFO, "Version from config: %s", CfgReadChar("version")); + + // Open database + FILE_LOG(logDEBUG) << "Connecting to database..."; + FILE_LOG(logDEBUG) << "host=" << CfgReadChar("database.host") << ", name=" << CfgReadChar("database.name") << ", user=" << CfgReadChar("database.user") << ", pass=***hidden***, port=" << CfgReadLong("database.port"); + + this->db = 0; + try { + this->db = pgsql_db_connect(CfgReadChar("database.host"), + CfgReadChar("database.name"), + CfgReadChar("database.user"), + CfgReadChar("database.pass"), + CfgReadLong("database.port") ); + } catch (...) { + logfmt(logDEBUG, "Exception!"); + } + logfmt(logDEBUG, "Database connection %s", this->db>0?"successful":"failed"); +} + +long CoreGrade::coregrade_api(CVars in, CVars &out) { + long retval = PHP_API_BAD_PARAM; + try { + retval = coregrade_api_main(in, out); + } catch (bad_parameter) { + out["status"] = "Incorrect input parameter"; + } catch (...) { + out["status"] = "Unhandled exception"; + } + return retval; +} + +const char* CoreGrade::cfgReadChar(const char *parameter) { + return CfgReadChar(parameter); +} + +long CoreGrade::cfgReadLong(const char *parameter) { + return CfgReadLong(parameter); +} + +void CoreGrade::logMessage(const char *message) { + FILE_LOG(logINFO) << message; +} + +CoreGrade::~CoreGrade() { + FILE_LOG(logINFO) << "COREGRADE is stopping..."; + if (db>0) { + FILE_LOG(logDEBUG) << "Closing database connection"; + pgsql_close(); + } + // Do we need it? + if (this->pFile) { + fclose(this->pFile); + } +} + diff --git a/coregrade/src/core/coregrade_api.cc b/coregrade/src/core/coregrade_api.cc new file mode 100644 index 0000000..5246122 --- /dev/null +++ b/coregrade/src/core/coregrade_api.cc @@ -0,0 +1,266 @@ +#include "php_coregrade_api.h" +#include "php_coregrade_api_ns.h" +#include "coregrade.h" +#include "cfg.h" +#include "clog.h" +#include "vars.h" + +#include "safestring.h" + +#include +#include + +#include + +using namespace std; + +zend_object_handlers coregrade_object_handlers; + +struct coregrade_object { + zend_object std; + CoreGrade *coregrade; +}; + +zend_class_entry *coregrade_ce; + +void coregrade_free_storage(void *object TSRMLS_DC) +{ + coregrade_object *obj = (coregrade_object *)object; + delete obj->coregrade; + + zend_hash_destroy(obj->std.properties); + FREE_HASHTABLE(obj->std.properties); + + efree(obj); +} + +zend_object_value coregrade_create_handler(zend_class_entry *type TSRMLS_DC) +{ + zval *tmp; + zend_object_value retval; + + coregrade_object *obj = (coregrade_object *)emalloc(sizeof(coregrade_object)); + memset(obj, 0, sizeof(coregrade_object)); + obj->std.ce = type; + + ALLOC_HASHTABLE(obj->std.properties); + zend_hash_init(obj->std.properties, 0, NULL, ZVAL_PTR_DTOR, 0); +#if PHP_VERSION_ID < 50399 + zend_hash_copy(obj->std.properties, &type->default_properties, + (copy_ctor_func_t)zval_add_ref, (void *)&tmp, sizeof(zval *)); +#else + object_properties_init((zend_object*) &(obj->std), type); +#endif + retval.handle = zend_objects_store_put(obj, NULL, + coregrade_free_storage, NULL TSRMLS_CC); + retval.handlers = &coregrade_object_handlers; + + return retval; +} + +#define SET_ENV( env ) \ +if (zend_hash_find(Z_ARRVAL_PP(array), env, sizeof(env), (void **) &token) == SUCCESS) {\ + setenv( env, Z_STRVAL_PP(token), 1 ); \ + logfmt( logINFO, env " = %s", Z_STRVAL_PP(token) ); \ +} else {\ + unsetenv( env );\ +} + +PHP_METHOD(CoreGrade, __construct) +{ + CoreGrade *coregrade = NULL; + zval *object = getThis(); + + coregrade = new CoreGrade(); + coregrade_object *obj = (coregrade_object *)zend_object_store_get_object(object TSRMLS_CC); + obj->coregrade = coregrade; + + zval **array; + zval **token; + + zend_is_auto_global("_SERVER", sizeof("_SERVER")-1 TSRMLS_CC); + if (zend_hash_find(&EG(symbol_table), "_SERVER", sizeof("_SERVER"), (void **) &array) == SUCCESS && + Z_TYPE_PP(array) == IS_ARRAY) { + logfmt( logINFO, "_SERVER found" ); + SET_ENV( "REMOTE_ADDR" ); + SET_ENV( "SERVER_NAME" ); + SET_ENV( "HTTP_COOKIE" ); + SET_ENV( "QUERY_STRING" ); + SET_ENV( "HTTP_X_FORWARDED_FOR" ); + } else { + logfmt( logINFO, "_SERVER not found" ); + } +} +PHP_METHOD(CoreGrade, coregrade_api) +{ + zval *param, *param_out; + CVars input, output; + CoreGrade *coregrade; + coregrade_object *obj = (coregrade_object *)zend_object_store_get_object( + getThis() TSRMLS_CC); + coregrade = obj->coregrade; + if (coregrade != NULL) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, const_cast("zz"), ¶m, ¶m_out ) == FAILURE ) { + // Bad parameters + RETURN_NULL(); + } + if (!PZVAL_IS_REF(param_out)) { + // out is not a reference + /* This is not relevant in PHP 5.4 */ +#if PHP_VERSION_ID < 50399 + zend_error(E_WARNING, "Second parameter wasn't passed by reference"); + RETURN_NULL(); +#endif + } + HashTable *hash; + char *key; + uint key_len; + zval **value; + + convert_to_array_ex( ¶m ); + hash = HASH_OF( param ); + zend_hash_internal_pointer_reset( hash ); + + while ( zend_hash_get_current_key( hash, &key, /*num_index*/ NULL, /*duplicate*/ false ) == HASH_KEY_IS_STRING ) { + zend_hash_get_current_data( hash, (void**)&value ); + convert_to_string_ex( value ); + input[ key ] = Z_STRVAL_PP(value); + zend_hash_move_forward( hash ); + } + + long retval = coregrade->coregrade_api(input, output); + + convert_to_array_ex( ¶m_out ); + + CVars::iterator i; + int j = 0; + char out_key[200], out_value[200]; + for ( i=output.begin(); i != output.end() && j<200 ; i++ ) { + j++; + logfmt( logINFO, "RET: %s=%s", i->first.c_str(), i->second.c_str() ); + strsafecpy( out_key, i->first.c_str(), sizeof(out_key) ); + strsafecpy( out_value, i->second.c_str(), sizeof(out_value) ); + add_assoc_string( param_out, out_key, out_value, true ); + } + + RETURN_LONG(retval); + } + RETURN_NULL(); +} +PHP_METHOD(CoreGrade, cfgReadChar) +{ + CoreGrade *coregrade; + coregrade_object *obj = (coregrade_object *)zend_object_store_get_object( + getThis() TSRMLS_CC); + coregrade = obj->coregrade; + if (coregrade != NULL) { + char *parameter; + int parameter_len; + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, const_cast("s"), ¶meter, ¶meter_len) == FAILURE) { + RETURN_NULL(); + } + if (parameter_len == 0) { + RETURN_NULL(); + } + RETURN_STRING(coregrade->cfgReadChar(parameter),1); + } + RETURN_NULL(); +} +PHP_METHOD(CoreGrade, cfgReadLong) +{ + CoreGrade *coregrade; + coregrade_object *obj = (coregrade_object *)zend_object_store_get_object( + getThis() TSRMLS_CC); + coregrade = obj->coregrade; + if (coregrade != NULL) { + char *parameter; + int parameter_len; + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, const_cast("s"), ¶meter, ¶meter_len) == FAILURE) { + RETURN_NULL(); + } + if (parameter_len == 0) { + RETURN_NULL(); + } + RETURN_LONG(coregrade->cfgReadLong(parameter)); + } + RETURN_NULL(); +} +PHP_METHOD(CoreGrade, logMessage) +{ + CoreGrade *coregrade; + coregrade_object *obj = (coregrade_object *)zend_object_store_get_object( + getThis() TSRMLS_CC); + coregrade = obj->coregrade; + if (coregrade != NULL) { + char *message; + int message_len; + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, const_cast("s"), &message, &message_len) == FAILURE) { + RETURN_FALSE; + } + if (message_len == 0) { + RETURN_FALSE; + } + coregrade->logMessage((const char *)message); + } + RETURN_TRUE; +} +#if PHP_VERSION_ID < 50399 +function_entry coregrade_methods[] = { +#else +zend_function_entry coregrade_methods[] = { +#endif + PHP_ME(CoreGrade, __construct, NULL, ZEND_ACC_PUBLIC | ZEND_ACC_CTOR) + PHP_ME(CoreGrade, coregrade_api, NULL, ZEND_ACC_PUBLIC) + PHP_ME(CoreGrade, cfgReadChar, NULL, ZEND_ACC_PUBLIC) + PHP_ME(CoreGrade, cfgReadLong, NULL, ZEND_ACC_PUBLIC) + PHP_ME(CoreGrade, logMessage, NULL, ZEND_ACC_PUBLIC) + {NULL, NULL, NULL} +}; + +PHP_MINIT_FUNCTION(coregrade_api) +{ + zend_class_entry ce; + INIT_NS_CLASS_ENTRY(ce, COREGRADE_API_NS, "CoreGrade", coregrade_methods); + //INIT_CLASS_ENTRY(ce, "CoreGrade", coregrade_methods); + coregrade_ce = zend_register_internal_class(&ce TSRMLS_CC); + coregrade_ce->create_object = coregrade_create_handler; + memcpy(&coregrade_object_handlers, + zend_get_std_object_handlers(), sizeof(zend_object_handlers)); + coregrade_object_handlers.clone_obj = NULL; + return SUCCESS; +} + +PHP_MINFO_FUNCTION(coregrade_api) +{ + php_info_print_table_start(); + php_info_print_table_row(2, "COREGRADE API support", "enabled"); + php_info_print_table_row(2, "Log File", COREGRADE_LOG); + php_info_print_table_row(2, "Config File", COREGRADE_CONFIG"coregrade_api.conf"); + php_info_print_table_row(2, "Build Date", __DATE__); + php_info_print_table_row(2, "Build Time", __TIME__); + php_info_print_table_row(2, "COREGRADE API Version", PHP_COREGRADE_API_EXTVER); + php_info_print_table_end(); +} + +zend_module_entry coregrade_api_module_entry = { +#if ZEND_MODULE_API_NO >= 20010901 + STANDARD_MODULE_HEADER, +#endif + COREGRADE_API_NS, + NULL, /* Functions */ + PHP_MINIT(coregrade_api), + NULL, /* MSHUTDOWN */ + NULL, /* RINIT */ + NULL, /* RSHUTDOWN */ + PHP_MINFO(coregrade_api), /* MINFO */ +#if ZEND_MODULE_API_NO >= 20010901 + PHP_COREGRADE_API_EXTVER, +#endif + STANDARD_MODULE_PROPERTIES +}; + +#ifdef COMPILE_DL_COREGRADE_API +extern "C" { +ZEND_GET_MODULE(coregrade_api) +} +#endif diff --git a/coregrade/src/core/cvariables.cc b/coregrade/src/core/cvariables.cc new file mode 100644 index 0000000..98d9f78 --- /dev/null +++ b/coregrade/src/core/cvariables.cc @@ -0,0 +1,415 @@ +#include +#include +#include +#include +#include +#include "cvariables.h" +#include "safestring.h" + +CVariables::CVariables( ) +{ + var_top = NULL; +}; + + +void CVariables::Cleanup() +{ + L_Variables * v, *_v; + + v = var_top; + + while (v) + { + _v = v->next; + + free( v->value ); + delete v; + + v = _v; + } + + var_top = NULL; // Used when the desctructor is called explicitly to cleanup +} + +CVariables::~CVariables() +{ +// LOG( "~CVariables()", LOG_MAX ); + Cleanup(); +// LOG( "/~CVariables()", LOG_MAX ); +} + +L_Variables * CVariables::FindVariable( const char * var, bool create/*=false*/ ) +{ + L_Variables * v; + + char _var[MAX_CGI_VAR_LEN+1]; + + tolower( var, _var, sizeof(_var) ); + + if (!var_top && !create) + return NULL; + + if (!var_top) + { + v = var_top = new L_Variables; + } + else + { // Search to see if such variable already exists + v = var_top; + do { + if ( strcmp( v->name, _var )==0 ) + { + return v; + } + if ( v->next) + v = v->next; + else + break; + } while ( 1 ); + + // no variable found + + if ( create ) + { + v->next = new L_Variables; + v = v->next; + } + else + return NULL; + } + + v->next = NULL; + strncpy( v->name, _var, MAX_CGI_VAR_LEN ); + + v->value = NULL; // So we know the space has not been allocated + + return v; + +} + + +char * CVariables::GetVariable( const char * var ) +{ + L_Variables * v; + + v = FindVariable( var ); + + if ( !v ) + return NULL; + else + return v->value; +} + + +bool CVariables::GetBool( char * var, bool test /*= false*/, char * section /*= ""*/ ) +{ + L_Variables * v; + + v = FindVariable( var ); + + if ( !v ) + return false; + else + { + char * s = v->value; + return + strcasecmp( s, "yes" )==0 || + strcasecmp( s, "on" )==0 || + strcasecmp( s, "1" )==0 || + strcasecmp( s, "enable" )==0 || + strcasecmp( s, "enabled" )==0 || + strcasecmp( s, "true" )==0 ; + } +} + +char * CVariables::GetVariable( const char * var, bool test, char * section /*= ""*/ ) +{ + L_Variables * v; + + char name_[MAX_CGI_VAR_LEN+1]; + strsafecpy( name_, test?".":"", sizeof( name_ ) ); + strsafecat( name_, section, sizeof(name_) ); + if (section[0]) + strsafecat( name_, "_", sizeof(name_) ); + strsafecat( name_, var, sizeof(name_) ); + + v = FindVariable( name_ ); + + if ( !v ) + return NULL; + else + return v->value; +} + +char * CVariables::GetVariable( const char * var, char * result, int size ) +{ + L_Variables * v; + + v = FindVariable( var ); + + if ( !v ) + result[0] = 0; + else + { + strncpy( result, v->value, size ); + result[size-1] = 0; + } + + return result; +} + +long CVariables::GetVariableLong( char * name, bool *valid /*= NULL*/ ) +{ + char var[20]; + GetVariable( name, var, sizeof(var) ); + +// if (!valid) +// return atol( var ); + + char * ep; + long res = strtol( var, &ep, 10 ); + if (valid) + *valid = var[0] && !*ep; + return res; +} + + +long CVariables::GetVariableLong( char * name, bool test, char * section /*= ""*/ ) +{ + char name_[MAX_CGI_VAR_LEN+1]; + strsafecpy( name_, test?".":"", sizeof( name_ ) ); + strsafecat( name_, section, sizeof(name_) ); + if (section[0]) + strsafecat( name_, "_", sizeof(name_) ); + strsafecat( name_, name, sizeof(name_) ); + + + char var[20]; + GetVariable( name_, var, sizeof(var) ); + return atol( var ); +} + + +void CVariables::LetInt16( char * var, int value ) +{ + L_Variables * v; + v = FindVariable( var, true ); + + if (v->value) + free( v->value ); + + char st[10]; + snprintf( st, sizeof(st), "%d", value); + + v->value = strdup( st ); +} + +void CVariables::LetStr( const char * var, const char * value ) // NULL-terminated +{ + L_Variables * v; + v = FindVariable( var, true ); + + if (v->value) + free( v->value ); + + if ( value ) + v->value = strdup( value ); + else + v->value = strdup( "" ); +} + + +void CVariables::RenameVariable( const char * name, const char * newname ) +{ + L_Variables * v; + v = FindVariable( name, true ); + + //logfmt( FLOG_MAX, "RenameVariable(): '%s'->'%s'", name, newname ); + + if ( !v ) + { + //logfmt( FLOG_MAX, "RenameVariable(): Variable '%s' not found", name ); + return; + } + + strsafecpy( v->name, newname, sizeof( v->name ) ); +} + + + +void CVariables::vLetStrf( char * var, const char * format, va_list ap ) +{ + size_t buf_size = 512; + char *buffer = new char[buf_size]; + + size_t length; + + while (true) { + if (!buffer) { + assert(buffer); // to stop when debugging + snprintf(buffer, buf_size, ""); + break; + } + length = vsnprintf(buffer, buf_size, format, ap); + + if (length >= 0 && length < buf_size - 1) { + // string fits into current buffer + break; + } + // otherwise resize buffer : + buf_size *= 2; + // fprintf(stderr, "Reallocating vstrf-buffer to size=%u\n", buf_size); + delete [] buffer; + buffer = new char[buf_size]; + } + + L_Variables * v; + v = FindVariable( var, true ); + + if (v->value) + free( v->value ); + + if (buffer) { + v->value = strdup( buffer ); + delete [] buffer; + } else { + v->value = strdup( "" ); + } +} + + +void CVariables::LetStrf( char * var, const char * format, ... ) +{ + va_list ap; + va_start( ap, format ); + + vLetStrf( var, format, ap ); + + va_end( ap ); +} + + +/* +void CVariables::LetStrf( char * var, const char * format, ... ) +{ + char tmp[1000]; + + va_list ap; + va_start( ap, format ); + vsnprintf( tmp, sizeof(tmp), format, ap ); + va_end( ap ); + + + L_Variables * v; + v = FindVariable( var, true ); + + if (v->value) + free( v->value ); + + v->value = strdup( tmp ); +} +*/ + + + + +void CVariables::StrCat( char * var, const char * format, ... ) +{ + char tmp[1000]; + L_Variables * v; + + v = FindVariable( var, true ); + + va_list ap; + va_start( ap, format ); + + if ( !v->value ) + vsnprintf( tmp, sizeof(tmp), format, ap ); + else + { +// logfmt( FLOG_MAX, "v->value='%s'", v->value ); + strsafecpy( tmp, v->value, sizeof(tmp) ); + strsafecat( tmp, "
", sizeof(tmp) ); + int len = strlen(tmp); + vsnprintf( &tmp[len], sizeof(tmp)-len, format, ap ); + + } + va_end( ap ); + + if (v->value) + free( v->value ); + + v->value = strdup( tmp ); + +// logfmt( FLOG_MAX, "tmp='%s'", tmp ); +} + + +void CVariables::StrCatf( char * var, const char * format, ... ) +{ + char tmp[5000]; + L_Variables * v; + + v = FindVariable( var, true ); + + va_list ap; + va_start( ap, format ); + + if ( !v->value ) + vsnprintf( tmp, sizeof(tmp), format, ap ); + else + { +// logfmt( FLOG_MAX, "v->value='%s'", v->value ); + strsafecpy( tmp, v->value, sizeof(tmp) ); + //strsafecat( tmp, "
", sizeof(tmp) ); + int len = strlen(tmp); + vsnprintf( &tmp[len], sizeof(tmp)-len, format, ap ); + + } + va_end( ap ); + + if (v->value) + free( v->value ); + + v->value = strdup( tmp ); + +// logfmt( FLOG_MAX, "tmp='%s'", tmp ); +} + + +void CVariables::LetStr( char * var, const char * value, int len ) // non-NULL terminated +{ + L_Variables * v; + v = FindVariable( var, true ); + + if (v->value) + free( v->value ); + + if ( value ) + { + v->value = (char*)malloc(len+1); + memcpy( v->value, value, len ); + v->value[len] = 0; + } + else + v->value = strdup( "" ); +} + + +void CVariables::PrintVars( FILE * f /*= stdout*/ ) +{ + L_Variables * v; + v = var_top; + + fprintf( f, "\nVariable listing (NEW):\n\n" ); + while ( v ) + { + fprintf( f, "%s[%d] = %s\n", v->name, strlen(v->value), v->value ); + v = v->next; + } +} + +/* +vi:ts=2 +*/ + diff --git a/coregrade/src/core/exceptions.cc b/coregrade/src/core/exceptions.cc new file mode 100644 index 0000000..48dc985 --- /dev/null +++ b/coregrade/src/core/exceptions.cc @@ -0,0 +1,16 @@ +#include "exceptions.h" + +#include "clog.h" + +bad_parameter::bad_parameter( CVars &out, const char *name ) + { + //in["bad_param"] = name; + out["bad_param"] = name; + + logfmt( FLOG_MAX, "Bad parameter exception: '%s'", name ); + } + +err::err( char *msg ) { + logfmt( FLOG_MAX, "ERROR: %s", msg ); + } + diff --git a/coregrade/src/core/hmac_sha2.cc b/coregrade/src/core/hmac_sha2.cc new file mode 100644 index 0000000..5fbce5c --- /dev/null +++ b/coregrade/src/core/hmac_sha2.cc @@ -0,0 +1,544 @@ +/*- + * HMAC-SHA-224/256/384/512 implementation + * Last update: 06/15/2005 + * Issue date: 06/15/2005 + * + * Copyright (C) 2005 Olivier Gay + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include + +#include "hmac_sha2.h" + +/* HMAC-SHA-224 functions */ + +void hmac_sha224_init(hmac_sha224_ctx *ctx, unsigned char *key, + unsigned int key_size) +{ + unsigned int fill; + unsigned int num; + + unsigned char *key_used; + unsigned char key_temp[SHA224_DIGEST_SIZE]; + int i; + + if (key_size == SHA224_BLOCK_SIZE) { + key_used = key; + num = SHA224_BLOCK_SIZE; + } else { + if (key_size > SHA224_BLOCK_SIZE){ + key_used = key_temp; + num = SHA224_DIGEST_SIZE; + sha224(key, key_size, key_used); + } else { /* key_size > SHA224_BLOCK_SIZE */ + key_used = key; + num = key_size; + } + fill = SHA224_BLOCK_SIZE - num; + + memset(ctx->block_ipad + num, 0x36, fill); + memset(ctx->block_opad + num, 0x5c, fill); + } + + for (i = 0; i < num; i++) { + ctx->block_ipad[i] = key_used[i] ^ 0x36; + ctx->block_opad[i] = key_used[i] ^ 0x5c; + } + + sha224_init(&ctx->ctx_inside); + sha224_update(&ctx->ctx_inside, ctx->block_ipad, SHA224_BLOCK_SIZE); + + sha224_init(&ctx->ctx_outside); + sha224_update(&ctx->ctx_outside, ctx->block_opad, + SHA224_BLOCK_SIZE); + + /* for hmac_reinit */ + memcpy(&ctx->ctx_inside_reinit, &ctx->ctx_inside, + sizeof(sha224_ctx)); + memcpy(&ctx->ctx_outside_reinit, &ctx->ctx_outside, + sizeof(sha224_ctx)); +} + +void hmac_sha224_reinit(hmac_sha224_ctx *ctx) +{ + memcpy(&ctx->ctx_inside, &ctx->ctx_inside_reinit, + sizeof(sha224_ctx)); + memcpy(&ctx->ctx_outside, &ctx->ctx_outside_reinit, + sizeof(sha224_ctx)); +} + +void hmac_sha224_update(hmac_sha224_ctx *ctx, unsigned char *message, + unsigned int message_len) +{ + sha224_update(&ctx->ctx_inside, message, message_len); +} + +void hmac_sha224_final(hmac_sha224_ctx *ctx, unsigned char *mac, + unsigned int mac_size) +{ + unsigned char digest_inside[SHA224_DIGEST_SIZE]; + unsigned char mac_temp[SHA224_DIGEST_SIZE]; + + sha224_final(&ctx->ctx_inside, digest_inside); + sha224_update(&ctx->ctx_outside, digest_inside, SHA224_DIGEST_SIZE); + sha224_final(&ctx->ctx_outside, mac_temp); + memcpy(mac, mac_temp, mac_size); +} + +void hmac_sha224(unsigned char *key, unsigned int key_size, + unsigned char *message, unsigned int message_len, + unsigned char *mac, unsigned mac_size) +{ + hmac_sha224_ctx ctx; + + hmac_sha224_init(&ctx, key, key_size); + hmac_sha224_update(&ctx, message, message_len); + hmac_sha224_final(&ctx, mac, mac_size); +} + +/* HMAC-SHA-256 functions */ + +void hmac_sha256_init(hmac_sha256_ctx *ctx, unsigned char *key, + unsigned int key_size) +{ + unsigned int fill; + unsigned int num; + + unsigned char *key_used; + unsigned char key_temp[SHA256_DIGEST_SIZE]; + int i; + + if (key_size == SHA256_BLOCK_SIZE) { + key_used = key; + num = SHA256_BLOCK_SIZE; + } else { + if (key_size > SHA256_BLOCK_SIZE){ + key_used = key_temp; + num = SHA256_DIGEST_SIZE; + sha256(key, key_size, key_used); + } else { /* key_size > SHA256_BLOCK_SIZE */ + key_used = key; + num = key_size; + } + fill = SHA256_BLOCK_SIZE - num; + + memset(ctx->block_ipad + num, 0x36, fill); + memset(ctx->block_opad + num, 0x5c, fill); + } + + for (i = 0; i < num; i++) { + ctx->block_ipad[i] = key_used[i] ^ 0x36; + ctx->block_opad[i] = key_used[i] ^ 0x5c; + } + + sha256_init(&ctx->ctx_inside); + sha256_update(&ctx->ctx_inside, ctx->block_ipad, SHA256_BLOCK_SIZE); + + sha256_init(&ctx->ctx_outside); + sha256_update(&ctx->ctx_outside, ctx->block_opad, + SHA256_BLOCK_SIZE); + + /* for hmac_reinit */ + memcpy(&ctx->ctx_inside_reinit, &ctx->ctx_inside, + sizeof(sha256_ctx)); + memcpy(&ctx->ctx_outside_reinit, &ctx->ctx_outside, + sizeof(sha256_ctx)); +} + +void hmac_sha256_reinit(hmac_sha256_ctx *ctx) +{ + memcpy(&ctx->ctx_inside, &ctx->ctx_inside_reinit, + sizeof(sha256_ctx)); + memcpy(&ctx->ctx_outside, &ctx->ctx_outside_reinit, + sizeof(sha256_ctx)); +} + +void hmac_sha256_update(hmac_sha256_ctx *ctx, unsigned char *message, + unsigned int message_len) +{ + sha256_update(&ctx->ctx_inside, message, message_len); +} + +void hmac_sha256_final(hmac_sha256_ctx *ctx, unsigned char *mac, + unsigned int mac_size) +{ + unsigned char digest_inside[SHA256_DIGEST_SIZE]; + unsigned char mac_temp[SHA256_DIGEST_SIZE]; + + sha256_final(&ctx->ctx_inside, digest_inside); + sha256_update(&ctx->ctx_outside, digest_inside, SHA256_DIGEST_SIZE); + sha256_final(&ctx->ctx_outside, mac_temp); + memcpy(mac, mac_temp, mac_size); +} + +void hmac_sha256(unsigned char *key, unsigned int key_size, + unsigned char *message, unsigned int message_len, + unsigned char *mac, unsigned mac_size) +{ + hmac_sha256_ctx ctx; + + hmac_sha256_init(&ctx, key, key_size); + hmac_sha256_update(&ctx, message, message_len); + hmac_sha256_final(&ctx, mac, mac_size); +} + +/* HMAC-SHA-384 functions */ + +void hmac_sha384_init(hmac_sha384_ctx *ctx, unsigned char *key, + unsigned int key_size) +{ + unsigned int fill; + unsigned int num; + + unsigned char *key_used; + unsigned char key_temp[SHA384_DIGEST_SIZE]; + int i; + + if (key_size == SHA384_BLOCK_SIZE) { + key_used = key; + num = SHA384_BLOCK_SIZE; + } else { + if (key_size > SHA384_BLOCK_SIZE){ + key_used = key_temp; + num = SHA384_DIGEST_SIZE; + sha384(key, key_size, key_used); + } else { /* key_size > SHA384_BLOCK_SIZE */ + key_used = key; + num = key_size; + } + fill = SHA384_BLOCK_SIZE - num; + + memset(ctx->block_ipad + num, 0x36, fill); + memset(ctx->block_opad + num, 0x5c, fill); + } + + for (i = 0; i < num; i++) { + ctx->block_ipad[i] = key_used[i] ^ 0x36; + ctx->block_opad[i] = key_used[i] ^ 0x5c; + } + + sha384_init(&ctx->ctx_inside); + sha384_update(&ctx->ctx_inside, ctx->block_ipad, SHA384_BLOCK_SIZE); + + sha384_init(&ctx->ctx_outside); + sha384_update(&ctx->ctx_outside, ctx->block_opad, + SHA384_BLOCK_SIZE); + + /* for hmac_reinit */ + memcpy(&ctx->ctx_inside_reinit, &ctx->ctx_inside, + sizeof(sha384_ctx)); + memcpy(&ctx->ctx_outside_reinit, &ctx->ctx_outside, + sizeof(sha384_ctx)); +} + +void hmac_sha384_reinit(hmac_sha384_ctx *ctx) +{ + memcpy(&ctx->ctx_inside, &ctx->ctx_inside_reinit, + sizeof(sha384_ctx)); + memcpy(&ctx->ctx_outside, &ctx->ctx_outside_reinit, + sizeof(sha384_ctx)); +} + +void hmac_sha384_update(hmac_sha384_ctx *ctx, unsigned char *message, + unsigned int message_len) +{ + sha384_update(&ctx->ctx_inside, message, message_len); +} + +void hmac_sha384_final(hmac_sha384_ctx *ctx, unsigned char *mac, + unsigned int mac_size) +{ + unsigned char digest_inside[SHA384_DIGEST_SIZE]; + unsigned char mac_temp[SHA384_DIGEST_SIZE]; + + sha384_final(&ctx->ctx_inside, digest_inside); + sha384_update(&ctx->ctx_outside, digest_inside, SHA384_DIGEST_SIZE); + sha384_final(&ctx->ctx_outside, mac_temp); + memcpy(mac, mac_temp, mac_size); +} + +void hmac_sha384(unsigned char *key, unsigned int key_size, + unsigned char *message, unsigned int message_len, + unsigned char *mac, unsigned mac_size) +{ + hmac_sha384_ctx ctx; + + hmac_sha384_init(&ctx, key, key_size); + hmac_sha384_update(&ctx, message, message_len); + hmac_sha384_final(&ctx, mac, mac_size); +} + +/* HMAC-SHA-512 functions */ + +void hmac_sha512_init(hmac_sha512_ctx *ctx, unsigned char *key, + unsigned int key_size) +{ + unsigned int fill; + unsigned int num; + + unsigned char *key_used; + unsigned char key_temp[SHA512_DIGEST_SIZE]; + int i; + + if (key_size == SHA512_BLOCK_SIZE) { + key_used = key; + num = SHA512_BLOCK_SIZE; + } else { + if (key_size > SHA512_BLOCK_SIZE){ + key_used = key_temp; + num = SHA512_DIGEST_SIZE; + sha512(key, key_size, key_used); + } else { /* key_size > SHA512_BLOCK_SIZE */ + key_used = key; + num = key_size; + } + fill = SHA512_BLOCK_SIZE - num; + + memset(ctx->block_ipad + num, 0x36, fill); + memset(ctx->block_opad + num, 0x5c, fill); + } + + for (i = 0; i < num; i++) { + ctx->block_ipad[i] = key_used[i] ^ 0x36; + ctx->block_opad[i] = key_used[i] ^ 0x5c; + } + + sha512_init(&ctx->ctx_inside); + sha512_update(&ctx->ctx_inside, ctx->block_ipad, SHA512_BLOCK_SIZE); + + sha512_init(&ctx->ctx_outside); + sha512_update(&ctx->ctx_outside, ctx->block_opad, + SHA512_BLOCK_SIZE); + + /* for hmac_reinit */ + memcpy(&ctx->ctx_inside_reinit, &ctx->ctx_inside, + sizeof(sha512_ctx)); + memcpy(&ctx->ctx_outside_reinit, &ctx->ctx_outside, + sizeof(sha512_ctx)); +} + +void hmac_sha512_reinit(hmac_sha512_ctx *ctx) +{ + memcpy(&ctx->ctx_inside, &ctx->ctx_inside_reinit, + sizeof(sha512_ctx)); + memcpy(&ctx->ctx_outside, &ctx->ctx_outside_reinit, + sizeof(sha512_ctx)); +} + +void hmac_sha512_update(hmac_sha512_ctx *ctx, unsigned char *message, + unsigned int message_len) +{ + sha512_update(&ctx->ctx_inside, message, message_len); +} + +void hmac_sha512_final(hmac_sha512_ctx *ctx, unsigned char *mac, + unsigned int mac_size) +{ + unsigned char digest_inside[SHA512_DIGEST_SIZE]; + unsigned char mac_temp[SHA512_DIGEST_SIZE]; + + sha512_final(&ctx->ctx_inside, digest_inside); + sha512_update(&ctx->ctx_outside, digest_inside, SHA512_DIGEST_SIZE); + sha512_final(&ctx->ctx_outside, mac_temp); + memcpy(mac, mac_temp, mac_size); +} + +void hmac_sha512(unsigned char *key, unsigned int key_size, + unsigned char *message, unsigned int message_len, + unsigned char *mac, unsigned mac_size) +{ + hmac_sha512_ctx ctx; + + hmac_sha512_init(&ctx, key, key_size); + hmac_sha512_update(&ctx, message, message_len); + hmac_sha512_final(&ctx, mac, mac_size); +} + +#ifdef TEST_VECTORS + +/* IETF Validation tests */ + +#include +#include + +void test(unsigned char *vector, unsigned char *digest, + unsigned int digest_size) +{ + unsigned char output[2 * SHA512_DIGEST_SIZE + 1]; + int i; + + output[2 * digest_size] = '\0'; + + for (i = 0; i < digest_size ; i++) { + sprintf((char *) output + 2*i, "%02x", digest[i]); + } + + printf("H: %s\n", output); + if (strcmp((char *) vector, (char *) output)) { + fprintf(stderr, "Test failed.\n"); + exit(1); + } +} + +int main() +{ + static unsigned char *vectors[] = + { + /* HMAC-SHA-224 */ + "896fb1128abbdf196832107cd49df33f47b4b1169912ba4f53684b22", + "a30e01098bc6dbbf45690f3a7e9e6d0f8bbea2a39e6148008fd05e44", + "7fb3cb3588c6c1f6ffa9694d7d6ad2649365b0c1f65d69d1ec8333ea", + "6c11506874013cac6a2abc1bb382627cec6a90d86efc012de7afec5a", + "0e2aea68a90c8d37c988bcdb9fca6fa8", + "95e9a0db962095adaebe9b2d6f0dbce2d499f112f2d2b7273fa6870e", + "3a854166ac5d9f023f54d517d0b39dbd946770db9c2b95c9f6f565d1", + /* HMAC-SHA-256 */ + "b0344c61d8db38535ca8afceaf0bf12b881dc200c9833da726e9376c2e32cff7", + "5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843", + "773ea91e36800e46854db8ebd09181a72959098b3ef8c122d9635514ced565fe", + "82558a389a443c0ea4cc819899f2083a85f0faa3e578f8077a2e3ff46729665b", + "a3b6167473100ee06e0c796c2955552b", + "60e431591ee0b67f0d8a26aacbf5b77f8e0bc6213728c5140546040f0ee37f54", + "9b09ffa71b942fcb27635fbcd5b0e944bfdc63644f0713938a7f51535c3a35e2", + /* HMAC-SHA-384 */ + "afd03944d84895626b0825f4ab46907f15f9dadbe4101ec682aa034c7cebc59c" + "faea9ea9076ede7f4af152e8b2fa9cb6", + "af45d2e376484031617f78d2b58a6b1b9c7ef464f5a01b47e42ec3736322445e" + "8e2240ca5e69e2c78b3239ecfab21649", + "88062608d3e6ad8a0aa2ace014c8a86f0aa635d947ac9febe83ef4e55966144b" + "2a5ab39dc13814b94e3ab6e101a34f27", + "3e8a69b7783c25851933ab6290af6ca77a9981480850009cc5577c6e1f573b4e" + "6801dd23c4a7d679ccf8a386c674cffb", + "3abf34c3503b2a23a46efc619baef897", + "4ece084485813e9088d2c63a041bc5b44f9ef1012a2b588f3cd11f05033ac4c6" + "0c2ef6ab4030fe8296248df163f44952", + "6617178e941f020d351e2f254e8fd32c602420feb0b8fb9adccebb82461e99c5" + "a678cc31e799176d3860e6110c46523e", + /* HMAC-SHA-512 */ + "87aa7cdea5ef619d4ff0b4241a1d6cb02379f4e2ce4ec2787ad0b30545e17cde" + "daa833b7d6b8a702038b274eaea3f4e4be9d914eeb61f1702e696c203a126854", + "164b7a7bfcf819e2e395fbe73b56e0a387bd64222e831fd610270cd7ea250554" + "9758bf75c05a994a6d034f65f8f0e6fdcaeab1a34d4a6b4b636e070a38bce737", + "fa73b0089d56a284efb0f0756c890be9b1b5dbdd8ee81a3655f83e33b2279d39" + "bf3e848279a722c806b485a47e67c807b946a337bee8942674278859e13292fb", + "b0ba465637458c6990e5a8c5f61d4af7e576d97ff94b872de76f8050361ee3db" + "a91ca5c11aa25eb4d679275cc5788063a5f19741120c4f2de2adebeb10a298dd", + "415fad6271580a531d4179bc891d87a6", + "80b24263c7c1a3ebb71493c1dd7be8b49b46d1f41b4aeec1121b013783f8f352" + "6b56d037e05f2598bd0fd2215d6a1e5295e64f73f63f0aec8b915a985d786598", + "e37b6a775dc87dbaa4dfa9f96e5e3ffddebd71f8867289865df5a32d20cdc944" + "b6022cac3c4982b10d5eeb55c3e4de15134676fb6de0446065c97440fa8c6a58" + }; + + static unsigned char *messages[] = + { + "Hi There", + "what do ya want for nothing?", + NULL, + NULL, + "Test With Truncation", + "Test Using Larger Than Block-Size Key - Hash Key First", + "This is a test using a larger than block-size key " + "and a larger than block-size data. The key needs" + " to be hashed before being used by the HMAC algorithm." + }; + + unsigned char mac[SHA512_DIGEST_SIZE]; + unsigned char *keys[7]; + unsigned int keys_len[7] = {20, 4, 20, 25, 20, 131, 131}; + unsigned int messages2and3_len = 50; + unsigned int mac_224_size, mac_256_size, mac_384_size, mac_512_size; + int i; + + for (i = 0; i < 7; i++) { + keys[i] = malloc(keys_len[i]); + if (keys[i] == NULL) { + fprintf(stderr, "Can't allocate memory\n"); + return 1; + } + } + + memset(keys[0], 0x0b, keys_len[0]); + strcpy(keys[1], "Jefe"); + memset(keys[2], 0xaa, keys_len[2]); + for (i = 0; i < keys_len[3]; i++) + keys[3][i] = (unsigned char) i + 1; + memset(keys[4], 0x0c, keys_len[4]); + memset(keys[5], 0xaa, keys_len[5]); + memset(keys[6], 0xaa, keys_len[6]); + + messages[2] = malloc(messages2and3_len + 1); + messages[3] = malloc(messages2and3_len + 1); + + if (messages[2] == NULL || messages[3] == NULL) { + fprintf(stderr, "Can't allocate memory\n"); + return 1; + } + + messages[2][messages2and3_len] = '\0'; + messages[3][messages2and3_len] = '\0'; + + memset(messages[2], 0xdd, messages2and3_len); + memset(messages[3], 0xcd, messages2and3_len); + + printf("HMAC-SHA-2 IETF Validation tests\n\n"); + + for (i = 0; i < 7; i++) { + if (i != 4) { + mac_224_size = SHA224_DIGEST_SIZE; + mac_256_size = SHA256_DIGEST_SIZE; + mac_384_size = SHA384_DIGEST_SIZE; + mac_512_size = SHA512_DIGEST_SIZE; + } else { + mac_224_size = 128 / 8; mac_256_size = 128 / 8; + mac_384_size = 128 / 8; mac_512_size = 128 / 8; + } + + printf("Test %d:\n", i + 1); + + hmac_sha224(keys[i], keys_len[i], messages[i], strlen(messages[i]), + mac, mac_224_size); + test(vectors[i], mac, mac_224_size ); + hmac_sha256(keys[i], keys_len[i], messages[i], strlen(messages[i]), + mac, mac_256_size); + test(vectors[7 + i], mac, mac_256_size); + hmac_sha384(keys[i], keys_len[i], messages[i], strlen(messages[i]), + mac, mac_384_size); + test(vectors[14 + i], mac, mac_384_size); + hmac_sha512(keys[i], keys_len[i], messages[i], strlen(messages[i]), + mac, mac_512_size); + test(vectors[21 + i], mac, mac_512_size); + } + + printf("All tests passed.\n"); + + return 0; +} + +#endif /* TEST_VECTORS */ + diff --git a/coregrade/src/core/input.cc b/coregrade/src/core/input.cc new file mode 100644 index 0000000..31d57f7 --- /dev/null +++ b/coregrade/src/core/input.cc @@ -0,0 +1,71 @@ +#include "input.h" +#include "clog.h" +#include "util.h" +#include +#include + +/******************************************************************************/ + +void REQ_STRING( CVars &in, const char * name, int min_len, int max_len, const char *regex ) throw (bad_parameter) +{ + int len = in[name].length(); + char ret[2048]; ret[0] = 0; + + logfmt( FLOG_MAX, "REQ_STRING(%s)", name ); + + bool match = reg_match( in[name].c_str(), regex, ret, sizeof(ret) ); + len = strlen(ret); + if ( !match || len < min_len || len > max_len ) + { + logfmt( FLOG_MAX, "Error in parameter '%s', len= %d <= %d <= %d", name, min_len, match, max_len ); + in[name].set_valid( false ); + throw bad_parameter( in, name ); + } + + in[name] = ret; + + CVars::iterator i = in.find( name ); + i->second.set_valid(); + + //logfmt( FLOG_MAX, "i->second.valid()=%d", i->second.valid() ); + + // if not match regexp + +} + +/******************************************************************************/ + +long REQ_LONG( CVars &in, const char *name, long min, long max ) +{ + char *end; + long r = strtol( in[name].c_str(), &end, 10 ); + + if ( in[name].length() && !*end ) + { + in[name].set_valid(); + return r; + } + else + { + in[name].set_valid( false ); + throw bad_parameter( in, name ); + } + + return r; +} + +/******************************************************************************/ + +bool OptionalSpecified( CVars &in, const char * name ) +{ + if ( in.find(name)==in.end() ) return false; // parameter omitted, not even passed from frontend + + return ! reg_match( in[name].c_str(), "^[[:space:]]*$", NULL, 0 ); +} + +/******************************************************************************/ + +/* +vi:ts=2 +*/ + diff --git a/coregrade/src/core/list.cc b/coregrade/src/core/list.cc new file mode 100644 index 0000000..81c330e --- /dev/null +++ b/coregrade/src/core/list.cc @@ -0,0 +1,82 @@ +#include +#include +#include +#include +#include "list.h" + +void DestroyList( TList * top ) +{ +// LOG( "DestroyList()", LOG_MAX ); + + TList * cur = top; unsigned long pos=0; + TList * prev; + + while ( cur && cur->text) + { + free( cur->text ); + prev = cur; + cur = cur->next; + delete prev; + } + +// LOG( "/DestroyList()", LOG_MAX ); +} + +TList * Add( TList * list, char * text, long size ) +{ + if (!text) + return list; + + list->text = new char[ size+1 ]; + memcpy( list->text, text, size ); + list->text[size] = 0; + +// logfmt( FLOG_MAX, "Added: '%s'", list->text ); + + list->next = new TList; + list->next->next = NULL; + list->next->text = NULL; + + return list->next; +} + + +TList * AddF( TList * list, char * format, ... ) +{ + if (!format) + return list; + + int size; + va_list ap; + + va_start( ap, format ); + size = vsnprintf( NULL, 0, format, ap ) + 1; + list->text = new char[ size ]; + if ( !list->text) return list; // out of mem => do nothing + vsnprintf( list->text, size-1, format, ap ); + va_end( ap ); + list->text[size] = 0; + +// logfmt( FLOG_MAX, "Added: '%s'", list->text ); + + list->next = new TList; + list->next->next = NULL; + list->next->text = NULL; + + return list->next; +} + + +void PrintList( TList * list ) +{ +// LOG( "PrintList()", LOG_MAX ); + + TList * cur = list; + while (cur && cur->text) + { +// LOG( cur->text, LOG_MAX ); + cur = cur->next; + } + +// LOG( "/PrintList()", LOG_MAX ); +} diff --git a/coregrade/src/core/pgsql.cc b/coregrade/src/core/pgsql.cc new file mode 100644 index 0000000..b59be28 --- /dev/null +++ b/coregrade/src/core/pgsql.cc @@ -0,0 +1,216 @@ +#include "pgsql.h" +#include "clog.h" +#include +#include + +PGconn *conn; + +int pgsql_db_connect(const char*host,const char*name,const char*user,const char*pass,long port) +{ + FILE_LOG(logSQL) << "pgsql_db_connect()"; + static std::string connection_str; + + if(host) { + connection_str+="host="; + connection_str+=host; + } + if(name) { + connection_str+=" dbname="; + connection_str+=name; + } + if(user) { + connection_str+=" user="; + connection_str+=user; + } + if(pass) { + connection_str+=" password="; + connection_str+=pass; + } + if(port>0) { + char pdb_port[20]; + connection_str+=" port="; + connection_str+=pgsql_uitoa(port,pdb_port,10); + } + + conn = PQconnectdb(connection_str.c_str()); + if (PQstatus(conn) != CONNECTION_OK) { + return 0; + } + return 1; +} + +void pgsql_close() +{ + FILE_LOG(logSQL) << "pgsql_close()"; + if (PQstatus(conn)==CONNECTION_OK) { + PQfinish(conn); + } +} + +int pgsql_exec(const char * format, ... ) +{ + FILE_LOG(logSQL) << "pgsql_exec()"; + char query[16384]; + va_list args; + va_start (args, format); + vsprintf (query, format, args); + //perror (buffer); + va_end (args); + + FILE_LOG(logSQL) << "About to run query: "; + FILE_LOG(logSQL) << query; + /* Escape any PostgrsSQL-unsafe characters */ + // user_size = PQescapeStringConn (conn, user_data, username, strlen(username), &pqesc_error); + int num = 0; + char *cmdTuples = NULL; + PGresult *res = PQexec(conn, query); + if(!res) { + /* Error */ + FILE_LOG(logSQL) << "Error: NULL result"; + num = -1; + } else { + switch (PQresultStatus(res)) { + case PGRES_TUPLES_OK: + case PGRES_COMMAND_OK: + cmdTuples = PQcmdTuples(res); + FILE_LOG(logSQL) << "PQcmdTuples: " << cmdTuples; + num = atoi(cmdTuples); + break; + case PGRES_EMPTY_QUERY: + case PGRES_BAD_RESPONSE: + case PGRES_NONFATAL_ERROR: + case PGRES_FATAL_ERROR: + case PGRES_COPY_OUT: + case PGRES_COPY_IN: + num = -1; + break; + } + } + if (num<0) { + FILE_LOG(logSQL) << "Affected rows: ERROR"; + } else { + FILE_LOG(logSQL) << "Affected rows: " << num; + } + return num; +} + +const PGresult* pgsql_query(const char * format, ... ) +{ + FILE_LOG(logSQL) << "pgsql_query()"; + char query[16384]; + va_list args; + va_start (args, format); + vsprintf (query, format, args); + //perror (buffer); + va_end (args); + + FILE_LOG(logSQL) << "About to run query: "; + FILE_LOG(logSQL) << query; + /* Escape any PostgrsSQL-unsafe characters */ + // user_size = PQescapeStringConn (conn, user_data, username, strlen(username), &pqesc_error); + int num = 0; + const PGresult *res = PQexec(conn, query); + if(!res) { + /* Error */ + num = -1; + FILE_LOG(logSQL) << "Error: NULL result"; + } else { + switch (PQresultStatus(res)) { + case PGRES_TUPLES_OK: + case PGRES_COMMAND_OK: + num = PQntuples(res); + FILE_LOG(logSQL) << "Found rows: " << num; + break; + case PGRES_EMPTY_QUERY: + case PGRES_BAD_RESPONSE: + case PGRES_NONFATAL_ERROR: + case PGRES_FATAL_ERROR: + case PGRES_COPY_OUT: + case PGRES_COPY_IN: + num = -1; + break; + } + } + if (num>0) { + return res; + } + FILE_LOG(logSQL) << "Found rows: " << (num<0?"ERROR":"0"); + return NULL; +} + +int pgsql_num_rows(const PGresult *res) +{ + if (res) { + return PQntuples(res); + } + return 0; +} + +int pgsql_num_fields(const PGresult *res) +{ + if (res) { + return PQnfields(res); + } + return 0; +} + +map pgsql_fetch_assoc(const PGresult *res, int row) +{ + map result; + if (res) { + const int rows = PQntuples(res); + if (rows>0 && row0) { + for (int i=0; i pgsql_fetch_row(const PGresult *res, int row) +{ + vector result; + if (res) { + const int rows = PQntuples(res); + if (rows>0 && row0) { + for (int i=0; i +#include +#include +#include +#include +#include +#include + +void load_db_record( const char * table, CVars &rec, const char * where, ... ) +{ + logfmt( FLOG_MAX, "void load_db_record( const char * table, CVars &rec, const char * where, ... )"); + + size_t buf_size = 512; + char *buffer = new char[buf_size]; + + va_list argPtr; + size_t length; + std::string cmd; + + while (true) { + if (!buffer) { + assert(buffer); // to stop when debugging + cmd = std::string("", 16); + break; + } + va_start(argPtr, where); + length = vsnprintf(buffer, buf_size, where, argPtr); + va_end(argPtr); + + if (length >= 0 && length < buf_size - 1) { + // string fits into current buffer + cmd = std::string(buffer, length); + break; + } + // otherwise resize buffer : + buf_size *= 2; + // fprintf(stderr, "Reallocating vstrf-buffer to size=%u\n", buf_size); + delete [] buffer; + buffer = new char[buf_size]; + } + + const PGresult* res = pgsql_query("SELECT * FROM %s WHERE %s", table, cmd.c_str() ); + + if( buffer ) delete [] buffer; + + if (!res || pgsql_num_rows(res)!=1) return; + + mapf = pgsql_fetch_assoc(res, 0); + logfmt( FLOG_MAX, "load_db_record(%s) num_cols=%d", table, f.size() ); + if (f.empty()) { + return; + } + + map::iterator it; + for(it = f.begin(); it != f.end(); it++) { + rec[ it->first ] = it->second; + } +} + +// This function now supports binary data +long load_db_record( CVars &rec, const char * query, ... ) +{ + logfmt( FLOG_MAX, "long load_db_record( CVars &rec, const char * query, ... )"); + + size_t buf_size = 512; + char *buffer = new char[buf_size]; + + va_list argPtr; + size_t length; + std::string cmd; + + while (true) { + if (!buffer) { + assert(buffer); // to stop when debugging + cmd = std::string("", 16); + break; + } + va_start(argPtr, query); + length = vsnprintf(buffer, buf_size, query, argPtr); + va_end(argPtr); + + if (length >= 0 && length < buf_size - 1) { + // string fits into current buffer + cmd = std::string(buffer, length); + break; + } + // otherwise resize buffer : + buf_size *= 2; + // fprintf(stderr, "Reallocating vstrf-buffer to size=%u\n", buf_size); + delete [] buffer; + buffer = new char[buf_size]; + } + + const PGresult* res = pgsql_query("%s", cmd.c_str() ); + + if( buffer ) delete [] buffer; + + if (!res || pgsql_num_rows(res)!=1) return -1l; + + mapf = pgsql_fetch_assoc(res, 0); + logfmt( FLOG_MAX, "load_db_record(%s) num_cols=%d", cmd.c_str(), f.size() ); + if (f.empty()) { + return 0l; + } + + map::iterator it; + for(it = f.begin(); it != f.end(); it++) { + rec[ it->first ] = it->second; + } + return 1l; +} + + +#define MAX_BINARY_PARS 20 + +long insert_db_record( int mode, const char *table, const char *seq, CVars &rec ) +{ + CVars::const_iterator i; + char cmd[128]; /*cols[1024], vals[1024]; cols[0] = 0; vals[0] = 0;*/ + bool first = true; + string cols, vals; + int bind_i = 0; + long int sz[MAX_BINARY_PARS]; bzero( sz, sizeof(sz) ); // provides binding for all binary columns simultaneously + int binary_i = 0; + + logfmt( FLOG_MAX, "insert_db_record()" ); + + snprintf( cmd, sizeof(cmd), "INSERT INTO %s (%%s) VALUES (%%s)", table ); + + for ( i=rec.begin(); i != rec.end(); i++ ) + { + NEED_ESC; +// logfmt( FLOG_MAX, "'%s': i->second.valid()=%d, db()=%d", i->first.c_str(), i->second.valid(), i->second.db() ); + + if ( (DBS_VALID & mode) && !i->second.valid() ) continue; + if ( (DBS_STREAM & mode ) && !i->second.db() ) continue; + //logfmt( FLOG_MAX, "insert_db_record(): %s = %s", i->first.c_str(), i->second.c_str() ); + + cols += string(first?"":",") + i->first; + if ( !first ) vals += ","; + + if ( i->second.binary() ) + { +/* + vals += '?'; + sz[binary_i] = i->second.size(); + char *data = (char*)i->second.data(); + + //logfmt( FLOG_MAX, "saving binary parameter '%s', len = %d", i->first.c_str(), i->second.size() ); + + SQLBindParameter( st.hstmt, ++bind_i, SQL_PARAM_INPUT, SQL_C_BINARY, SQL_VARBINARY, sz[binary_i], 0, data, sz[binary_i], &sz[binary_i] ); + + if ( binary_i++ == MAX_BINARY_PARS ) + { + logfmt( FLOG_MAX, "Exceeded maximum allowed binary parameters" ); + return 0; + } +*/ + throw err("Binary parameters are not supported"); + } + else + vals += string("'") + esc(i->second.c_str()) + "'"; + + /*strcatf( cols, sizeof(cols), "%s%s", first?"":",", i->first.c_str() ); + strcatf( vals, sizeof(vals), "%s'%s'", first?"":",", i->second.c_str() );*/ + + first = false; + } + + int res = pgsql_exec( cmd, cols.c_str(), vals.c_str() ); + + return curr_val( seq ); +} + + +void update_db_record( int mode, const char * table, CVars &rec, long id, const char * where, ... ) throw ( bad_parameter ) +{ + va_list ap; + va_start( ap, where ); + v_update_db_record( mode, table, rec, "id", id, where, ap ); + va_end( ap ); +} + + +void update_db_record( int mode, const char * table, CVars &rec, const char *index, long id, const char * where, ... ) throw ( bad_parameter ) +{ + va_list ap; + va_start( ap, where ); + v_update_db_record( mode, table, rec, index, id, where, ap ); + va_end( ap ); +} + +void v_update_db_record( int mode, const char * table, CVars &rec, const char *index, long id, const char * where, va_list ap ) throw ( bad_parameter ) +{ + logfmt( FLOG_MAX, "update_db_record()" ); + int bind_i = 0; + + if ( !id ) throw bad_parameter( rec, "id" ); + + CVars::const_iterator i; + char cmd[128]; + bool first = true; + string cols; + char * wherestr; + + snprintf( cmd, sizeof(cmd), "UPDATE %s SET %%s WHERE %s=%lu AND %%s", table, index, id ); + + for ( i=rec.begin(); i != rec.end(); i++ ) + { + NEED_ESC; + if ( !i->second.valid() ) continue; + if ( (DBS_STREAM & mode) && !i->second.db() ) continue; + + cols += string(first?"":",") + i->first + "="; + + if ( ! i->second.binary() ) + cols += string("'") + esc(i->second.c_str()) + "'"; + else + { +/* + cols += "?"; + long int sz = i->second.size(); + char *data = (char*)i->second.data(); + + SQLBindParameter( st.hstmt, ++bind_i, SQL_PARAM_INPUT, SQL_C_BINARY, SQL_VARBINARY, sz, 0, data, sz, &sz ); +*/ + throw err("Binary data is not supported"); + } + + first = false; + } + + if ( where ) + { + int size = vsnprintf( NULL, 0, where, ap ) + 1; + wherestr = (char*)malloc( size ); + if ( !wherestr ) throw err("malloc() error"); + vsnprintf( wherestr, size, where, ap ); + } + + int rows = pgsql_exec( cmd, cols.c_str(), where?wherestr:"true" ); + if ( where ) + free( wherestr ); + + if ( rows!=1 ) throw bad_parameter( rec, "id" ); +} + +long curr_val( const char *seq ) +{ + long size = 20+strlen(seq); + char cmd[size]; + snprintf( cmd, size, "SELECT currval('%s')", seq ); + logfmt( FLOG_MAX, "%s", cmd); + const PGresult* res = pgsql_query( cmd ); + if (res && pgsql_num_rows(res)>0) { + vectorf = pgsql_fetch_row(res,0); + if (!f.empty() && f.size()>0) { + return atol(f[0]); + } + } + logfmt( FLOG_MAX, "SQL error" ); + return -1l; +} + +//---------------------------- class CEscape ---------------- + +char * CEscape::New( int sz ) +{ + if ( ESCAPE_MAX_VARS==n ) + { + logfmt( FLOG_MAX, "CEscape::New() Maximum number of variables reached" ); + return NULL; + } + + vars[n] = new char[sz]; + n++; + + return vars[n-1]; +} + +CEscape::CEscape( char * st ) +{ + n = 0; + this->st = st; +} + +CEscape::~CEscape() +{ + for ( int i=0; iEscapeLength(param); + return this->EscapeReal( param, New(len), len ); +} + +int CEscape::EscapeLength( const char * par ) +{ + if ( !par ) return 0; + + int i, len = strlen(par), extra = 0; + + for ( i=0; iesc; + + if (!sz) sz = sizeof(this->esc); + + c = (char*)cmd; esc[0] = 0; d = esc; dend = d+sz; + + if ( !cmd ) return esc; + +// LOG( cmd, LOG_MAX ); + + while ( c +#include +#include +#include + +char * strsafecpy( char * dest, const char * src, int size ) +{ + if ( src==dest ) return dest; + if ( size<=0 ) return dest; + dest[0] = 0; + if ( !src ) return dest; + + int len = strlen( src ); + + if ( len>=size ) + len = size-1; // to be safe + + strncpy( dest, src, len ); + dest[ len ] = 0; + + return dest; +} + +char * strnsafecpy( char * dest, const char * src, int n, int size ) +{ + if ( size<=0 ) return dest; + dest[0] = 0; + if ( !src ) return dest; + + if ( n>=size ) + n = size-1; + + strncpy( dest, src, n ); + dest[ n ] = 0; + + return dest; +} + + +char * strsafecat( char * dest, const char * src, int size ) +{ + int len = strlen( src ); + int start = strlen(dest); + size -= start; + + if ( len>=size ) + len = size-1; // to be safe + + strncat( dest, src, len ); + dest[ start+len ] = 0; + + return dest; +} + + +char * strnsafecat( char * dest, const char * src, int n, int size ) +{ + int len = strlen( src ); + if ( n=size ) + len = size-1; // to be safe + + strncat( dest, src, len ); + dest[ start+len ] = 0; + + return dest; +} + + +char * strcatf( char * dest, int size, const char * fmt, ... ) +{ + va_list ap; + va_start( ap, fmt ); + + int len = strlen( dest ); + + if ( size-len > 0 ) + vsnprintf( &dest[len], size-len, fmt, ap ); + + dest[ size-1 ] = 0; + + va_end( ap ); + + return dest; +} + + +char * toupper( char * s, char * dest/*=NULL*/, int sz/*=0*/ ) +{ + if (!s) return NULL; + char *c = s; + char *d = dest?dest:s; + + while (*c) { + if (d-dest>=sz-1) break; + *d = toupper(*c); + c++; d++; + } + + *d = 0; + + return dest?dest:s; +} + +char * tolower( char * s, char * dest/*=NULL*/, int sz/*=0*/ ) +{ + if (!s) return NULL; + char *c = s; + char *d = dest?dest:s; + + while (*c) { + if ( dest && (d-dest>=sz-1) ) break; + *d = tolower(*c); + c++; d++; + } + + *d = 0; + + return dest?dest:s; +} + + +char * toupper( const char * s, char * dest, int sz ) +{ + return toupper( (char*)s, dest, sz ); +} + + +char * tolower( const char * s, char * dest, int sz ) +{ + return tolower( (char*)s, dest, sz ); +} + + +char * last_line( char * buf ) // find the last line and return the pointer to its beginning +{ + char * line = buf, *bufend = buf + strlen(buf); + + while ( char * c = strpbrk( line, "\r\n" ) ) + { + c += strspn( c, "\r\n" ); + + if ( c==bufend ) + return line; + + line = c; + } + + return line; +} + + +char * safestrdup( const char *s ) +{ + return s ? strdup( s ) : NULL; +} + + +char * strreverse( char *s ) +{ + int len = strlen(s); + int end = len/2; + unsigned char c; + + for ( int i=0; i + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#if 0 +#define UNROLL_LOOPS /* Enable loops unrolling */ +#endif + +#include + +#include "sha2.h" + +#define SHFR(x, n) (x >> n) +#define ROTR(x, n) ((x >> n) | (x << ((sizeof(x) << 3) - n))) +#define ROTL(x, n) ((x << n) | (x >> ((sizeof(x) << 3) - n))) +#define CH(x, y, z) ((x & y) ^ (~x & z)) +#define MAJ(x, y, z) ((x & y) ^ (x & z) ^ (y & z)) + +#define SHA256_F1(x) (ROTR(x, 2) ^ ROTR(x, 13) ^ ROTR(x, 22)) +#define SHA256_F2(x) (ROTR(x, 6) ^ ROTR(x, 11) ^ ROTR(x, 25)) +#define SHA256_F3(x) (ROTR(x, 7) ^ ROTR(x, 18) ^ SHFR(x, 3)) +#define SHA256_F4(x) (ROTR(x, 17) ^ ROTR(x, 19) ^ SHFR(x, 10)) + +#define SHA512_F1(x) (ROTR(x, 28) ^ ROTR(x, 34) ^ ROTR(x, 39)) +#define SHA512_F2(x) (ROTR(x, 14) ^ ROTR(x, 18) ^ ROTR(x, 41)) +#define SHA512_F3(x) (ROTR(x, 1) ^ ROTR(x, 8) ^ SHFR(x, 7)) +#define SHA512_F4(x) (ROTR(x, 19) ^ ROTR(x, 61) ^ SHFR(x, 6)) + +#define UNPACK32(x, str) \ +{ \ + *((str) + 3) = (uint8) ((x) ); \ + *((str) + 2) = (uint8) ((x) >> 8); \ + *((str) + 1) = (uint8) ((x) >> 16); \ + *((str) + 0) = (uint8) ((x) >> 24); \ +} + +#define PACK32(str, x) \ +{ \ + *(x) = ((uint32) *((str) + 3) ) \ + | ((uint32) *((str) + 2) << 8) \ + | ((uint32) *((str) + 1) << 16) \ + | ((uint32) *((str) + 0) << 24); \ +} + +#define UNPACK64(x, str) \ +{ \ + *((str) + 7) = (uint8) ((x) ); \ + *((str) + 6) = (uint8) ((x) >> 8); \ + *((str) + 5) = (uint8) ((x) >> 16); \ + *((str) + 4) = (uint8) ((x) >> 24); \ + *((str) + 3) = (uint8) ((x) >> 32); \ + *((str) + 2) = (uint8) ((x) >> 40); \ + *((str) + 1) = (uint8) ((x) >> 48); \ + *((str) + 0) = (uint8) ((x) >> 56); \ +} + +#define PACK64(str, x) \ +{ \ + *(x) = ((uint64) *((str) + 7) ) \ + | ((uint64) *((str) + 6) << 8) \ + | ((uint64) *((str) + 5) << 16) \ + | ((uint64) *((str) + 4) << 24) \ + | ((uint64) *((str) + 3) << 32) \ + | ((uint64) *((str) + 2) << 40) \ + | ((uint64) *((str) + 1) << 48) \ + | ((uint64) *((str) + 0) << 56); \ +} + +/* Macros used for loops unrolling */ + +#define SHA256_SCR(i) \ +{ \ + w[i] = SHA256_F4(w[i - 2]) + w[i - 7] \ + + SHA256_F3(w[i - 15]) + w[i - 16]; \ +} + +#define SHA512_SCR(i) \ +{ \ + w[i] = SHA512_F4(w[i - 2]) + w[i - 7] \ + + SHA512_F3(w[i - 15]) + w[i - 16]; \ +} + +#define SHA256_EXP(a, b, c, d, e, f, g, h, j) \ +{ \ + t1 = wv[h] + SHA256_F2(wv[e]) + CH(wv[e], wv[f], wv[g]) \ + + sha256_k[j] + w[j]; \ + t2 = SHA256_F1(wv[a]) + MAJ(wv[a], wv[b], wv[c]); \ + wv[d] += t1; \ + wv[h] = t1 + t2; \ +} + +#define SHA512_EXP(a, b, c, d, e, f, g ,h, j) \ +{ \ + t1 = wv[h] + SHA512_F2(wv[e]) + CH(wv[e], wv[f], wv[g]) \ + + sha512_k[j] + w[j]; \ + t2 = SHA512_F1(wv[a]) + MAJ(wv[a], wv[b], wv[c]); \ + wv[d] += t1; \ + wv[h] = t1 + t2; \ +} + +uint32 sha224_h0[8] = + {0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939, + 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4}; + +uint32 sha256_h0[8] = + {0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, + 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19}; + +uint64 sha384_h0[8] = + {0xcbbb9d5dc1059ed8ULL, 0x629a292a367cd507ULL, + 0x9159015a3070dd17ULL, 0x152fecd8f70e5939ULL, + 0x67332667ffc00b31ULL, 0x8eb44a8768581511ULL, + 0xdb0c2e0d64f98fa7ULL, 0x47b5481dbefa4fa4ULL}; + +uint64 sha512_h0[8] = + {0x6a09e667f3bcc908ULL, 0xbb67ae8584caa73bULL, + 0x3c6ef372fe94f82bULL, 0xa54ff53a5f1d36f1ULL, + 0x510e527fade682d1ULL, 0x9b05688c2b3e6c1fULL, + 0x1f83d9abfb41bd6bULL, 0x5be0cd19137e2179ULL}; + +uint32 sha256_k[64] = + {0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, + 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, + 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, + 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, + 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, + 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, + 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, + 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, + 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, + 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, + 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, + 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, + 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, + 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, + 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, + 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2}; + +uint64 sha512_k[80] = + {0x428a2f98d728ae22ULL, 0x7137449123ef65cdULL, + 0xb5c0fbcfec4d3b2fULL, 0xe9b5dba58189dbbcULL, + 0x3956c25bf348b538ULL, 0x59f111f1b605d019ULL, + 0x923f82a4af194f9bULL, 0xab1c5ed5da6d8118ULL, + 0xd807aa98a3030242ULL, 0x12835b0145706fbeULL, + 0x243185be4ee4b28cULL, 0x550c7dc3d5ffb4e2ULL, + 0x72be5d74f27b896fULL, 0x80deb1fe3b1696b1ULL, + 0x9bdc06a725c71235ULL, 0xc19bf174cf692694ULL, + 0xe49b69c19ef14ad2ULL, 0xefbe4786384f25e3ULL, + 0x0fc19dc68b8cd5b5ULL, 0x240ca1cc77ac9c65ULL, + 0x2de92c6f592b0275ULL, 0x4a7484aa6ea6e483ULL, + 0x5cb0a9dcbd41fbd4ULL, 0x76f988da831153b5ULL, + 0x983e5152ee66dfabULL, 0xa831c66d2db43210ULL, + 0xb00327c898fb213fULL, 0xbf597fc7beef0ee4ULL, + 0xc6e00bf33da88fc2ULL, 0xd5a79147930aa725ULL, + 0x06ca6351e003826fULL, 0x142929670a0e6e70ULL, + 0x27b70a8546d22ffcULL, 0x2e1b21385c26c926ULL, + 0x4d2c6dfc5ac42aedULL, 0x53380d139d95b3dfULL, + 0x650a73548baf63deULL, 0x766a0abb3c77b2a8ULL, + 0x81c2c92e47edaee6ULL, 0x92722c851482353bULL, + 0xa2bfe8a14cf10364ULL, 0xa81a664bbc423001ULL, + 0xc24b8b70d0f89791ULL, 0xc76c51a30654be30ULL, + 0xd192e819d6ef5218ULL, 0xd69906245565a910ULL, + 0xf40e35855771202aULL, 0x106aa07032bbd1b8ULL, + 0x19a4c116b8d2d0c8ULL, 0x1e376c085141ab53ULL, + 0x2748774cdf8eeb99ULL, 0x34b0bcb5e19b48a8ULL, + 0x391c0cb3c5c95a63ULL, 0x4ed8aa4ae3418acbULL, + 0x5b9cca4f7763e373ULL, 0x682e6ff3d6b2b8a3ULL, + 0x748f82ee5defb2fcULL, 0x78a5636f43172f60ULL, + 0x84c87814a1f0ab72ULL, 0x8cc702081a6439ecULL, + 0x90befffa23631e28ULL, 0xa4506cebde82bde9ULL, + 0xbef9a3f7b2c67915ULL, 0xc67178f2e372532bULL, + 0xca273eceea26619cULL, 0xd186b8c721c0c207ULL, + 0xeada7dd6cde0eb1eULL, 0xf57d4f7fee6ed178ULL, + 0x06f067aa72176fbaULL, 0x0a637dc5a2c898a6ULL, + 0x113f9804bef90daeULL, 0x1b710b35131c471bULL, + 0x28db77f523047d84ULL, 0x32caab7b40c72493ULL, + 0x3c9ebe0a15c9bebcULL, 0x431d67c49c100d4cULL, + 0x4cc5d4becb3e42b6ULL, 0x597f299cfc657e2aULL, + 0x5fcb6fab3ad6faecULL, 0x6c44198c4a475817ULL}; + +/* SHA-256 functions */ + +void sha256_transf(sha256_ctx *ctx, const unsigned char *message, + unsigned int block_nb) +{ + uint32 w[64]; + uint32 wv[8]; + uint32 t1, t2; + const unsigned char *sub_block; + int i; + +#ifndef UNROLL_LOOPS + int j; +#endif + + for (i = 0; i < (int) block_nb; i++) { + sub_block = message + (i << 6); + +#ifndef UNROLL_LOOPS + for (j = 0; j < 16; j++) { + PACK32(&sub_block[j << 2], &w[j]); + } + + for (j = 16; j < 64; j++) { + SHA256_SCR(j); + } + + for (j = 0; j < 8; j++) { + wv[j] = ctx->h[j]; + } + + for (j = 0; j < 64; j++) { + t1 = wv[7] + SHA256_F2(wv[4]) + CH(wv[4], wv[5], wv[6]) + + sha256_k[j] + w[j]; + t2 = SHA256_F1(wv[0]) + MAJ(wv[0], wv[1], wv[2]); + wv[7] = wv[6]; + wv[6] = wv[5]; + wv[5] = wv[4]; + wv[4] = wv[3] + t1; + wv[3] = wv[2]; + wv[2] = wv[1]; + wv[1] = wv[0]; + wv[0] = t1 + t2; + } + + for (j = 0; j < 8; j++) { + ctx->h[j] += wv[j]; + } +#else + PACK32(&sub_block[ 0], &w[ 0]); PACK32(&sub_block[ 4], &w[ 1]); + PACK32(&sub_block[ 8], &w[ 2]); PACK32(&sub_block[12], &w[ 3]); + PACK32(&sub_block[16], &w[ 4]); PACK32(&sub_block[20], &w[ 5]); + PACK32(&sub_block[24], &w[ 6]); PACK32(&sub_block[28], &w[ 7]); + PACK32(&sub_block[32], &w[ 8]); PACK32(&sub_block[36], &w[ 9]); + PACK32(&sub_block[40], &w[10]); PACK32(&sub_block[44], &w[11]); + PACK32(&sub_block[48], &w[12]); PACK32(&sub_block[52], &w[13]); + PACK32(&sub_block[56], &w[14]); PACK32(&sub_block[60], &w[15]); + + SHA256_SCR(16); SHA256_SCR(17); SHA256_SCR(18); SHA256_SCR(19); + SHA256_SCR(20); SHA256_SCR(21); SHA256_SCR(22); SHA256_SCR(23); + SHA256_SCR(24); SHA256_SCR(25); SHA256_SCR(26); SHA256_SCR(27); + SHA256_SCR(28); SHA256_SCR(29); SHA256_SCR(30); SHA256_SCR(31); + SHA256_SCR(32); SHA256_SCR(33); SHA256_SCR(34); SHA256_SCR(35); + SHA256_SCR(36); SHA256_SCR(37); SHA256_SCR(38); SHA256_SCR(39); + SHA256_SCR(40); SHA256_SCR(41); SHA256_SCR(42); SHA256_SCR(43); + SHA256_SCR(44); SHA256_SCR(45); SHA256_SCR(46); SHA256_SCR(47); + SHA256_SCR(48); SHA256_SCR(49); SHA256_SCR(50); SHA256_SCR(51); + SHA256_SCR(52); SHA256_SCR(53); SHA256_SCR(54); SHA256_SCR(55); + SHA256_SCR(56); SHA256_SCR(57); SHA256_SCR(58); SHA256_SCR(59); + SHA256_SCR(60); SHA256_SCR(61); SHA256_SCR(62); SHA256_SCR(63); + + wv[0] = ctx->h[0]; wv[1] = ctx->h[1]; + wv[2] = ctx->h[2]; wv[3] = ctx->h[3]; + wv[4] = ctx->h[4]; wv[5] = ctx->h[5]; + wv[6] = ctx->h[6]; wv[7] = ctx->h[7]; + + SHA256_EXP(0,1,2,3,4,5,6,7, 0); SHA256_EXP(7,0,1,2,3,4,5,6, 1); + SHA256_EXP(6,7,0,1,2,3,4,5, 2); SHA256_EXP(5,6,7,0,1,2,3,4, 3); + SHA256_EXP(4,5,6,7,0,1,2,3, 4); SHA256_EXP(3,4,5,6,7,0,1,2, 5); + SHA256_EXP(2,3,4,5,6,7,0,1, 6); SHA256_EXP(1,2,3,4,5,6,7,0, 7); + SHA256_EXP(0,1,2,3,4,5,6,7, 8); SHA256_EXP(7,0,1,2,3,4,5,6, 9); + SHA256_EXP(6,7,0,1,2,3,4,5,10); SHA256_EXP(5,6,7,0,1,2,3,4,11); + SHA256_EXP(4,5,6,7,0,1,2,3,12); SHA256_EXP(3,4,5,6,7,0,1,2,13); + SHA256_EXP(2,3,4,5,6,7,0,1,14); SHA256_EXP(1,2,3,4,5,6,7,0,15); + SHA256_EXP(0,1,2,3,4,5,6,7,16); SHA256_EXP(7,0,1,2,3,4,5,6,17); + SHA256_EXP(6,7,0,1,2,3,4,5,18); SHA256_EXP(5,6,7,0,1,2,3,4,19); + SHA256_EXP(4,5,6,7,0,1,2,3,20); SHA256_EXP(3,4,5,6,7,0,1,2,21); + SHA256_EXP(2,3,4,5,6,7,0,1,22); SHA256_EXP(1,2,3,4,5,6,7,0,23); + SHA256_EXP(0,1,2,3,4,5,6,7,24); SHA256_EXP(7,0,1,2,3,4,5,6,25); + SHA256_EXP(6,7,0,1,2,3,4,5,26); SHA256_EXP(5,6,7,0,1,2,3,4,27); + SHA256_EXP(4,5,6,7,0,1,2,3,28); SHA256_EXP(3,4,5,6,7,0,1,2,29); + SHA256_EXP(2,3,4,5,6,7,0,1,30); SHA256_EXP(1,2,3,4,5,6,7,0,31); + SHA256_EXP(0,1,2,3,4,5,6,7,32); SHA256_EXP(7,0,1,2,3,4,5,6,33); + SHA256_EXP(6,7,0,1,2,3,4,5,34); SHA256_EXP(5,6,7,0,1,2,3,4,35); + SHA256_EXP(4,5,6,7,0,1,2,3,36); SHA256_EXP(3,4,5,6,7,0,1,2,37); + SHA256_EXP(2,3,4,5,6,7,0,1,38); SHA256_EXP(1,2,3,4,5,6,7,0,39); + SHA256_EXP(0,1,2,3,4,5,6,7,40); SHA256_EXP(7,0,1,2,3,4,5,6,41); + SHA256_EXP(6,7,0,1,2,3,4,5,42); SHA256_EXP(5,6,7,0,1,2,3,4,43); + SHA256_EXP(4,5,6,7,0,1,2,3,44); SHA256_EXP(3,4,5,6,7,0,1,2,45); + SHA256_EXP(2,3,4,5,6,7,0,1,46); SHA256_EXP(1,2,3,4,5,6,7,0,47); + SHA256_EXP(0,1,2,3,4,5,6,7,48); SHA256_EXP(7,0,1,2,3,4,5,6,49); + SHA256_EXP(6,7,0,1,2,3,4,5,50); SHA256_EXP(5,6,7,0,1,2,3,4,51); + SHA256_EXP(4,5,6,7,0,1,2,3,52); SHA256_EXP(3,4,5,6,7,0,1,2,53); + SHA256_EXP(2,3,4,5,6,7,0,1,54); SHA256_EXP(1,2,3,4,5,6,7,0,55); + SHA256_EXP(0,1,2,3,4,5,6,7,56); SHA256_EXP(7,0,1,2,3,4,5,6,57); + SHA256_EXP(6,7,0,1,2,3,4,5,58); SHA256_EXP(5,6,7,0,1,2,3,4,59); + SHA256_EXP(4,5,6,7,0,1,2,3,60); SHA256_EXP(3,4,5,6,7,0,1,2,61); + SHA256_EXP(2,3,4,5,6,7,0,1,62); SHA256_EXP(1,2,3,4,5,6,7,0,63); + + ctx->h[0] += wv[0]; ctx->h[1] += wv[1]; + ctx->h[2] += wv[2]; ctx->h[3] += wv[3]; + ctx->h[4] += wv[4]; ctx->h[5] += wv[5]; + ctx->h[6] += wv[6]; ctx->h[7] += wv[7]; +#endif /* !UNROLL_LOOPS */ + } +} + +void sha256(const unsigned char *message, unsigned int len, unsigned char *digest) +{ + sha256_ctx ctx; + + sha256_init(&ctx); + sha256_update(&ctx, message, len); + sha256_final(&ctx, digest); +} + +void sha256_init(sha256_ctx *ctx) +{ +#ifndef UNROLL_LOOPS + int i; + for (i = 0; i < 8; i++) { + ctx->h[i] = sha256_h0[i]; + } +#else + ctx->h[0] = sha256_h0[0]; ctx->h[1] = sha256_h0[1]; + ctx->h[2] = sha256_h0[2]; ctx->h[3] = sha256_h0[3]; + ctx->h[4] = sha256_h0[4]; ctx->h[5] = sha256_h0[5]; + ctx->h[6] = sha256_h0[6]; ctx->h[7] = sha256_h0[7]; +#endif /* !UNROLL_LOOPS */ + + ctx->len = 0; + ctx->tot_len = 0; +} + +void sha256_update(sha256_ctx *ctx, const unsigned char *message, + unsigned int len) +{ + unsigned int block_nb; + unsigned int new_len, rem_len, tmp_len; + const unsigned char *shifted_message; + + tmp_len = SHA256_BLOCK_SIZE - ctx->len; + rem_len = len < tmp_len ? len : tmp_len; + + memcpy(&ctx->block[ctx->len], message, rem_len); + + if (ctx->len + len < SHA256_BLOCK_SIZE) { + ctx->len += len; + return; + } + + new_len = len - rem_len; + block_nb = new_len / SHA256_BLOCK_SIZE; + + shifted_message = message + rem_len; + + sha256_transf(ctx, ctx->block, 1); + sha256_transf(ctx, shifted_message, block_nb); + + rem_len = new_len % SHA256_BLOCK_SIZE; + + memcpy(ctx->block, &shifted_message[block_nb << 6], + rem_len); + + ctx->len = rem_len; + ctx->tot_len += (block_nb + 1) << 6; +} + +void sha256_final(sha256_ctx *ctx, unsigned char *digest) +{ + unsigned int block_nb; + unsigned int pm_len; + unsigned int len_b; + +#ifndef UNROLL_LOOPS + int i; +#endif + + block_nb = (1 + ((SHA256_BLOCK_SIZE - 9) + < (ctx->len % SHA256_BLOCK_SIZE))); + + len_b = (ctx->tot_len + ctx->len) << 3; + pm_len = block_nb << 6; + + memset(ctx->block + ctx->len, 0, pm_len - ctx->len); + ctx->block[ctx->len] = 0x80; + UNPACK32(len_b, ctx->block + pm_len - 4); + + sha256_transf(ctx, ctx->block, block_nb); + +#ifndef UNROLL_LOOPS + for (i = 0 ; i < 8; i++) { + UNPACK32(ctx->h[i], &digest[i << 2]); + } +#else + UNPACK32(ctx->h[0], &digest[ 0]); + UNPACK32(ctx->h[1], &digest[ 4]); + UNPACK32(ctx->h[2], &digest[ 8]); + UNPACK32(ctx->h[3], &digest[12]); + UNPACK32(ctx->h[4], &digest[16]); + UNPACK32(ctx->h[5], &digest[20]); + UNPACK32(ctx->h[6], &digest[24]); + UNPACK32(ctx->h[7], &digest[28]); +#endif /* !UNROLL_LOOPS */ +} + +/* SHA-512 functions */ + +void sha512_transf(sha512_ctx *ctx, const unsigned char *message, + unsigned int block_nb) +{ + uint64 w[80]; + uint64 wv[8]; + uint64 t1, t2; + const unsigned char *sub_block; + int i, j; + + for (i = 0; i < (int) block_nb; i++) { + sub_block = message + (i << 7); + +#ifndef UNROLL_LOOPS + for (j = 0; j < 16; j++) { + PACK64(&sub_block[j << 3], &w[j]); + } + + for (j = 16; j < 80; j++) { + SHA512_SCR(j); + } + + for (j = 0; j < 8; j++) { + wv[j] = ctx->h[j]; + } + + for (j = 0; j < 80; j++) { + t1 = wv[7] + SHA512_F2(wv[4]) + CH(wv[4], wv[5], wv[6]) + + sha512_k[j] + w[j]; + t2 = SHA512_F1(wv[0]) + MAJ(wv[0], wv[1], wv[2]); + wv[7] = wv[6]; + wv[6] = wv[5]; + wv[5] = wv[4]; + wv[4] = wv[3] + t1; + wv[3] = wv[2]; + wv[2] = wv[1]; + wv[1] = wv[0]; + wv[0] = t1 + t2; + } + + for (j = 0; j < 8; j++) { + ctx->h[j] += wv[j]; + } +#else + PACK64(&sub_block[ 0], &w[ 0]); PACK64(&sub_block[ 8], &w[ 1]); + PACK64(&sub_block[ 16], &w[ 2]); PACK64(&sub_block[ 24], &w[ 3]); + PACK64(&sub_block[ 32], &w[ 4]); PACK64(&sub_block[ 40], &w[ 5]); + PACK64(&sub_block[ 48], &w[ 6]); PACK64(&sub_block[ 56], &w[ 7]); + PACK64(&sub_block[ 64], &w[ 8]); PACK64(&sub_block[ 72], &w[ 9]); + PACK64(&sub_block[ 80], &w[10]); PACK64(&sub_block[ 88], &w[11]); + PACK64(&sub_block[ 96], &w[12]); PACK64(&sub_block[104], &w[13]); + PACK64(&sub_block[112], &w[14]); PACK64(&sub_block[120], &w[15]); + + SHA512_SCR(16); SHA512_SCR(17); SHA512_SCR(18); SHA512_SCR(19); + SHA512_SCR(20); SHA512_SCR(21); SHA512_SCR(22); SHA512_SCR(23); + SHA512_SCR(24); SHA512_SCR(25); SHA512_SCR(26); SHA512_SCR(27); + SHA512_SCR(28); SHA512_SCR(29); SHA512_SCR(30); SHA512_SCR(31); + SHA512_SCR(32); SHA512_SCR(33); SHA512_SCR(34); SHA512_SCR(35); + SHA512_SCR(36); SHA512_SCR(37); SHA512_SCR(38); SHA512_SCR(39); + SHA512_SCR(40); SHA512_SCR(41); SHA512_SCR(42); SHA512_SCR(43); + SHA512_SCR(44); SHA512_SCR(45); SHA512_SCR(46); SHA512_SCR(47); + SHA512_SCR(48); SHA512_SCR(49); SHA512_SCR(50); SHA512_SCR(51); + SHA512_SCR(52); SHA512_SCR(53); SHA512_SCR(54); SHA512_SCR(55); + SHA512_SCR(56); SHA512_SCR(57); SHA512_SCR(58); SHA512_SCR(59); + SHA512_SCR(60); SHA512_SCR(61); SHA512_SCR(62); SHA512_SCR(63); + SHA512_SCR(64); SHA512_SCR(65); SHA512_SCR(66); SHA512_SCR(67); + SHA512_SCR(68); SHA512_SCR(69); SHA512_SCR(70); SHA512_SCR(71); + SHA512_SCR(72); SHA512_SCR(73); SHA512_SCR(74); SHA512_SCR(75); + SHA512_SCR(76); SHA512_SCR(77); SHA512_SCR(78); SHA512_SCR(79); + + wv[0] = ctx->h[0]; wv[1] = ctx->h[1]; + wv[2] = ctx->h[2]; wv[3] = ctx->h[3]; + wv[4] = ctx->h[4]; wv[5] = ctx->h[5]; + wv[6] = ctx->h[6]; wv[7] = ctx->h[7]; + + j = 0; + + do { + SHA512_EXP(0,1,2,3,4,5,6,7,j); j++; + SHA512_EXP(7,0,1,2,3,4,5,6,j); j++; + SHA512_EXP(6,7,0,1,2,3,4,5,j); j++; + SHA512_EXP(5,6,7,0,1,2,3,4,j); j++; + SHA512_EXP(4,5,6,7,0,1,2,3,j); j++; + SHA512_EXP(3,4,5,6,7,0,1,2,j); j++; + SHA512_EXP(2,3,4,5,6,7,0,1,j); j++; + SHA512_EXP(1,2,3,4,5,6,7,0,j); j++; + } while (j < 80); + + ctx->h[0] += wv[0]; ctx->h[1] += wv[1]; + ctx->h[2] += wv[2]; ctx->h[3] += wv[3]; + ctx->h[4] += wv[4]; ctx->h[5] += wv[5]; + ctx->h[6] += wv[6]; ctx->h[7] += wv[7]; +#endif /* !UNROLL_LOOPS */ + } +} + +void sha512(const unsigned char *message, unsigned int len, + unsigned char *digest) +{ + sha512_ctx ctx; + + sha512_init(&ctx); + sha512_update(&ctx, message, len); + sha512_final(&ctx, digest); +} + +void sha512_init(sha512_ctx *ctx) +{ +#ifndef UNROLL_LOOPS + int i; + for (i = 0; i < 8; i++) { + ctx->h[i] = sha512_h0[i]; + } +#else + ctx->h[0] = sha512_h0[0]; ctx->h[1] = sha512_h0[1]; + ctx->h[2] = sha512_h0[2]; ctx->h[3] = sha512_h0[3]; + ctx->h[4] = sha512_h0[4]; ctx->h[5] = sha512_h0[5]; + ctx->h[6] = sha512_h0[6]; ctx->h[7] = sha512_h0[7]; +#endif /* !UNROLL_LOOPS */ + + ctx->len = 0; + ctx->tot_len = 0; +} + +void sha512_update(sha512_ctx *ctx, const unsigned char *message, + unsigned int len) +{ + unsigned int block_nb; + unsigned int new_len, rem_len, tmp_len; + const unsigned char *shifted_message; + + tmp_len = SHA512_BLOCK_SIZE - ctx->len; + rem_len = len < tmp_len ? len : tmp_len; + + memcpy(&ctx->block[ctx->len], message, rem_len); + + if (ctx->len + len < SHA512_BLOCK_SIZE) { + ctx->len += len; + return; + } + + new_len = len - rem_len; + block_nb = new_len / SHA512_BLOCK_SIZE; + + shifted_message = message + rem_len; + + sha512_transf(ctx, ctx->block, 1); + sha512_transf(ctx, shifted_message, block_nb); + + rem_len = new_len % SHA512_BLOCK_SIZE; + + memcpy(ctx->block, &shifted_message[block_nb << 7], + rem_len); + + ctx->len = rem_len; + ctx->tot_len += (block_nb + 1) << 7; +} + +void sha512_final(sha512_ctx *ctx, unsigned char *digest) +{ + unsigned int block_nb; + unsigned int pm_len; + unsigned int len_b; + +#ifndef UNROLL_LOOPS + int i; +#endif + + block_nb = 1 + ((SHA512_BLOCK_SIZE - 17) + < (ctx->len % SHA512_BLOCK_SIZE)); + + len_b = (ctx->tot_len + ctx->len) << 3; + pm_len = block_nb << 7; + + memset(ctx->block + ctx->len, 0, pm_len - ctx->len); + ctx->block[ctx->len] = 0x80; + UNPACK32(len_b, ctx->block + pm_len - 4); + + sha512_transf(ctx, ctx->block, block_nb); + +#ifndef UNROLL_LOOPS + for (i = 0 ; i < 8; i++) { + UNPACK64(ctx->h[i], &digest[i << 3]); + } +#else + UNPACK64(ctx->h[0], &digest[ 0]); + UNPACK64(ctx->h[1], &digest[ 8]); + UNPACK64(ctx->h[2], &digest[16]); + UNPACK64(ctx->h[3], &digest[24]); + UNPACK64(ctx->h[4], &digest[32]); + UNPACK64(ctx->h[5], &digest[40]); + UNPACK64(ctx->h[6], &digest[48]); + UNPACK64(ctx->h[7], &digest[56]); +#endif /* !UNROLL_LOOPS */ +} + +/* SHA-384 functions */ + +void sha384(const unsigned char *message, unsigned int len, + unsigned char *digest) +{ + sha384_ctx ctx; + + sha384_init(&ctx); + sha384_update(&ctx, message, len); + sha384_final(&ctx, digest); +} + +void sha384_init(sha384_ctx *ctx) +{ +#ifndef UNROLL_LOOPS + int i; + for (i = 0; i < 8; i++) { + ctx->h[i] = sha384_h0[i]; + } +#else + ctx->h[0] = sha384_h0[0]; ctx->h[1] = sha384_h0[1]; + ctx->h[2] = sha384_h0[2]; ctx->h[3] = sha384_h0[3]; + ctx->h[4] = sha384_h0[4]; ctx->h[5] = sha384_h0[5]; + ctx->h[6] = sha384_h0[6]; ctx->h[7] = sha384_h0[7]; +#endif /* !UNROLL_LOOPS */ + + ctx->len = 0; + ctx->tot_len = 0; +} + +void sha384_update(sha384_ctx *ctx, const unsigned char *message, + unsigned int len) +{ + unsigned int block_nb; + unsigned int new_len, rem_len, tmp_len; + const unsigned char *shifted_message; + + tmp_len = SHA384_BLOCK_SIZE - ctx->len; + rem_len = len < tmp_len ? len : tmp_len; + + memcpy(&ctx->block[ctx->len], message, rem_len); + + if (ctx->len + len < SHA384_BLOCK_SIZE) { + ctx->len += len; + return; + } + + new_len = len - rem_len; + block_nb = new_len / SHA384_BLOCK_SIZE; + + shifted_message = message + rem_len; + + sha512_transf(ctx, ctx->block, 1); + sha512_transf(ctx, shifted_message, block_nb); + + rem_len = new_len % SHA384_BLOCK_SIZE; + + memcpy(ctx->block, &shifted_message[block_nb << 7], + rem_len); + + ctx->len = rem_len; + ctx->tot_len += (block_nb + 1) << 7; +} + +void sha384_final(sha384_ctx *ctx, unsigned char *digest) +{ + unsigned int block_nb; + unsigned int pm_len; + unsigned int len_b; + +#ifndef UNROLL_LOOPS + int i; +#endif + + block_nb = (1 + ((SHA384_BLOCK_SIZE - 17) + < (ctx->len % SHA384_BLOCK_SIZE))); + + len_b = (ctx->tot_len + ctx->len) << 3; + pm_len = block_nb << 7; + + memset(ctx->block + ctx->len, 0, pm_len - ctx->len); + ctx->block[ctx->len] = 0x80; + UNPACK32(len_b, ctx->block + pm_len - 4); + + sha512_transf(ctx, ctx->block, block_nb); + +#ifndef UNROLL_LOOPS + for (i = 0 ; i < 6; i++) { + UNPACK64(ctx->h[i], &digest[i << 3]); + } +#else + UNPACK64(ctx->h[0], &digest[ 0]); + UNPACK64(ctx->h[1], &digest[ 8]); + UNPACK64(ctx->h[2], &digest[16]); + UNPACK64(ctx->h[3], &digest[24]); + UNPACK64(ctx->h[4], &digest[32]); + UNPACK64(ctx->h[5], &digest[40]); +#endif /* !UNROLL_LOOPS */ +} + +/* SHA-224 functions */ + +void sha224(const unsigned char *message, unsigned int len, + unsigned char *digest) +{ + sha224_ctx ctx; + + sha224_init(&ctx); + sha224_update(&ctx, message, len); + sha224_final(&ctx, digest); +} + +void sha224_init(sha224_ctx *ctx) +{ +#ifndef UNROLL_LOOPS + int i; + for (i = 0; i < 8; i++) { + ctx->h[i] = sha224_h0[i]; + } +#else + ctx->h[0] = sha224_h0[0]; ctx->h[1] = sha224_h0[1]; + ctx->h[2] = sha224_h0[2]; ctx->h[3] = sha224_h0[3]; + ctx->h[4] = sha224_h0[4]; ctx->h[5] = sha224_h0[5]; + ctx->h[6] = sha224_h0[6]; ctx->h[7] = sha224_h0[7]; +#endif /* !UNROLL_LOOPS */ + + ctx->len = 0; + ctx->tot_len = 0; +} + +void sha224_update(sha224_ctx *ctx, const unsigned char *message, + unsigned int len) +{ + unsigned int block_nb; + unsigned int new_len, rem_len, tmp_len; + const unsigned char *shifted_message; + + tmp_len = SHA224_BLOCK_SIZE - ctx->len; + rem_len = len < tmp_len ? len : tmp_len; + + memcpy(&ctx->block[ctx->len], message, rem_len); + + if (ctx->len + len < SHA224_BLOCK_SIZE) { + ctx->len += len; + return; + } + + new_len = len - rem_len; + block_nb = new_len / SHA224_BLOCK_SIZE; + + shifted_message = message + rem_len; + + sha256_transf(ctx, ctx->block, 1); + sha256_transf(ctx, shifted_message, block_nb); + + rem_len = new_len % SHA224_BLOCK_SIZE; + + memcpy(ctx->block, &shifted_message[block_nb << 6], + rem_len); + + ctx->len = rem_len; + ctx->tot_len += (block_nb + 1) << 6; +} + +void sha224_final(sha224_ctx *ctx, unsigned char *digest) +{ + unsigned int block_nb; + unsigned int pm_len; + unsigned int len_b; + +#ifndef UNROLL_LOOPS + int i; +#endif + + block_nb = (1 + ((SHA224_BLOCK_SIZE - 9) + < (ctx->len % SHA224_BLOCK_SIZE))); + + len_b = (ctx->tot_len + ctx->len) << 3; + pm_len = block_nb << 6; + + memset(ctx->block + ctx->len, 0, pm_len - ctx->len); + ctx->block[ctx->len] = 0x80; + UNPACK32(len_b, ctx->block + pm_len - 4); + + sha256_transf(ctx, ctx->block, block_nb); + +#ifndef UNROLL_LOOPS + for (i = 0 ; i < 7; i++) { + UNPACK32(ctx->h[i], &digest[i << 2]); + } +#else + UNPACK32(ctx->h[0], &digest[ 0]); + UNPACK32(ctx->h[1], &digest[ 4]); + UNPACK32(ctx->h[2], &digest[ 8]); + UNPACK32(ctx->h[3], &digest[12]); + UNPACK32(ctx->h[4], &digest[16]); + UNPACK32(ctx->h[5], &digest[20]); + UNPACK32(ctx->h[6], &digest[24]); +#endif /* !UNROLL_LOOPS */ +} + +#ifdef TEST_VECTORS + +/* FIPS 180-2 Validation tests */ + +#include +#include + +void test(const unsigned char *vector, unsigned char *digest, + unsigned int digest_size) +{ + unsigned char output[2 * SHA512_DIGEST_SIZE + 1]; + int i; + + output[2 * digest_size] = '\0'; + + for (i = 0; i < (int) digest_size ; i++) { + sprintf((char *) output + 2 * i, "%02x", digest[i]); + } + + printf("H: %s\n", output); + if (strcmp((char *) vector, (char *) output)) { + fprintf(stderr, "Test failed.\n"); + exit(EXIT_FAILURE); + } +} + +int main() +{ + static const unsigned char *vectors[4][3] = + { /* SHA-224 */ + { + "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7", + "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525", + "20794655980c91d8bbb4c1ea97618a4bf03f42581948b2ee4ee7ad67", + }, + /* SHA-256 */ + { + "ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad", + "248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1", + "cdc76e5c9914fb9281a1c7e284d73e67f1809a48a497200e046d39ccc7112cd0", + }, + /* SHA-384 */ + { + "cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a8b605a43ff5bed" + "8086072ba1e7cc2358baeca134c825a7", + "09330c33f71147e83d192fc782cd1b4753111b173b3b05d22fa08086e3b0f712" + "fcc7c71a557e2db966c3e9fa91746039", + "9d0e1809716474cb086e834e310a4a1ced149e9c00f248527972cec5704c2a5b" + "07b8b3dc38ecc4ebae97ddd87f3d8985", + }, + /* SHA-512 */ + { + "ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a" + "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f", + "8e959b75dae313da8cf4f72814fc143f8f7779c6eb9f7fa17299aeadb6889018" + "501d289e4900f7e4331b99dec4b5433ac7d329eeb6dd26545e96e55b874be909", + "e718483d0ce769644e2e42c7bc15b4638e1f98b13b2044285632a803afa973eb" + "de0ff244877ea60a4cb0432ce577c31beb009c5c2c49aa2e4eadb217ad8cc09b" + } + }; + + static const unsigned char message1[] = "abc"; + static const unsigned char message2a[] = "abcdbcdecdefdefgefghfghighijhi" + "jkijkljklmklmnlmnomnopnopq"; + static const unsigned char message2b[] = + "abcdefghbcdefghicdefghijdefghijkefghij" + "klfghijklmghijklmnhijklmnoijklmnopjklm" + "nopqklmnopqrlmnopqrsmnopqrstnopqrstu"; + unsigned char *message3; + unsigned int message3_len = 1000000; + unsigned char digest[SHA512_DIGEST_SIZE]; + + message3 = malloc(message3_len); + if (message3 == NULL) { + fprintf(stderr, "Can't allocate memory\n"); + return -1; + } + memset(message3, 'a', message3_len); + + printf("SHA-2 FIPS 180-2 Validation tests\n\n"); + printf("SHA-224 Test vectors\n"); + + sha224(message1, strlen((char *) message1), digest); + test(vectors[0][0], digest, SHA224_DIGEST_SIZE); + sha224(message2a, strlen((char *) message2a), digest); + test(vectors[0][1], digest, SHA224_DIGEST_SIZE); + sha224(message3, message3_len, digest); + test(vectors[0][2], digest, SHA224_DIGEST_SIZE); + printf("\n"); + + printf("SHA-256 Test vectors\n"); + + sha256(message1, strlen((char *) message1), digest); + test(vectors[1][0], digest, SHA256_DIGEST_SIZE); + sha256(message2a, strlen((char *) message2a), digest); + test(vectors[1][1], digest, SHA256_DIGEST_SIZE); + sha256(message3, message3_len, digest); + test(vectors[1][2], digest, SHA256_DIGEST_SIZE); + printf("\n"); + + printf("SHA-384 Test vectors\n"); + + sha384(message1, strlen((char *) message1), digest); + test(vectors[2][0], digest, SHA384_DIGEST_SIZE); + sha384(message2b, strlen((char *) message2b), digest); + test(vectors[2][1], digest, SHA384_DIGEST_SIZE); + sha384(message3, message3_len, digest); + test(vectors[2][2], digest, SHA384_DIGEST_SIZE); + printf("\n"); + + printf("SHA-512 Test vectors\n"); + + sha512(message1, strlen((char *) message1), digest); + test(vectors[3][0], digest, SHA512_DIGEST_SIZE); + sha512(message2b, strlen((char *) message2b), digest); + test(vectors[3][1], digest, SHA512_DIGEST_SIZE); + sha512(message3, message3_len, digest); + test(vectors[3][2], digest, SHA512_DIGEST_SIZE); + printf("\n"); + + printf("All tests passed.\n"); + + return 0; +} + +#endif /* TEST_VECTORS */ + diff --git a/coregrade/src/core/sha512.cc b/coregrade/src/core/sha512.cc new file mode 100644 index 0000000..160a636 --- /dev/null +++ b/coregrade/src/core/sha512.cc @@ -0,0 +1,262 @@ +//jagatsastry.nitk@gmail.com 9th April 09 +//Implementation of SHA 512 +#include +#include +#include +#include +using namespace std; + +typedef unsigned int uint; +typedef unsigned long long ullint; + +string fromDecimal(ullint n, ullint b) +{ + string chars="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + string result=""; + while(n>0) + { + result=chars.at(n%b)+result; + n/=b; + } + + return result; +} + +ullint K[80] = { + 0x428a2f98d728ae22ULL, 0x7137449123ef65cdULL, + 0xb5c0fbcfec4d3b2fULL, 0xe9b5dba58189dbbcULL, + 0x3956c25bf348b538ULL, 0x59f111f1b605d019ULL, + 0x923f82a4af194f9bULL, 0xab1c5ed5da6d8118ULL, + 0xd807aa98a3030242ULL, 0x12835b0145706fbeULL, + 0x243185be4ee4b28cULL, 0x550c7dc3d5ffb4e2ULL, + 0x72be5d74f27b896fULL, 0x80deb1fe3b1696b1ULL, + 0x9bdc06a725c71235ULL, 0xc19bf174cf692694ULL, + 0xe49b69c19ef14ad2ULL, 0xefbe4786384f25e3ULL, + 0x0fc19dc68b8cd5b5ULL, 0x240ca1cc77ac9c65ULL, + 0x2de92c6f592b0275ULL, 0x4a7484aa6ea6e483ULL, + 0x5cb0a9dcbd41fbd4ULL, 0x76f988da831153b5ULL, + 0x983e5152ee66dfabULL, 0xa831c66d2db43210ULL, + 0xb00327c898fb213fULL, 0xbf597fc7beef0ee4ULL, + 0xc6e00bf33da88fc2ULL, 0xd5a79147930aa725ULL, + 0x06ca6351e003826fULL, 0x142929670a0e6e70ULL, + 0x27b70a8546d22ffcULL, 0x2e1b21385c26c926ULL, + 0x4d2c6dfc5ac42aedULL, 0x53380d139d95b3dfULL, + 0x650a73548baf63deULL, 0x766a0abb3c77b2a8ULL, + 0x81c2c92e47edaee6ULL, 0x92722c851482353bULL, + 0xa2bfe8a14cf10364ULL, 0xa81a664bbc423001ULL, + 0xc24b8b70d0f89791ULL, 0xc76c51a30654be30ULL, + 0xd192e819d6ef5218ULL, 0xd69906245565a910ULL, + 0xf40e35855771202aULL, 0x106aa07032bbd1b8ULL, + 0x19a4c116b8d2d0c8ULL, 0x1e376c085141ab53ULL, + 0x2748774cdf8eeb99ULL, 0x34b0bcb5e19b48a8ULL, + 0x391c0cb3c5c95a63ULL, 0x4ed8aa4ae3418acbULL, + 0x5b9cca4f7763e373ULL, 0x682e6ff3d6b2b8a3ULL, + 0x748f82ee5defb2fcULL, 0x78a5636f43172f60ULL, + 0x84c87814a1f0ab72ULL, 0x8cc702081a6439ecULL, + 0x90befffa23631e28ULL, 0xa4506cebde82bde9ULL, + 0xbef9a3f7b2c67915ULL, 0xc67178f2e372532bULL, + 0xca273eceea26619cULL, 0xd186b8c721c0c207ULL, + 0xeada7dd6cde0eb1eULL, 0xf57d4f7fee6ed178ULL, + 0x06f067aa72176fbaULL, 0x0a637dc5a2c898a6ULL, + 0x113f9804bef90daeULL, 0x1b710b35131c471bULL, + 0x28db77f523047d84ULL, 0x32caab7b40c72493ULL, + 0x3c9ebe0a15c9bebcULL, 0x431d67c49c100d4cULL, + 0x4cc5d4becb3e42b6ULL, 0x597f299cfc657e2aULL, + 0x5fcb6fab3ad6faecULL, 0x6c44198c4a475817ULL +}; + + void makeblock(vector& ret, string p_msg) + { + ullint cur=0; + int ind=0; + for(uint i=0; i msg; + + Block():msg(16, 0) { } + + Block(string p_msg):msg(16, 0) + { + makeblock(msg, p_msg); + } + +}; + + +void split(vector& blks, string& msg) +{ + cout<=1; i--) //big endian machine assumed + { + ret += ((char*)(&x))[i-1]; + } + + return ret; +} + + +#define shr(x,n) ((x & 0xFFFFFFFFFFFFFFFFULL) >> n) +#define rotr(x,n) (shr(x,n) | (x << (64 - n))) + +ullint ch(ullint x, ullint y, ullint z) +{ + return (x&y) ^ (~x&z); +} + +ullint maj(ullint x, ullint y, ullint z) +{ + return (x&y) ^ (y&z) ^ (z&x); +} + +ullint fn0(ullint x) +{ + return rotr(x, 28) ^ rotr(x, 34) ^ rotr(x, 39); +} + +ullint fn1(ullint x) +{ + return rotr(x, 14) ^ rotr(x, 18) ^ rotr(x, 41); +} + +ullint sigma0(ullint x) +{ + return rotr(x, 1) ^ rotr(x, 8) ^ shr(x, 7); +} + +ullint sigma1(ullint x) +{ + return rotr(x, 19) ^ rotr(x, 61) ^ shr(x, 6); +} + +string hash_sha512_cpp(string msg_arr) +{ + cout<>msg_arr; +// cin>>msg_arr; + msg=msg_arr; + msg_arr += (char)(1<<7); + uint cur_len = msg.size()*8 + 8; + uint reqd_len = ((msg.size()*8)/1024+1) *1024; + uint pad_len = reqd_len - cur_len - 128; + + string pad(pad_len/8, char(0)); + msg_arr += pad; + + string len_str(mynum(msg.size()*8)); + cout<<"mynum: "< M(num_blk, Block()); + split(M, msg_arr); + + ullint H[]={ + 0x6a09e667f3bcc908ULL, + 0xbb67ae8584caa73bULL, + 0x3c6ef372fe94f82bULL, + 0xa54ff53a5f1d36f1ULL, + 0x510e527fade682d1ULL, + 0x9b05688c2b3e6c1fULL, + 0x1f83d9abfb41bd6bULL, + 0x5be0cd19137e2179ULL +}; + + for(uint i=0; i W(80, 0); + for(uint t=0; t<16; t++) + { + W[t] = M[i].msg[t]; + } + + + for(uint t=16; t<80; t++) + { + W[t] = sigma1(W[t-2]) + W[t-7] + sigma0(W[t-15]) + W[t-16]; + } + + ullint work[8]; + for(uint i=0; i<8; i++) + work[i] = H[i]; + + for(uint t=0; t<80; t++) + { + + ullint t1, t2; + t1 = work[7] + fn1(work[4]) + ch(work[4], work[5], work[6]) + K[t] + W[t]; + t2 = fn0(work[0]) + maj(work[0], work[1], work[2]); + work[7] = work[6]; + work[6] = work[5]; + work[5] = work[4]; + work[4] = work[3] + t1; + work[3] = work[2]; + work[2] = work[1]; + work[1] = work[0]; + work[0] = t1 + t2; + + } + + for(uint i=0; i<8; i++) + { + H[i] = work[i] + H[i]; + } + + } + + cout<<"Output: "< +#include +#include +#include +#include +#include +#include +#include +#include +#include "safestring.h" +#include +#include +#include +#include + +#include +#include + +//#include "general_types.h" +#include "clog.h" +//#include "mx.h" +#include "smtp.h" +#include "timer.h" +//#include "socket.h" + +int SMTP2( const char * _server, const char * _from, char * _to, char * _body, const char * _domain, const char * _user, const char * _pass, const char * _name) +{ + // SAF 1/24/03: first copy all data to local structures to avoid race conditions, which is currently causing crashes ! + // Actually, it wasn't the race condition, it was the fact that '_to' was NULL due to a bug in profile.cpp: "email" was not set + + logfmt( FLOG_MAX, "ESMTP( %s, %s, %s )", _server, _from, _to ); + + if ( !_server || !_from || !_to || !_body ) + { + logfmt( FLOG_MAX, "Input parameters server, from, to & body are requied" ); + return 0; + } + if ( !_to[0]) + { + logfmt( FLOG_MAX, "Empty recipient list" ); + return 0; + } + + int BUF_SIZE = 512+strlen(_server)+strlen(_from)+strlen(_to)+strlen(_domain)+strlen(_user)+strlen(_pass)+strlen(_name)+2*strlen(_body); + + char *subject = NULL, *body = NULL; + char *name = new char[BUF_SIZE+1]; + + // Prepare body & subject + logfmt( FLOG_MAX, "Prepare body" ); + int lines = 0; + int len = strlen( _body ); + for ( int i=0; i 9) + { + subject = new char[i+1]; + memset( subject, 0, i ); + int j = 9; + for (; j 0) + { + logfmt( FLOG_MAX, "%s", name ); + } + else + { + logfmt( FLOG_MAX, "\n\nEND OF PIPE OUTPUT\n\n" ); + } + } + while (c > 0); + + pclose( p ); + + if (name != NULL) + { + delete name; + } + if (subject != NULL) + { + delete subject; + } + if (body != NULL) + { + delete body; + } + logfmt( FLOG_MAX, "/ESMTP()" ); + + return 1; + +} + diff --git a/coregrade/src/core/timer.cc b/coregrade/src/core/timer.cc new file mode 100644 index 0000000..b951c25 --- /dev/null +++ b/coregrade/src/core/timer.cc @@ -0,0 +1,49 @@ +#include +#include +#include "timer.h" + + +unsigned long stamp() +{ + struct timeval tv; + + gettimeofday( &tv, NULL ); + + return tv.tv_sec * 1000000 + tv.tv_usec; +} + + +CTimer::CTimer( ) +{ + prev = stamp(); +} + + +void CTimer::init( ) +{ + prev = stamp(); +} + + +void CTimer::wake( unsigned long usec ) +{ + long sleep_time = usec-(stamp()-prev); + + if ( sleep_time>0 ) + usleep( sleep_time ); + + prev = stamp(); +} + + +bool CTimer::timeout( unsigned long usec ) +{ + return stamp()-prev > usec; +} + + +unsigned long CTimer::elapsed( ) +{ + return stamp()-prev; +} + diff --git a/coregrade/src/core/util.cc b/coregrade/src/core/util.cc new file mode 100644 index 0000000..eed627e --- /dev/null +++ b/coregrade/src/core/util.cc @@ -0,0 +1,135 @@ +#include +#include +#include + +#include "safestring.h" +#include "util.h" +#include "clog.h" + +bool reg_match( const char * input, const char * regexp, char * ret, int sz, int * pos /*= NULL*/ ) +{ + regex_t compiled; + regmatch_t match[2]; + + bool satisfied = false; + if ( ret ) ret[0] = 0; + +// logfmt( FLOG_MAX, "Matching '%s' against '%s'", input, regexp ); + + if ( regcomp( &compiled, regexp, REG_EXTENDED ) != 0 ) + { + logfmt( logWARNING, "regcomp returned non-0, assuming a match" ); + } + else + { + size_t r = regexec( &compiled, input, 2, match, 0 ); + + if ( r==0 ) // match + { + if ( pos ) + *pos = match[1].rm_so; + + int len = match[1].rm_eo-match[1].rm_so; + + if ( ret ) + strnsafecpy( ret, &input[ match[1].rm_so ], len, sz ); + + satisfied = true; + } + else + satisfied = false; + + regfree( &compiled ); + } + return satisfied; +} + + +char * urlencode( const char * buf, char * text, int sz ) +{ +// old char url[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ^_\\-0123456789."; // . ??? + char url[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789$-_.!*'(),"; // $-_.+!*'(), took '+' out + int len = strlen(buf); +// fprintf(flog, "buf: '%s', len: %d\n", buf, len); fflush(flog); + text[0] = 0; + for (int i=0; i=valuelen-1) +// { EOS = TRUE; break; } + + c2+=c3+3; + } + } + + value[sz-1] = 0; + +// Log(text, "urldecode returning"); + return text; +} + diff --git a/coregrade/src/core/vars.cc b/coregrade/src/core/vars.cc new file mode 100644 index 0000000..dbd8f33 --- /dev/null +++ b/coregrade/src/core/vars.cc @@ -0,0 +1,372 @@ +#include +#include +#include +#include "safestring.h" + + +#pragma implementation "vars.h" +#include "vars.h" + +//#include +//#include + + +//template _Rb_tree< string const, pair, _Select1st >, less, allocator >; +//template _Rb_tree, _Select1st >, less, allocator >; + + +using namespace std; + +//template class std::_Rb_tree, std::allocator > const, std::pair, std::allocator > const, varstring>, std::_Select1st, std::allocator > const, varstring> >, std::less, std::allocator > const>, std::allocator, std::allocator > const, varstring> > >; + + +// template class _Rb_tree, _Select1st, allocator > const, varstring> >, less, allocator > const>, allocator, allocator > const, varstring> > >; + +template class _Rb_tree< string const, pair, _Select1st >, less, allocator > >; + + + + //::operator=(std::_Rb_tree, std::allocator > const, std::pair, std::allocator > const, varstring>, std::_Select1st, std::allocator > const, varstring> >, std::less, std::allocator > const>, std::allocator, std::allocator > const, varstring> > > const&); + + + + +// default constructor + +varstring::varstring() : string() +{ + validated = false; + db_var = false; + binary_var = false; +} + +varstring::varstring( const char *c ) : string( c ) +{ + this->validated = false; + db_var = false; + binary_var = false; +} + +varstring::varstring(const char* c, int len) : string( c, len ) +{ +// logfmt( FLOG_MAX, "varstring constructor( c='%s', len=%d )", c, len ); + validated = false; + db_var = false; + binary_var = false; +} + +// copy constructor + +varstring::varstring( const varstring &c ) : string( c ) +{ +// logfmt( FLOG_MAX, "varstring copy constructor, c.validated=%d, value=%s", c.validated, c.c_str() ); + this->validated = c.validated; + this->db_var = c.db_var; + this->binary_var = c.binary_var; +} + +varstring::varstring( const string &c ) : string( c ) +{ +// logfmt( FLOG_MAX, "string->varstring copy constructor, value=%s", c.c_str() ); + validated = false; + db_var = false; + binary_var = false; +} + + + + +long varstring::Long() const +{ + return atol( c_str() ); +} + +double varstring::Double() +{ + return atof( c_str() ); +} + +varstring& varstring::operator=( const char* c ) +{ + set_valid( false ); + string::operator=( c ); + return *this; +}; + + +void varstring::operator=( long l ) +{ + set_valid( false ); + char s[20]; + snprintf( s, sizeof(s), "%ld", l ); + string::operator=( s ); +}; + + +varstring& varstring::operator=( const varstring &c ) +{ + //set_valid( false ); + this->validated = c.validated; + this->binary_var = c.binary_var; + string::operator=( c ); + + return *this; +}; + + +void varstring::operator=( const string c ) +{ + set_valid( false ); + binary_var = false; + string::operator=( c ); +} + +varstring::operator long() +{ + return this->Long(); +} + +varstring::operator const char*() // type conversion +{ + return this->c_str(); +} + + +bool varstring::valid() const +{ + return validated; +} + +void varstring::set_valid( bool validated /*= true*/ ) +{ + this->validated = validated; +} + + + +bool varstring::db() const +{ + return db_var; +} + +void varstring::set_db( bool db /*= true*/ ) +{ + this->db_var = db; +} + + + + +bool varstring::binary() const +{ + return this->binary_var; +} + +void varstring::set_binary( bool binary_var /*= true*/ ) +{ + this->binary_var = binary_var; +} + + + + +// ---------------- string_key -------- +/* +string_key& string_key::operator=( const char* c ) +{ +// set_valid( false ); + string::operator=( c ); + + return *this; +}; + + +void string_key::operator=( long l ) +{ +// set_valid( false ); + char s[20]; + snprintf( s, sizeof(s), "%ld", l ); + string::operator=( s ); +}; + + +void string_key::operator=( const string c ) +{ +// set_valid( false ); + string::operator=( c ); +}; +*/ + + + +// ---------------- CVars ------------- + + +CVars& CVars::operator<<( char const *name ) +{ + //logfmt( FLOG_MAX, "CVars << %s", name ); + + CVars::iterator i = find( name ); + if ( i != end() ) + { + i->second.set_db(); + + } + + return *this; +} + + +CVars& CVars::operator>>( char const *name ) +{ + //logfmt( FLOG_MAX, "CVars >> %s", name ); + + CVars::iterator i = find( name ); + if ( i != end() ) + { + i->second.set_db( false ); + } + + return *this; +} + + +void CVars::ClearDB() +{ + CVars::iterator i; + + for ( i=begin(); i!=end(); i++ ) + i->second.set_db( false ); + +} + + +/* +FORMAT: + int count; + + + { + name,value, + bitmap{ + bool validated; + bool db_var; // is this variable to be used in DB updates + bool binary_var; + } + +*/ + + +//implement << operator?? + +long CVars::serialize( unsigned char *&buf ) // this will serialize the data into buf and return the resulting size + // it is the responsibility of the caller to free the buffer with free() +{ + long len; + CVars::iterator i; + int count = 0; // do NOT change this datatype as this will affect data structure below!!! + unsigned char *c = buf + sizeof(count); + + + // Calculate the length + + for ( i=begin(); i!=end(); i++ ) + { + count++; + + int size = i->first.size(); + c += sizeof(unsigned char); // name should be no longer than 255 + c += size; + + size = i->second.size(); + c += sizeof(int); + c += size; + + // record bits + c++; + } + + len = c-buf; + + buf = (unsigned char*)malloc( len ); + + if ( !buf ) return 0; + + + // Populate buf + + // first store the number of elements + + *(int*)buf = count; + c = buf + sizeof(count); + + for ( i=begin(); i!=end(); i++ ) + { + int size = *(int*)c = i->first.size(); + c += sizeof(unsigned char); + memcpy( c, i->first.data(), size ); + c += size; + + size = *(int*)c = i->second.size(); + c += sizeof(int); + memcpy( c, i->second.data(), size ); + c += size; + + // record bits + *c = i->second.validated | i->second.db_var << 1 | i->second.binary_var << 2; + + c++; + } + + return len; +} + + +int CVars::deserialize( unsigned char *buf, long buf_sz ) // this will initialize the current instance by de-serializing the data from buf +{ + // clear out the underlying map / erase any previous data + + erase( begin(), end() ); + + if ( buf_sz < (long)sizeof(int) ) return 0; + + unsigned char *c = buf; + int count = *(int*)buf; + c += sizeof( count ); + int i = 0; + + for ( i=0; i= buf_sz ) return 0; + + char name[256]; + + int size = *(unsigned char*)c; + c += sizeof(unsigned char); + + if ( c-buf+size >= buf_sz ) break; // boundary check + + strnsafecpy( name, (char*)c, size, sizeof(name) ); + c += size; + + if ( c-buf+(long)sizeof(int) >= buf_sz ) break; // boundary check + + size = *(int*)c; + c += sizeof(int); + + if ( c-buf+size+1 > buf_sz ) break; // boundary check + + (*this)[name].assign( (char*)c, size ); + c += size; + + (*this)[name].validated = *c & 1; + (*this)[name].db_var = (*c >> 1) & 1; + (*this)[name].binary_var = (*c >> 2) & 1; + + c++; + + //printf( "i=%d\n", i ); + } + + return i; //>0 ? i-1 : 0; +} diff --git a/coregrade/src/include/XmlElements.h b/coregrade/src/include/XmlElements.h new file mode 100644 index 0000000..f75aec9 --- /dev/null +++ b/coregrade/src/include/XmlElements.h @@ -0,0 +1,235 @@ +//**************************************************************************** +// Filename: XmlElements.h +// Copyright 1999 Daniel X. Pape. All rights reserved. +// +// Description: A set of classes for reading and parsing simple XML files. +// +//**************************************************************************** +// Revision History: +// Thursday, July 08, 1999 - Original. Heavily based on "A Simple XML +// Parser" by Sebastien Andrivet. See Documentation. +//**************************************************************************** + +#ifndef _XMLELEMENTS_H_ +#define _XMLELEMENTS_H_ + +#ifdef _MSC_VER +// Disable stupid MSVC warning about identifiers > 255 chars long +#pragma warning (disable: 4786) +#endif + +// STL +#include + +#include "XmlFwdDecls.h" + +namespace SimpleXMLParser +{ + +////////////////////////////////////////////////////////////////////// + +class Attribute; +class Element; +class ElementNull; + +typedef std::map Attributes; +typedef std::vector Elements; + +// *************************************************************************** +// Class: Attribute +// Desc: +// *************************************************************************** +class Attribute +{ + std::string name_; + std::string value_; + +public: + + Attribute(const std::string& name, const std::string& value); + + const std::string& GetName() const; + const std::string& GetValue() const; +}; + +// *************************************************************************** +// Class: Value +// Desc: +// *************************************************************************** +class Value +{ + std::string value_; + +public: + + void Add(const std::string& text); + void Add(char c); + + // Conversion operator + operator const std::string&() const; +}; + +// *************************************************************************** +// Class: Element +// Desc: Abstract base class for markup tags +// *************************************************************************** +class Element +{ +private: + const std::string name_; + Value value_; + +public: + + static ElementNull& nullElem; // null element (singleton) + + Element(const std::string& strName); + virtual ~Element() { } + + void AddValue(const std::string& strText); + void AddValue(char c); + + const std::string& GetName() const; + const Value& GetValue() const; + + const Element& operator()(const char * szName, int nIndex = 0) const; + + virtual bool IsNull() const; + + virtual bool AddChild(Element* pChild) = 0; + + virtual const Elements* GetChildren() const = 0; + virtual const Element& GetChild(const char * szName, + int nIndex = 0) const = 0; + + virtual const Attributes* GetAttributes() const = 0; + virtual const std::string GetAttributeValue(const std::string&) const = 0; +}; + +// *************************************************************************** +// Class: ElementTag +// Desc: Element of the form ... or . Can +// contain other elements and may have attributes +// *************************************************************************** +class ElementTag : public Element +{ + +public: + + ElementTag(const std::string& strName); + ~ElementTag(); + + void AddAttribute(std::string& strName, std::string& strValue); + + virtual bool AddChild(Element* pChild); + + virtual const Elements* GetChildren() const; + virtual const Element& GetChild(const char * szName, int nIndex = 0) const; + + virtual const Attributes* GetAttributes() const; + virtual const std::string GetAttributeValue(const std::string&) const; + +private: + + bool FindChild(const char * szName, Elements::const_iterator& it) const; + + Attributes attributes_; + Elements children_; + +}; + +// *************************************************************************** +// Class: ElementSimple +// Desc: Element without children (like comments) +// *************************************************************************** +class ElementSimple: public Element +{ +public: + ElementSimple(const std::string& strName); + + virtual bool AddChild(Element* pChild); + + virtual const Elements* GetChildren() const; + virtual const Element& GetChild(const char * szName, int nIndex = 0) const; + + virtual const Attributes* GetAttributes() const; + virtual const std::string GetAttributeValue(const std::string&) const; +}; + +// *************************************************************************** +// Class: ElementComment +// Desc: Element named "!" +// *************************************************************************** +class ElementComment : public ElementSimple +{ +public: + ElementComment(const std::string& strComment); +}; + +// *************************************************************************** +// Class: ElementNull +// Desc: Element::nullElem +// *************************************************************************** +class ElementNull : public ElementSimple +{ +public: + ElementNull(); + +private: + virtual bool IsNull() const; +}; + +////////////////////////////////////////////////////////////////////// +// Attribute of a tag +////////////////////////////////////////////////////////////////////// + +inline const std::string& Attribute::GetName() const +{ + return(name_); +} + +inline const std::string& Attribute::GetValue() const +{ + return(value_); +} + +////////////////////////////////////////////////////////////////////// +// Element +////////////////////////////////////////////////////////////////////// + +inline const std::string& Element::GetName() const +{ + return(name_); +} + +inline const Value& Element::GetValue() const +{ + return(value_); +} + +inline void Element::AddValue(const std::string& strText) +{ + value_.Add(strText); +} + +inline void Element::AddValue(char c) +{ + value_.Add(c); +} + +inline const Element& +Element::operator()(const char * szName, int nIndex) const +{ + return(GetChild(szName, nIndex)); +} + +inline void +ElementTag::AddAttribute(std::string& strName, std::string& strValue) +{ + attributes_[strName] = strValue; +} + +} + +#endif + diff --git a/coregrade/src/include/XmlFwdDecls.h b/coregrade/src/include/XmlFwdDecls.h new file mode 100644 index 0000000..0935b79 --- /dev/null +++ b/coregrade/src/include/XmlFwdDecls.h @@ -0,0 +1,33 @@ +//**************************************************************************** +// Filename: XmlFwdDecls.h +// Copyright 1999 Daniel X. Pape. All rights reserved. +// +// Description: Just some forward declarations for external classes to +// include. +// +//**************************************************************************** +// Revision History: +// Tuesday, September 28, 1999 - Original +//**************************************************************************** + +#ifndef _XMLFWDDECLS_H_ +#define _XMLFWDDECLS_H_ + +#include +#include +#include + +namespace SimpleXMLParser +{ + +class Attribute; +class Element; +class ElementNull; + +typedef std::map Attributes; +typedef std::vector Elements; + +} + +#endif + diff --git a/coregrade/src/include/XmlParser.h b/coregrade/src/include/XmlParser.h new file mode 100644 index 0000000..5254a46 --- /dev/null +++ b/coregrade/src/include/XmlParser.h @@ -0,0 +1,282 @@ +//**************************************************************************** +// Filename: XmlParser.h +// Copyright 1999 Daniel X. Pape. All rights reserved. +// +// Description: A set of classes for reading and parsing simple XML files. +// +//**************************************************************************** +// Revision History: +// Thursday, July 08, 1999 - Original. Heavily based on "A Simple XML +// Parser" by Sebastien Andrivet. See Documentation. +//**************************************************************************** + +#ifndef _XMLPARSER_H_ +#define _XMLPARSER_H_ + +#ifdef _MSC_VER +// Disable stupid MSVC warning about identifiers > 255 chars long +#pragma warning (disable: 4786) +#endif + +// STL +#include +#include +#include +#include + +#include "XmlElements.h" + +namespace SimpleXMLParser +{ + +// *************************************************************************** +// Class: XmlException +// Desc: parsing error +// *************************************************************************** +class XmlException +{ + +public: + + XmlException(int line, int column); + + int GetLine() const; + int GetColumn() const; + +private: + + int line_; + int column_; + +}; + +// *************************************************************************** +// Class: XmlParser +// Desc: +// *************************************************************************** +class XmlParser +{ + +public: + + XmlParser(); + + Element& Parse(const char * szSource, int nSourceSize); + +private: + + XmlParser(const XmlParser&); + XmlParser& operator=(const XmlParser&); + + // *********************************************************************** + // Class: Bookmark + // Desc: record the current position in the document + // *********************************************************************** + class Bookmark + { + private: + Bookmark(const Bookmark&); + Bookmark& operator=(const Bookmark&); + + XmlParser& parser_; // XmlParser + const char* sourceCurrent_; // Position recorded + int line_; // Line recorded + int column_; // Column recorded + + public: + Bookmark(XmlParser& reader); + // Change back the position + void Restore(); + // Get the sub-string between the current and + // the recorded positions + void GetSubString(std::string& strString, int nNumEndSkip = 0); + // Record the current position + void Reset(); + }; + + friend class Bookmark; + + const char* source_; // XML document + const char* sourceCurrent_; // Current position + const char* sourceEnd_; // End of the document + int line_; // Current line + int column_; // Current column + + std::string xmlVersion_; // Version of XML used in doc. + std::auto_ptr rootElem_; // Root element + + // parsing + + char NextChar(); + void PreviousChar(); + + // All of these following member functions can throw exceptions + + bool ParseSpaces(); + bool ParseString(const char* pString); + bool ParseStringNoCase(const char* pString); + bool ParseNumber(int& nNum); + bool ParseHexNumber(int& nNum); + bool ParseChar(char c); + bool ParseName(std::string& strName); + + bool ParseDeclBegining(const char * szString); + bool ParseXMLDecl(); + bool ParseEq(); + bool ParseVersionInfo(std::string& strVersion); + bool ParseVersionNum(std::string& strVersion); + bool ParseEncodingDecl(); + bool ParseEncName(); + void ParseMiscs(); + bool ParseReference(char& c); + bool ParseAttValue(std::string& strValue); + bool ParseAttribute(ElementTag* pElem); + bool ParseETag(Element& element); + void ParseContentETag(ElementTag& element); + bool ParseMarkup(Element& element); + bool ParseCDATA(Element& element); + + ElementComment* ParseComment(); + ElementTag* ParseTagBegining(); + ElementTag* ParseElement(); + Element* ParseDocument(); + + bool MapReferenceName(const std::string& strName, char& c); + + void SyntaxError(); +}; + +inline XmlException::XmlException(int line, int column) + : line_(line), column_(column) +{ +} + +inline int XmlException::GetLine() const +{ + return(line_); +} + +inline int XmlException::GetColumn() const +{ + return(column_); +} + +inline XmlParser::Bookmark::Bookmark(XmlParser& reader) + : parser_(reader), sourceCurrent_(reader.sourceCurrent_), + line_(0), column_(0) +{ +} + +// *************************************************************************** +// Function: Restore +// Desc: Change back the position +// *************************************************************************** +inline void XmlParser::Bookmark::Restore() +{ + parser_.sourceCurrent_ = sourceCurrent_; +} + +// *************************************************************************** +// Function: GetSubString +// Desc: Get the sub-string between the current and the recorded positions +// *************************************************************************** +inline void XmlParser::Bookmark::GetSubString(std::string& strString, int nNumEndSkip) +{ +// ASSERT(parser_.sourceCurrent_ + nNumEndSkip >= sourceCurrent_); + strString = std::string(sourceCurrent_, parser_.sourceCurrent_ - + sourceCurrent_ - nNumEndSkip); +} + +inline void XmlParser::Bookmark::Reset() +{ + sourceCurrent_ = parser_.sourceCurrent_; +} + +// *************************************************************************** +// Function: IsSpace +// Desc: Space, tabulation, line feed or return +// *************************************************************************** +inline bool IsSpace(char c) +{ + return(c == ' ' || c == '\t' || c == '\r' || c == '\n'); +} + +// *************************************************************************** +// Function: IsAlpha +// Desc: [a-zA-Z] +// *************************************************************************** +inline bool IsAlpha(char c) +{ + return((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')); +} + +// *************************************************************************** +// Function: IsDigit +// Desc: [0-9] +// *************************************************************************** +inline bool IsDigit(char c) +{ + return(c >= '0' && c <= '9'); +} + +// *************************************************************************** +// Function: IsHexDigit +// Desc: [0-9a-fA-F] +// *************************************************************************** +inline bool IsHexDigit(char c) +{ + return(IsDigit(c) || (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F')); +} + +// *************************************************************************** +// Function: HexDigitValue +// Desc: [0-9a-fA-F] +// *************************************************************************** +inline int HexDigitValue(char c) +{ + return((c >= '0' && c <= '9') ? c - '0' + : ((c >= 'a' && c <= 'f') ? c - 'a' + 10 + : c - 'A' + 10)); + +} + +// *************************************************************************** +// Function: IsAlphaDigit +// Desc: [a-zA-Z0-9] +// *************************************************************************** +inline bool IsAlphaDigit(char c) +{ + return(IsAlpha(c) || IsDigit(c)); +} + +// *************************************************************************** +// Function: IsAlphaDigitEx +// Desc: [a-zA-Z0-9_.:] | '-' +// *************************************************************************** +inline bool IsAlphaDigitEx(char c) +{ + return(IsAlphaDigit(c) || c == '_' || c == '.' || c == ':' || c == '-'); +} + +// *************************************************************************** +// Function: LowCase +// Desc: +// *************************************************************************** +inline char LowCase(char c) +{ + return(c >= 'A' && c <= 'Z' ? c - 'A' + 'a' : c); +} + +// *************************************************************************** +// Function: IsXmlChar +// Desc: +// *************************************************************************** +inline bool IsXmlChar(char c) +{ + return(c == 0x9 || c == 0xa || c == 0xd || c >= 0x20); +} + +} + +#endif + diff --git a/coregrade/src/include/account.h b/coregrade/src/include/account.h new file mode 100644 index 0000000..94393b3 --- /dev/null +++ b/coregrade/src/include/account.h @@ -0,0 +1,23 @@ +#ifndef __mx_account_h__ +#define __mx_account_h__ + +#include "vars.h" + + +long account_calls(CVars in, CVars &out); +long CreateCoreGradeAccount(CVars in, CVars &out); +long CreateCoreGradeAccountPending(CVars in, CVars &out); +long LoginCoreGradeAccount( CVars in, CVars &out ); +long SessionCheck(long uid, const char *sessionid, int create ); +long account_session_check(CVars in, CVars out); + +long CompleteAddCustomerBalance(CVars in, CVars &out); +long InitiateAddCustomerBalance(CVars in, CVars &out); +long DeliverMobilseEtisalat(CVars in, CVars &out); +long GateDeliverMobilseEtisalat(CVars in, CVars &out); +long ETSL_configure(CVars in, CVars &out); +long AddMobileTopuNumber(CVars in, CVars &out); + + +#endif + diff --git a/coregrade/src/include/cfg.h b/coregrade/src/include/cfg.h new file mode 100644 index 0000000..ee6f9f9 --- /dev/null +++ b/coregrade/src/include/cfg.h @@ -0,0 +1,11 @@ +#ifndef CFG_H +#define CFG_H + +#include "php_coregrade_config.h" + +void CfgReadConfig(); +long CfgReadLong(const char* key); +//std::string CfgReadString(const char* key); +const char* CfgReadChar(const char* key); + +#endif diff --git a/coregrade/src/include/cgi.h b/coregrade/src/include/cgi.h new file mode 100644 index 0000000..66910c5 --- /dev/null +++ b/coregrade/src/include/cgi.h @@ -0,0 +1,280 @@ +#ifndef __dew_cgi_lib +#define __dew_cgi_lib + +#include "php_tmpl_prefix.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include // for tolower(char) + +#include + +#include + +#include "config.h" +#include "clog.h" +#include "list.h" +#include "cvariables.h" + + +#define CGI_FLAG_CLEAR (char*)-1 + +#define EMAIL_PREFIX TMPL_PREFIX + +enum { METHOD_NONE, METHOD_GET, METHOD_POST }; +enum { SEQ_NONE, SEQ_REVERSE }; + +int Min0(int a, int b, bool & EOS); // Returns the smaller of the two; if it's < 0, returns 0 + // a = how many to copy; b = limit; + +void strncpy_(char * dst, char * src, int n); + +int GetParam(char * params, char _name[], char value[], int valuelen, char ** end = NULL); + +void CatFile( char * fname, FILE * fout ); + +/************************************************************************ +* * +* Classes * +* * +* - Class CVariables defines a set of routines for handling internal * +* variables, which are stored by using a linked list * +* * +* - Class CGIList implements the functionality in template rendering * +* by which one can define lists of unknown length from within * +* a template. * +* * +* - Class C_CGI_Form is the most essential class for the CGI interface. * +* It enables to obtain variables passed from the browser * +* and renders complex templates using CVariables and CGIList * +* * +*************************************************************************/ + + + +// The following deals with getting variables from forms + + +typedef struct + { + char * mask, * explanation; + + } pattern_t; + + +typedef + enum { CGI_STRING, CGI_RADIO, + CGI_SELECT, + CGI_SELECT_LOOKUP, + CGI_CHECKBOX, + CGI_CHECKBOXLIST, // bit-encoded ULONG + CGI_LONG, + CGI_FLOAT, + CGI_CHECKBOXLIST_ARRAY, // array of ULONGs + CGI_RADIO_INT, + CGI_SELECT_MUL, // multiple select box + CGI_RADIO_INT2, // CGI_RADIO_INT that uses first two letters of the variable name for referencing values + CGI_AMOUNT, // currency amount, converts to unsigned long + } + CGI_VAR_TYPE; + +typedef struct +{ + char *name; + CGI_VAR_TYPE type; + + // Matching + + int minlen, maxlen; + pattern_t *pattern; // ext regular expression; NULL for skip + + char **radio; // for radio buttons, NULL otherwise + unsigned char nradio; // number of elements + + // return portion + + void *target; // Where the result should be stored + int size; // Don't exceed this ! + + // corresponding SQL type + int sql_type; + + // more return data + bool match; + + +} CGI_Variable; + +// + + + + + +class CGIList; + + +typedef struct +{ + char * pre, * post; + int pre_n, post_n; +} Tprepost; + + +class C_CGI_Form : public CVariables { +public: + friend class CGIList; + + C_CGI_Form( char * _dir, char * _template_file, char * _global_template=NULL, int _argc=0, char **_argv = NULL ); + // Instantiates a C_CGI_Form object. + // _dir - template directory + // _template_file - initial/default template file + // _global_template - used to encapsulate templates in a global template + // _arc - argc from main() + // _argv - argv from main() + + + + ~C_CGI_Form( ); + + void Email( char * fname, char * from=NULL ); + + bool Form( FILE * fout ); // Render output from current template into opened file 'fout' + bool Form( FILE * fout, char * template_file ); + + char * FormFile( char * fname ); // Render output from current template into 'fname' + + char * FormBuffer( char * buf ); + +/* bool FormBuffer( char * buf, FILE * fout, char * listname = NULL, int listi = 0 ); + // Render output from current template into buffer*/ + char * RFormBuffer( char * buf, char * listname = NULL, int listi = 0 ); + // Render output from current template into buffer using recursion + +#ifdef WITH_LANGUAGE + char *translate( char * buf, const char *template_file ); +#endif + +// int GetParam( char name[], char value[], int valuelen ); + // Scan 'params' for 'name' and return its value in 'value' + int GetParam( char name[], char value[], int valuelen, char ** end = NULL, char *start = NULL ); + int GetParamMul( char name[], TList ** list ); + + int GetScreen( char * screens[], int n, const char * scrs = NULL ); + // Returns current screen index as passed by the browser + // and looked up in screens[] + int GetCommand( char * commands[], int n ); + // Returns current command index as passed by the browser + // and looked up in commands[] + + void Template( char * _template_file ) + // Sets the default template to '_template_file' + { + free( template_file ); + template_file = (char*)malloc( strlen(TMPL_PREFIX)+1+strlen(_template_file)+1 ); + sprintf( template_file, "%s/%s", TMPL_PREFIX, _template_file ); + } + + void GlobalTemplate( char * _template_file ) + // Sets the global template to '_template_file' + { + if ( global_template ) free( global_template ); + global_template = strdup(_template_file); + } +// void ParseGlobalTemplate(); // Parse the global template file and set 'sectionX' variables + void ParseGlobalTemplate( char * fname = NULL ); + bool ParseNewTemplate( char * fname = NULL ); + + void MatchVariable( CGI_Variable * var, bool optional = false, bool flag_if_mismatch = true ); + // Provides CGI variable mapping and matching functionality + // can match against regular expressions etc + void SetVariable( CGI_Variable * var ); + // Sets a variable that may be used in a template + void Flag( CGI_Variable * var ); + // Mark variable as invalid input + void Flag( char * var, char * explanation = NULL ); + // Mark variable as invalid input + + void ClearVariable( CGI_Variable var ); + + void GetNextVariable( TList * &cur, char * &c1, char * &c, char * listname, int listi ); + CGIList * lists[50]; + int nlists; + + char * params; + + char * template_file; + char * global_template; + + unsigned char method, sequence; + +private: + char * dir; + char * form; + +#ifdef WITH_LANGUAGE + char language[10]; +#endif + int argc; + char** argv; + +}; + +class CGIList +{ +public: + friend class C_CGI_Form; + + CGIList( C_CGI_Form * _form, char * name ); + + // Instantiates a CGI_List object + // _form points to the parent form object + // name - name of the list as used in template + + ~CGIList() { free( listname ); if (form) form->lists[listn] = 0; }; + + int CloseElement() { return ++n; }; + // Move on to the next element in the list. + + void LetStr( char * var, char * value ); + // Set a CGI list variable using the list name and element number as part of the name + + void LetStrf( char * var, const char * format, ... ); + + void LetInt16( char * var, int value ); + // Set a CGI list variable using the list name and element number as part of the name + + char * GetVariable( char * var, char * result, int size ); + // Obtain a CGI list variable value using the list name and element number as part of the name + + void LetStr( char * var, const char * format, ... ); + + int n; +private: + C_CGI_Form * form; + int listn; + char * listname; +}; + + + +class CInputError : public CVariables { +public: + + void Add( bool text, const char * name, const char * explanation, ... ); + char * Get( const char * name, bool *text ); + void Log(); +}; + +#endif diff --git a/coregrade/src/include/clog.h b/coregrade/src/include/clog.h new file mode 100644 index 0000000..2012d8b --- /dev/null +++ b/coregrade/src/include/clog.h @@ -0,0 +1,191 @@ +#ifndef __CLOG_H__ +#define __CLOG_H__ + +#include "php_coregrade_log.h" +#include "php_filelog_max_level.h" + +#include +#include +#include +#include +#include +#include + +inline std::string NowTime(); + +enum TLogLevel {logERROR, logWARNING, logINFO, logDEBUG, logDEBUG1, logDEBUG2, logDEBUG3, logDEBUG4, logSQL, FLOG_MAX}; + +void logfmt( TLogLevel level, const char * format, ... ); + +template +class Log +{ +public: + Log(); + virtual ~Log(); + std::ostringstream& Get(TLogLevel level = logINFO); +public: + static TLogLevel& ReportingLevel(); + static std::string ToString(TLogLevel level); + static TLogLevel FromString(const std::string& level); +protected: + std::ostringstream os; +private: + Log(const Log&); + Log& operator =(const Log&); +}; + +template +Log::Log() +{ +} + +template +std::ostringstream& Log::Get(TLogLevel level) +{ + os << "- " << NowTime(); + os << " " << ToString(level); + os << " [" << getpid() << "]: "; + os << std::string(level > logDEBUG ? level - logDEBUG : 0, '\t'); + return os; +} + +template +Log::~Log() +{ + os << std::endl; + T::Output(os.str()); +} + +template +TLogLevel& Log::ReportingLevel() +{ + static TLogLevel reportingLevel = FLOG_MAX; + return reportingLevel; +} + +template +std::string Log::ToString(TLogLevel level) +{ + static const char* const buffer[] = {"ERROR", "WARNING", "INFO", "DEBUG", "DEBUG1", "DEBUG2", "DEBUG3", "DEBUG4", "SQL", "FLOG_MAX"}; + return buffer[level]; +} + +template +TLogLevel Log::FromString(const std::string& level) +{ + if (level == "FLOG_MAX") + return FLOG_MAX; + if (level == "SQL") + return logSQL; + if (level == "DEBUG4") + return logDEBUG4; + if (level == "DEBUG3") + return logDEBUG3; + if (level == "DEBUG2") + return logDEBUG2; + if (level == "DEBUG1") + return logDEBUG1; + if (level == "DEBUG") + return logDEBUG; + if (level == "INFO") + return logINFO; + if (level == "WARNING") + return logWARNING; + if (level == "ERROR") + return logERROR; + Log().Get(logWARNING) << "Unknown logging level '" << level << "'. Using INFO level as default."; + return logINFO; +} + +class Output2FILE +{ +public: + static FILE*& Stream(); + static void Output(const std::string& msg); +}; + +inline FILE*& Output2FILE::Stream() +{ + static FILE* pStream = stderr; + return pStream; +} + +inline void Output2FILE::Output(const std::string& msg) +{ + FILE* pStream = Stream(); + if (!pStream) + return; + fprintf(pStream, "%s", msg.c_str()); + fflush(pStream); +} + +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) +# if defined (BUILDING_FILELOG_DLL) +# define FILELOG_DECLSPEC __declspec (dllexport) +# elif defined (USING_FILELOG_DLL) +# define FILELOG_DECLSPEC __declspec (dllimport) +# else +# define FILELOG_DECLSPEC +# endif // BUILDING_DBSIMPLE_DLL +#else +# define FILELOG_DECLSPEC +#endif // _WIN32 + +class FILELOG_DECLSPEC FILELog : public Log {}; +//typedef Log FILELog; + +#ifndef FILELOG_MAX_LEVEL +#define FILELOG_MAX_LEVEL FLOG_MAX +#endif + +#define FILE_LOG(level) \ + if (level > FILELOG_MAX_LEVEL) ;\ + else if (level > FILELog::ReportingLevel() || !Output2FILE::Stream()) ; \ + else FILELog().Get(level) + +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) + +#include + +inline std::string NowTime() +{ + const int MAX_LEN = 200; + char buffer[MAX_LEN]; + if (GetTimeFormatA(LOCALE_USER_DEFAULT, 0, 0, + "HH':'mm':'ss", buffer, MAX_LEN) == 0) + return "Error in NowTime()"; + + char result[100] = {0}; + static DWORD first = GetTickCount(); + std::sprintf(result, "%s.%03ld", buffer, (long)(GetTickCount() - first) % 1000); + return result; +} + +#else + +#include + +inline std::string NowTime() +{ + char buffer[11]; + time_t t; + time(&t); + tm r = {0}; + strftime(buffer, sizeof(buffer), "%X", localtime_r(&t, &r)); + struct timeval tv; + gettimeofday(&tv, 0); + char result[100] = {0}; + std::sprintf(result, "%s.%03ld", buffer, (long)tv.tv_usec / 1000); + return result; +} + +#endif //WIN32 + + +#endif //__LOG_H__ + +/* +vi:ts=2 +*/ + diff --git a/coregrade/src/include/config.h b/coregrade/src/include/config.h new file mode 100644 index 0000000..abcda55 --- /dev/null +++ b/coregrade/src/include/config.h @@ -0,0 +1,59 @@ +/* config.h. Generated from config.h.in by configure. */ +/* config.h.in. Generated from configure.in by autoheader. */ + +/* Whether to build coregrade_api as dynamic module */ +#define COMPILE_DL_COREGRADE_API 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to 1 if your C compiler doesn't accept -c and -o together. */ +/* #undef NO_MINUS_C_MINUS_O */ + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "" + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 diff --git a/coregrade/src/include/coregrade.h b/coregrade/src/include/coregrade.h new file mode 100644 index 0000000..5d6d435 --- /dev/null +++ b/coregrade/src/include/coregrade.h @@ -0,0 +1,20 @@ +#ifndef COREGRADE_API_COREGRADE_H +#define COREGRADE_API_COREGRADE_H + +#include "vars.h" + +// A very simple coregrade class +class CoreGrade { +public: + CoreGrade(); + ~CoreGrade(); + long coregrade_api(CVars in, CVars &out); + const char* cfgReadChar(const char *parameter); + long cfgReadLong(const char *parameter); + void logMessage(const char *message); +private: + FILE* pFile; + int db; +}; + +#endif /* COREGRADE_API_COREGRADE_H */ diff --git a/coregrade/src/include/coregrade_api.h b/coregrade/src/include/coregrade_api.h new file mode 100644 index 0000000..8a14bba --- /dev/null +++ b/coregrade/src/include/coregrade_api.h @@ -0,0 +1,103 @@ +#ifndef COREGRADE_API_H +#define COREGRADE_API_H + +#define PHP_API_OK 0 +#define PHP_API_BAD_PARAM -1 + +#define COREGRADE_SESSION_CHECK 299 +#define COREGRADE_USER_LOGIN 300 +#define COREGRADE_USER_LOGOUT 301 +#define COREGRADE_CREATE_ACCOUNT 320 + +//************************************************************** +#define COREGRADE_BKO_START 10000 + +#define COREGRADE_BKO_LOGIN 10010 +#define COREGRADE_BKO_CREATEUSER 10015 +#define COREGRADE_BKO_UPDATEUSER 10020 + +#define COREGRADE_BKO_END 10999 +//************************************************************** +#define COREGRADE_ACCOUNT_START 11000 + +#define COREGRADE_ACCOUNT_TESTEMAIL 11001 +#define COREGRADE_ACCOUNT_PENDING 11010 +#define COREGRADE_VERIFY_PENDING_LINK 11015 +#define COREGRADE_ACCOUNT_CREATEACC 11020 +#define COREGRADE_ACCOUNT_LOGIN 11025 + +#define COREGRADE_ACCOUNT_END 11999 +//************************************************************** +#define COREGRADE_GROUP_START 12000 + +#define COREGRADE_GROUP_CREATEGROUP 12010 +#define COREGRADE_GROUP_INVITEGROUP 12015 +#define COREGRADE_GROUP_ACCEPTGROUP 12020 + +#define COREGRADE_GROUP_END 12999 +//************************************************************** + + + + + + +#define COREGRADE_COMPLETE_SENDMONEY_INTERSW 555 +#define COREGRADE_GETBILLER_INTERSW 556 +#define COREGRADE_BILL_PAYMENT_ADVICE_INTERSW 557 + +#define COREGRADE_INTERSW_GETBILLER 556 +#define COREGRADE_INTERSW_BILL_PAYMENT_ADVICE 557 +#define COREGRADE_INTERSW_GETBILLERPAYMENTINTEMS 558 +#define COREGRADE_INTERSW_GETBILLERCATEGORIES 559 +#define COREGRADE_INTERSW_DO_TRANSFER 560 +#define COREGRADE_INTERSW_QUERY_TRANSACTION 561 + +#define COREGRADE_ADD_MONEYRECIPIENT 600 + +#define COREGRADE_CREATE_USER_ACCOUNT 700 +#define COREGRADE_USER_ACCOUNT_LOGIN 710 +#define COREGRADE_START_PASSWORDRESET 720 +#define COREGRADE_COMPLETE_PASSWORDRESET 730 + +#define COREGRADE_START_ADDMONEY 770 +#define COREGRADE_COMPLETE_ADDMONEY 775 + +#define COREGRADE_ADD_MOBILE_TOPUPNUM 900 +#define COREGRADE_PROMO_CALL 990 + + +#define COREGRADE_STOREFACE_GET_ACCOUNT_BALANCE 891 + +#define COREGRADE_LOG_ENTRY 900000 +#define COREGRADE_CREDIT_TOPUP 900010 + + + +#define COREGRADE_TOPUP_ORDER 900020 +#define COREGRADE_TOPUP_ORDER_PURCHASE 900030 +#define COREGRADE_PAYPAL_IPNMSG 900090 + + + +#define COREGRADE_BULKTOPUP_ORDER 700010 +#define COREGRADE_BULKTOPUP_ITEM 700020 +#define COREGRADE_BULKTOPUP_ITEMUPDATE 700030 +#define COREGRADE_BULKTOPUP_DELIVER 700040 + + +#define COREGRADE_BALANCE_TOPUP_ORDER 800020 +#define COREGRADE_BALANCE_TOPUP_PURCHASE 800030 +#define COREGRADE_BALANCE_TOPUP_PAYMENT 800040 + + +#define VIRTUAL_AIRTOPUP 70011 + +#define PAY_MODE_BALANCE 0 +#define PAY_MODE_CCARD 1 +#define PAY_MODE_BONUS 9 + +#define APPROVED_BALANCE 5 +#define DISAPROVE_BALANCE 3 +#endif + diff --git a/coregrade/src/include/coregrade_api_main.h b/coregrade/src/include/coregrade_api_main.h new file mode 100644 index 0000000..8a83dc1 --- /dev/null +++ b/coregrade/src/include/coregrade_api_main.h @@ -0,0 +1,8 @@ +#ifndef COREGRADE_API_MAIN_H +#define COREGRADE_API_MAIN_H + +#include "vars.h" + +long coregrade_api_main(CVars in, CVars &out); + +#endif diff --git a/coregrade/src/include/cvariables.h b/coregrade/src/include/cvariables.h new file mode 100644 index 0000000..763be7f --- /dev/null +++ b/coregrade/src/include/cvariables.h @@ -0,0 +1,61 @@ +#ifndef __cvariables__ +#define __cvariables__ + +#include "stdarg.h" +#include + + +#define MAX_CGI_VAR_LEN 50 + +typedef struct _L_Variables +{ + char name[MAX_CGI_VAR_LEN+1]; + char * value; + int opts; // options? used by some decendants + struct _L_Variables * next; + +} L_Variables; + + + +class CVariables +{ +public: + friend class CGIList; + + CVariables( ); + + ~CVariables( ); + + void RenameVariable( const char * name, const char * newname ); + void LetInt16( char * var, const int value ); // Set the variable to an integer value + void LetStr( const char * var, const char * value ); // Set the variable to a string value + void LetStrf( char * var, const char * format, ... ); + void vLetStrf( char * var, const char * format, va_list ap ); + void LetStr( char * var, const char * value, int len ); + // Set the variable to a string value and truncate to len + + void StrCat( char * var, const char * format, ... ); + void StrCatf( char * var, const char * format, ... ); + + char * GetVariable( const char * var ); // Obtain the variable value and return its temp location + char * GetVariable( const char * var, char * result, int size ); + // Obtain the variable value and return it in 'result' + char * GetVariable( const char * var, bool test, char * section = "" ); + long GetVariableLong( char * name, bool *valid = NULL ); + long GetVariableLong( char * name, bool test, char * section = "" ); + bool GetBool( char * var, bool test = false, char * section = "" ); + + void PrintVars( FILE * f = stdout ); // Print out all variables to file pointed to by 'f' + + void Cleanup(); + + L_Variables * var, * var_top; + + L_Variables * FindVariable( const char * var, bool create=false ); + // Obtains the next variable during the template parsing process + +}; + + +#endif diff --git a/coregrade/src/include/email.h b/coregrade/src/include/email.h new file mode 100644 index 0000000..1144dcb --- /dev/null +++ b/coregrade/src/include/email.h @@ -0,0 +1,35 @@ +#ifndef __mx_email_h__ +#define __mx_email_h__ + +#include "vars.h" + +long AccountPendingMail(CVars in); +long WelcomeAccountMail(CVars in); +long GroupCreateMemberMail(CVars in); +long CreateCoreGradeGroupMail(CVars in); + + + +long send_email(CVars in, CVars &out); +long SystemStatus(); +long VirtualAirSaleAlert(CVars in); +void SendAccountCreateAlert(long customer_id); +long VirtualAirSaleCustomer(CVars in); +void CustomerBalanceEmail(CVars in); +void PaymentAlert(CVars in); +void BalanceUpdateAlert(CVars in); +void CustomerEmailWelcome(CVars in); +long CustomerAirSale(CVars in); +long CustomerAirSalePayment(CVars in); +long CustomerAirBonus(CVars in); +long CustomerBalanceBonusEmail(CVars in); +long StartPassResetEmail(CVars in); +long CompletePassResetEmail(CVars in); +long SendPromoEmail(CVars in); +long SendBalanceRequestAlert(CVars in); +long SendBalanceCompleteAlert(CVars in); + + + +#endif + diff --git a/coregrade/src/include/envH.h b/coregrade/src/include/envH.h new file mode 100644 index 0000000..70a3ee6 --- /dev/null +++ b/coregrade/src/include/envH.h @@ -0,0 +1,378 @@ +/* envH.h + Generated by gSOAP 2.8.16 from env.h + +Copyright(C) 2000-2013, Robert van Engelen, Genivia Inc. All Rights Reserved. +The generated code is released under one of the following licenses: +GPL or Genivia's license for commercial use. +This program is released under the GPL with the additional exemption that +compiling, linking, and/or using OpenSSL is allowed. +*/ + +#ifndef envH_H +#define envH_H +#include "envStub.h" +#ifndef WITH_NOIDREF + +#ifdef __cplusplus +extern "C" { +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_markelement(struct soap*, const void*, int); + +#ifdef __cplusplus +} +#endif +SOAP_FMAC3 int SOAP_FMAC4 soap_putindependent(struct soap*); +SOAP_FMAC3 int SOAP_FMAC4 soap_getindependent(struct soap*); +#endif + +#ifdef __cplusplus +extern "C" { +#endif +SOAP_FMAC3 void *SOAP_FMAC4 soap_getelement(struct soap*, int*); +SOAP_FMAC3 int SOAP_FMAC4 soap_putelement(struct soap*, const void*, const char*, int, int); + +#ifdef __cplusplus +} +#endif +SOAP_FMAC3 int SOAP_FMAC4 soap_ignore_element(struct soap*); + +SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultcode(struct soap *soap); + +SOAP_FMAC3 void * SOAP_FMAC4 env_instantiate(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 int SOAP_FMAC4 env_fdelete(struct soap_clist*); +SOAP_FMAC3 void* SOAP_FMAC4 soap_class_id_enter(struct soap*, const char*, void*, int, size_t, const char*, const char*); + +#ifndef SOAP_TYPE_byte +#define SOAP_TYPE_byte (3) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_byte(struct soap*, char *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_byte(struct soap*, const char*, int, const char *, const char*); +SOAP_FMAC3 char * SOAP_FMAC4 soap_in_byte(struct soap*, const char*, char *, const char*); + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_byte(struct soap*, const char *, const char*, const char*); + +#ifndef soap_write_byte +#define soap_write_byte(soap, data) ( soap_free_temp(soap), soap_begin_send(soap) || (soap_serialize_byte(soap, data),0) || soap_put_byte(soap, data, "byte", NULL) || soap_end_send(soap), (soap)->error ) +#endif + +SOAP_FMAC3 char * SOAP_FMAC4 soap_get_byte(struct soap*, char *, const char*, const char*); + +#ifndef soap_read_byte +#define soap_read_byte(soap, data) ( soap_begin_recv(soap) || !soap_get_byte(soap, data, NULL, NULL) || soap_end_recv(soap), (soap)->error ) +#endif + + +#ifndef SOAP_TYPE_int +#define SOAP_TYPE_int (1) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_int(struct soap*, int *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_int(struct soap*, const char*, int, const int *, const char*); +SOAP_FMAC3 int * SOAP_FMAC4 soap_in_int(struct soap*, const char*, int *, const char*); + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_int(struct soap*, const int *, const char*, const char*); + +#ifndef soap_write_int +#define soap_write_int(soap, data) ( soap_free_temp(soap), soap_begin_send(soap) || (soap_serialize_int(soap, data),0) || soap_put_int(soap, data, "int", NULL) || soap_end_send(soap), (soap)->error ) +#endif + +SOAP_FMAC3 int * SOAP_FMAC4 soap_get_int(struct soap*, int *, const char*, const char*); + +#ifndef soap_read_int +#define soap_read_int(soap, data) ( soap_begin_recv(soap) || !soap_get_int(soap, data, NULL, NULL) || soap_end_recv(soap), (soap)->error ) +#endif + + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_SOAP_ENV__Fault +#define SOAP_TYPE_SOAP_ENV__Fault (14) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Fault(struct soap*, struct SOAP_ENV__Fault *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Fault(struct soap*, const struct SOAP_ENV__Fault *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Fault(struct soap*, const char*, int, const struct SOAP_ENV__Fault *, const char*); +SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_in_SOAP_ENV__Fault(struct soap*, const char*, struct SOAP_ENV__Fault *, const char*); + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Fault(struct soap*, const struct SOAP_ENV__Fault *, const char*, const char*); + +#ifndef soap_write_SOAP_ENV__Fault +#define soap_write_SOAP_ENV__Fault(soap, data) ( soap_free_temp(soap), soap_begin_send(soap) || (soap_serialize_SOAP_ENV__Fault(soap, data),0) || soap_put_SOAP_ENV__Fault(soap, data, "SOAP-ENV:Fault", NULL) || soap_end_send(soap), (soap)->error ) +#endif + +SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_get_SOAP_ENV__Fault(struct soap*, struct SOAP_ENV__Fault *, const char*, const char*); + +#ifndef soap_read_SOAP_ENV__Fault +#define soap_read_SOAP_ENV__Fault(soap, data) ( soap_begin_recv(soap) || !soap_get_SOAP_ENV__Fault(soap, data, NULL, NULL) || soap_end_recv(soap), (soap)->error ) +#endif + +SOAP_FMAC1 struct SOAP_ENV__Fault * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Fault(struct soap*, int, const char*, const char*, size_t*); + +inline struct SOAP_ENV__Fault * soap_new_SOAP_ENV__Fault(struct soap *soap, int n = -1) { return soap_instantiate_SOAP_ENV__Fault(soap, n, NULL, NULL, NULL); } + +inline struct SOAP_ENV__Fault * soap_new_req_SOAP_ENV__Fault(struct soap *soap) { struct SOAP_ENV__Fault *_p = soap_instantiate_SOAP_ENV__Fault(soap, -1, NULL, NULL, NULL); if (_p) { soap_default_SOAP_ENV__Fault(soap, _p); } return _p; } + +inline struct SOAP_ENV__Fault * soap_new_set_SOAP_ENV__Fault(struct soap *soap, char *faultcode, char *faultstring, char *faultactor, struct SOAP_ENV__Detail *detail, struct SOAP_ENV__Code *SOAP_ENV__Code, struct SOAP_ENV__Reason *SOAP_ENV__Reason, char *SOAP_ENV__Node, char *SOAP_ENV__Role, struct SOAP_ENV__Detail *SOAP_ENV__Detail) { struct SOAP_ENV__Fault *_p = soap_instantiate_SOAP_ENV__Fault(soap, -1, NULL, NULL, NULL); if (_p) { soap_default_SOAP_ENV__Fault(soap, _p); _p->faultcode = faultcode; _p->faultstring = faultstring; _p->faultactor = faultactor; _p->detail = detail; _p->SOAP_ENV__Code = SOAP_ENV__Code; _p->SOAP_ENV__Reason = SOAP_ENV__Reason; _p->SOAP_ENV__Node = SOAP_ENV__Node; _p->SOAP_ENV__Role = SOAP_ENV__Role; _p->SOAP_ENV__Detail = SOAP_ENV__Detail; } return _p; } + +inline void soap_delete_SOAP_ENV__Fault(struct soap *soap, struct SOAP_ENV__Fault *p) { soap_delete(soap, p); } + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Fault(struct soap*, int, int, void*, size_t, const void*, size_t); + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_SOAP_ENV__Reason +#define SOAP_TYPE_SOAP_ENV__Reason (13) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Reason(struct soap*, const struct SOAP_ENV__Reason *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Reason(struct soap*, const char*, int, const struct SOAP_ENV__Reason *, const char*); +SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_in_SOAP_ENV__Reason(struct soap*, const char*, struct SOAP_ENV__Reason *, const char*); + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Reason(struct soap*, const struct SOAP_ENV__Reason *, const char*, const char*); + +#ifndef soap_write_SOAP_ENV__Reason +#define soap_write_SOAP_ENV__Reason(soap, data) ( soap_free_temp(soap), soap_begin_send(soap) || (soap_serialize_SOAP_ENV__Reason(soap, data),0) || soap_put_SOAP_ENV__Reason(soap, data, "SOAP-ENV:Reason", NULL) || soap_end_send(soap), (soap)->error ) +#endif + +SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_get_SOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *, const char*, const char*); + +#ifndef soap_read_SOAP_ENV__Reason +#define soap_read_SOAP_ENV__Reason(soap, data) ( soap_begin_recv(soap) || !soap_get_SOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_recv(soap), (soap)->error ) +#endif + +SOAP_FMAC1 struct SOAP_ENV__Reason * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Reason(struct soap*, int, const char*, const char*, size_t*); + +inline struct SOAP_ENV__Reason * soap_new_SOAP_ENV__Reason(struct soap *soap, int n = -1) { return soap_instantiate_SOAP_ENV__Reason(soap, n, NULL, NULL, NULL); } + +inline struct SOAP_ENV__Reason * soap_new_req_SOAP_ENV__Reason(struct soap *soap) { struct SOAP_ENV__Reason *_p = soap_instantiate_SOAP_ENV__Reason(soap, -1, NULL, NULL, NULL); if (_p) { soap_default_SOAP_ENV__Reason(soap, _p); } return _p; } + +inline struct SOAP_ENV__Reason * soap_new_set_SOAP_ENV__Reason(struct soap *soap, char *SOAP_ENV__Text) { struct SOAP_ENV__Reason *_p = soap_instantiate_SOAP_ENV__Reason(soap, -1, NULL, NULL, NULL); if (_p) { soap_default_SOAP_ENV__Reason(soap, _p); _p->SOAP_ENV__Text = SOAP_ENV__Text; } return _p; } + +inline void soap_delete_SOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *p) { soap_delete(soap, p); } + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Reason(struct soap*, int, int, void*, size_t, const void*, size_t); + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_SOAP_ENV__Detail +#define SOAP_TYPE_SOAP_ENV__Detail (10) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Detail(struct soap*, const struct SOAP_ENV__Detail *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Detail(struct soap*, const char*, int, const struct SOAP_ENV__Detail *, const char*); +SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_in_SOAP_ENV__Detail(struct soap*, const char*, struct SOAP_ENV__Detail *, const char*); + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Detail(struct soap*, const struct SOAP_ENV__Detail *, const char*, const char*); + +#ifndef soap_write_SOAP_ENV__Detail +#define soap_write_SOAP_ENV__Detail(soap, data) ( soap_free_temp(soap), soap_begin_send(soap) || (soap_serialize_SOAP_ENV__Detail(soap, data),0) || soap_put_SOAP_ENV__Detail(soap, data, "SOAP-ENV:Detail", NULL) || soap_end_send(soap), (soap)->error ) +#endif + +SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_get_SOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *, const char*, const char*); + +#ifndef soap_read_SOAP_ENV__Detail +#define soap_read_SOAP_ENV__Detail(soap, data) ( soap_begin_recv(soap) || !soap_get_SOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_recv(soap), (soap)->error ) +#endif + +SOAP_FMAC1 struct SOAP_ENV__Detail * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Detail(struct soap*, int, const char*, const char*, size_t*); + +inline struct SOAP_ENV__Detail * soap_new_SOAP_ENV__Detail(struct soap *soap, int n = -1) { return soap_instantiate_SOAP_ENV__Detail(soap, n, NULL, NULL, NULL); } + +inline struct SOAP_ENV__Detail * soap_new_req_SOAP_ENV__Detail(struct soap *soap, int __type, void *fault) { struct SOAP_ENV__Detail *_p = soap_instantiate_SOAP_ENV__Detail(soap, -1, NULL, NULL, NULL); if (_p) { soap_default_SOAP_ENV__Detail(soap, _p); _p->__type = __type; _p->fault = fault; } return _p; } + +inline struct SOAP_ENV__Detail * soap_new_set_SOAP_ENV__Detail(struct soap *soap, char *__any, int __type, void *fault) { struct SOAP_ENV__Detail *_p = soap_instantiate_SOAP_ENV__Detail(soap, -1, NULL, NULL, NULL); if (_p) { soap_default_SOAP_ENV__Detail(soap, _p); _p->__any = __any; _p->__type = __type; _p->fault = fault; } return _p; } + +inline void soap_delete_SOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *p) { soap_delete(soap, p); } + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Detail(struct soap*, int, int, void*, size_t, const void*, size_t); + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_SOAP_ENV__Code +#define SOAP_TYPE_SOAP_ENV__Code (8) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Code(struct soap*, const struct SOAP_ENV__Code *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Code(struct soap*, const char*, int, const struct SOAP_ENV__Code *, const char*); +SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_in_SOAP_ENV__Code(struct soap*, const char*, struct SOAP_ENV__Code *, const char*); + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Code(struct soap*, const struct SOAP_ENV__Code *, const char*, const char*); + +#ifndef soap_write_SOAP_ENV__Code +#define soap_write_SOAP_ENV__Code(soap, data) ( soap_free_temp(soap), soap_begin_send(soap) || (soap_serialize_SOAP_ENV__Code(soap, data),0) || soap_put_SOAP_ENV__Code(soap, data, "SOAP-ENV:Code", NULL) || soap_end_send(soap), (soap)->error ) +#endif + +SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_get_SOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *, const char*, const char*); + +#ifndef soap_read_SOAP_ENV__Code +#define soap_read_SOAP_ENV__Code(soap, data) ( soap_begin_recv(soap) || !soap_get_SOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_recv(soap), (soap)->error ) +#endif + +SOAP_FMAC1 struct SOAP_ENV__Code * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Code(struct soap*, int, const char*, const char*, size_t*); + +inline struct SOAP_ENV__Code * soap_new_SOAP_ENV__Code(struct soap *soap, int n = -1) { return soap_instantiate_SOAP_ENV__Code(soap, n, NULL, NULL, NULL); } + +inline struct SOAP_ENV__Code * soap_new_req_SOAP_ENV__Code(struct soap *soap) { struct SOAP_ENV__Code *_p = soap_instantiate_SOAP_ENV__Code(soap, -1, NULL, NULL, NULL); if (_p) { soap_default_SOAP_ENV__Code(soap, _p); } return _p; } + +inline struct SOAP_ENV__Code * soap_new_set_SOAP_ENV__Code(struct soap *soap, char *SOAP_ENV__Value, struct SOAP_ENV__Code *SOAP_ENV__Subcode) { struct SOAP_ENV__Code *_p = soap_instantiate_SOAP_ENV__Code(soap, -1, NULL, NULL, NULL); if (_p) { soap_default_SOAP_ENV__Code(soap, _p); _p->SOAP_ENV__Value = SOAP_ENV__Value; _p->SOAP_ENV__Subcode = SOAP_ENV__Subcode; } return _p; } + +inline void soap_delete_SOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *p) { soap_delete(soap, p); } + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Code(struct soap*, int, int, void*, size_t, const void*, size_t); + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_SOAP_ENV__Header +#define SOAP_TYPE_SOAP_ENV__Header (7) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Header(struct soap*, struct SOAP_ENV__Header *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Header(struct soap*, const struct SOAP_ENV__Header *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Header(struct soap*, const char*, int, const struct SOAP_ENV__Header *, const char*); +SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_in_SOAP_ENV__Header(struct soap*, const char*, struct SOAP_ENV__Header *, const char*); + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Header(struct soap*, const struct SOAP_ENV__Header *, const char*, const char*); + +#ifndef soap_write_SOAP_ENV__Header +#define soap_write_SOAP_ENV__Header(soap, data) ( soap_free_temp(soap), soap_begin_send(soap) || (soap_serialize_SOAP_ENV__Header(soap, data),0) || soap_put_SOAP_ENV__Header(soap, data, "SOAP-ENV:Header", NULL) || soap_end_send(soap), (soap)->error ) +#endif + +SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_get_SOAP_ENV__Header(struct soap*, struct SOAP_ENV__Header *, const char*, const char*); + +#ifndef soap_read_SOAP_ENV__Header +#define soap_read_SOAP_ENV__Header(soap, data) ( soap_begin_recv(soap) || !soap_get_SOAP_ENV__Header(soap, data, NULL, NULL) || soap_end_recv(soap), (soap)->error ) +#endif + +SOAP_FMAC1 struct SOAP_ENV__Header * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Header(struct soap*, int, const char*, const char*, size_t*); + +inline struct SOAP_ENV__Header * soap_new_SOAP_ENV__Header(struct soap *soap, int n = -1) { return soap_instantiate_SOAP_ENV__Header(soap, n, NULL, NULL, NULL); } + +inline struct SOAP_ENV__Header * soap_new_req_SOAP_ENV__Header(struct soap *soap) { struct SOAP_ENV__Header *_p = soap_instantiate_SOAP_ENV__Header(soap, -1, NULL, NULL, NULL); if (_p) { soap_default_SOAP_ENV__Header(soap, _p); } return _p; } + +inline struct SOAP_ENV__Header * soap_new_set_SOAP_ENV__Header(struct soap *soap) { struct SOAP_ENV__Header *_p = soap_instantiate_SOAP_ENV__Header(soap, -1, NULL, NULL, NULL); if (_p) { soap_default_SOAP_ENV__Header(soap, _p); } return _p; } + +inline void soap_delete_SOAP_ENV__Header(struct soap *soap, struct SOAP_ENV__Header *p) { soap_delete(soap, p); } + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Header(struct soap*, int, int, void*, size_t, const void*, size_t); + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_PointerToSOAP_ENV__Reason +#define SOAP_TYPE_PointerToSOAP_ENV__Reason (16) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Reason(struct soap*, const char *, int, struct SOAP_ENV__Reason *const*, const char *); +SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Reason(struct soap*, const char*, struct SOAP_ENV__Reason **, const char*); +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *const*, const char*, const char*); + +#ifndef soap_write_PointerToSOAP_ENV__Reason +#define soap_write_PointerToSOAP_ENV__Reason(soap, data) ( soap_free_temp(soap), soap_begin_send(soap) || (soap_serialize_PointerToSOAP_ENV__Reason(soap, data),0) || soap_put_PointerToSOAP_ENV__Reason(soap, data, "SOAP-ENV:Reason", NULL) || soap_end_send(soap), (soap)->error ) +#endif + +SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason **, const char*, const char*); + +#ifndef soap_read_PointerToSOAP_ENV__Reason +#define soap_read_PointerToSOAP_ENV__Reason(soap, data) ( soap_begin_recv(soap) || !soap_get_PointerToSOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_recv(soap), (soap)->error ) +#endif + + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_PointerToSOAP_ENV__Detail +#define SOAP_TYPE_PointerToSOAP_ENV__Detail (15) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Detail(struct soap*, const char *, int, struct SOAP_ENV__Detail *const*, const char *); +SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Detail(struct soap*, const char*, struct SOAP_ENV__Detail **, const char*); +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *const*, const char*, const char*); + +#ifndef soap_write_PointerToSOAP_ENV__Detail +#define soap_write_PointerToSOAP_ENV__Detail(soap, data) ( soap_free_temp(soap), soap_begin_send(soap) || (soap_serialize_PointerToSOAP_ENV__Detail(soap, data),0) || soap_put_PointerToSOAP_ENV__Detail(soap, data, "SOAP-ENV:Detail", NULL) || soap_end_send(soap), (soap)->error ) +#endif + +SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail **, const char*, const char*); + +#ifndef soap_read_PointerToSOAP_ENV__Detail +#define soap_read_PointerToSOAP_ENV__Detail(soap, data) ( soap_begin_recv(soap) || !soap_get_PointerToSOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_recv(soap), (soap)->error ) +#endif + + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_PointerToSOAP_ENV__Code +#define SOAP_TYPE_PointerToSOAP_ENV__Code (9) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Code(struct soap*, const char *, int, struct SOAP_ENV__Code *const*, const char *); +SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Code(struct soap*, const char*, struct SOAP_ENV__Code **, const char*); +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *const*, const char*, const char*); + +#ifndef soap_write_PointerToSOAP_ENV__Code +#define soap_write_PointerToSOAP_ENV__Code(soap, data) ( soap_free_temp(soap), soap_begin_send(soap) || (soap_serialize_PointerToSOAP_ENV__Code(soap, data),0) || soap_put_PointerToSOAP_ENV__Code(soap, data, "SOAP-ENV:Code", NULL) || soap_end_send(soap), (soap)->error ) +#endif + +SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code **, const char*, const char*); + +#ifndef soap_read_PointerToSOAP_ENV__Code +#define soap_read_PointerToSOAP_ENV__Code(soap, data) ( soap_begin_recv(soap) || !soap_get_PointerToSOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_recv(soap), (soap)->error ) +#endif + + +#endif + +#ifndef SOAP_TYPE__QName +#define SOAP_TYPE__QName (5) +#endif + +#define soap_default__QName(soap, a) soap_default_string(soap, a) + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize__QName(struct soap*, char *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out__QName(struct soap*, const char*, int, char*const*, const char*); +SOAP_FMAC3 char * * SOAP_FMAC4 soap_in__QName(struct soap*, const char*, char **, const char*); +SOAP_FMAC3 int SOAP_FMAC4 soap_put__QName(struct soap*, char *const*, const char*, const char*); + +#ifndef soap_write__QName +#define soap_write__QName(soap, data) ( soap_free_temp(soap), soap_begin_send(soap) || (soap_serialize__QName(soap, data),0) || soap_put__QName(soap, data, "byte", NULL) || soap_end_send(soap), (soap)->error ) +#endif + +SOAP_FMAC3 char ** SOAP_FMAC4 soap_get__QName(struct soap*, char **, const char*, const char*); + +#ifndef soap_read__QName +#define soap_read__QName(soap, data) ( soap_begin_recv(soap) || !soap_get__QName(soap, data, NULL, NULL) || soap_end_recv(soap), (soap)->error ) +#endif + + +#ifndef SOAP_TYPE_string +#define SOAP_TYPE_string (4) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_string(struct soap*, char **); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_string(struct soap*, char *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_string(struct soap*, const char*, int, char*const*, const char*); +SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_string(struct soap*, const char*, char **, const char*); +SOAP_FMAC3 int SOAP_FMAC4 soap_put_string(struct soap*, char *const*, const char*, const char*); + +#ifndef soap_write_string +#define soap_write_string(soap, data) ( soap_free_temp(soap), soap_begin_send(soap) || (soap_serialize_string(soap, data),0) || soap_put_string(soap, data, "byte", NULL) || soap_end_send(soap), (soap)->error ) +#endif + +SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_string(struct soap*, char **, const char*, const char*); + +#ifndef soap_read_string +#define soap_read_string(soap, data) ( soap_begin_recv(soap) || !soap_get_string(soap, data, NULL, NULL) || soap_end_recv(soap), (soap)->error ) +#endif + + +#endif + +/* End of envH.h */ diff --git a/coregrade/src/include/envStub.h b/coregrade/src/include/envStub.h new file mode 100644 index 0000000..4192e40 --- /dev/null +++ b/coregrade/src/include/envStub.h @@ -0,0 +1,163 @@ +/* envStub.h + Generated by gSOAP 2.8.16 from env.h + +Copyright(C) 2000-2013, Robert van Engelen, Genivia Inc. All Rights Reserved. +The generated code is released under one of the following licenses: +GPL or Genivia's license for commercial use. +This program is released under the GPL with the additional exemption that +compiling, linking, and/or using OpenSSL is allowed. +*/ + +#ifndef envStub_H +#define envStub_H +#include "stdsoap2.h" +#if GSOAP_VERSION != 20816 +# error "GSOAP VERSION MISMATCH IN GENERATED CODE: PLEASE REINSTALL PACKAGE" +#endif + + +/******************************************************************************\ + * * + * Enumerations * + * * +\******************************************************************************/ + + +/******************************************************************************\ + * * + * Types with Custom Serializers * + * * +\******************************************************************************/ + + +/******************************************************************************\ + * * + * Classes and Structs * + * * +\******************************************************************************/ + + +#if 0 /* volatile type: do not declare here, declared elsewhere */ + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_SOAP_ENV__Header +#define SOAP_TYPE_SOAP_ENV__Header (7) +/* SOAP Header: */ +struct SOAP_ENV__Header +{ +public: + int soap_type() const { return 7; } /* = unique id SOAP_TYPE_SOAP_ENV__Header */ +#ifdef WITH_NOEMPTYSTRUCT +private: + char dummy; /* dummy member to enable compilation */ +#endif +}; +#endif + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_SOAP_ENV__Code +#define SOAP_TYPE_SOAP_ENV__Code (8) +/* SOAP Fault Code: */ +struct SOAP_ENV__Code +{ +public: + char *SOAP_ENV__Value; /* optional element of type xsd:QName */ + struct SOAP_ENV__Code *SOAP_ENV__Subcode; /* optional element of type SOAP-ENV:Code */ +public: + int soap_type() const { return 8; } /* = unique id SOAP_TYPE_SOAP_ENV__Code */ +}; +#endif + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_SOAP_ENV__Detail +#define SOAP_TYPE_SOAP_ENV__Detail (10) +/* SOAP-ENV:Detail */ +struct SOAP_ENV__Detail +{ +public: + char *__any; + int __type; /* any type of element (defined below) */ + void *fault; /* transient */ +public: + int soap_type() const { return 10; } /* = unique id SOAP_TYPE_SOAP_ENV__Detail */ +}; +#endif + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_SOAP_ENV__Reason +#define SOAP_TYPE_SOAP_ENV__Reason (13) +/* SOAP-ENV:Reason */ +struct SOAP_ENV__Reason +{ +public: + char *SOAP_ENV__Text; /* optional element of type xsd:string */ +public: + int soap_type() const { return 13; } /* = unique id SOAP_TYPE_SOAP_ENV__Reason */ +}; +#endif + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_SOAP_ENV__Fault +#define SOAP_TYPE_SOAP_ENV__Fault (14) +/* SOAP Fault: */ +struct SOAP_ENV__Fault +{ +public: + char *faultcode; /* optional element of type xsd:QName */ + char *faultstring; /* optional element of type xsd:string */ + char *faultactor; /* optional element of type xsd:string */ + struct SOAP_ENV__Detail *detail; /* optional element of type SOAP-ENV:Detail */ + struct SOAP_ENV__Code *SOAP_ENV__Code; /* optional element of type SOAP-ENV:Code */ + struct SOAP_ENV__Reason *SOAP_ENV__Reason; /* optional element of type SOAP-ENV:Reason */ + char *SOAP_ENV__Node; /* optional element of type xsd:string */ + char *SOAP_ENV__Role; /* optional element of type xsd:string */ + struct SOAP_ENV__Detail *SOAP_ENV__Detail; /* optional element of type SOAP-ENV:Detail */ +public: + int soap_type() const { return 14; } /* = unique id SOAP_TYPE_SOAP_ENV__Fault */ +}; +#endif + +#endif + +/******************************************************************************\ + * * + * Typedefs * + * * +\******************************************************************************/ + +#ifndef SOAP_TYPE__QName +#define SOAP_TYPE__QName (5) +typedef char *_QName; +#endif + +#ifndef SOAP_TYPE__XML +#define SOAP_TYPE__XML (6) +typedef char *_XML; +#endif + + +/******************************************************************************\ + * * + * Externals * + * * +\******************************************************************************/ + + +#endif + +/* End of envStub.h */ diff --git a/coregrade/src/include/exceptions.h b/coregrade/src/include/exceptions.h new file mode 100644 index 0000000..7e05c33 --- /dev/null +++ b/coregrade/src/include/exceptions.h @@ -0,0 +1,20 @@ +#ifndef __EXCEPTIONS_H__ +#define __EXCEPTIONS_H__ + +#include "vars.h" + +class bad_parameter{ +public: + + bad_parameter( CVars &out, const char *name ); +}; + +class err : public std::exception +{ + +public: + err( char *msg ); +}; + +#endif + diff --git a/coregrade/src/include/groups.h b/coregrade/src/include/groups.h new file mode 100644 index 0000000..b35f737 --- /dev/null +++ b/coregrade/src/include/groups.h @@ -0,0 +1,13 @@ +#ifndef __mx_groups_h__ +#define __mx_groups_h__ + +#include "vars.h" + + +long groups_calls(CVars in, CVars &out); +long CreateCoreGradeGroup(CVars in, CVars &out); +long CoreGradeGroupCreateMember(CVars in, CVars &out); + + +#endif + diff --git a/coregrade/src/include/hmac_sha2.h b/coregrade/src/include/hmac_sha2.h new file mode 100644 index 0000000..d1e2d3c --- /dev/null +++ b/coregrade/src/include/hmac_sha2.h @@ -0,0 +1,140 @@ +/*- + * HMAC-SHA-224/256/384/512 implementation + * Last update: 06/15/2005 + * Issue date: 06/15/2005 + * + * Copyright (C) 2005 Olivier Gay + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef _HMAC_SHA2_H +#define _HMAC_SHA2_H + +#include "sha2.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + sha224_ctx ctx_inside; + sha224_ctx ctx_outside; + + /* for hmac_reinit */ + sha224_ctx ctx_inside_reinit; + sha224_ctx ctx_outside_reinit; + + unsigned char block_ipad[SHA224_BLOCK_SIZE]; + unsigned char block_opad[SHA224_BLOCK_SIZE]; +} hmac_sha224_ctx; + +typedef struct { + sha256_ctx ctx_inside; + sha256_ctx ctx_outside; + + /* for hmac_reinit */ + sha256_ctx ctx_inside_reinit; + sha256_ctx ctx_outside_reinit; + + unsigned char block_ipad[SHA256_BLOCK_SIZE]; + unsigned char block_opad[SHA256_BLOCK_SIZE]; +} hmac_sha256_ctx; + +typedef struct { + sha384_ctx ctx_inside; + sha384_ctx ctx_outside; + + /* for hmac_reinit */ + sha384_ctx ctx_inside_reinit; + sha384_ctx ctx_outside_reinit; + + unsigned char block_ipad[SHA384_BLOCK_SIZE]; + unsigned char block_opad[SHA384_BLOCK_SIZE]; +} hmac_sha384_ctx; + +typedef struct { + sha512_ctx ctx_inside; + sha512_ctx ctx_outside; + + /* for hmac_reinit */ + sha512_ctx ctx_inside_reinit; + sha512_ctx ctx_outside_reinit; + + unsigned char block_ipad[SHA512_BLOCK_SIZE]; + unsigned char block_opad[SHA512_BLOCK_SIZE]; +} hmac_sha512_ctx; + +void hmac_sha224_init(hmac_sha224_ctx *ctx, unsigned char *key, + unsigned int key_size); +void hmac_sha224_reinit(hmac_sha224_ctx *ctx); +void hmac_sha224_update(hmac_sha224_ctx *ctx, unsigned char *message, + unsigned int message_len); +void hmac_sha224_final(hmac_sha224_ctx *ctx, unsigned char *mac, + unsigned int mac_size); +void hmac_sha224(unsigned char *key, unsigned int key_size, + unsigned char *message, unsigned int message_len, + unsigned char *mac, unsigned mac_size); + +void hmac_sha256_init(hmac_sha256_ctx *ctx, unsigned char *key, + unsigned int key_size); +void hmac_sha256_reinit(hmac_sha256_ctx *ctx); +void hmac_sha256_update(hmac_sha256_ctx *ctx, unsigned char *message, + unsigned int message_len); +void hmac_sha256_final(hmac_sha256_ctx *ctx, unsigned char *mac, + unsigned int mac_size); +void hmac_sha256(unsigned char *key, unsigned int key_size, + unsigned char *message, unsigned int message_len, + unsigned char *mac, unsigned mac_size); + +void hmac_sha384_init(hmac_sha384_ctx *ctx, unsigned char *key, + unsigned int key_size); +void hmac_sha384_reinit(hmac_sha384_ctx *ctx); +void hmac_sha384_update(hmac_sha384_ctx *ctx, unsigned char *message, + unsigned int message_len); +void hmac_sha384_final(hmac_sha384_ctx *ctx, unsigned char *mac, + unsigned int mac_size); +void hmac_sha384(unsigned char *key, unsigned int key_size, + unsigned char *message, unsigned int message_len, + unsigned char *mac, unsigned mac_size); + +void hmac_sha512_init(hmac_sha512_ctx *ctx, unsigned char *key, + unsigned int key_size); +void hmac_sha512_reinit(hmac_sha512_ctx *ctx); +void hmac_sha512_update(hmac_sha512_ctx *ctx, unsigned char *message, + unsigned int message_len); +void hmac_sha512_final(hmac_sha512_ctx *ctx, unsigned char *mac, + unsigned int mac_size); +void hmac_sha512(unsigned char *key, unsigned int key_size, + unsigned char *message, unsigned int message_len, + unsigned char *mac, unsigned mac_size); + +#ifdef __cplusplus +} +#endif + +#endif /* ! _HMAC_SHA2_H */ + diff --git a/coregrade/src/include/input.h b/coregrade/src/include/input.h new file mode 100644 index 0000000..9d0d96d --- /dev/null +++ b/coregrade/src/include/input.h @@ -0,0 +1,15 @@ +#ifndef __INPUT_H__ +#define __INPUT_H__ + +#include "vars.h" +#include "exceptions.h" + +void REQ_STRING( CVars &in, const char * name, int min_len, int max_len, const char *regex ) throw (bad_parameter); +long REQ_LONG( CVars &in, const char *name, long min, long max ); +bool OptionalSpecified( CVars &in, const char * name ); + +#define OPTIONAL(mapname, var) \ + if ( OptionalSpecified(mapname,var) ) + +#endif + diff --git a/coregrade/src/include/interswitch.h b/coregrade/src/include/interswitch.h new file mode 100644 index 0000000..c24bcbd --- /dev/null +++ b/coregrade/src/include/interswitch.h @@ -0,0 +1,37 @@ +#ifndef __INTERSWITCH_H__ +#define __INTERSWITCH_H__ + +#include "vars.h" + +#include +#include + +using namespace std; +using namespace __gnu_cxx; + +/*****************************************************************************/ +struct eqstr{ + bool operator()(const char* s1, const char* s2) const { + return strcmp(s1,s2)==0; + } +}; +/*****************************************************************************/ + +long interswitch_config_ssl(const char *keyfile, const char *password, const char *cacert, long version); +long interswitch_getBillers(const char *endpoint, const char *tid, int billerId, int categoryId, int channelId, const char *billerName, char *status, long(*save)(hash_map, eqstr>)); +long interswitch_getBillerPaymentItems(const char *endpoint, const char *tid, int billerId, char *status, long(*save)(const char*, hash_map, eqstr>)); +long interswitch_getBillerCategories(const char *endpoint, char *error, long(*save)(hash_map, eqstr>)); +string interswitch_getBankCodes(const char *endpoint, const char *tid, char *status); +string interswitch_queryTransaction(const char *endpoint, const char *tid, const char *transferCode, const char *requestReference, char *status, char *transactionResponseCode); +long interswitch_getBalance(const char *endpoint, const char *tid, const char *mkey, const char *pin, char *status); +string interswitch_transferFunds(const char *endpoint, const char *tid, const char *mkey, const char *pin, char *error, const char *account, const char *uniqueRef, const char *bankCode, long currency, long amount ,CVars trans_info); +string interswitch_SendBillPaymentAdvice(const char *endpoint, const char *tid, long amount, const char *paymentCode, long customerId, const char *requestReference, char *status, char *transactionRef,char *customer_mobile,char *customer_email); +string interswitch_doTransfer(const char *endpoint, const char *tid, CVars trans_info, char *error); +//char * interswitch_pinChange(const char *tid, const char *mkey, const char *pin, char *status); +long interswitch_test(); + +#endif + +/* +vi:ts=2 +*/ diff --git a/coregrade/src/include/interswitch.nsmap b/coregrade/src/include/interswitch.nsmap new file mode 100644 index 0000000..8ff7dd8 --- /dev/null +++ b/coregrade/src/include/interswitch.nsmap @@ -0,0 +1,12 @@ + +#include "interswitchH.h" +SOAP_NMAC struct Namespace interswitch_namespaces[] = +{ + {"SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/", "http://schemas.xmlsoap.org/soap/envelope/", NULL}, + {"SOAP-ENC", "http://www.w3.org/2003/05/soap-encoding", "http://www.w3.org/2003/05/soap-encoding", NULL}, + {"xsi", "http://www.w3.org/2001/XMLSchema-instance", "http://www.w3.org/*/XMLSchema-instance", NULL}, + {"xsd", "http://www.w3.org/2001/XMLSchema", "http://www.w3.org/*/XMLSchema", NULL}, + {"interswitch2", "http://schemas.microsoft.com/2003/10/Serialization/", NULL, NULL}, + {"interswitch", "http://services.interswitchng.com/quicktellerservice/", NULL, NULL}, + {NULL, NULL, NULL, NULL} +}; diff --git a/coregrade/src/include/interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.h b/coregrade/src/include/interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.h new file mode 100644 index 0000000..8873bc5 --- /dev/null +++ b/coregrade/src/include/interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.h @@ -0,0 +1,171 @@ +/* interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.h + Generated by gSOAP 2.7.16 from QuickTellerService.h + Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. + This part of the software is released under one of the following licenses: + GPL, the gSOAP public license, or Genivia's license for commercial use. +*/ + +#ifndef interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy_H +#define interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy_H +#include "interswitchH.h" + +namespace interswitch { + +class SOAP_CMAC BasicHttpBinding_USCOREQuickTellerServiceProxy : public soap +{ public: + /// Endpoint URL of service 'BasicHttpBinding_USCOREQuickTellerServiceProxy' (change as needed) + const char *soap_endpoint; + /// Constructor + BasicHttpBinding_USCOREQuickTellerServiceProxy(); + /// Constructor with copy of another engine state + BasicHttpBinding_USCOREQuickTellerServiceProxy(const struct soap&); + /// Constructor with engine input+output mode control + BasicHttpBinding_USCOREQuickTellerServiceProxy(soap_mode iomode); + /// Constructor with engine input and output mode control + BasicHttpBinding_USCOREQuickTellerServiceProxy(soap_mode imode, soap_mode omode); + /// Destructor frees deserialized data + virtual ~BasicHttpBinding_USCOREQuickTellerServiceProxy(); + /// Initializer used by constructors + virtual void BasicHttpBinding_USCOREQuickTellerServiceProxy_init(soap_mode imode, soap_mode omode); + /// Delete all deserialized data (uses soap_destroy and soap_end) + virtual void destroy(); + /// Disables and removes SOAP Header from message + virtual void soap_noheader(); + /// Get SOAP Fault structure (NULL when absent) + virtual const SOAP_ENV__Fault *soap_fault(); + /// Get SOAP Fault string (NULL when absent) + virtual const char *soap_fault_string(); + /// Get SOAP Fault detail as string (NULL when absent) + virtual const char *soap_fault_detail(); + /// Force close connection (normally automatic, except for send_X ops) + virtual int soap_close_socket(); + /// Print fault + virtual void soap_print_fault(FILE*); +#ifndef WITH_LEAN + /// Print fault to stream + virtual void soap_stream_fault(std::ostream&); + /// Put fault into buffer + virtual char *soap_sprint_fault(char *buf, size_t len); +#endif + + /// Web service operation 'ValidateCustomer' (returns error code or SOAP_OK) + virtual int ValidateCustomer(_interswitch__ValidateCustomer *interswitch__ValidateCustomer, _interswitch__ValidateCustomerResponse *interswitch__ValidateCustomerResponse); + + /// Web service operation 'DoTransfer' (returns error code or SOAP_OK) + virtual int DoTransfer(_interswitch__DoTransfer *interswitch__DoTransfer, _interswitch__DoTransferResponse *interswitch__DoTransferResponse); + + /// Web service operation 'CancelTransfer' (returns error code or SOAP_OK) + virtual int CancelTransfer(_interswitch__CancelTransfer *interswitch__CancelTransfer, _interswitch__CancelTransferResponse *interswitch__CancelTransferResponse); + + /// Web service operation 'SendSessionKey' (returns error code or SOAP_OK) + virtual int SendSessionKey(_interswitch__SendSessionKey *interswitch__SendSessionKey, _interswitch__SendSessionKeyResponse *interswitch__SendSessionKeyResponse); + + /// Web service operation 'QueryTransfer' (returns error code or SOAP_OK) + virtual int QueryTransfer(_interswitch__QueryTransfer *interswitch__QueryTransfer, _interswitch__QueryTransferResponse *interswitch__QueryTransferResponse); + + /// Web service operation 'AuthoriseCashOut' (returns error code or SOAP_OK) + virtual int AuthoriseCashOut(_interswitch__AuthoriseCashOut *interswitch__AuthoriseCashOut, _interswitch__AuthoriseCashOutResponse *interswitch__AuthoriseCashOutResponse); + + /// Web service operation 'AuthoriseAccountCashOut' (returns error code or SOAP_OK) + virtual int AuthoriseAccountCashOut(_interswitch__AuthoriseAccountCashOut *interswitch__AuthoriseAccountCashOut, _interswitch__AuthoriseAccountCashOutResponse *interswitch__AuthoriseAccountCashOutResponse); + + /// Web service operation 'ReverseCashOut' (returns error code or SOAP_OK) + virtual int ReverseCashOut(_interswitch__ReverseCashOut *interswitch__ReverseCashOut, _interswitch__ReverseCashOutResponse *interswitch__ReverseCashOutResponse); + + /// Web service operation 'StatusCheck' (returns error code or SOAP_OK) + virtual int StatusCheck(_interswitch__StatusCheck *interswitch__StatusCheck, _interswitch__StatusCheckResponse *interswitch__StatusCheckResponse); + + /// Web service operation 'QueryTransaction' (returns error code or SOAP_OK) + virtual int QueryTransaction(_interswitch__QueryTransaction *interswitch__QueryTransaction, _interswitch__QueryTransactionResponse *interswitch__QueryTransactionResponse); + + /// Web service operation 'GetSystemSettings' (returns error code or SOAP_OK) + virtual int GetSystemSettings(_interswitch__GetSystemSettings *interswitch__GetSystemSettings, _interswitch__GetSystemSettingsResponse *interswitch__GetSystemSettingsResponse); + + /// Web service operation 'CreateUser' (returns error code or SOAP_OK) + virtual int CreateUser(_interswitch__CreateUser *interswitch__CreateUser, _interswitch__CreateUserResponse *interswitch__CreateUserResponse); + + /// Web service operation 'ActivateUser' (returns error code or SOAP_OK) + virtual int ActivateUser(_interswitch__ActivateUser *interswitch__ActivateUser, _interswitch__ActivateUserResponse *interswitch__ActivateUserResponse); + + /// Web service operation 'UpdateUser' (returns error code or SOAP_OK) + virtual int UpdateUser(_interswitch__UpdateUser *interswitch__UpdateUser, _interswitch__UpdateUserResponse *interswitch__UpdateUserResponse); + + /// Web service operation 'ChangePassword' (returns error code or SOAP_OK) + virtual int ChangePassword(_interswitch__ChangePassword *interswitch__ChangePassword, _interswitch__ChangePasswordResponse *interswitch__ChangePasswordResponse); + + /// Web service operation 'ResetPassword' (returns error code or SOAP_OK) + virtual int ResetPassword(_interswitch__ResetPassword *interswitch__ResetPassword, _interswitch__ResetPasswordResponse *interswitch__ResetPasswordResponse); + + /// Web service operation 'AuthenticateUser' (returns error code or SOAP_OK) + virtual int AuthenticateUser(_interswitch__AuthenticateUser *interswitch__AuthenticateUser, _interswitch__AuthenticateUserResponse *interswitch__AuthenticateUserResponse); + + /// Web service operation 'AuthenticateUserSecurityToken' (returns error code or SOAP_OK) + virtual int AuthenticateUserSecurityToken(_interswitch__AuthenticateUserSecurityToken *interswitch__AuthenticateUserSecurityToken, _interswitch__AuthenticateUserSecurityTokenResponse *interswitch__AuthenticateUserSecurityTokenResponse); + + /// Web service operation 'GetUser' (returns error code or SOAP_OK) + virtual int GetUser(_interswitch__GetUser *interswitch__GetUser, _interswitch__GetUserResponse *interswitch__GetUserResponse); + + /// Web service operation 'GetBillers' (returns error code or SOAP_OK) + virtual int GetBillers(_interswitch__GetBillers *interswitch__GetBillers, _interswitch__GetBillersResponse *interswitch__GetBillersResponse); + + /// Web service operation 'GetLatestBillers' (returns error code or SOAP_OK) + virtual int GetLatestBillers(_interswitch__GetLatestBillers *interswitch__GetLatestBillers, _interswitch__GetLatestBillersResponse *interswitch__GetLatestBillersResponse); + + /// Web service operation 'GetFeaturedBillers' (returns error code or SOAP_OK) + virtual int GetFeaturedBillers(_interswitch__GetFeaturedBillers *interswitch__GetFeaturedBillers, _interswitch__GetFeaturedBillersResponse *interswitch__GetFeaturedBillersResponse); + + /// Web service operation 'GetBillerPaymentItems' (returns error code or SOAP_OK) + virtual int GetBillerPaymentItems(_interswitch__GetBillerPaymentItems *interswitch__GetBillerPaymentItems, _interswitch__GetBillerPaymentItemsResponse *interswitch__GetBillerPaymentItemsResponse); + + /// Web service operation 'GetBillerCategories' (returns error code or SOAP_OK) + virtual int GetBillerCategories(_interswitch__GetBillerCategories *interswitch__GetBillerCategories, _interswitch__GetBillerCategoriesResponse *interswitch__GetBillerCategoriesResponse); + + /// Web service operation 'DoBillPaymentInquiry' (returns error code or SOAP_OK) + virtual int DoBillPaymentInquiry(_interswitch__DoBillPaymentInquiry *interswitch__DoBillPaymentInquiry, _interswitch__DoBillPaymentInquiryResponse *interswitch__DoBillPaymentInquiryResponse); + + /// Web service operation 'AuthenticateCustomer' (returns error code or SOAP_OK) + virtual int AuthenticateCustomer(_interswitch__AuthenticateCustomer *interswitch__AuthenticateCustomer, _interswitch__AuthenticateCustomerResponse *interswitch__AuthenticateCustomerResponse); + + /// Web service operation 'SendBillPaymentAdvice' (returns error code or SOAP_OK) + virtual int SendBillPaymentAdvice(_interswitch__SendBillPaymentAdvice *interswitch__SendBillPaymentAdvice, _interswitch__SendBillPaymentAdviceResponse *interswitch__SendBillPaymentAdviceResponse); + + /// Web service operation 'SendPayments' (returns error code or SOAP_OK) + virtual int SendPayments(_interswitch__SendPayments *interswitch__SendPayments, _interswitch__SendPaymentsResponse *interswitch__SendPaymentsResponse); + + /// Web service operation 'AddCustomerBillerAccount' (returns error code or SOAP_OK) + virtual int AddCustomerBillerAccount(_interswitch__AddCustomerBillerAccount *interswitch__AddCustomerBillerAccount, _interswitch__AddCustomerBillerAccountResponse *interswitch__AddCustomerBillerAccountResponse); + + /// Web service operation 'GetCustomerBillerAccounts' (returns error code or SOAP_OK) + virtual int GetCustomerBillerAccounts(_interswitch__GetCustomerBillerAccounts *interswitch__GetCustomerBillerAccounts, _interswitch__GetCustomerBillerAccountsResponse *interswitch__GetCustomerBillerAccountsResponse); + + /// Web service operation 'GetCustomerPayments' (returns error code or SOAP_OK) + virtual int GetCustomerPayments(_interswitch__GetCustomerPayments *interswitch__GetCustomerPayments, _interswitch__GetCustomerPaymentsResponse *interswitch__GetCustomerPaymentsResponse); + + /// Web service operation 'AddBillerCustomer' (returns error code or SOAP_OK) + virtual int AddBillerCustomer(_interswitch__AddBillerCustomer *interswitch__AddBillerCustomer, _interswitch__AddBillerCustomerResponse *interswitch__AddBillerCustomerResponse); + + /// Web service operation 'GetCollectionsAccount' (returns error code or SOAP_OK) + virtual int GetCollectionsAccount(_interswitch__GetCollectionsAccount *interswitch__GetCollectionsAccount, _interswitch__GetCollectionsAccountResponse *interswitch__GetCollectionsAccountResponse); + + /// Web service operation 'GetBillersCollectionsAccount' (returns error code or SOAP_OK) + virtual int GetBillersCollectionsAccount(_interswitch__GetBillersCollectionsAccount *interswitch__GetBillersCollectionsAccount, _interswitch__GetBillersCollectionsAccountResponse *interswitch__GetBillersCollectionsAccountResponse); + + /// Web service operation 'EditCustomerBillerAccount' (returns error code or SOAP_OK) + virtual int EditCustomerBillerAccount(_interswitch__EditCustomerBillerAccount *interswitch__EditCustomerBillerAccount, _interswitch__EditCustomerBillerAccountResponse *interswitch__EditCustomerBillerAccountResponse); + + /// Web service operation 'ResendActivationToken' (returns error code or SOAP_OK) + virtual int ResendActivationToken(_interswitch__ResendActivationToken *interswitch__ResendActivationToken, _interswitch__ResendActivationTokenResponse *interswitch__ResendActivationTokenResponse); + + /// Web service operation 'DoCustomProcessing' (returns error code or SOAP_OK) + virtual int DoCustomProcessing(_interswitch__DoCustomProcessing *interswitch__DoCustomProcessing, _interswitch__DoCustomProcessingResponse *interswitch__DoCustomProcessingResponse); + + /// Web service operation 'CreateBiller' (returns error code or SOAP_OK) + virtual int CreateBiller(_interswitch__CreateBiller *interswitch__CreateBiller, _interswitch__CreateBillerResponse *interswitch__CreateBillerResponse); + + /// Web service operation 'VerifyBiller' (returns error code or SOAP_OK) + virtual int VerifyBiller(_interswitch__VerifyBiller *interswitch__VerifyBiller, _interswitch__VerifyBillerResponse *interswitch__VerifyBillerResponse); +}; + +} // namespace interswitch + +#endif diff --git a/coregrade/src/include/interswitchH.h b/coregrade/src/include/interswitchH.h new file mode 100644 index 0000000..7fd5837 --- /dev/null +++ b/coregrade/src/include/interswitchH.h @@ -0,0 +1,5242 @@ +/* interswitchH.h + Generated by gSOAP 2.7.16 from QuickTellerService.h + Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. + This part of the software is released under one of the following licenses: + GPL, the gSOAP public license, or Genivia's license for commercial use. +*/ + +#ifndef interswitchH_H +#define interswitchH_H +#include "interswitchStub.h" + +namespace interswitch { +#ifndef WITH_NOIDREF +SOAP_FMAC3 void SOAP_FMAC4 soap_markelement(struct soap*, const void*, int); +SOAP_FMAC3 int SOAP_FMAC4 soap_putelement(struct soap*, const void*, const char*, int, int); +SOAP_FMAC3 void *SOAP_FMAC4 soap_getelement(struct soap*, int*); +SOAP_FMAC3 int SOAP_FMAC4 soap_putindependent(struct soap*); +SOAP_FMAC3 int SOAP_FMAC4 soap_getindependent(struct soap*); +#endif +SOAP_FMAC3 int SOAP_FMAC4 soap_ignore_element(struct soap*); + +SOAP_FMAC3 void * SOAP_FMAC4 soap_instantiate(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 int SOAP_FMAC4 soap_fdelete(struct soap_clist*); +SOAP_FMAC3 void* SOAP_FMAC4 soap_class_id_enter(struct soap*, const char*, void*, int, size_t, const char*, const char*); + +SOAP_FMAC3 void* SOAP_FMAC4 soap_container_id_forward(struct soap*, const char*, void*, size_t, int, int, size_t, unsigned int); + +SOAP_FMAC3 void SOAP_FMAC4 soap_container_insert(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__byte +#define SOAP_TYPE_interswitch_xsd__byte (26) +#endif + +#define soap_default_xsd__byte(soap, a) soap_default_byte(soap, a) + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__byte(struct soap*, const char*, int, const char *, const char*); +SOAP_FMAC3 char * SOAP_FMAC4 soap_in_xsd__byte(struct soap*, const char*, char *, const char*); + +#define soap_write_xsd__byte(soap, data) ( soap_begin_send(soap) || interswitch::soap_put_xsd__byte(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__byte(struct soap*, const char *, const char*, const char*); + +#define soap_read_xsd__byte(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__byte(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 char * SOAP_FMAC4 soap_get_xsd__byte(struct soap*, char *, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_byte +#define SOAP_TYPE_interswitch_byte (3) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_byte(struct soap*, char *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_byte(struct soap*, const char*, int, const char *, const char*); +SOAP_FMAC3 char * SOAP_FMAC4 soap_in_byte(struct soap*, const char*, char *, const char*); + +#define soap_write_byte(soap, data) ( soap_begin_send(soap) || interswitch::soap_put_byte(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_byte(struct soap*, const char *, const char*, const char*); + +#define soap_read_byte(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_byte(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 char * SOAP_FMAC4 soap_get_byte(struct soap*, char *, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_short +#define SOAP_TYPE_interswitch_short (42) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_short(struct soap*, short *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_short(struct soap*, const char*, int, const short *, const char*); +SOAP_FMAC3 short * SOAP_FMAC4 soap_in_short(struct soap*, const char*, short *, const char*); + +#define soap_write_short(soap, data) ( soap_begin_send(soap) || interswitch::soap_put_short(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_short(struct soap*, const short *, const char*, const char*); + +#define soap_read_short(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_short(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 short * SOAP_FMAC4 soap_get_short(struct soap*, short *, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_interswitch2__char +#define SOAP_TYPE_interswitch_interswitch2__char (129) +#endif + +#define soap_default_interswitch2__char(soap, a) soap_default_int(soap, a) + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_interswitch2__char(struct soap*, const char*, int, const int *, const char*); +SOAP_FMAC3 int * SOAP_FMAC4 soap_in_interswitch2__char(struct soap*, const char*, int *, const char*); + +#define soap_write_interswitch2__char(soap, data) ( soap_begin_send(soap) || interswitch::soap_put_interswitch2__char(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_interswitch2__char(struct soap*, const int *, const char*, const char*); + +#define soap_read_interswitch2__char(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_interswitch2__char(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 int * SOAP_FMAC4 soap_get_interswitch2__char(struct soap*, int *, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_int +#define SOAP_TYPE_interswitch_int (1) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_int(struct soap*, int *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_int(struct soap*, const char*, int, const int *, const char*); +SOAP_FMAC3 int * SOAP_FMAC4 soap_in_int(struct soap*, const char*, int *, const char*); + +#define soap_write_int(soap, data) ( soap_begin_send(soap) || interswitch::soap_put_int(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_int(struct soap*, const int *, const char*, const char*); + +#define soap_read_int(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_int(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 int * SOAP_FMAC4 soap_get_int(struct soap*, int *, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_LONG64 +#define SOAP_TYPE_interswitch_LONG64 (40) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_LONG64(struct soap*, LONG64 *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_LONG64(struct soap*, const char*, int, const LONG64 *, const char*); +SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_in_LONG64(struct soap*, const char*, LONG64 *, const char*); + +#define soap_write_LONG64(soap, data) ( soap_begin_send(soap) || interswitch::soap_put_LONG64(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_LONG64(struct soap*, const LONG64 *, const char*, const char*); + +#define soap_read_LONG64(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_LONG64(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_get_LONG64(struct soap*, LONG64 *, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_float +#define SOAP_TYPE_interswitch_float (37) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_float(struct soap*, float *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_float(struct soap*, const char*, int, const float *, const char*); +SOAP_FMAC3 float * SOAP_FMAC4 soap_in_float(struct soap*, const char*, float *, const char*); + +#define soap_write_float(soap, data) ( soap_begin_send(soap) || interswitch::soap_put_float(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_float(struct soap*, const float *, const char*, const char*); + +#define soap_read_float(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_float(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 float * SOAP_FMAC4 soap_get_float(struct soap*, float *, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_double +#define SOAP_TYPE_interswitch_double (33) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_double(struct soap*, double *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_double(struct soap*, const char*, int, const double *, const char*); +SOAP_FMAC3 double * SOAP_FMAC4 soap_in_double(struct soap*, const char*, double *, const char*); + +#define soap_write_double(soap, data) ( soap_begin_send(soap) || interswitch::soap_put_double(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_double(struct soap*, const double *, const char*, const char*); + +#define soap_read_double(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_double(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 double * SOAP_FMAC4 soap_get_double(struct soap*, double *, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_xsd__unsignedByte +#define SOAP_TYPE_interswitch_xsd__unsignedByte (44) +#endif + +#define soap_default_xsd__unsignedByte(soap, a) soap_default_unsignedByte(soap, a) + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__unsignedByte(struct soap*, const char*, int, const unsigned char *, const char*); +SOAP_FMAC3 unsigned char * SOAP_FMAC4 soap_in_xsd__unsignedByte(struct soap*, const char*, unsigned char *, const char*); + +#define soap_write_xsd__unsignedByte(soap, data) ( soap_begin_send(soap) || interswitch::soap_put_xsd__unsignedByte(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__unsignedByte(struct soap*, const unsigned char *, const char*, const char*); + +#define soap_read_xsd__unsignedByte(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__unsignedByte(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 unsigned char * SOAP_FMAC4 soap_get_xsd__unsignedByte(struct soap*, unsigned char *, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_unsignedByte +#define SOAP_TYPE_interswitch_unsignedByte (21) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_unsignedByte(struct soap*, unsigned char *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_unsignedByte(struct soap*, const char*, int, const unsigned char *, const char*); +SOAP_FMAC3 unsigned char * SOAP_FMAC4 soap_in_unsignedByte(struct soap*, const char*, unsigned char *, const char*); + +#define soap_write_unsignedByte(soap, data) ( soap_begin_send(soap) || interswitch::soap_put_unsignedByte(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_unsignedByte(struct soap*, const unsigned char *, const char*, const char*); + +#define soap_read_unsignedByte(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_unsignedByte(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 unsigned char * SOAP_FMAC4 soap_get_unsignedByte(struct soap*, unsigned char *, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_unsignedShort +#define SOAP_TYPE_interswitch_unsignedShort (50) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_unsignedShort(struct soap*, unsigned short *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_unsignedShort(struct soap*, const char*, int, const unsigned short *, const char*); +SOAP_FMAC3 unsigned short * SOAP_FMAC4 soap_in_unsignedShort(struct soap*, const char*, unsigned short *, const char*); + +#define soap_write_unsignedShort(soap, data) ( soap_begin_send(soap) || interswitch::soap_put_unsignedShort(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_unsignedShort(struct soap*, const unsigned short *, const char*, const char*); + +#define soap_read_unsignedShort(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_unsignedShort(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 unsigned short * SOAP_FMAC4 soap_get_unsignedShort(struct soap*, unsigned short *, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_unsignedInt +#define SOAP_TYPE_interswitch_unsignedInt (20) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_unsignedInt(struct soap*, unsigned int *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_unsignedInt(struct soap*, const char*, int, const unsigned int *, const char*); +SOAP_FMAC3 unsigned int * SOAP_FMAC4 soap_in_unsignedInt(struct soap*, const char*, unsigned int *, const char*); + +#define soap_write_unsignedInt(soap, data) ( soap_begin_send(soap) || interswitch::soap_put_unsignedInt(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_unsignedInt(struct soap*, const unsigned int *, const char*, const char*); + +#define soap_read_unsignedInt(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_unsignedInt(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 unsigned int * SOAP_FMAC4 soap_get_unsignedInt(struct soap*, unsigned int *, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_unsignedLONG64 +#define SOAP_TYPE_interswitch_unsignedLONG64 (48) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_unsignedLONG64(struct soap*, ULONG64 *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_unsignedLONG64(struct soap*, const char*, int, const ULONG64 *, const char*); +SOAP_FMAC3 ULONG64 * SOAP_FMAC4 soap_in_unsignedLONG64(struct soap*, const char*, ULONG64 *, const char*); + +#define soap_write_unsignedLONG64(soap, data) ( soap_begin_send(soap) || interswitch::soap_put_unsignedLONG64(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_unsignedLONG64(struct soap*, const ULONG64 *, const char*, const char*); + +#define soap_read_unsignedLONG64(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_unsignedLONG64(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 ULONG64 * SOAP_FMAC4 soap_get_unsignedLONG64(struct soap*, ULONG64 *, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_time +#define SOAP_TYPE_interswitch_time (29) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_time(struct soap*, time_t *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_time(struct soap*, const char*, int, const time_t *, const char*); +SOAP_FMAC3 time_t * SOAP_FMAC4 soap_in_time(struct soap*, const char*, time_t *, const char*); + +#define soap_write_time(soap, data) ( soap_begin_send(soap) || interswitch::soap_put_time(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_time(struct soap*, const time_t *, const char*, const char*); + +#define soap_read_time(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_time(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 time_t * SOAP_FMAC4 soap_get_time(struct soap*, time_t *, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_bool +#define SOAP_TYPE_interswitch_bool (25) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_bool(struct soap*, bool *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_bool(struct soap*, const char*, int, const bool *, const char*); + +SOAP_FMAC3S const char* SOAP_FMAC4S soap_bool2s(struct soap*, bool); +SOAP_FMAC3 bool * SOAP_FMAC4 soap_in_bool(struct soap*, const char*, bool *, const char*); + +SOAP_FMAC3S int SOAP_FMAC4S soap_s2bool(struct soap*, const char*, bool *); + +#define soap_write_bool(soap, data) ( soap_begin_send(soap) || interswitch::soap_put_bool(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_bool(struct soap*, const bool *, const char*, const char*); + +#define soap_read_bool(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_bool(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 bool * SOAP_FMAC4 soap_get_bool(struct soap*, bool *, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_interswitch2__guid__ +#define SOAP_TYPE_interswitch_interswitch2__guid__ (134) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_interswitch2__guid__(struct soap*, const char*, int, const interswitch2__guid__ *, const char*); +SOAP_FMAC3 interswitch2__guid__ * SOAP_FMAC4 soap_in_interswitch2__guid__(struct soap*, const char*, interswitch2__guid__ *, const char*); + +#define soap_write_interswitch2__guid__(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_interswitch2__guid__(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_interswitch2__guid__(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 interswitch2__guid__ * SOAP_FMAC4 soap_get_interswitch2__guid__(struct soap*, interswitch2__guid__ *, const char*, const char*); + +#define soap_new_interswitch2__guid__(soap, n) soap_instantiate_interswitch2__guid__(soap, n, NULL, NULL, NULL) + + +#define soap_delete_interswitch2__guid__(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 interswitch2__guid__ * SOAP_FMAC2 soap_instantiate_interswitch2__guid__(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_interswitch2__guid__(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_interswitch2__guid +#define SOAP_TYPE_interswitch_interswitch2__guid (133) +#endif + +#define soap_default_interswitch2__guid(soap, a) soap_default_std__string(soap, a) + + +#define soap_serialize_interswitch2__guid(soap, a) soap_serialize_std__string(soap, a) + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_interswitch2__guid(struct soap*, const char*, int, const std::string*, const char*); +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_interswitch2__guid(struct soap*, const char*, std::string*, const char*); + +#define soap_write_interswitch2__guid(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_interswitch2__guid(struct soap*, const std::string *, const char*, const char*); + +#define soap_read_interswitch2__guid(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_interswitch2__guid(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_interswitch2__guid(struct soap*, std::string *, const char*, const char*); + +#define soap_new_interswitch2__guid(soap, n) soap_instantiate_interswitch2__guid(soap, n, NULL, NULL, NULL) + + +#define soap_delete_interswitch2__guid(soap, p) soap_delete(soap, p) + + +#define soap_instantiate_interswitch2__guid soap_instantiate_std__string + + +#define soap_copy_interswitch2__guid soap_copy_std__string + +#ifndef SOAP_TYPE_interswitch_interswitch2__duration__ +#define SOAP_TYPE_interswitch_interswitch2__duration__ (132) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_interswitch2__duration__(struct soap*, const char*, int, const interswitch2__duration__ *, const char*); +SOAP_FMAC3 interswitch2__duration__ * SOAP_FMAC4 soap_in_interswitch2__duration__(struct soap*, const char*, interswitch2__duration__ *, const char*); + +#define soap_write_interswitch2__duration__(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_interswitch2__duration__(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_interswitch2__duration__(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 interswitch2__duration__ * SOAP_FMAC4 soap_get_interswitch2__duration__(struct soap*, interswitch2__duration__ *, const char*, const char*); + +#define soap_new_interswitch2__duration__(soap, n) soap_instantiate_interswitch2__duration__(soap, n, NULL, NULL, NULL) + + +#define soap_delete_interswitch2__duration__(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 interswitch2__duration__ * SOAP_FMAC2 soap_instantiate_interswitch2__duration__(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_interswitch2__duration__(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_interswitch2__duration +#define SOAP_TYPE_interswitch_interswitch2__duration (131) +#endif + +#define soap_default_interswitch2__duration(soap, a) soap_default_std__string(soap, a) + + +#define soap_serialize_interswitch2__duration(soap, a) soap_serialize_std__string(soap, a) + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_interswitch2__duration(struct soap*, const char*, int, const std::string*, const char*); +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_interswitch2__duration(struct soap*, const char*, std::string*, const char*); + +#define soap_write_interswitch2__duration(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_interswitch2__duration(struct soap*, const std::string *, const char*, const char*); + +#define soap_read_interswitch2__duration(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_interswitch2__duration(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_interswitch2__duration(struct soap*, std::string *, const char*, const char*); + +#define soap_new_interswitch2__duration(soap, n) soap_instantiate_interswitch2__duration(soap, n, NULL, NULL, NULL) + + +#define soap_delete_interswitch2__duration(soap, p) soap_delete(soap, p) + + +#define soap_instantiate_interswitch2__duration soap_instantiate_std__string + + +#define soap_copy_interswitch2__duration soap_copy_std__string + +#ifndef SOAP_TYPE_interswitch_interswitch2__char__ +#define SOAP_TYPE_interswitch_interswitch2__char__ (130) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_interswitch2__char__(struct soap*, const char*, int, const interswitch2__char__ *, const char*); +SOAP_FMAC3 interswitch2__char__ * SOAP_FMAC4 soap_in_interswitch2__char__(struct soap*, const char*, interswitch2__char__ *, const char*); + +#define soap_write_interswitch2__char__(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_interswitch2__char__(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_interswitch2__char__(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 interswitch2__char__ * SOAP_FMAC4 soap_get_interswitch2__char__(struct soap*, interswitch2__char__ *, const char*, const char*); + +#define soap_new_interswitch2__char__(soap, n) soap_instantiate_interswitch2__char__(soap, n, NULL, NULL, NULL) + + +#define soap_delete_interswitch2__char__(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 interswitch2__char__ * SOAP_FMAC2 soap_instantiate_interswitch2__char__(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_interswitch2__char__(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse +#define SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse (128) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__VerifyBillerResponse(struct soap*, const char*, int, const _interswitch__VerifyBillerResponse *, const char*); +SOAP_FMAC3 _interswitch__VerifyBillerResponse * SOAP_FMAC4 soap_in__interswitch__VerifyBillerResponse(struct soap*, const char*, _interswitch__VerifyBillerResponse *, const char*); + +#define soap_write__interswitch__VerifyBillerResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__VerifyBillerResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__VerifyBillerResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__VerifyBillerResponse * SOAP_FMAC4 soap_get__interswitch__VerifyBillerResponse(struct soap*, _interswitch__VerifyBillerResponse *, const char*, const char*); + +#define soap_new__interswitch__VerifyBillerResponse(soap, n) soap_instantiate__interswitch__VerifyBillerResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__VerifyBillerResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__VerifyBillerResponse * SOAP_FMAC2 soap_instantiate__interswitch__VerifyBillerResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__VerifyBillerResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__VerifyBiller +#define SOAP_TYPE_interswitch__interswitch__VerifyBiller (127) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__VerifyBiller(struct soap*, const char*, int, const _interswitch__VerifyBiller *, const char*); +SOAP_FMAC3 _interswitch__VerifyBiller * SOAP_FMAC4 soap_in__interswitch__VerifyBiller(struct soap*, const char*, _interswitch__VerifyBiller *, const char*); + +#define soap_write__interswitch__VerifyBiller(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__VerifyBiller(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__VerifyBiller(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__VerifyBiller * SOAP_FMAC4 soap_get__interswitch__VerifyBiller(struct soap*, _interswitch__VerifyBiller *, const char*, const char*); + +#define soap_new__interswitch__VerifyBiller(soap, n) soap_instantiate__interswitch__VerifyBiller(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__VerifyBiller(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__VerifyBiller * SOAP_FMAC2 soap_instantiate__interswitch__VerifyBiller(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__VerifyBiller(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__CreateBillerResponse +#define SOAP_TYPE_interswitch__interswitch__CreateBillerResponse (126) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__CreateBillerResponse(struct soap*, const char*, int, const _interswitch__CreateBillerResponse *, const char*); +SOAP_FMAC3 _interswitch__CreateBillerResponse * SOAP_FMAC4 soap_in__interswitch__CreateBillerResponse(struct soap*, const char*, _interswitch__CreateBillerResponse *, const char*); + +#define soap_write__interswitch__CreateBillerResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__CreateBillerResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__CreateBillerResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__CreateBillerResponse * SOAP_FMAC4 soap_get__interswitch__CreateBillerResponse(struct soap*, _interswitch__CreateBillerResponse *, const char*, const char*); + +#define soap_new__interswitch__CreateBillerResponse(soap, n) soap_instantiate__interswitch__CreateBillerResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__CreateBillerResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__CreateBillerResponse * SOAP_FMAC2 soap_instantiate__interswitch__CreateBillerResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__CreateBillerResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__CreateBiller +#define SOAP_TYPE_interswitch__interswitch__CreateBiller (125) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__CreateBiller(struct soap*, const char*, int, const _interswitch__CreateBiller *, const char*); +SOAP_FMAC3 _interswitch__CreateBiller * SOAP_FMAC4 soap_in__interswitch__CreateBiller(struct soap*, const char*, _interswitch__CreateBiller *, const char*); + +#define soap_write__interswitch__CreateBiller(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__CreateBiller(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__CreateBiller(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__CreateBiller * SOAP_FMAC4 soap_get__interswitch__CreateBiller(struct soap*, _interswitch__CreateBiller *, const char*, const char*); + +#define soap_new__interswitch__CreateBiller(soap, n) soap_instantiate__interswitch__CreateBiller(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__CreateBiller(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__CreateBiller * SOAP_FMAC2 soap_instantiate__interswitch__CreateBiller(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__CreateBiller(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse +#define SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse (124) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__DoCustomProcessingResponse(struct soap*, const char*, int, const _interswitch__DoCustomProcessingResponse *, const char*); +SOAP_FMAC3 _interswitch__DoCustomProcessingResponse * SOAP_FMAC4 soap_in__interswitch__DoCustomProcessingResponse(struct soap*, const char*, _interswitch__DoCustomProcessingResponse *, const char*); + +#define soap_write__interswitch__DoCustomProcessingResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__DoCustomProcessingResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__DoCustomProcessingResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__DoCustomProcessingResponse * SOAP_FMAC4 soap_get__interswitch__DoCustomProcessingResponse(struct soap*, _interswitch__DoCustomProcessingResponse *, const char*, const char*); + +#define soap_new__interswitch__DoCustomProcessingResponse(soap, n) soap_instantiate__interswitch__DoCustomProcessingResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__DoCustomProcessingResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__DoCustomProcessingResponse * SOAP_FMAC2 soap_instantiate__interswitch__DoCustomProcessingResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__DoCustomProcessingResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__DoCustomProcessing +#define SOAP_TYPE_interswitch__interswitch__DoCustomProcessing (123) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__DoCustomProcessing(struct soap*, const char*, int, const _interswitch__DoCustomProcessing *, const char*); +SOAP_FMAC3 _interswitch__DoCustomProcessing * SOAP_FMAC4 soap_in__interswitch__DoCustomProcessing(struct soap*, const char*, _interswitch__DoCustomProcessing *, const char*); + +#define soap_write__interswitch__DoCustomProcessing(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__DoCustomProcessing(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__DoCustomProcessing(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__DoCustomProcessing * SOAP_FMAC4 soap_get__interswitch__DoCustomProcessing(struct soap*, _interswitch__DoCustomProcessing *, const char*, const char*); + +#define soap_new__interswitch__DoCustomProcessing(soap, n) soap_instantiate__interswitch__DoCustomProcessing(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__DoCustomProcessing(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__DoCustomProcessing * SOAP_FMAC2 soap_instantiate__interswitch__DoCustomProcessing(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__DoCustomProcessing(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse +#define SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse (122) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ResendActivationTokenResponse(struct soap*, const char*, int, const _interswitch__ResendActivationTokenResponse *, const char*); +SOAP_FMAC3 _interswitch__ResendActivationTokenResponse * SOAP_FMAC4 soap_in__interswitch__ResendActivationTokenResponse(struct soap*, const char*, _interswitch__ResendActivationTokenResponse *, const char*); + +#define soap_write__interswitch__ResendActivationTokenResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__ResendActivationTokenResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__ResendActivationTokenResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ResendActivationTokenResponse * SOAP_FMAC4 soap_get__interswitch__ResendActivationTokenResponse(struct soap*, _interswitch__ResendActivationTokenResponse *, const char*, const char*); + +#define soap_new__interswitch__ResendActivationTokenResponse(soap, n) soap_instantiate__interswitch__ResendActivationTokenResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__ResendActivationTokenResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__ResendActivationTokenResponse * SOAP_FMAC2 soap_instantiate__interswitch__ResendActivationTokenResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ResendActivationTokenResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__ResendActivationToken +#define SOAP_TYPE_interswitch__interswitch__ResendActivationToken (121) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ResendActivationToken(struct soap*, const char*, int, const _interswitch__ResendActivationToken *, const char*); +SOAP_FMAC3 _interswitch__ResendActivationToken * SOAP_FMAC4 soap_in__interswitch__ResendActivationToken(struct soap*, const char*, _interswitch__ResendActivationToken *, const char*); + +#define soap_write__interswitch__ResendActivationToken(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__ResendActivationToken(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__ResendActivationToken(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ResendActivationToken * SOAP_FMAC4 soap_get__interswitch__ResendActivationToken(struct soap*, _interswitch__ResendActivationToken *, const char*, const char*); + +#define soap_new__interswitch__ResendActivationToken(soap, n) soap_instantiate__interswitch__ResendActivationToken(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__ResendActivationToken(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__ResendActivationToken * SOAP_FMAC2 soap_instantiate__interswitch__ResendActivationToken(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ResendActivationToken(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse +#define SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse (120) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__EditCustomerBillerAccountResponse(struct soap*, const char*, int, const _interswitch__EditCustomerBillerAccountResponse *, const char*); +SOAP_FMAC3 _interswitch__EditCustomerBillerAccountResponse * SOAP_FMAC4 soap_in__interswitch__EditCustomerBillerAccountResponse(struct soap*, const char*, _interswitch__EditCustomerBillerAccountResponse *, const char*); + +#define soap_write__interswitch__EditCustomerBillerAccountResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__EditCustomerBillerAccountResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__EditCustomerBillerAccountResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__EditCustomerBillerAccountResponse * SOAP_FMAC4 soap_get__interswitch__EditCustomerBillerAccountResponse(struct soap*, _interswitch__EditCustomerBillerAccountResponse *, const char*, const char*); + +#define soap_new__interswitch__EditCustomerBillerAccountResponse(soap, n) soap_instantiate__interswitch__EditCustomerBillerAccountResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__EditCustomerBillerAccountResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__EditCustomerBillerAccountResponse * SOAP_FMAC2 soap_instantiate__interswitch__EditCustomerBillerAccountResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__EditCustomerBillerAccountResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount +#define SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount (119) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__EditCustomerBillerAccount(struct soap*, const char*, int, const _interswitch__EditCustomerBillerAccount *, const char*); +SOAP_FMAC3 _interswitch__EditCustomerBillerAccount * SOAP_FMAC4 soap_in__interswitch__EditCustomerBillerAccount(struct soap*, const char*, _interswitch__EditCustomerBillerAccount *, const char*); + +#define soap_write__interswitch__EditCustomerBillerAccount(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__EditCustomerBillerAccount(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__EditCustomerBillerAccount(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__EditCustomerBillerAccount * SOAP_FMAC4 soap_get__interswitch__EditCustomerBillerAccount(struct soap*, _interswitch__EditCustomerBillerAccount *, const char*, const char*); + +#define soap_new__interswitch__EditCustomerBillerAccount(soap, n) soap_instantiate__interswitch__EditCustomerBillerAccount(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__EditCustomerBillerAccount(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__EditCustomerBillerAccount * SOAP_FMAC2 soap_instantiate__interswitch__EditCustomerBillerAccount(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__EditCustomerBillerAccount(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse +#define SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse (118) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetBillersCollectionsAccountResponse(struct soap*, const char*, int, const _interswitch__GetBillersCollectionsAccountResponse *, const char*); +SOAP_FMAC3 _interswitch__GetBillersCollectionsAccountResponse * SOAP_FMAC4 soap_in__interswitch__GetBillersCollectionsAccountResponse(struct soap*, const char*, _interswitch__GetBillersCollectionsAccountResponse *, const char*); + +#define soap_write__interswitch__GetBillersCollectionsAccountResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetBillersCollectionsAccountResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetBillersCollectionsAccountResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetBillersCollectionsAccountResponse * SOAP_FMAC4 soap_get__interswitch__GetBillersCollectionsAccountResponse(struct soap*, _interswitch__GetBillersCollectionsAccountResponse *, const char*, const char*); + +#define soap_new__interswitch__GetBillersCollectionsAccountResponse(soap, n) soap_instantiate__interswitch__GetBillersCollectionsAccountResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetBillersCollectionsAccountResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetBillersCollectionsAccountResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetBillersCollectionsAccountResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetBillersCollectionsAccountResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount +#define SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount (117) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetBillersCollectionsAccount(struct soap*, const char*, int, const _interswitch__GetBillersCollectionsAccount *, const char*); +SOAP_FMAC3 _interswitch__GetBillersCollectionsAccount * SOAP_FMAC4 soap_in__interswitch__GetBillersCollectionsAccount(struct soap*, const char*, _interswitch__GetBillersCollectionsAccount *, const char*); + +#define soap_write__interswitch__GetBillersCollectionsAccount(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetBillersCollectionsAccount(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetBillersCollectionsAccount(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetBillersCollectionsAccount * SOAP_FMAC4 soap_get__interswitch__GetBillersCollectionsAccount(struct soap*, _interswitch__GetBillersCollectionsAccount *, const char*, const char*); + +#define soap_new__interswitch__GetBillersCollectionsAccount(soap, n) soap_instantiate__interswitch__GetBillersCollectionsAccount(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetBillersCollectionsAccount(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetBillersCollectionsAccount * SOAP_FMAC2 soap_instantiate__interswitch__GetBillersCollectionsAccount(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetBillersCollectionsAccount(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse +#define SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse (116) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetCollectionsAccountResponse(struct soap*, const char*, int, const _interswitch__GetCollectionsAccountResponse *, const char*); +SOAP_FMAC3 _interswitch__GetCollectionsAccountResponse * SOAP_FMAC4 soap_in__interswitch__GetCollectionsAccountResponse(struct soap*, const char*, _interswitch__GetCollectionsAccountResponse *, const char*); + +#define soap_write__interswitch__GetCollectionsAccountResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetCollectionsAccountResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetCollectionsAccountResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetCollectionsAccountResponse * SOAP_FMAC4 soap_get__interswitch__GetCollectionsAccountResponse(struct soap*, _interswitch__GetCollectionsAccountResponse *, const char*, const char*); + +#define soap_new__interswitch__GetCollectionsAccountResponse(soap, n) soap_instantiate__interswitch__GetCollectionsAccountResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetCollectionsAccountResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetCollectionsAccountResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetCollectionsAccountResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetCollectionsAccountResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount +#define SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount (115) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetCollectionsAccount(struct soap*, const char*, int, const _interswitch__GetCollectionsAccount *, const char*); +SOAP_FMAC3 _interswitch__GetCollectionsAccount * SOAP_FMAC4 soap_in__interswitch__GetCollectionsAccount(struct soap*, const char*, _interswitch__GetCollectionsAccount *, const char*); + +#define soap_write__interswitch__GetCollectionsAccount(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetCollectionsAccount(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetCollectionsAccount(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetCollectionsAccount * SOAP_FMAC4 soap_get__interswitch__GetCollectionsAccount(struct soap*, _interswitch__GetCollectionsAccount *, const char*, const char*); + +#define soap_new__interswitch__GetCollectionsAccount(soap, n) soap_instantiate__interswitch__GetCollectionsAccount(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetCollectionsAccount(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetCollectionsAccount * SOAP_FMAC2 soap_instantiate__interswitch__GetCollectionsAccount(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetCollectionsAccount(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse +#define SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse (114) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AddBillerCustomerResponse(struct soap*, const char*, int, const _interswitch__AddBillerCustomerResponse *, const char*); +SOAP_FMAC3 _interswitch__AddBillerCustomerResponse * SOAP_FMAC4 soap_in__interswitch__AddBillerCustomerResponse(struct soap*, const char*, _interswitch__AddBillerCustomerResponse *, const char*); + +#define soap_write__interswitch__AddBillerCustomerResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__AddBillerCustomerResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__AddBillerCustomerResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AddBillerCustomerResponse * SOAP_FMAC4 soap_get__interswitch__AddBillerCustomerResponse(struct soap*, _interswitch__AddBillerCustomerResponse *, const char*, const char*); + +#define soap_new__interswitch__AddBillerCustomerResponse(soap, n) soap_instantiate__interswitch__AddBillerCustomerResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__AddBillerCustomerResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__AddBillerCustomerResponse * SOAP_FMAC2 soap_instantiate__interswitch__AddBillerCustomerResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AddBillerCustomerResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__AddBillerCustomer +#define SOAP_TYPE_interswitch__interswitch__AddBillerCustomer (113) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AddBillerCustomer(struct soap*, const char*, int, const _interswitch__AddBillerCustomer *, const char*); +SOAP_FMAC3 _interswitch__AddBillerCustomer * SOAP_FMAC4 soap_in__interswitch__AddBillerCustomer(struct soap*, const char*, _interswitch__AddBillerCustomer *, const char*); + +#define soap_write__interswitch__AddBillerCustomer(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__AddBillerCustomer(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__AddBillerCustomer(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AddBillerCustomer * SOAP_FMAC4 soap_get__interswitch__AddBillerCustomer(struct soap*, _interswitch__AddBillerCustomer *, const char*, const char*); + +#define soap_new__interswitch__AddBillerCustomer(soap, n) soap_instantiate__interswitch__AddBillerCustomer(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__AddBillerCustomer(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__AddBillerCustomer * SOAP_FMAC2 soap_instantiate__interswitch__AddBillerCustomer(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AddBillerCustomer(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse +#define SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse (112) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetCustomerPaymentsResponse(struct soap*, const char*, int, const _interswitch__GetCustomerPaymentsResponse *, const char*); +SOAP_FMAC3 _interswitch__GetCustomerPaymentsResponse * SOAP_FMAC4 soap_in__interswitch__GetCustomerPaymentsResponse(struct soap*, const char*, _interswitch__GetCustomerPaymentsResponse *, const char*); + +#define soap_write__interswitch__GetCustomerPaymentsResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetCustomerPaymentsResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetCustomerPaymentsResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetCustomerPaymentsResponse * SOAP_FMAC4 soap_get__interswitch__GetCustomerPaymentsResponse(struct soap*, _interswitch__GetCustomerPaymentsResponse *, const char*, const char*); + +#define soap_new__interswitch__GetCustomerPaymentsResponse(soap, n) soap_instantiate__interswitch__GetCustomerPaymentsResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetCustomerPaymentsResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetCustomerPaymentsResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetCustomerPaymentsResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetCustomerPaymentsResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetCustomerPayments +#define SOAP_TYPE_interswitch__interswitch__GetCustomerPayments (111) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetCustomerPayments(struct soap*, const char*, int, const _interswitch__GetCustomerPayments *, const char*); +SOAP_FMAC3 _interswitch__GetCustomerPayments * SOAP_FMAC4 soap_in__interswitch__GetCustomerPayments(struct soap*, const char*, _interswitch__GetCustomerPayments *, const char*); + +#define soap_write__interswitch__GetCustomerPayments(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetCustomerPayments(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetCustomerPayments(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetCustomerPayments * SOAP_FMAC4 soap_get__interswitch__GetCustomerPayments(struct soap*, _interswitch__GetCustomerPayments *, const char*, const char*); + +#define soap_new__interswitch__GetCustomerPayments(soap, n) soap_instantiate__interswitch__GetCustomerPayments(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetCustomerPayments(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetCustomerPayments * SOAP_FMAC2 soap_instantiate__interswitch__GetCustomerPayments(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetCustomerPayments(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse +#define SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse (110) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetCustomerBillerAccountsResponse(struct soap*, const char*, int, const _interswitch__GetCustomerBillerAccountsResponse *, const char*); +SOAP_FMAC3 _interswitch__GetCustomerBillerAccountsResponse * SOAP_FMAC4 soap_in__interswitch__GetCustomerBillerAccountsResponse(struct soap*, const char*, _interswitch__GetCustomerBillerAccountsResponse *, const char*); + +#define soap_write__interswitch__GetCustomerBillerAccountsResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetCustomerBillerAccountsResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetCustomerBillerAccountsResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetCustomerBillerAccountsResponse * SOAP_FMAC4 soap_get__interswitch__GetCustomerBillerAccountsResponse(struct soap*, _interswitch__GetCustomerBillerAccountsResponse *, const char*, const char*); + +#define soap_new__interswitch__GetCustomerBillerAccountsResponse(soap, n) soap_instantiate__interswitch__GetCustomerBillerAccountsResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetCustomerBillerAccountsResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetCustomerBillerAccountsResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetCustomerBillerAccountsResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetCustomerBillerAccountsResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts +#define SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts (109) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetCustomerBillerAccounts(struct soap*, const char*, int, const _interswitch__GetCustomerBillerAccounts *, const char*); +SOAP_FMAC3 _interswitch__GetCustomerBillerAccounts * SOAP_FMAC4 soap_in__interswitch__GetCustomerBillerAccounts(struct soap*, const char*, _interswitch__GetCustomerBillerAccounts *, const char*); + +#define soap_write__interswitch__GetCustomerBillerAccounts(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetCustomerBillerAccounts(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetCustomerBillerAccounts(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetCustomerBillerAccounts * SOAP_FMAC4 soap_get__interswitch__GetCustomerBillerAccounts(struct soap*, _interswitch__GetCustomerBillerAccounts *, const char*, const char*); + +#define soap_new__interswitch__GetCustomerBillerAccounts(soap, n) soap_instantiate__interswitch__GetCustomerBillerAccounts(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetCustomerBillerAccounts(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetCustomerBillerAccounts * SOAP_FMAC2 soap_instantiate__interswitch__GetCustomerBillerAccounts(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetCustomerBillerAccounts(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse +#define SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse (108) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AddCustomerBillerAccountResponse(struct soap*, const char*, int, const _interswitch__AddCustomerBillerAccountResponse *, const char*); +SOAP_FMAC3 _interswitch__AddCustomerBillerAccountResponse * SOAP_FMAC4 soap_in__interswitch__AddCustomerBillerAccountResponse(struct soap*, const char*, _interswitch__AddCustomerBillerAccountResponse *, const char*); + +#define soap_write__interswitch__AddCustomerBillerAccountResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__AddCustomerBillerAccountResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__AddCustomerBillerAccountResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AddCustomerBillerAccountResponse * SOAP_FMAC4 soap_get__interswitch__AddCustomerBillerAccountResponse(struct soap*, _interswitch__AddCustomerBillerAccountResponse *, const char*, const char*); + +#define soap_new__interswitch__AddCustomerBillerAccountResponse(soap, n) soap_instantiate__interswitch__AddCustomerBillerAccountResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__AddCustomerBillerAccountResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__AddCustomerBillerAccountResponse * SOAP_FMAC2 soap_instantiate__interswitch__AddCustomerBillerAccountResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AddCustomerBillerAccountResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount +#define SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount (107) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AddCustomerBillerAccount(struct soap*, const char*, int, const _interswitch__AddCustomerBillerAccount *, const char*); +SOAP_FMAC3 _interswitch__AddCustomerBillerAccount * SOAP_FMAC4 soap_in__interswitch__AddCustomerBillerAccount(struct soap*, const char*, _interswitch__AddCustomerBillerAccount *, const char*); + +#define soap_write__interswitch__AddCustomerBillerAccount(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__AddCustomerBillerAccount(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__AddCustomerBillerAccount(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AddCustomerBillerAccount * SOAP_FMAC4 soap_get__interswitch__AddCustomerBillerAccount(struct soap*, _interswitch__AddCustomerBillerAccount *, const char*, const char*); + +#define soap_new__interswitch__AddCustomerBillerAccount(soap, n) soap_instantiate__interswitch__AddCustomerBillerAccount(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__AddCustomerBillerAccount(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__AddCustomerBillerAccount * SOAP_FMAC2 soap_instantiate__interswitch__AddCustomerBillerAccount(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AddCustomerBillerAccount(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse +#define SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse (106) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__SendPaymentsResponse(struct soap*, const char*, int, const _interswitch__SendPaymentsResponse *, const char*); +SOAP_FMAC3 _interswitch__SendPaymentsResponse * SOAP_FMAC4 soap_in__interswitch__SendPaymentsResponse(struct soap*, const char*, _interswitch__SendPaymentsResponse *, const char*); + +#define soap_write__interswitch__SendPaymentsResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__SendPaymentsResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__SendPaymentsResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__SendPaymentsResponse * SOAP_FMAC4 soap_get__interswitch__SendPaymentsResponse(struct soap*, _interswitch__SendPaymentsResponse *, const char*, const char*); + +#define soap_new__interswitch__SendPaymentsResponse(soap, n) soap_instantiate__interswitch__SendPaymentsResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__SendPaymentsResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__SendPaymentsResponse * SOAP_FMAC2 soap_instantiate__interswitch__SendPaymentsResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__SendPaymentsResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__SendPayments +#define SOAP_TYPE_interswitch__interswitch__SendPayments (105) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__SendPayments(struct soap*, const char*, int, const _interswitch__SendPayments *, const char*); +SOAP_FMAC3 _interswitch__SendPayments * SOAP_FMAC4 soap_in__interswitch__SendPayments(struct soap*, const char*, _interswitch__SendPayments *, const char*); + +#define soap_write__interswitch__SendPayments(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__SendPayments(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__SendPayments(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__SendPayments * SOAP_FMAC4 soap_get__interswitch__SendPayments(struct soap*, _interswitch__SendPayments *, const char*, const char*); + +#define soap_new__interswitch__SendPayments(soap, n) soap_instantiate__interswitch__SendPayments(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__SendPayments(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__SendPayments * SOAP_FMAC2 soap_instantiate__interswitch__SendPayments(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__SendPayments(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse +#define SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse (104) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__SendBillPaymentAdviceResponse(struct soap*, const char*, int, const _interswitch__SendBillPaymentAdviceResponse *, const char*); +SOAP_FMAC3 _interswitch__SendBillPaymentAdviceResponse * SOAP_FMAC4 soap_in__interswitch__SendBillPaymentAdviceResponse(struct soap*, const char*, _interswitch__SendBillPaymentAdviceResponse *, const char*); + +#define soap_write__interswitch__SendBillPaymentAdviceResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__SendBillPaymentAdviceResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__SendBillPaymentAdviceResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__SendBillPaymentAdviceResponse * SOAP_FMAC4 soap_get__interswitch__SendBillPaymentAdviceResponse(struct soap*, _interswitch__SendBillPaymentAdviceResponse *, const char*, const char*); + +#define soap_new__interswitch__SendBillPaymentAdviceResponse(soap, n) soap_instantiate__interswitch__SendBillPaymentAdviceResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__SendBillPaymentAdviceResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__SendBillPaymentAdviceResponse * SOAP_FMAC2 soap_instantiate__interswitch__SendBillPaymentAdviceResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__SendBillPaymentAdviceResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice +#define SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice (103) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__SendBillPaymentAdvice(struct soap*, const char*, int, const _interswitch__SendBillPaymentAdvice *, const char*); +SOAP_FMAC3 _interswitch__SendBillPaymentAdvice * SOAP_FMAC4 soap_in__interswitch__SendBillPaymentAdvice(struct soap*, const char*, _interswitch__SendBillPaymentAdvice *, const char*); + +#define soap_write__interswitch__SendBillPaymentAdvice(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__SendBillPaymentAdvice(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__SendBillPaymentAdvice(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__SendBillPaymentAdvice * SOAP_FMAC4 soap_get__interswitch__SendBillPaymentAdvice(struct soap*, _interswitch__SendBillPaymentAdvice *, const char*, const char*); + +#define soap_new__interswitch__SendBillPaymentAdvice(soap, n) soap_instantiate__interswitch__SendBillPaymentAdvice(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__SendBillPaymentAdvice(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__SendBillPaymentAdvice * SOAP_FMAC2 soap_instantiate__interswitch__SendBillPaymentAdvice(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__SendBillPaymentAdvice(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse +#define SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse (102) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthenticateCustomerResponse(struct soap*, const char*, int, const _interswitch__AuthenticateCustomerResponse *, const char*); +SOAP_FMAC3 _interswitch__AuthenticateCustomerResponse * SOAP_FMAC4 soap_in__interswitch__AuthenticateCustomerResponse(struct soap*, const char*, _interswitch__AuthenticateCustomerResponse *, const char*); + +#define soap_write__interswitch__AuthenticateCustomerResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__AuthenticateCustomerResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__AuthenticateCustomerResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthenticateCustomerResponse * SOAP_FMAC4 soap_get__interswitch__AuthenticateCustomerResponse(struct soap*, _interswitch__AuthenticateCustomerResponse *, const char*, const char*); + +#define soap_new__interswitch__AuthenticateCustomerResponse(soap, n) soap_instantiate__interswitch__AuthenticateCustomerResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__AuthenticateCustomerResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__AuthenticateCustomerResponse * SOAP_FMAC2 soap_instantiate__interswitch__AuthenticateCustomerResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthenticateCustomerResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer +#define SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer (101) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthenticateCustomer(struct soap*, const char*, int, const _interswitch__AuthenticateCustomer *, const char*); +SOAP_FMAC3 _interswitch__AuthenticateCustomer * SOAP_FMAC4 soap_in__interswitch__AuthenticateCustomer(struct soap*, const char*, _interswitch__AuthenticateCustomer *, const char*); + +#define soap_write__interswitch__AuthenticateCustomer(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__AuthenticateCustomer(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__AuthenticateCustomer(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthenticateCustomer * SOAP_FMAC4 soap_get__interswitch__AuthenticateCustomer(struct soap*, _interswitch__AuthenticateCustomer *, const char*, const char*); + +#define soap_new__interswitch__AuthenticateCustomer(soap, n) soap_instantiate__interswitch__AuthenticateCustomer(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__AuthenticateCustomer(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__AuthenticateCustomer * SOAP_FMAC2 soap_instantiate__interswitch__AuthenticateCustomer(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthenticateCustomer(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse +#define SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse (100) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__DoBillPaymentInquiryResponse(struct soap*, const char*, int, const _interswitch__DoBillPaymentInquiryResponse *, const char*); +SOAP_FMAC3 _interswitch__DoBillPaymentInquiryResponse * SOAP_FMAC4 soap_in__interswitch__DoBillPaymentInquiryResponse(struct soap*, const char*, _interswitch__DoBillPaymentInquiryResponse *, const char*); + +#define soap_write__interswitch__DoBillPaymentInquiryResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__DoBillPaymentInquiryResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__DoBillPaymentInquiryResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__DoBillPaymentInquiryResponse * SOAP_FMAC4 soap_get__interswitch__DoBillPaymentInquiryResponse(struct soap*, _interswitch__DoBillPaymentInquiryResponse *, const char*, const char*); + +#define soap_new__interswitch__DoBillPaymentInquiryResponse(soap, n) soap_instantiate__interswitch__DoBillPaymentInquiryResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__DoBillPaymentInquiryResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__DoBillPaymentInquiryResponse * SOAP_FMAC2 soap_instantiate__interswitch__DoBillPaymentInquiryResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__DoBillPaymentInquiryResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry +#define SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry (99) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__DoBillPaymentInquiry(struct soap*, const char*, int, const _interswitch__DoBillPaymentInquiry *, const char*); +SOAP_FMAC3 _interswitch__DoBillPaymentInquiry * SOAP_FMAC4 soap_in__interswitch__DoBillPaymentInquiry(struct soap*, const char*, _interswitch__DoBillPaymentInquiry *, const char*); + +#define soap_write__interswitch__DoBillPaymentInquiry(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__DoBillPaymentInquiry(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__DoBillPaymentInquiry(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__DoBillPaymentInquiry * SOAP_FMAC4 soap_get__interswitch__DoBillPaymentInquiry(struct soap*, _interswitch__DoBillPaymentInquiry *, const char*, const char*); + +#define soap_new__interswitch__DoBillPaymentInquiry(soap, n) soap_instantiate__interswitch__DoBillPaymentInquiry(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__DoBillPaymentInquiry(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__DoBillPaymentInquiry * SOAP_FMAC2 soap_instantiate__interswitch__DoBillPaymentInquiry(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__DoBillPaymentInquiry(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse +#define SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse (98) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetBillerCategoriesResponse(struct soap*, const char*, int, const _interswitch__GetBillerCategoriesResponse *, const char*); +SOAP_FMAC3 _interswitch__GetBillerCategoriesResponse * SOAP_FMAC4 soap_in__interswitch__GetBillerCategoriesResponse(struct soap*, const char*, _interswitch__GetBillerCategoriesResponse *, const char*); + +#define soap_write__interswitch__GetBillerCategoriesResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetBillerCategoriesResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetBillerCategoriesResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetBillerCategoriesResponse * SOAP_FMAC4 soap_get__interswitch__GetBillerCategoriesResponse(struct soap*, _interswitch__GetBillerCategoriesResponse *, const char*, const char*); + +#define soap_new__interswitch__GetBillerCategoriesResponse(soap, n) soap_instantiate__interswitch__GetBillerCategoriesResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetBillerCategoriesResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetBillerCategoriesResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetBillerCategoriesResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetBillerCategoriesResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetBillerCategories +#define SOAP_TYPE_interswitch__interswitch__GetBillerCategories (97) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetBillerCategories(struct soap*, const char*, int, const _interswitch__GetBillerCategories *, const char*); +SOAP_FMAC3 _interswitch__GetBillerCategories * SOAP_FMAC4 soap_in__interswitch__GetBillerCategories(struct soap*, const char*, _interswitch__GetBillerCategories *, const char*); + +#define soap_write__interswitch__GetBillerCategories(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetBillerCategories(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetBillerCategories(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetBillerCategories * SOAP_FMAC4 soap_get__interswitch__GetBillerCategories(struct soap*, _interswitch__GetBillerCategories *, const char*, const char*); + +#define soap_new__interswitch__GetBillerCategories(soap, n) soap_instantiate__interswitch__GetBillerCategories(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetBillerCategories(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetBillerCategories * SOAP_FMAC2 soap_instantiate__interswitch__GetBillerCategories(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetBillerCategories(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse +#define SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse (96) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetBillerPaymentItemsResponse(struct soap*, const char*, int, const _interswitch__GetBillerPaymentItemsResponse *, const char*); +SOAP_FMAC3 _interswitch__GetBillerPaymentItemsResponse * SOAP_FMAC4 soap_in__interswitch__GetBillerPaymentItemsResponse(struct soap*, const char*, _interswitch__GetBillerPaymentItemsResponse *, const char*); + +#define soap_write__interswitch__GetBillerPaymentItemsResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetBillerPaymentItemsResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetBillerPaymentItemsResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetBillerPaymentItemsResponse * SOAP_FMAC4 soap_get__interswitch__GetBillerPaymentItemsResponse(struct soap*, _interswitch__GetBillerPaymentItemsResponse *, const char*, const char*); + +#define soap_new__interswitch__GetBillerPaymentItemsResponse(soap, n) soap_instantiate__interswitch__GetBillerPaymentItemsResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetBillerPaymentItemsResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetBillerPaymentItemsResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetBillerPaymentItemsResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetBillerPaymentItemsResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems +#define SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems (95) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetBillerPaymentItems(struct soap*, const char*, int, const _interswitch__GetBillerPaymentItems *, const char*); +SOAP_FMAC3 _interswitch__GetBillerPaymentItems * SOAP_FMAC4 soap_in__interswitch__GetBillerPaymentItems(struct soap*, const char*, _interswitch__GetBillerPaymentItems *, const char*); + +#define soap_write__interswitch__GetBillerPaymentItems(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetBillerPaymentItems(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetBillerPaymentItems(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetBillerPaymentItems * SOAP_FMAC4 soap_get__interswitch__GetBillerPaymentItems(struct soap*, _interswitch__GetBillerPaymentItems *, const char*, const char*); + +#define soap_new__interswitch__GetBillerPaymentItems(soap, n) soap_instantiate__interswitch__GetBillerPaymentItems(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetBillerPaymentItems(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetBillerPaymentItems * SOAP_FMAC2 soap_instantiate__interswitch__GetBillerPaymentItems(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetBillerPaymentItems(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse +#define SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse (94) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetFeaturedBillersResponse(struct soap*, const char*, int, const _interswitch__GetFeaturedBillersResponse *, const char*); +SOAP_FMAC3 _interswitch__GetFeaturedBillersResponse * SOAP_FMAC4 soap_in__interswitch__GetFeaturedBillersResponse(struct soap*, const char*, _interswitch__GetFeaturedBillersResponse *, const char*); + +#define soap_write__interswitch__GetFeaturedBillersResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetFeaturedBillersResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetFeaturedBillersResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetFeaturedBillersResponse * SOAP_FMAC4 soap_get__interswitch__GetFeaturedBillersResponse(struct soap*, _interswitch__GetFeaturedBillersResponse *, const char*, const char*); + +#define soap_new__interswitch__GetFeaturedBillersResponse(soap, n) soap_instantiate__interswitch__GetFeaturedBillersResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetFeaturedBillersResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetFeaturedBillersResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetFeaturedBillersResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetFeaturedBillersResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers +#define SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers (93) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetFeaturedBillers(struct soap*, const char*, int, const _interswitch__GetFeaturedBillers *, const char*); +SOAP_FMAC3 _interswitch__GetFeaturedBillers * SOAP_FMAC4 soap_in__interswitch__GetFeaturedBillers(struct soap*, const char*, _interswitch__GetFeaturedBillers *, const char*); + +#define soap_write__interswitch__GetFeaturedBillers(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetFeaturedBillers(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetFeaturedBillers(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetFeaturedBillers * SOAP_FMAC4 soap_get__interswitch__GetFeaturedBillers(struct soap*, _interswitch__GetFeaturedBillers *, const char*, const char*); + +#define soap_new__interswitch__GetFeaturedBillers(soap, n) soap_instantiate__interswitch__GetFeaturedBillers(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetFeaturedBillers(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetFeaturedBillers * SOAP_FMAC2 soap_instantiate__interswitch__GetFeaturedBillers(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetFeaturedBillers(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse +#define SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse (92) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetLatestBillersResponse(struct soap*, const char*, int, const _interswitch__GetLatestBillersResponse *, const char*); +SOAP_FMAC3 _interswitch__GetLatestBillersResponse * SOAP_FMAC4 soap_in__interswitch__GetLatestBillersResponse(struct soap*, const char*, _interswitch__GetLatestBillersResponse *, const char*); + +#define soap_write__interswitch__GetLatestBillersResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetLatestBillersResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetLatestBillersResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetLatestBillersResponse * SOAP_FMAC4 soap_get__interswitch__GetLatestBillersResponse(struct soap*, _interswitch__GetLatestBillersResponse *, const char*, const char*); + +#define soap_new__interswitch__GetLatestBillersResponse(soap, n) soap_instantiate__interswitch__GetLatestBillersResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetLatestBillersResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetLatestBillersResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetLatestBillersResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetLatestBillersResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetLatestBillers +#define SOAP_TYPE_interswitch__interswitch__GetLatestBillers (91) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetLatestBillers(struct soap*, const char*, int, const _interswitch__GetLatestBillers *, const char*); +SOAP_FMAC3 _interswitch__GetLatestBillers * SOAP_FMAC4 soap_in__interswitch__GetLatestBillers(struct soap*, const char*, _interswitch__GetLatestBillers *, const char*); + +#define soap_write__interswitch__GetLatestBillers(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetLatestBillers(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetLatestBillers(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetLatestBillers * SOAP_FMAC4 soap_get__interswitch__GetLatestBillers(struct soap*, _interswitch__GetLatestBillers *, const char*, const char*); + +#define soap_new__interswitch__GetLatestBillers(soap, n) soap_instantiate__interswitch__GetLatestBillers(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetLatestBillers(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetLatestBillers * SOAP_FMAC2 soap_instantiate__interswitch__GetLatestBillers(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetLatestBillers(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetBillersResponse +#define SOAP_TYPE_interswitch__interswitch__GetBillersResponse (90) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetBillersResponse(struct soap*, const char*, int, const _interswitch__GetBillersResponse *, const char*); +SOAP_FMAC3 _interswitch__GetBillersResponse * SOAP_FMAC4 soap_in__interswitch__GetBillersResponse(struct soap*, const char*, _interswitch__GetBillersResponse *, const char*); + +#define soap_write__interswitch__GetBillersResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetBillersResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetBillersResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetBillersResponse * SOAP_FMAC4 soap_get__interswitch__GetBillersResponse(struct soap*, _interswitch__GetBillersResponse *, const char*, const char*); + +#define soap_new__interswitch__GetBillersResponse(soap, n) soap_instantiate__interswitch__GetBillersResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetBillersResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetBillersResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetBillersResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetBillersResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetBillers +#define SOAP_TYPE_interswitch__interswitch__GetBillers (89) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetBillers(struct soap*, const char*, int, const _interswitch__GetBillers *, const char*); +SOAP_FMAC3 _interswitch__GetBillers * SOAP_FMAC4 soap_in__interswitch__GetBillers(struct soap*, const char*, _interswitch__GetBillers *, const char*); + +#define soap_write__interswitch__GetBillers(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetBillers(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetBillers(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetBillers * SOAP_FMAC4 soap_get__interswitch__GetBillers(struct soap*, _interswitch__GetBillers *, const char*, const char*); + +#define soap_new__interswitch__GetBillers(soap, n) soap_instantiate__interswitch__GetBillers(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetBillers(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetBillers * SOAP_FMAC2 soap_instantiate__interswitch__GetBillers(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetBillers(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetUserResponse +#define SOAP_TYPE_interswitch__interswitch__GetUserResponse (88) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetUserResponse(struct soap*, const char*, int, const _interswitch__GetUserResponse *, const char*); +SOAP_FMAC3 _interswitch__GetUserResponse * SOAP_FMAC4 soap_in__interswitch__GetUserResponse(struct soap*, const char*, _interswitch__GetUserResponse *, const char*); + +#define soap_write__interswitch__GetUserResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetUserResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetUserResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetUserResponse * SOAP_FMAC4 soap_get__interswitch__GetUserResponse(struct soap*, _interswitch__GetUserResponse *, const char*, const char*); + +#define soap_new__interswitch__GetUserResponse(soap, n) soap_instantiate__interswitch__GetUserResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetUserResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetUserResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetUserResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetUserResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetUser +#define SOAP_TYPE_interswitch__interswitch__GetUser (87) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetUser(struct soap*, const char*, int, const _interswitch__GetUser *, const char*); +SOAP_FMAC3 _interswitch__GetUser * SOAP_FMAC4 soap_in__interswitch__GetUser(struct soap*, const char*, _interswitch__GetUser *, const char*); + +#define soap_write__interswitch__GetUser(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetUser(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetUser(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetUser * SOAP_FMAC4 soap_get__interswitch__GetUser(struct soap*, _interswitch__GetUser *, const char*, const char*); + +#define soap_new__interswitch__GetUser(soap, n) soap_instantiate__interswitch__GetUser(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetUser(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetUser * SOAP_FMAC2 soap_instantiate__interswitch__GetUser(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetUser(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse +#define SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse (86) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthenticateUserSecurityTokenResponse(struct soap*, const char*, int, const _interswitch__AuthenticateUserSecurityTokenResponse *, const char*); +SOAP_FMAC3 _interswitch__AuthenticateUserSecurityTokenResponse * SOAP_FMAC4 soap_in__interswitch__AuthenticateUserSecurityTokenResponse(struct soap*, const char*, _interswitch__AuthenticateUserSecurityTokenResponse *, const char*); + +#define soap_write__interswitch__AuthenticateUserSecurityTokenResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__AuthenticateUserSecurityTokenResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__AuthenticateUserSecurityTokenResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthenticateUserSecurityTokenResponse * SOAP_FMAC4 soap_get__interswitch__AuthenticateUserSecurityTokenResponse(struct soap*, _interswitch__AuthenticateUserSecurityTokenResponse *, const char*, const char*); + +#define soap_new__interswitch__AuthenticateUserSecurityTokenResponse(soap, n) soap_instantiate__interswitch__AuthenticateUserSecurityTokenResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__AuthenticateUserSecurityTokenResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__AuthenticateUserSecurityTokenResponse * SOAP_FMAC2 soap_instantiate__interswitch__AuthenticateUserSecurityTokenResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthenticateUserSecurityTokenResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken +#define SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken (85) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthenticateUserSecurityToken(struct soap*, const char*, int, const _interswitch__AuthenticateUserSecurityToken *, const char*); +SOAP_FMAC3 _interswitch__AuthenticateUserSecurityToken * SOAP_FMAC4 soap_in__interswitch__AuthenticateUserSecurityToken(struct soap*, const char*, _interswitch__AuthenticateUserSecurityToken *, const char*); + +#define soap_write__interswitch__AuthenticateUserSecurityToken(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__AuthenticateUserSecurityToken(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__AuthenticateUserSecurityToken(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthenticateUserSecurityToken * SOAP_FMAC4 soap_get__interswitch__AuthenticateUserSecurityToken(struct soap*, _interswitch__AuthenticateUserSecurityToken *, const char*, const char*); + +#define soap_new__interswitch__AuthenticateUserSecurityToken(soap, n) soap_instantiate__interswitch__AuthenticateUserSecurityToken(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__AuthenticateUserSecurityToken(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__AuthenticateUserSecurityToken * SOAP_FMAC2 soap_instantiate__interswitch__AuthenticateUserSecurityToken(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthenticateUserSecurityToken(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse +#define SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse (84) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthenticateUserResponse(struct soap*, const char*, int, const _interswitch__AuthenticateUserResponse *, const char*); +SOAP_FMAC3 _interswitch__AuthenticateUserResponse * SOAP_FMAC4 soap_in__interswitch__AuthenticateUserResponse(struct soap*, const char*, _interswitch__AuthenticateUserResponse *, const char*); + +#define soap_write__interswitch__AuthenticateUserResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__AuthenticateUserResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__AuthenticateUserResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthenticateUserResponse * SOAP_FMAC4 soap_get__interswitch__AuthenticateUserResponse(struct soap*, _interswitch__AuthenticateUserResponse *, const char*, const char*); + +#define soap_new__interswitch__AuthenticateUserResponse(soap, n) soap_instantiate__interswitch__AuthenticateUserResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__AuthenticateUserResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__AuthenticateUserResponse * SOAP_FMAC2 soap_instantiate__interswitch__AuthenticateUserResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthenticateUserResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthenticateUser +#define SOAP_TYPE_interswitch__interswitch__AuthenticateUser (83) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthenticateUser(struct soap*, const char*, int, const _interswitch__AuthenticateUser *, const char*); +SOAP_FMAC3 _interswitch__AuthenticateUser * SOAP_FMAC4 soap_in__interswitch__AuthenticateUser(struct soap*, const char*, _interswitch__AuthenticateUser *, const char*); + +#define soap_write__interswitch__AuthenticateUser(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__AuthenticateUser(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__AuthenticateUser(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthenticateUser * SOAP_FMAC4 soap_get__interswitch__AuthenticateUser(struct soap*, _interswitch__AuthenticateUser *, const char*, const char*); + +#define soap_new__interswitch__AuthenticateUser(soap, n) soap_instantiate__interswitch__AuthenticateUser(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__AuthenticateUser(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__AuthenticateUser * SOAP_FMAC2 soap_instantiate__interswitch__AuthenticateUser(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthenticateUser(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse +#define SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse (82) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ResetPasswordResponse(struct soap*, const char*, int, const _interswitch__ResetPasswordResponse *, const char*); +SOAP_FMAC3 _interswitch__ResetPasswordResponse * SOAP_FMAC4 soap_in__interswitch__ResetPasswordResponse(struct soap*, const char*, _interswitch__ResetPasswordResponse *, const char*); + +#define soap_write__interswitch__ResetPasswordResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__ResetPasswordResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__ResetPasswordResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ResetPasswordResponse * SOAP_FMAC4 soap_get__interswitch__ResetPasswordResponse(struct soap*, _interswitch__ResetPasswordResponse *, const char*, const char*); + +#define soap_new__interswitch__ResetPasswordResponse(soap, n) soap_instantiate__interswitch__ResetPasswordResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__ResetPasswordResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__ResetPasswordResponse * SOAP_FMAC2 soap_instantiate__interswitch__ResetPasswordResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ResetPasswordResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__ResetPassword +#define SOAP_TYPE_interswitch__interswitch__ResetPassword (81) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ResetPassword(struct soap*, const char*, int, const _interswitch__ResetPassword *, const char*); +SOAP_FMAC3 _interswitch__ResetPassword * SOAP_FMAC4 soap_in__interswitch__ResetPassword(struct soap*, const char*, _interswitch__ResetPassword *, const char*); + +#define soap_write__interswitch__ResetPassword(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__ResetPassword(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__ResetPassword(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ResetPassword * SOAP_FMAC4 soap_get__interswitch__ResetPassword(struct soap*, _interswitch__ResetPassword *, const char*, const char*); + +#define soap_new__interswitch__ResetPassword(soap, n) soap_instantiate__interswitch__ResetPassword(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__ResetPassword(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__ResetPassword * SOAP_FMAC2 soap_instantiate__interswitch__ResetPassword(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ResetPassword(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse +#define SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse (80) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ChangePasswordResponse(struct soap*, const char*, int, const _interswitch__ChangePasswordResponse *, const char*); +SOAP_FMAC3 _interswitch__ChangePasswordResponse * SOAP_FMAC4 soap_in__interswitch__ChangePasswordResponse(struct soap*, const char*, _interswitch__ChangePasswordResponse *, const char*); + +#define soap_write__interswitch__ChangePasswordResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__ChangePasswordResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__ChangePasswordResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ChangePasswordResponse * SOAP_FMAC4 soap_get__interswitch__ChangePasswordResponse(struct soap*, _interswitch__ChangePasswordResponse *, const char*, const char*); + +#define soap_new__interswitch__ChangePasswordResponse(soap, n) soap_instantiate__interswitch__ChangePasswordResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__ChangePasswordResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__ChangePasswordResponse * SOAP_FMAC2 soap_instantiate__interswitch__ChangePasswordResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ChangePasswordResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__ChangePassword +#define SOAP_TYPE_interswitch__interswitch__ChangePassword (79) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ChangePassword(struct soap*, const char*, int, const _interswitch__ChangePassword *, const char*); +SOAP_FMAC3 _interswitch__ChangePassword * SOAP_FMAC4 soap_in__interswitch__ChangePassword(struct soap*, const char*, _interswitch__ChangePassword *, const char*); + +#define soap_write__interswitch__ChangePassword(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__ChangePassword(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__ChangePassword(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ChangePassword * SOAP_FMAC4 soap_get__interswitch__ChangePassword(struct soap*, _interswitch__ChangePassword *, const char*, const char*); + +#define soap_new__interswitch__ChangePassword(soap, n) soap_instantiate__interswitch__ChangePassword(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__ChangePassword(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__ChangePassword * SOAP_FMAC2 soap_instantiate__interswitch__ChangePassword(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ChangePassword(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__UpdateUserResponse +#define SOAP_TYPE_interswitch__interswitch__UpdateUserResponse (78) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__UpdateUserResponse(struct soap*, const char*, int, const _interswitch__UpdateUserResponse *, const char*); +SOAP_FMAC3 _interswitch__UpdateUserResponse * SOAP_FMAC4 soap_in__interswitch__UpdateUserResponse(struct soap*, const char*, _interswitch__UpdateUserResponse *, const char*); + +#define soap_write__interswitch__UpdateUserResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__UpdateUserResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__UpdateUserResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__UpdateUserResponse * SOAP_FMAC4 soap_get__interswitch__UpdateUserResponse(struct soap*, _interswitch__UpdateUserResponse *, const char*, const char*); + +#define soap_new__interswitch__UpdateUserResponse(soap, n) soap_instantiate__interswitch__UpdateUserResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__UpdateUserResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__UpdateUserResponse * SOAP_FMAC2 soap_instantiate__interswitch__UpdateUserResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__UpdateUserResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__UpdateUser +#define SOAP_TYPE_interswitch__interswitch__UpdateUser (77) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__UpdateUser(struct soap*, const char*, int, const _interswitch__UpdateUser *, const char*); +SOAP_FMAC3 _interswitch__UpdateUser * SOAP_FMAC4 soap_in__interswitch__UpdateUser(struct soap*, const char*, _interswitch__UpdateUser *, const char*); + +#define soap_write__interswitch__UpdateUser(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__UpdateUser(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__UpdateUser(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__UpdateUser * SOAP_FMAC4 soap_get__interswitch__UpdateUser(struct soap*, _interswitch__UpdateUser *, const char*, const char*); + +#define soap_new__interswitch__UpdateUser(soap, n) soap_instantiate__interswitch__UpdateUser(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__UpdateUser(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__UpdateUser * SOAP_FMAC2 soap_instantiate__interswitch__UpdateUser(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__UpdateUser(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__ActivateUserResponse +#define SOAP_TYPE_interswitch__interswitch__ActivateUserResponse (76) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ActivateUserResponse(struct soap*, const char*, int, const _interswitch__ActivateUserResponse *, const char*); +SOAP_FMAC3 _interswitch__ActivateUserResponse * SOAP_FMAC4 soap_in__interswitch__ActivateUserResponse(struct soap*, const char*, _interswitch__ActivateUserResponse *, const char*); + +#define soap_write__interswitch__ActivateUserResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__ActivateUserResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__ActivateUserResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ActivateUserResponse * SOAP_FMAC4 soap_get__interswitch__ActivateUserResponse(struct soap*, _interswitch__ActivateUserResponse *, const char*, const char*); + +#define soap_new__interswitch__ActivateUserResponse(soap, n) soap_instantiate__interswitch__ActivateUserResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__ActivateUserResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__ActivateUserResponse * SOAP_FMAC2 soap_instantiate__interswitch__ActivateUserResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ActivateUserResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__ActivateUser +#define SOAP_TYPE_interswitch__interswitch__ActivateUser (75) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ActivateUser(struct soap*, const char*, int, const _interswitch__ActivateUser *, const char*); +SOAP_FMAC3 _interswitch__ActivateUser * SOAP_FMAC4 soap_in__interswitch__ActivateUser(struct soap*, const char*, _interswitch__ActivateUser *, const char*); + +#define soap_write__interswitch__ActivateUser(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__ActivateUser(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__ActivateUser(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ActivateUser * SOAP_FMAC4 soap_get__interswitch__ActivateUser(struct soap*, _interswitch__ActivateUser *, const char*, const char*); + +#define soap_new__interswitch__ActivateUser(soap, n) soap_instantiate__interswitch__ActivateUser(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__ActivateUser(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__ActivateUser * SOAP_FMAC2 soap_instantiate__interswitch__ActivateUser(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ActivateUser(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__CreateUserResponse +#define SOAP_TYPE_interswitch__interswitch__CreateUserResponse (74) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__CreateUserResponse(struct soap*, const char*, int, const _interswitch__CreateUserResponse *, const char*); +SOAP_FMAC3 _interswitch__CreateUserResponse * SOAP_FMAC4 soap_in__interswitch__CreateUserResponse(struct soap*, const char*, _interswitch__CreateUserResponse *, const char*); + +#define soap_write__interswitch__CreateUserResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__CreateUserResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__CreateUserResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__CreateUserResponse * SOAP_FMAC4 soap_get__interswitch__CreateUserResponse(struct soap*, _interswitch__CreateUserResponse *, const char*, const char*); + +#define soap_new__interswitch__CreateUserResponse(soap, n) soap_instantiate__interswitch__CreateUserResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__CreateUserResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__CreateUserResponse * SOAP_FMAC2 soap_instantiate__interswitch__CreateUserResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__CreateUserResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__CreateUser +#define SOAP_TYPE_interswitch__interswitch__CreateUser (73) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__CreateUser(struct soap*, const char*, int, const _interswitch__CreateUser *, const char*); +SOAP_FMAC3 _interswitch__CreateUser * SOAP_FMAC4 soap_in__interswitch__CreateUser(struct soap*, const char*, _interswitch__CreateUser *, const char*); + +#define soap_write__interswitch__CreateUser(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__CreateUser(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__CreateUser(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__CreateUser * SOAP_FMAC4 soap_get__interswitch__CreateUser(struct soap*, _interswitch__CreateUser *, const char*, const char*); + +#define soap_new__interswitch__CreateUser(soap, n) soap_instantiate__interswitch__CreateUser(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__CreateUser(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__CreateUser * SOAP_FMAC2 soap_instantiate__interswitch__CreateUser(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__CreateUser(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse +#define SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse (72) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetSystemSettingsResponse(struct soap*, const char*, int, const _interswitch__GetSystemSettingsResponse *, const char*); +SOAP_FMAC3 _interswitch__GetSystemSettingsResponse * SOAP_FMAC4 soap_in__interswitch__GetSystemSettingsResponse(struct soap*, const char*, _interswitch__GetSystemSettingsResponse *, const char*); + +#define soap_write__interswitch__GetSystemSettingsResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetSystemSettingsResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetSystemSettingsResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetSystemSettingsResponse * SOAP_FMAC4 soap_get__interswitch__GetSystemSettingsResponse(struct soap*, _interswitch__GetSystemSettingsResponse *, const char*, const char*); + +#define soap_new__interswitch__GetSystemSettingsResponse(soap, n) soap_instantiate__interswitch__GetSystemSettingsResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetSystemSettingsResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetSystemSettingsResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetSystemSettingsResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetSystemSettingsResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetSystemSettings +#define SOAP_TYPE_interswitch__interswitch__GetSystemSettings (71) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetSystemSettings(struct soap*, const char*, int, const _interswitch__GetSystemSettings *, const char*); +SOAP_FMAC3 _interswitch__GetSystemSettings * SOAP_FMAC4 soap_in__interswitch__GetSystemSettings(struct soap*, const char*, _interswitch__GetSystemSettings *, const char*); + +#define soap_write__interswitch__GetSystemSettings(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetSystemSettings(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetSystemSettings(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetSystemSettings * SOAP_FMAC4 soap_get__interswitch__GetSystemSettings(struct soap*, _interswitch__GetSystemSettings *, const char*, const char*); + +#define soap_new__interswitch__GetSystemSettings(soap, n) soap_instantiate__interswitch__GetSystemSettings(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetSystemSettings(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetSystemSettings * SOAP_FMAC2 soap_instantiate__interswitch__GetSystemSettings(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetSystemSettings(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse +#define SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse (70) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__QueryTransactionResponse(struct soap*, const char*, int, const _interswitch__QueryTransactionResponse *, const char*); +SOAP_FMAC3 _interswitch__QueryTransactionResponse * SOAP_FMAC4 soap_in__interswitch__QueryTransactionResponse(struct soap*, const char*, _interswitch__QueryTransactionResponse *, const char*); + +#define soap_write__interswitch__QueryTransactionResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__QueryTransactionResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__QueryTransactionResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__QueryTransactionResponse * SOAP_FMAC4 soap_get__interswitch__QueryTransactionResponse(struct soap*, _interswitch__QueryTransactionResponse *, const char*, const char*); + +#define soap_new__interswitch__QueryTransactionResponse(soap, n) soap_instantiate__interswitch__QueryTransactionResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__QueryTransactionResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__QueryTransactionResponse * SOAP_FMAC2 soap_instantiate__interswitch__QueryTransactionResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__QueryTransactionResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__QueryTransaction +#define SOAP_TYPE_interswitch__interswitch__QueryTransaction (69) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__QueryTransaction(struct soap*, const char*, int, const _interswitch__QueryTransaction *, const char*); +SOAP_FMAC3 _interswitch__QueryTransaction * SOAP_FMAC4 soap_in__interswitch__QueryTransaction(struct soap*, const char*, _interswitch__QueryTransaction *, const char*); + +#define soap_write__interswitch__QueryTransaction(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__QueryTransaction(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__QueryTransaction(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__QueryTransaction * SOAP_FMAC4 soap_get__interswitch__QueryTransaction(struct soap*, _interswitch__QueryTransaction *, const char*, const char*); + +#define soap_new__interswitch__QueryTransaction(soap, n) soap_instantiate__interswitch__QueryTransaction(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__QueryTransaction(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__QueryTransaction * SOAP_FMAC2 soap_instantiate__interswitch__QueryTransaction(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__QueryTransaction(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__StatusCheckResponse +#define SOAP_TYPE_interswitch__interswitch__StatusCheckResponse (68) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__StatusCheckResponse(struct soap*, const char*, int, const _interswitch__StatusCheckResponse *, const char*); +SOAP_FMAC3 _interswitch__StatusCheckResponse * SOAP_FMAC4 soap_in__interswitch__StatusCheckResponse(struct soap*, const char*, _interswitch__StatusCheckResponse *, const char*); + +#define soap_write__interswitch__StatusCheckResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__StatusCheckResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__StatusCheckResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__StatusCheckResponse * SOAP_FMAC4 soap_get__interswitch__StatusCheckResponse(struct soap*, _interswitch__StatusCheckResponse *, const char*, const char*); + +#define soap_new__interswitch__StatusCheckResponse(soap, n) soap_instantiate__interswitch__StatusCheckResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__StatusCheckResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__StatusCheckResponse * SOAP_FMAC2 soap_instantiate__interswitch__StatusCheckResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__StatusCheckResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__StatusCheck +#define SOAP_TYPE_interswitch__interswitch__StatusCheck (67) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__StatusCheck(struct soap*, const char*, int, const _interswitch__StatusCheck *, const char*); +SOAP_FMAC3 _interswitch__StatusCheck * SOAP_FMAC4 soap_in__interswitch__StatusCheck(struct soap*, const char*, _interswitch__StatusCheck *, const char*); + +#define soap_write__interswitch__StatusCheck(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__StatusCheck(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__StatusCheck(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__StatusCheck * SOAP_FMAC4 soap_get__interswitch__StatusCheck(struct soap*, _interswitch__StatusCheck *, const char*, const char*); + +#define soap_new__interswitch__StatusCheck(soap, n) soap_instantiate__interswitch__StatusCheck(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__StatusCheck(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__StatusCheck * SOAP_FMAC2 soap_instantiate__interswitch__StatusCheck(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__StatusCheck(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse +#define SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse (66) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ReverseCashOutResponse(struct soap*, const char*, int, const _interswitch__ReverseCashOutResponse *, const char*); +SOAP_FMAC3 _interswitch__ReverseCashOutResponse * SOAP_FMAC4 soap_in__interswitch__ReverseCashOutResponse(struct soap*, const char*, _interswitch__ReverseCashOutResponse *, const char*); + +#define soap_write__interswitch__ReverseCashOutResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__ReverseCashOutResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__ReverseCashOutResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ReverseCashOutResponse * SOAP_FMAC4 soap_get__interswitch__ReverseCashOutResponse(struct soap*, _interswitch__ReverseCashOutResponse *, const char*, const char*); + +#define soap_new__interswitch__ReverseCashOutResponse(soap, n) soap_instantiate__interswitch__ReverseCashOutResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__ReverseCashOutResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__ReverseCashOutResponse * SOAP_FMAC2 soap_instantiate__interswitch__ReverseCashOutResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ReverseCashOutResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__ReverseCashOut +#define SOAP_TYPE_interswitch__interswitch__ReverseCashOut (65) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ReverseCashOut(struct soap*, const char*, int, const _interswitch__ReverseCashOut *, const char*); +SOAP_FMAC3 _interswitch__ReverseCashOut * SOAP_FMAC4 soap_in__interswitch__ReverseCashOut(struct soap*, const char*, _interswitch__ReverseCashOut *, const char*); + +#define soap_write__interswitch__ReverseCashOut(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__ReverseCashOut(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__ReverseCashOut(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ReverseCashOut * SOAP_FMAC4 soap_get__interswitch__ReverseCashOut(struct soap*, _interswitch__ReverseCashOut *, const char*, const char*); + +#define soap_new__interswitch__ReverseCashOut(soap, n) soap_instantiate__interswitch__ReverseCashOut(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__ReverseCashOut(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__ReverseCashOut * SOAP_FMAC2 soap_instantiate__interswitch__ReverseCashOut(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ReverseCashOut(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse +#define SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse (64) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthoriseAccountCashOutResponse(struct soap*, const char*, int, const _interswitch__AuthoriseAccountCashOutResponse *, const char*); +SOAP_FMAC3 _interswitch__AuthoriseAccountCashOutResponse * SOAP_FMAC4 soap_in__interswitch__AuthoriseAccountCashOutResponse(struct soap*, const char*, _interswitch__AuthoriseAccountCashOutResponse *, const char*); + +#define soap_write__interswitch__AuthoriseAccountCashOutResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__AuthoriseAccountCashOutResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__AuthoriseAccountCashOutResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthoriseAccountCashOutResponse * SOAP_FMAC4 soap_get__interswitch__AuthoriseAccountCashOutResponse(struct soap*, _interswitch__AuthoriseAccountCashOutResponse *, const char*, const char*); + +#define soap_new__interswitch__AuthoriseAccountCashOutResponse(soap, n) soap_instantiate__interswitch__AuthoriseAccountCashOutResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__AuthoriseAccountCashOutResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__AuthoriseAccountCashOutResponse * SOAP_FMAC2 soap_instantiate__interswitch__AuthoriseAccountCashOutResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthoriseAccountCashOutResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut +#define SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut (63) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthoriseAccountCashOut(struct soap*, const char*, int, const _interswitch__AuthoriseAccountCashOut *, const char*); +SOAP_FMAC3 _interswitch__AuthoriseAccountCashOut * SOAP_FMAC4 soap_in__interswitch__AuthoriseAccountCashOut(struct soap*, const char*, _interswitch__AuthoriseAccountCashOut *, const char*); + +#define soap_write__interswitch__AuthoriseAccountCashOut(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__AuthoriseAccountCashOut(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__AuthoriseAccountCashOut(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthoriseAccountCashOut * SOAP_FMAC4 soap_get__interswitch__AuthoriseAccountCashOut(struct soap*, _interswitch__AuthoriseAccountCashOut *, const char*, const char*); + +#define soap_new__interswitch__AuthoriseAccountCashOut(soap, n) soap_instantiate__interswitch__AuthoriseAccountCashOut(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__AuthoriseAccountCashOut(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__AuthoriseAccountCashOut * SOAP_FMAC2 soap_instantiate__interswitch__AuthoriseAccountCashOut(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthoriseAccountCashOut(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse +#define SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse (62) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthoriseCashOutResponse(struct soap*, const char*, int, const _interswitch__AuthoriseCashOutResponse *, const char*); +SOAP_FMAC3 _interswitch__AuthoriseCashOutResponse * SOAP_FMAC4 soap_in__interswitch__AuthoriseCashOutResponse(struct soap*, const char*, _interswitch__AuthoriseCashOutResponse *, const char*); + +#define soap_write__interswitch__AuthoriseCashOutResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__AuthoriseCashOutResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__AuthoriseCashOutResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthoriseCashOutResponse * SOAP_FMAC4 soap_get__interswitch__AuthoriseCashOutResponse(struct soap*, _interswitch__AuthoriseCashOutResponse *, const char*, const char*); + +#define soap_new__interswitch__AuthoriseCashOutResponse(soap, n) soap_instantiate__interswitch__AuthoriseCashOutResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__AuthoriseCashOutResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__AuthoriseCashOutResponse * SOAP_FMAC2 soap_instantiate__interswitch__AuthoriseCashOutResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthoriseCashOutResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut +#define SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut (61) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthoriseCashOut(struct soap*, const char*, int, const _interswitch__AuthoriseCashOut *, const char*); +SOAP_FMAC3 _interswitch__AuthoriseCashOut * SOAP_FMAC4 soap_in__interswitch__AuthoriseCashOut(struct soap*, const char*, _interswitch__AuthoriseCashOut *, const char*); + +#define soap_write__interswitch__AuthoriseCashOut(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__AuthoriseCashOut(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__AuthoriseCashOut(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthoriseCashOut * SOAP_FMAC4 soap_get__interswitch__AuthoriseCashOut(struct soap*, _interswitch__AuthoriseCashOut *, const char*, const char*); + +#define soap_new__interswitch__AuthoriseCashOut(soap, n) soap_instantiate__interswitch__AuthoriseCashOut(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__AuthoriseCashOut(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__AuthoriseCashOut * SOAP_FMAC2 soap_instantiate__interswitch__AuthoriseCashOut(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthoriseCashOut(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__QueryTransferResponse +#define SOAP_TYPE_interswitch__interswitch__QueryTransferResponse (60) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__QueryTransferResponse(struct soap*, const char*, int, const _interswitch__QueryTransferResponse *, const char*); +SOAP_FMAC3 _interswitch__QueryTransferResponse * SOAP_FMAC4 soap_in__interswitch__QueryTransferResponse(struct soap*, const char*, _interswitch__QueryTransferResponse *, const char*); + +#define soap_write__interswitch__QueryTransferResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__QueryTransferResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__QueryTransferResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__QueryTransferResponse * SOAP_FMAC4 soap_get__interswitch__QueryTransferResponse(struct soap*, _interswitch__QueryTransferResponse *, const char*, const char*); + +#define soap_new__interswitch__QueryTransferResponse(soap, n) soap_instantiate__interswitch__QueryTransferResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__QueryTransferResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__QueryTransferResponse * SOAP_FMAC2 soap_instantiate__interswitch__QueryTransferResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__QueryTransferResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__QueryTransfer +#define SOAP_TYPE_interswitch__interswitch__QueryTransfer (59) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__QueryTransfer(struct soap*, const char*, int, const _interswitch__QueryTransfer *, const char*); +SOAP_FMAC3 _interswitch__QueryTransfer * SOAP_FMAC4 soap_in__interswitch__QueryTransfer(struct soap*, const char*, _interswitch__QueryTransfer *, const char*); + +#define soap_write__interswitch__QueryTransfer(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__QueryTransfer(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__QueryTransfer(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__QueryTransfer * SOAP_FMAC4 soap_get__interswitch__QueryTransfer(struct soap*, _interswitch__QueryTransfer *, const char*, const char*); + +#define soap_new__interswitch__QueryTransfer(soap, n) soap_instantiate__interswitch__QueryTransfer(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__QueryTransfer(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__QueryTransfer * SOAP_FMAC2 soap_instantiate__interswitch__QueryTransfer(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__QueryTransfer(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse +#define SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse (58) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__SendSessionKeyResponse(struct soap*, const char*, int, const _interswitch__SendSessionKeyResponse *, const char*); +SOAP_FMAC3 _interswitch__SendSessionKeyResponse * SOAP_FMAC4 soap_in__interswitch__SendSessionKeyResponse(struct soap*, const char*, _interswitch__SendSessionKeyResponse *, const char*); + +#define soap_write__interswitch__SendSessionKeyResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__SendSessionKeyResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__SendSessionKeyResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__SendSessionKeyResponse * SOAP_FMAC4 soap_get__interswitch__SendSessionKeyResponse(struct soap*, _interswitch__SendSessionKeyResponse *, const char*, const char*); + +#define soap_new__interswitch__SendSessionKeyResponse(soap, n) soap_instantiate__interswitch__SendSessionKeyResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__SendSessionKeyResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__SendSessionKeyResponse * SOAP_FMAC2 soap_instantiate__interswitch__SendSessionKeyResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__SendSessionKeyResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__SendSessionKey +#define SOAP_TYPE_interswitch__interswitch__SendSessionKey (57) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__SendSessionKey(struct soap*, const char*, int, const _interswitch__SendSessionKey *, const char*); +SOAP_FMAC3 _interswitch__SendSessionKey * SOAP_FMAC4 soap_in__interswitch__SendSessionKey(struct soap*, const char*, _interswitch__SendSessionKey *, const char*); + +#define soap_write__interswitch__SendSessionKey(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__SendSessionKey(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__SendSessionKey(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__SendSessionKey * SOAP_FMAC4 soap_get__interswitch__SendSessionKey(struct soap*, _interswitch__SendSessionKey *, const char*, const char*); + +#define soap_new__interswitch__SendSessionKey(soap, n) soap_instantiate__interswitch__SendSessionKey(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__SendSessionKey(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__SendSessionKey * SOAP_FMAC2 soap_instantiate__interswitch__SendSessionKey(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__SendSessionKey(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__CancelTransferResponse +#define SOAP_TYPE_interswitch__interswitch__CancelTransferResponse (56) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__CancelTransferResponse(struct soap*, const char*, int, const _interswitch__CancelTransferResponse *, const char*); +SOAP_FMAC3 _interswitch__CancelTransferResponse * SOAP_FMAC4 soap_in__interswitch__CancelTransferResponse(struct soap*, const char*, _interswitch__CancelTransferResponse *, const char*); + +#define soap_write__interswitch__CancelTransferResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__CancelTransferResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__CancelTransferResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__CancelTransferResponse * SOAP_FMAC4 soap_get__interswitch__CancelTransferResponse(struct soap*, _interswitch__CancelTransferResponse *, const char*, const char*); + +#define soap_new__interswitch__CancelTransferResponse(soap, n) soap_instantiate__interswitch__CancelTransferResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__CancelTransferResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__CancelTransferResponse * SOAP_FMAC2 soap_instantiate__interswitch__CancelTransferResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__CancelTransferResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__CancelTransfer +#define SOAP_TYPE_interswitch__interswitch__CancelTransfer (55) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__CancelTransfer(struct soap*, const char*, int, const _interswitch__CancelTransfer *, const char*); +SOAP_FMAC3 _interswitch__CancelTransfer * SOAP_FMAC4 soap_in__interswitch__CancelTransfer(struct soap*, const char*, _interswitch__CancelTransfer *, const char*); + +#define soap_write__interswitch__CancelTransfer(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__CancelTransfer(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__CancelTransfer(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__CancelTransfer * SOAP_FMAC4 soap_get__interswitch__CancelTransfer(struct soap*, _interswitch__CancelTransfer *, const char*, const char*); + +#define soap_new__interswitch__CancelTransfer(soap, n) soap_instantiate__interswitch__CancelTransfer(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__CancelTransfer(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__CancelTransfer * SOAP_FMAC2 soap_instantiate__interswitch__CancelTransfer(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__CancelTransfer(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__DoTransferResponse +#define SOAP_TYPE_interswitch__interswitch__DoTransferResponse (54) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__DoTransferResponse(struct soap*, const char*, int, const _interswitch__DoTransferResponse *, const char*); +SOAP_FMAC3 _interswitch__DoTransferResponse * SOAP_FMAC4 soap_in__interswitch__DoTransferResponse(struct soap*, const char*, _interswitch__DoTransferResponse *, const char*); + +#define soap_write__interswitch__DoTransferResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__DoTransferResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__DoTransferResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__DoTransferResponse * SOAP_FMAC4 soap_get__interswitch__DoTransferResponse(struct soap*, _interswitch__DoTransferResponse *, const char*, const char*); + +#define soap_new__interswitch__DoTransferResponse(soap, n) soap_instantiate__interswitch__DoTransferResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__DoTransferResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__DoTransferResponse * SOAP_FMAC2 soap_instantiate__interswitch__DoTransferResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__DoTransferResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__DoTransfer +#define SOAP_TYPE_interswitch__interswitch__DoTransfer (53) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__DoTransfer(struct soap*, const char*, int, const _interswitch__DoTransfer *, const char*); +SOAP_FMAC3 _interswitch__DoTransfer * SOAP_FMAC4 soap_in__interswitch__DoTransfer(struct soap*, const char*, _interswitch__DoTransfer *, const char*); + +#define soap_write__interswitch__DoTransfer(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__DoTransfer(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__DoTransfer(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__DoTransfer * SOAP_FMAC4 soap_get__interswitch__DoTransfer(struct soap*, _interswitch__DoTransfer *, const char*, const char*); + +#define soap_new__interswitch__DoTransfer(soap, n) soap_instantiate__interswitch__DoTransfer(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__DoTransfer(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__DoTransfer * SOAP_FMAC2 soap_instantiate__interswitch__DoTransfer(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__DoTransfer(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse +#define SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse (52) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ValidateCustomerResponse(struct soap*, const char*, int, const _interswitch__ValidateCustomerResponse *, const char*); +SOAP_FMAC3 _interswitch__ValidateCustomerResponse * SOAP_FMAC4 soap_in__interswitch__ValidateCustomerResponse(struct soap*, const char*, _interswitch__ValidateCustomerResponse *, const char*); + +#define soap_write__interswitch__ValidateCustomerResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__ValidateCustomerResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__ValidateCustomerResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ValidateCustomerResponse * SOAP_FMAC4 soap_get__interswitch__ValidateCustomerResponse(struct soap*, _interswitch__ValidateCustomerResponse *, const char*, const char*); + +#define soap_new__interswitch__ValidateCustomerResponse(soap, n) soap_instantiate__interswitch__ValidateCustomerResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__ValidateCustomerResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__ValidateCustomerResponse * SOAP_FMAC2 soap_instantiate__interswitch__ValidateCustomerResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ValidateCustomerResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__ValidateCustomer +#define SOAP_TYPE_interswitch__interswitch__ValidateCustomer (51) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ValidateCustomer(struct soap*, const char*, int, const _interswitch__ValidateCustomer *, const char*); +SOAP_FMAC3 _interswitch__ValidateCustomer * SOAP_FMAC4 soap_in__interswitch__ValidateCustomer(struct soap*, const char*, _interswitch__ValidateCustomer *, const char*); + +#define soap_write__interswitch__ValidateCustomer(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__ValidateCustomer(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__ValidateCustomer(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ValidateCustomer * SOAP_FMAC4 soap_get__interswitch__ValidateCustomer(struct soap*, _interswitch__ValidateCustomer *, const char*, const char*); + +#define soap_new__interswitch__ValidateCustomer(soap, n) soap_instantiate__interswitch__ValidateCustomer(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__ValidateCustomer(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__ValidateCustomer * SOAP_FMAC2 soap_instantiate__interswitch__ValidateCustomer(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ValidateCustomer(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__unsignedShort +#define SOAP_TYPE_interswitch_xsd__unsignedShort (49) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__unsignedShort(struct soap*, const char*, int, const xsd__unsignedShort *, const char*); +SOAP_FMAC3 xsd__unsignedShort * SOAP_FMAC4 soap_in_xsd__unsignedShort(struct soap*, const char*, xsd__unsignedShort *, const char*); + +#define soap_write_xsd__unsignedShort(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__unsignedShort(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__unsignedShort(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__unsignedShort * SOAP_FMAC4 soap_get_xsd__unsignedShort(struct soap*, xsd__unsignedShort *, const char*, const char*); + +#define soap_new_xsd__unsignedShort(soap, n) soap_instantiate_xsd__unsignedShort(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__unsignedShort(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__unsignedShort * SOAP_FMAC2 soap_instantiate_xsd__unsignedShort(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__unsignedShort(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__unsignedLong +#define SOAP_TYPE_interswitch_xsd__unsignedLong (47) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__unsignedLong(struct soap*, const char*, int, const xsd__unsignedLong *, const char*); +SOAP_FMAC3 xsd__unsignedLong * SOAP_FMAC4 soap_in_xsd__unsignedLong(struct soap*, const char*, xsd__unsignedLong *, const char*); + +#define soap_write_xsd__unsignedLong(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__unsignedLong(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__unsignedLong(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__unsignedLong * SOAP_FMAC4 soap_get_xsd__unsignedLong(struct soap*, xsd__unsignedLong *, const char*, const char*); + +#define soap_new_xsd__unsignedLong(soap, n) soap_instantiate_xsd__unsignedLong(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__unsignedLong(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__unsignedLong * SOAP_FMAC2 soap_instantiate_xsd__unsignedLong(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__unsignedLong(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__unsignedInt +#define SOAP_TYPE_interswitch_xsd__unsignedInt (46) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__unsignedInt(struct soap*, const char*, int, const xsd__unsignedInt *, const char*); +SOAP_FMAC3 xsd__unsignedInt * SOAP_FMAC4 soap_in_xsd__unsignedInt(struct soap*, const char*, xsd__unsignedInt *, const char*); + +#define soap_write_xsd__unsignedInt(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__unsignedInt(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__unsignedInt(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__unsignedInt * SOAP_FMAC4 soap_get_xsd__unsignedInt(struct soap*, xsd__unsignedInt *, const char*, const char*); + +#define soap_new_xsd__unsignedInt(soap, n) soap_instantiate_xsd__unsignedInt(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__unsignedInt(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__unsignedInt * SOAP_FMAC2 soap_instantiate_xsd__unsignedInt(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__unsignedInt(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__unsignedByte_ +#define SOAP_TYPE_interswitch_xsd__unsignedByte_ (45) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__unsignedByte_(struct soap*, const char*, int, const xsd__unsignedByte_ *, const char*); +SOAP_FMAC3 xsd__unsignedByte_ * SOAP_FMAC4 soap_in_xsd__unsignedByte_(struct soap*, const char*, xsd__unsignedByte_ *, const char*); + +#define soap_write_xsd__unsignedByte_(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__unsignedByte_(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__unsignedByte_(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__unsignedByte_ * SOAP_FMAC4 soap_get_xsd__unsignedByte_(struct soap*, xsd__unsignedByte_ *, const char*, const char*); + +#define soap_new_xsd__unsignedByte_(soap, n) soap_instantiate_xsd__unsignedByte_(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__unsignedByte_(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__unsignedByte_ * SOAP_FMAC2 soap_instantiate_xsd__unsignedByte_(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__unsignedByte_(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__string +#define SOAP_TYPE_interswitch_xsd__string (43) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__string(struct soap*, const char*, int, const xsd__string *, const char*); +SOAP_FMAC3 xsd__string * SOAP_FMAC4 soap_in_xsd__string(struct soap*, const char*, xsd__string *, const char*); + +#define soap_write_xsd__string(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__string(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__string(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__string * SOAP_FMAC4 soap_get_xsd__string(struct soap*, xsd__string *, const char*, const char*); + +#define soap_new_xsd__string(soap, n) soap_instantiate_xsd__string(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__string(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__string * SOAP_FMAC2 soap_instantiate_xsd__string(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__string(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__short +#define SOAP_TYPE_interswitch_xsd__short (41) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__short(struct soap*, const char*, int, const xsd__short *, const char*); +SOAP_FMAC3 xsd__short * SOAP_FMAC4 soap_in_xsd__short(struct soap*, const char*, xsd__short *, const char*); + +#define soap_write_xsd__short(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__short(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__short(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__short * SOAP_FMAC4 soap_get_xsd__short(struct soap*, xsd__short *, const char*, const char*); + +#define soap_new_xsd__short(soap, n) soap_instantiate_xsd__short(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__short(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__short * SOAP_FMAC2 soap_instantiate_xsd__short(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__short(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__long +#define SOAP_TYPE_interswitch_xsd__long (39) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__long(struct soap*, const char*, int, const xsd__long *, const char*); +SOAP_FMAC3 xsd__long * SOAP_FMAC4 soap_in_xsd__long(struct soap*, const char*, xsd__long *, const char*); + +#define soap_write_xsd__long(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__long(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__long(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__long * SOAP_FMAC4 soap_get_xsd__long(struct soap*, xsd__long *, const char*, const char*); + +#define soap_new_xsd__long(soap, n) soap_instantiate_xsd__long(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__long(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__long * SOAP_FMAC2 soap_instantiate_xsd__long(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__long(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__int +#define SOAP_TYPE_interswitch_xsd__int (38) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__int(struct soap*, const char*, int, const xsd__int *, const char*); +SOAP_FMAC3 xsd__int * SOAP_FMAC4 soap_in_xsd__int(struct soap*, const char*, xsd__int *, const char*); + +#define soap_write_xsd__int(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__int(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__int(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__int * SOAP_FMAC4 soap_get_xsd__int(struct soap*, xsd__int *, const char*, const char*); + +#define soap_new_xsd__int(soap, n) soap_instantiate_xsd__int(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__int(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__int * SOAP_FMAC2 soap_instantiate_xsd__int(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__int(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__float +#define SOAP_TYPE_interswitch_xsd__float (36) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__float(struct soap*, const char*, int, const xsd__float *, const char*); +SOAP_FMAC3 xsd__float * SOAP_FMAC4 soap_in_xsd__float(struct soap*, const char*, xsd__float *, const char*); + +#define soap_write_xsd__float(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__float(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__float(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__float * SOAP_FMAC4 soap_get_xsd__float(struct soap*, xsd__float *, const char*, const char*); + +#define soap_new_xsd__float(soap, n) soap_instantiate_xsd__float(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__float(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__float * SOAP_FMAC2 soap_instantiate_xsd__float(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__float(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__duration_ +#define SOAP_TYPE_interswitch_xsd__duration_ (35) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__duration_(struct soap*, const char*, int, const xsd__duration_ *, const char*); +SOAP_FMAC3 xsd__duration_ * SOAP_FMAC4 soap_in_xsd__duration_(struct soap*, const char*, xsd__duration_ *, const char*); + +#define soap_write_xsd__duration_(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__duration_(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__duration_(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__duration_ * SOAP_FMAC4 soap_get_xsd__duration_(struct soap*, xsd__duration_ *, const char*, const char*); + +#define soap_new_xsd__duration_(soap, n) soap_instantiate_xsd__duration_(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__duration_(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__duration_ * SOAP_FMAC2 soap_instantiate_xsd__duration_(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__duration_(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__duration +#define SOAP_TYPE_interswitch_xsd__duration (34) +#endif + +#define soap_default_xsd__duration(soap, a) soap_default_std__string(soap, a) + + +#define soap_serialize_xsd__duration(soap, a) soap_serialize_std__string(soap, a) + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__duration(struct soap*, const char*, int, const std::string*, const char*); +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_xsd__duration(struct soap*, const char*, std::string*, const char*); + +#define soap_write_xsd__duration(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__duration(struct soap*, const std::string *, const char*, const char*); + +#define soap_read_xsd__duration(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__duration(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_xsd__duration(struct soap*, std::string *, const char*, const char*); + +#define soap_new_xsd__duration(soap, n) soap_instantiate_xsd__duration(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__duration(soap, p) soap_delete(soap, p) + + +#define soap_instantiate_xsd__duration soap_instantiate_std__string + + +#define soap_copy_xsd__duration soap_copy_std__string + +#ifndef SOAP_TYPE_interswitch_xsd__double +#define SOAP_TYPE_interswitch_xsd__double (32) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__double(struct soap*, const char*, int, const xsd__double *, const char*); +SOAP_FMAC3 xsd__double * SOAP_FMAC4 soap_in_xsd__double(struct soap*, const char*, xsd__double *, const char*); + +#define soap_write_xsd__double(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__double(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__double(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__double * SOAP_FMAC4 soap_get_xsd__double(struct soap*, xsd__double *, const char*, const char*); + +#define soap_new_xsd__double(soap, n) soap_instantiate_xsd__double(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__double(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__double * SOAP_FMAC2 soap_instantiate_xsd__double(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__double(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__decimal_ +#define SOAP_TYPE_interswitch_xsd__decimal_ (31) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__decimal_(struct soap*, const char*, int, const xsd__decimal_ *, const char*); +SOAP_FMAC3 xsd__decimal_ * SOAP_FMAC4 soap_in_xsd__decimal_(struct soap*, const char*, xsd__decimal_ *, const char*); + +#define soap_write_xsd__decimal_(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__decimal_(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__decimal_(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__decimal_ * SOAP_FMAC4 soap_get_xsd__decimal_(struct soap*, xsd__decimal_ *, const char*, const char*); + +#define soap_new_xsd__decimal_(soap, n) soap_instantiate_xsd__decimal_(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__decimal_(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__decimal_ * SOAP_FMAC2 soap_instantiate_xsd__decimal_(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__decimal_(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__decimal +#define SOAP_TYPE_interswitch_xsd__decimal (30) +#endif + +#define soap_default_xsd__decimal(soap, a) soap_default_std__string(soap, a) + + +#define soap_serialize_xsd__decimal(soap, a) soap_serialize_std__string(soap, a) + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__decimal(struct soap*, const char*, int, const std::string*, const char*); +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_xsd__decimal(struct soap*, const char*, std::string*, const char*); + +#define soap_write_xsd__decimal(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__decimal(struct soap*, const std::string *, const char*, const char*); + +#define soap_read_xsd__decimal(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__decimal(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_xsd__decimal(struct soap*, std::string *, const char*, const char*); + +#define soap_new_xsd__decimal(soap, n) soap_instantiate_xsd__decimal(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__decimal(soap, p) soap_delete(soap, p) + + +#define soap_instantiate_xsd__decimal soap_instantiate_std__string + + +#define soap_copy_xsd__decimal soap_copy_std__string + +#ifndef SOAP_TYPE_interswitch_xsd__dateTime +#define SOAP_TYPE_interswitch_xsd__dateTime (28) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__dateTime(struct soap*, const char*, int, const xsd__dateTime *, const char*); +SOAP_FMAC3 xsd__dateTime * SOAP_FMAC4 soap_in_xsd__dateTime(struct soap*, const char*, xsd__dateTime *, const char*); + +#define soap_write_xsd__dateTime(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__dateTime(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__dateTime(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__dateTime * SOAP_FMAC4 soap_get_xsd__dateTime(struct soap*, xsd__dateTime *, const char*, const char*); + +#define soap_new_xsd__dateTime(soap, n) soap_instantiate_xsd__dateTime(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__dateTime(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__dateTime * SOAP_FMAC2 soap_instantiate_xsd__dateTime(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__dateTime(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__byte_ +#define SOAP_TYPE_interswitch_xsd__byte_ (27) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__byte_(struct soap*, const char*, int, const xsd__byte_ *, const char*); +SOAP_FMAC3 xsd__byte_ * SOAP_FMAC4 soap_in_xsd__byte_(struct soap*, const char*, xsd__byte_ *, const char*); + +#define soap_write_xsd__byte_(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__byte_(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__byte_(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__byte_ * SOAP_FMAC4 soap_get_xsd__byte_(struct soap*, xsd__byte_ *, const char*, const char*); + +#define soap_new_xsd__byte_(soap, n) soap_instantiate_xsd__byte_(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__byte_(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__byte_ * SOAP_FMAC2 soap_instantiate_xsd__byte_(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__byte_(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__boolean +#define SOAP_TYPE_interswitch_xsd__boolean (24) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__boolean(struct soap*, const char*, int, const xsd__boolean *, const char*); +SOAP_FMAC3 xsd__boolean * SOAP_FMAC4 soap_in_xsd__boolean(struct soap*, const char*, xsd__boolean *, const char*); + +#define soap_write_xsd__boolean(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__boolean(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__boolean(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__boolean * SOAP_FMAC4 soap_get_xsd__boolean(struct soap*, xsd__boolean *, const char*, const char*); + +#define soap_new_xsd__boolean(soap, n) soap_instantiate_xsd__boolean(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__boolean(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__boolean * SOAP_FMAC2 soap_instantiate_xsd__boolean(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__boolean(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__base64Binary_ +#define SOAP_TYPE_interswitch_xsd__base64Binary_ (23) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__base64Binary_(struct soap*, const char*, int, const xsd__base64Binary_ *, const char*); +SOAP_FMAC3 xsd__base64Binary_ * SOAP_FMAC4 soap_in_xsd__base64Binary_(struct soap*, const char*, xsd__base64Binary_ *, const char*); + +#define soap_write_xsd__base64Binary_(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__base64Binary_(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__base64Binary_(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__base64Binary_ * SOAP_FMAC4 soap_get_xsd__base64Binary_(struct soap*, xsd__base64Binary_ *, const char*, const char*); + +#define soap_new_xsd__base64Binary_(soap, n) soap_instantiate_xsd__base64Binary_(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__base64Binary_(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__base64Binary_ * SOAP_FMAC2 soap_instantiate_xsd__base64Binary_(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__base64Binary_(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__base64Binary +#define SOAP_TYPE_interswitch_xsd__base64Binary (19) +#endif +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__base64Binary(struct soap*, const char*, int, const xsd__base64Binary *, const char*); +SOAP_FMAC3 xsd__base64Binary * SOAP_FMAC4 soap_in_xsd__base64Binary(struct soap*, const char*, xsd__base64Binary *, const char*); + +#define soap_write_xsd__base64Binary(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__base64Binary(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__base64Binary(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__base64Binary * SOAP_FMAC4 soap_get_xsd__base64Binary(struct soap*, xsd__base64Binary *, const char*, const char*); + +#define soap_new_xsd__base64Binary(soap, n) soap_instantiate_xsd__base64Binary(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__base64Binary(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__base64Binary * SOAP_FMAC2 soap_instantiate_xsd__base64Binary(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__base64Binary(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__anyURI_ +#define SOAP_TYPE_interswitch_xsd__anyURI_ (18) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__anyURI_(struct soap*, const char*, int, const xsd__anyURI_ *, const char*); +SOAP_FMAC3 xsd__anyURI_ * SOAP_FMAC4 soap_in_xsd__anyURI_(struct soap*, const char*, xsd__anyURI_ *, const char*); + +#define soap_write_xsd__anyURI_(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__anyURI_(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__anyURI_(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__anyURI_ * SOAP_FMAC4 soap_get_xsd__anyURI_(struct soap*, xsd__anyURI_ *, const char*, const char*); + +#define soap_new_xsd__anyURI_(soap, n) soap_instantiate_xsd__anyURI_(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__anyURI_(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__anyURI_ * SOAP_FMAC2 soap_instantiate_xsd__anyURI_(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__anyURI_(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__anyURI +#define SOAP_TYPE_interswitch_xsd__anyURI (17) +#endif + +#define soap_default_xsd__anyURI(soap, a) soap_default_std__string(soap, a) + + +#define soap_serialize_xsd__anyURI(soap, a) soap_serialize_std__string(soap, a) + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__anyURI(struct soap*, const char*, int, const std::string*, const char*); +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_xsd__anyURI(struct soap*, const char*, std::string*, const char*); + +#define soap_write_xsd__anyURI(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__anyURI(struct soap*, const std::string *, const char*, const char*); + +#define soap_read_xsd__anyURI(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__anyURI(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_xsd__anyURI(struct soap*, std::string *, const char*, const char*); + +#define soap_new_xsd__anyURI(soap, n) soap_instantiate_xsd__anyURI(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__anyURI(soap, p) soap_delete(soap, p) + + +#define soap_instantiate_xsd__anyURI soap_instantiate_std__string + + +#define soap_copy_xsd__anyURI soap_copy_std__string + +#ifndef SOAP_TYPE_interswitch_xsd__QName_ +#define SOAP_TYPE_interswitch_xsd__QName_ (16) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__QName_(struct soap*, const char*, int, const xsd__QName_ *, const char*); +SOAP_FMAC3 xsd__QName_ * SOAP_FMAC4 soap_in_xsd__QName_(struct soap*, const char*, xsd__QName_ *, const char*); + +#define soap_write_xsd__QName_(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__QName_(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__QName_(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__QName_ * SOAP_FMAC4 soap_get_xsd__QName_(struct soap*, xsd__QName_ *, const char*, const char*); + +#define soap_new_xsd__QName_(soap, n) soap_instantiate_xsd__QName_(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__QName_(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__QName_ * SOAP_FMAC2 soap_instantiate_xsd__QName_(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__QName_(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__QName +#define SOAP_TYPE_interswitch_xsd__QName (15) +#endif + +#define soap_default_xsd__QName(soap, a) soap_default_std__string(soap, a) + + +#define soap_serialize_xsd__QName(soap, a) soap_serialize_std__string(soap, a) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__QName(struct soap*, const char*, int, const xsd__QName *, const char*); +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_xsd__QName(struct soap*, const char*, std::string*, const char*); + +#define soap_write_xsd__QName(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__QName(struct soap*, const xsd__QName *, const char*, const char*); + +#define soap_read_xsd__QName(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__QName(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__QName * SOAP_FMAC4 soap_get_xsd__QName(struct soap*, xsd__QName *, const char*, const char*); + +#define soap_new_xsd__QName(soap, n) soap_instantiate_xsd__QName(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__QName(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__QName * SOAP_FMAC2 soap_instantiate_xsd__QName(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__QName(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__IDREF_ +#define SOAP_TYPE_interswitch_xsd__IDREF_ (14) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__IDREF_(struct soap*, const char*, int, const xsd__IDREF_ *, const char*); +SOAP_FMAC3 xsd__IDREF_ * SOAP_FMAC4 soap_in_xsd__IDREF_(struct soap*, const char*, xsd__IDREF_ *, const char*); + +#define soap_write_xsd__IDREF_(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__IDREF_(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__IDREF_(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__IDREF_ * SOAP_FMAC4 soap_get_xsd__IDREF_(struct soap*, xsd__IDREF_ *, const char*, const char*); + +#define soap_new_xsd__IDREF_(soap, n) soap_instantiate_xsd__IDREF_(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__IDREF_(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__IDREF_ * SOAP_FMAC2 soap_instantiate_xsd__IDREF_(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__IDREF_(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__IDREF +#define SOAP_TYPE_interswitch_xsd__IDREF (13) +#endif + +#define soap_default_xsd__IDREF(soap, a) soap_default_std__string(soap, a) + + +#define soap_serialize_xsd__IDREF(soap, a) soap_serialize_std__string(soap, a) + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__IDREF(struct soap*, const char*, int, const std::string*, const char*); +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_xsd__IDREF(struct soap*, const char*, std::string*, const char*); + +#define soap_write_xsd__IDREF(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__IDREF(struct soap*, const std::string *, const char*, const char*); + +#define soap_read_xsd__IDREF(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__IDREF(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_xsd__IDREF(struct soap*, std::string *, const char*, const char*); + +#define soap_new_xsd__IDREF(soap, n) soap_instantiate_xsd__IDREF(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__IDREF(soap, p) soap_delete(soap, p) + + +#define soap_instantiate_xsd__IDREF soap_instantiate_std__string + + +#define soap_copy_xsd__IDREF soap_copy_std__string + +#ifndef SOAP_TYPE_interswitch_xsd__ID_ +#define SOAP_TYPE_interswitch_xsd__ID_ (12) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__ID_(struct soap*, const char*, int, const xsd__ID_ *, const char*); +SOAP_FMAC3 xsd__ID_ * SOAP_FMAC4 soap_in_xsd__ID_(struct soap*, const char*, xsd__ID_ *, const char*); + +#define soap_write_xsd__ID_(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__ID_(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__ID_(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__ID_ * SOAP_FMAC4 soap_get_xsd__ID_(struct soap*, xsd__ID_ *, const char*, const char*); + +#define soap_new_xsd__ID_(soap, n) soap_instantiate_xsd__ID_(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__ID_(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__ID_ * SOAP_FMAC2 soap_instantiate_xsd__ID_(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__ID_(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__ID +#define SOAP_TYPE_interswitch_xsd__ID (11) +#endif + +#define soap_default_xsd__ID(soap, a) soap_default_std__string(soap, a) + + +#define soap_serialize_xsd__ID(soap, a) soap_serialize_std__string(soap, a) + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__ID(struct soap*, const char*, int, const std::string*, const char*); +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_xsd__ID(struct soap*, const char*, std::string*, const char*); + +#define soap_write_xsd__ID(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__ID(struct soap*, const std::string *, const char*, const char*); + +#define soap_read_xsd__ID(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__ID(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_xsd__ID(struct soap*, std::string *, const char*, const char*); + +#define soap_new_xsd__ID(soap, n) soap_instantiate_xsd__ID(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__ID(soap, p) soap_delete(soap, p) + + +#define soap_instantiate_xsd__ID soap_instantiate_std__string + + +#define soap_copy_xsd__ID soap_copy_std__string + +#ifndef SOAP_TYPE_interswitch_std__string +#define SOAP_TYPE_interswitch_std__string (10) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_std__string(struct soap*, std::string *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__string(struct soap*, const std::string *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__string(struct soap*, const char*, int, const std::string*, const char*); +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_std__string(struct soap*, const char*, std::string*, const char*); + +#define soap_write_std__string(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__string(struct soap*, const std::string *, const char*, const char*); + +#define soap_read_std__string(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_std__string(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_std__string(struct soap*, std::string *, const char*, const char*); + +#define soap_new_std__string(soap, n) soap_instantiate_std__string(soap, n, NULL, NULL, NULL) + + +#define soap_delete_std__string(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 std::string * SOAP_FMAC2 soap_instantiate_std__string(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_std__string(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__anyType +#define SOAP_TYPE_interswitch_xsd__anyType (8) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__anyType(struct soap*, const char*, int, const xsd__anyType *, const char*); +SOAP_FMAC3 xsd__anyType * SOAP_FMAC4 soap_in_xsd__anyType(struct soap*, const char*, xsd__anyType *, const char*); + +#define soap_write_xsd__anyType(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__anyType(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__anyType(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__anyType * SOAP_FMAC4 soap_get_xsd__anyType(struct soap*, xsd__anyType *, const char*, const char*); + +#define soap_new_xsd__anyType(soap, n) soap_instantiate_xsd__anyType(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__anyType(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__anyType * SOAP_FMAC2 soap_instantiate_xsd__anyType(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__anyType(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_interswitch_SOAP_ENV__Fault +#define SOAP_TYPE_interswitch_SOAP_ENV__Fault (299) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Fault(struct soap*, struct SOAP_ENV__Fault *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Fault(struct soap*, const struct SOAP_ENV__Fault *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Fault(struct soap*, const char*, int, const struct SOAP_ENV__Fault *, const char*); +SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_in_SOAP_ENV__Fault(struct soap*, const char*, struct SOAP_ENV__Fault *, const char*); + +#define soap_write_SOAP_ENV__Fault(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_SOAP_ENV__Fault(soap, data), 0) || interswitch::soap_put_SOAP_ENV__Fault(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Fault(struct soap*, const struct SOAP_ENV__Fault *, const char*, const char*); + +#define soap_read_SOAP_ENV__Fault(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_SOAP_ENV__Fault(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_get_SOAP_ENV__Fault(struct soap*, struct SOAP_ENV__Fault *, const char*, const char*); + +#define soap_new_SOAP_ENV__Fault(soap, n) soap_instantiate_SOAP_ENV__Fault(soap, n, NULL, NULL, NULL) + + +#define soap_delete_SOAP_ENV__Fault(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct SOAP_ENV__Fault * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Fault(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Fault(struct soap*, int, int, void*, size_t, const void*, size_t); + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_interswitch_SOAP_ENV__Reason +#define SOAP_TYPE_interswitch_SOAP_ENV__Reason (298) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Reason(struct soap*, const struct SOAP_ENV__Reason *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Reason(struct soap*, const char*, int, const struct SOAP_ENV__Reason *, const char*); +SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_in_SOAP_ENV__Reason(struct soap*, const char*, struct SOAP_ENV__Reason *, const char*); + +#define soap_write_SOAP_ENV__Reason(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_SOAP_ENV__Reason(soap, data), 0) || interswitch::soap_put_SOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Reason(struct soap*, const struct SOAP_ENV__Reason *, const char*, const char*); + +#define soap_read_SOAP_ENV__Reason(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_SOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_get_SOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *, const char*, const char*); + +#define soap_new_SOAP_ENV__Reason(soap, n) soap_instantiate_SOAP_ENV__Reason(soap, n, NULL, NULL, NULL) + + +#define soap_delete_SOAP_ENV__Reason(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct SOAP_ENV__Reason * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Reason(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Reason(struct soap*, int, int, void*, size_t, const void*, size_t); + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_interswitch_SOAP_ENV__Detail +#define SOAP_TYPE_interswitch_SOAP_ENV__Detail (295) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Detail(struct soap*, const struct SOAP_ENV__Detail *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Detail(struct soap*, const char*, int, const struct SOAP_ENV__Detail *, const char*); +SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_in_SOAP_ENV__Detail(struct soap*, const char*, struct SOAP_ENV__Detail *, const char*); + +#define soap_write_SOAP_ENV__Detail(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_SOAP_ENV__Detail(soap, data), 0) || interswitch::soap_put_SOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Detail(struct soap*, const struct SOAP_ENV__Detail *, const char*, const char*); + +#define soap_read_SOAP_ENV__Detail(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_SOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_get_SOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *, const char*, const char*); + +#define soap_new_SOAP_ENV__Detail(soap, n) soap_instantiate_SOAP_ENV__Detail(soap, n, NULL, NULL, NULL) + + +#define soap_delete_SOAP_ENV__Detail(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct SOAP_ENV__Detail * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Detail(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Detail(struct soap*, int, int, void*, size_t, const void*, size_t); + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_interswitch_SOAP_ENV__Code +#define SOAP_TYPE_interswitch_SOAP_ENV__Code (293) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Code(struct soap*, const struct SOAP_ENV__Code *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Code(struct soap*, const char*, int, const struct SOAP_ENV__Code *, const char*); +SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_in_SOAP_ENV__Code(struct soap*, const char*, struct SOAP_ENV__Code *, const char*); + +#define soap_write_SOAP_ENV__Code(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_SOAP_ENV__Code(soap, data), 0) || interswitch::soap_put_SOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Code(struct soap*, const struct SOAP_ENV__Code *, const char*, const char*); + +#define soap_read_SOAP_ENV__Code(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_SOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_get_SOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *, const char*, const char*); + +#define soap_new_SOAP_ENV__Code(soap, n) soap_instantiate_SOAP_ENV__Code(soap, n, NULL, NULL, NULL) + + +#define soap_delete_SOAP_ENV__Code(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct SOAP_ENV__Code * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Code(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Code(struct soap*, int, int, void*, size_t, const void*, size_t); + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_interswitch_SOAP_ENV__Header +#define SOAP_TYPE_interswitch_SOAP_ENV__Header (292) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Header(struct soap*, struct SOAP_ENV__Header *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Header(struct soap*, const struct SOAP_ENV__Header *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Header(struct soap*, const char*, int, const struct SOAP_ENV__Header *, const char*); +SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_in_SOAP_ENV__Header(struct soap*, const char*, struct SOAP_ENV__Header *, const char*); + +#define soap_write_SOAP_ENV__Header(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_SOAP_ENV__Header(soap, data), 0) || interswitch::soap_put_SOAP_ENV__Header(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Header(struct soap*, const struct SOAP_ENV__Header *, const char*, const char*); + +#define soap_read_SOAP_ENV__Header(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_SOAP_ENV__Header(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_get_SOAP_ENV__Header(struct soap*, struct SOAP_ENV__Header *, const char*, const char*); + +#define soap_new_SOAP_ENV__Header(soap, n) soap_instantiate_SOAP_ENV__Header(soap, n, NULL, NULL, NULL) + + +#define soap_delete_SOAP_ENV__Header(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct SOAP_ENV__Header * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Header(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Header(struct soap*, int, int, void*, size_t, const void*, size_t); + +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__VerifyBiller +#define SOAP_TYPE_interswitch___interswitch__VerifyBiller (291) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__VerifyBiller(struct soap*, struct __interswitch__VerifyBiller *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__VerifyBiller(struct soap*, const struct __interswitch__VerifyBiller *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__VerifyBiller(struct soap*, const char*, int, const struct __interswitch__VerifyBiller *, const char*); +SOAP_FMAC3 struct __interswitch__VerifyBiller * SOAP_FMAC4 soap_in___interswitch__VerifyBiller(struct soap*, const char*, struct __interswitch__VerifyBiller *, const char*); + +#define soap_write___interswitch__VerifyBiller(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__VerifyBiller(soap, data), 0) || interswitch::soap_put___interswitch__VerifyBiller(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__VerifyBiller(struct soap*, const struct __interswitch__VerifyBiller *, const char*, const char*); + +#define soap_read___interswitch__VerifyBiller(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__VerifyBiller(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__VerifyBiller * SOAP_FMAC4 soap_get___interswitch__VerifyBiller(struct soap*, struct __interswitch__VerifyBiller *, const char*, const char*); + +#define soap_new___interswitch__VerifyBiller(soap, n) soap_instantiate___interswitch__VerifyBiller(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__VerifyBiller(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__VerifyBiller * SOAP_FMAC2 soap_instantiate___interswitch__VerifyBiller(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__VerifyBiller(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__CreateBiller +#define SOAP_TYPE_interswitch___interswitch__CreateBiller (287) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__CreateBiller(struct soap*, struct __interswitch__CreateBiller *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__CreateBiller(struct soap*, const struct __interswitch__CreateBiller *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__CreateBiller(struct soap*, const char*, int, const struct __interswitch__CreateBiller *, const char*); +SOAP_FMAC3 struct __interswitch__CreateBiller * SOAP_FMAC4 soap_in___interswitch__CreateBiller(struct soap*, const char*, struct __interswitch__CreateBiller *, const char*); + +#define soap_write___interswitch__CreateBiller(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__CreateBiller(soap, data), 0) || interswitch::soap_put___interswitch__CreateBiller(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__CreateBiller(struct soap*, const struct __interswitch__CreateBiller *, const char*, const char*); + +#define soap_read___interswitch__CreateBiller(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__CreateBiller(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__CreateBiller * SOAP_FMAC4 soap_get___interswitch__CreateBiller(struct soap*, struct __interswitch__CreateBiller *, const char*, const char*); + +#define soap_new___interswitch__CreateBiller(soap, n) soap_instantiate___interswitch__CreateBiller(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__CreateBiller(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__CreateBiller * SOAP_FMAC2 soap_instantiate___interswitch__CreateBiller(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__CreateBiller(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__DoCustomProcessing +#define SOAP_TYPE_interswitch___interswitch__DoCustomProcessing (283) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__DoCustomProcessing(struct soap*, struct __interswitch__DoCustomProcessing *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__DoCustomProcessing(struct soap*, const struct __interswitch__DoCustomProcessing *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__DoCustomProcessing(struct soap*, const char*, int, const struct __interswitch__DoCustomProcessing *, const char*); +SOAP_FMAC3 struct __interswitch__DoCustomProcessing * SOAP_FMAC4 soap_in___interswitch__DoCustomProcessing(struct soap*, const char*, struct __interswitch__DoCustomProcessing *, const char*); + +#define soap_write___interswitch__DoCustomProcessing(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__DoCustomProcessing(soap, data), 0) || interswitch::soap_put___interswitch__DoCustomProcessing(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__DoCustomProcessing(struct soap*, const struct __interswitch__DoCustomProcessing *, const char*, const char*); + +#define soap_read___interswitch__DoCustomProcessing(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__DoCustomProcessing(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__DoCustomProcessing * SOAP_FMAC4 soap_get___interswitch__DoCustomProcessing(struct soap*, struct __interswitch__DoCustomProcessing *, const char*, const char*); + +#define soap_new___interswitch__DoCustomProcessing(soap, n) soap_instantiate___interswitch__DoCustomProcessing(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__DoCustomProcessing(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__DoCustomProcessing * SOAP_FMAC2 soap_instantiate___interswitch__DoCustomProcessing(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__DoCustomProcessing(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__ResendActivationToken +#define SOAP_TYPE_interswitch___interswitch__ResendActivationToken (279) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__ResendActivationToken(struct soap*, struct __interswitch__ResendActivationToken *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__ResendActivationToken(struct soap*, const struct __interswitch__ResendActivationToken *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__ResendActivationToken(struct soap*, const char*, int, const struct __interswitch__ResendActivationToken *, const char*); +SOAP_FMAC3 struct __interswitch__ResendActivationToken * SOAP_FMAC4 soap_in___interswitch__ResendActivationToken(struct soap*, const char*, struct __interswitch__ResendActivationToken *, const char*); + +#define soap_write___interswitch__ResendActivationToken(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__ResendActivationToken(soap, data), 0) || interswitch::soap_put___interswitch__ResendActivationToken(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__ResendActivationToken(struct soap*, const struct __interswitch__ResendActivationToken *, const char*, const char*); + +#define soap_read___interswitch__ResendActivationToken(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__ResendActivationToken(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__ResendActivationToken * SOAP_FMAC4 soap_get___interswitch__ResendActivationToken(struct soap*, struct __interswitch__ResendActivationToken *, const char*, const char*); + +#define soap_new___interswitch__ResendActivationToken(soap, n) soap_instantiate___interswitch__ResendActivationToken(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__ResendActivationToken(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__ResendActivationToken * SOAP_FMAC2 soap_instantiate___interswitch__ResendActivationToken(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__ResendActivationToken(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__EditCustomerBillerAccount +#define SOAP_TYPE_interswitch___interswitch__EditCustomerBillerAccount (275) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__EditCustomerBillerAccount(struct soap*, struct __interswitch__EditCustomerBillerAccount *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__EditCustomerBillerAccount(struct soap*, const struct __interswitch__EditCustomerBillerAccount *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__EditCustomerBillerAccount(struct soap*, const char*, int, const struct __interswitch__EditCustomerBillerAccount *, const char*); +SOAP_FMAC3 struct __interswitch__EditCustomerBillerAccount * SOAP_FMAC4 soap_in___interswitch__EditCustomerBillerAccount(struct soap*, const char*, struct __interswitch__EditCustomerBillerAccount *, const char*); + +#define soap_write___interswitch__EditCustomerBillerAccount(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__EditCustomerBillerAccount(soap, data), 0) || interswitch::soap_put___interswitch__EditCustomerBillerAccount(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__EditCustomerBillerAccount(struct soap*, const struct __interswitch__EditCustomerBillerAccount *, const char*, const char*); + +#define soap_read___interswitch__EditCustomerBillerAccount(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__EditCustomerBillerAccount(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__EditCustomerBillerAccount * SOAP_FMAC4 soap_get___interswitch__EditCustomerBillerAccount(struct soap*, struct __interswitch__EditCustomerBillerAccount *, const char*, const char*); + +#define soap_new___interswitch__EditCustomerBillerAccount(soap, n) soap_instantiate___interswitch__EditCustomerBillerAccount(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__EditCustomerBillerAccount(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__EditCustomerBillerAccount * SOAP_FMAC2 soap_instantiate___interswitch__EditCustomerBillerAccount(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__EditCustomerBillerAccount(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__GetBillersCollectionsAccount +#define SOAP_TYPE_interswitch___interswitch__GetBillersCollectionsAccount (271) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetBillersCollectionsAccount(struct soap*, struct __interswitch__GetBillersCollectionsAccount *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetBillersCollectionsAccount(struct soap*, const struct __interswitch__GetBillersCollectionsAccount *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetBillersCollectionsAccount(struct soap*, const char*, int, const struct __interswitch__GetBillersCollectionsAccount *, const char*); +SOAP_FMAC3 struct __interswitch__GetBillersCollectionsAccount * SOAP_FMAC4 soap_in___interswitch__GetBillersCollectionsAccount(struct soap*, const char*, struct __interswitch__GetBillersCollectionsAccount *, const char*); + +#define soap_write___interswitch__GetBillersCollectionsAccount(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__GetBillersCollectionsAccount(soap, data), 0) || interswitch::soap_put___interswitch__GetBillersCollectionsAccount(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetBillersCollectionsAccount(struct soap*, const struct __interswitch__GetBillersCollectionsAccount *, const char*, const char*); + +#define soap_read___interswitch__GetBillersCollectionsAccount(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__GetBillersCollectionsAccount(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__GetBillersCollectionsAccount * SOAP_FMAC4 soap_get___interswitch__GetBillersCollectionsAccount(struct soap*, struct __interswitch__GetBillersCollectionsAccount *, const char*, const char*); + +#define soap_new___interswitch__GetBillersCollectionsAccount(soap, n) soap_instantiate___interswitch__GetBillersCollectionsAccount(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__GetBillersCollectionsAccount(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__GetBillersCollectionsAccount * SOAP_FMAC2 soap_instantiate___interswitch__GetBillersCollectionsAccount(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetBillersCollectionsAccount(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__GetCollectionsAccount +#define SOAP_TYPE_interswitch___interswitch__GetCollectionsAccount (267) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetCollectionsAccount(struct soap*, struct __interswitch__GetCollectionsAccount *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetCollectionsAccount(struct soap*, const struct __interswitch__GetCollectionsAccount *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetCollectionsAccount(struct soap*, const char*, int, const struct __interswitch__GetCollectionsAccount *, const char*); +SOAP_FMAC3 struct __interswitch__GetCollectionsAccount * SOAP_FMAC4 soap_in___interswitch__GetCollectionsAccount(struct soap*, const char*, struct __interswitch__GetCollectionsAccount *, const char*); + +#define soap_write___interswitch__GetCollectionsAccount(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__GetCollectionsAccount(soap, data), 0) || interswitch::soap_put___interswitch__GetCollectionsAccount(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetCollectionsAccount(struct soap*, const struct __interswitch__GetCollectionsAccount *, const char*, const char*); + +#define soap_read___interswitch__GetCollectionsAccount(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__GetCollectionsAccount(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__GetCollectionsAccount * SOAP_FMAC4 soap_get___interswitch__GetCollectionsAccount(struct soap*, struct __interswitch__GetCollectionsAccount *, const char*, const char*); + +#define soap_new___interswitch__GetCollectionsAccount(soap, n) soap_instantiate___interswitch__GetCollectionsAccount(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__GetCollectionsAccount(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__GetCollectionsAccount * SOAP_FMAC2 soap_instantiate___interswitch__GetCollectionsAccount(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetCollectionsAccount(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__AddBillerCustomer +#define SOAP_TYPE_interswitch___interswitch__AddBillerCustomer (263) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__AddBillerCustomer(struct soap*, struct __interswitch__AddBillerCustomer *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__AddBillerCustomer(struct soap*, const struct __interswitch__AddBillerCustomer *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__AddBillerCustomer(struct soap*, const char*, int, const struct __interswitch__AddBillerCustomer *, const char*); +SOAP_FMAC3 struct __interswitch__AddBillerCustomer * SOAP_FMAC4 soap_in___interswitch__AddBillerCustomer(struct soap*, const char*, struct __interswitch__AddBillerCustomer *, const char*); + +#define soap_write___interswitch__AddBillerCustomer(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__AddBillerCustomer(soap, data), 0) || interswitch::soap_put___interswitch__AddBillerCustomer(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__AddBillerCustomer(struct soap*, const struct __interswitch__AddBillerCustomer *, const char*, const char*); + +#define soap_read___interswitch__AddBillerCustomer(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__AddBillerCustomer(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__AddBillerCustomer * SOAP_FMAC4 soap_get___interswitch__AddBillerCustomer(struct soap*, struct __interswitch__AddBillerCustomer *, const char*, const char*); + +#define soap_new___interswitch__AddBillerCustomer(soap, n) soap_instantiate___interswitch__AddBillerCustomer(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__AddBillerCustomer(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__AddBillerCustomer * SOAP_FMAC2 soap_instantiate___interswitch__AddBillerCustomer(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__AddBillerCustomer(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__GetCustomerPayments +#define SOAP_TYPE_interswitch___interswitch__GetCustomerPayments (259) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetCustomerPayments(struct soap*, struct __interswitch__GetCustomerPayments *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetCustomerPayments(struct soap*, const struct __interswitch__GetCustomerPayments *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetCustomerPayments(struct soap*, const char*, int, const struct __interswitch__GetCustomerPayments *, const char*); +SOAP_FMAC3 struct __interswitch__GetCustomerPayments * SOAP_FMAC4 soap_in___interswitch__GetCustomerPayments(struct soap*, const char*, struct __interswitch__GetCustomerPayments *, const char*); + +#define soap_write___interswitch__GetCustomerPayments(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__GetCustomerPayments(soap, data), 0) || interswitch::soap_put___interswitch__GetCustomerPayments(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetCustomerPayments(struct soap*, const struct __interswitch__GetCustomerPayments *, const char*, const char*); + +#define soap_read___interswitch__GetCustomerPayments(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__GetCustomerPayments(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__GetCustomerPayments * SOAP_FMAC4 soap_get___interswitch__GetCustomerPayments(struct soap*, struct __interswitch__GetCustomerPayments *, const char*, const char*); + +#define soap_new___interswitch__GetCustomerPayments(soap, n) soap_instantiate___interswitch__GetCustomerPayments(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__GetCustomerPayments(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__GetCustomerPayments * SOAP_FMAC2 soap_instantiate___interswitch__GetCustomerPayments(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetCustomerPayments(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__GetCustomerBillerAccounts +#define SOAP_TYPE_interswitch___interswitch__GetCustomerBillerAccounts (255) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetCustomerBillerAccounts(struct soap*, struct __interswitch__GetCustomerBillerAccounts *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetCustomerBillerAccounts(struct soap*, const struct __interswitch__GetCustomerBillerAccounts *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetCustomerBillerAccounts(struct soap*, const char*, int, const struct __interswitch__GetCustomerBillerAccounts *, const char*); +SOAP_FMAC3 struct __interswitch__GetCustomerBillerAccounts * SOAP_FMAC4 soap_in___interswitch__GetCustomerBillerAccounts(struct soap*, const char*, struct __interswitch__GetCustomerBillerAccounts *, const char*); + +#define soap_write___interswitch__GetCustomerBillerAccounts(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__GetCustomerBillerAccounts(soap, data), 0) || interswitch::soap_put___interswitch__GetCustomerBillerAccounts(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetCustomerBillerAccounts(struct soap*, const struct __interswitch__GetCustomerBillerAccounts *, const char*, const char*); + +#define soap_read___interswitch__GetCustomerBillerAccounts(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__GetCustomerBillerAccounts(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__GetCustomerBillerAccounts * SOAP_FMAC4 soap_get___interswitch__GetCustomerBillerAccounts(struct soap*, struct __interswitch__GetCustomerBillerAccounts *, const char*, const char*); + +#define soap_new___interswitch__GetCustomerBillerAccounts(soap, n) soap_instantiate___interswitch__GetCustomerBillerAccounts(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__GetCustomerBillerAccounts(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__GetCustomerBillerAccounts * SOAP_FMAC2 soap_instantiate___interswitch__GetCustomerBillerAccounts(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetCustomerBillerAccounts(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__AddCustomerBillerAccount +#define SOAP_TYPE_interswitch___interswitch__AddCustomerBillerAccount (251) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__AddCustomerBillerAccount(struct soap*, struct __interswitch__AddCustomerBillerAccount *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__AddCustomerBillerAccount(struct soap*, const struct __interswitch__AddCustomerBillerAccount *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__AddCustomerBillerAccount(struct soap*, const char*, int, const struct __interswitch__AddCustomerBillerAccount *, const char*); +SOAP_FMAC3 struct __interswitch__AddCustomerBillerAccount * SOAP_FMAC4 soap_in___interswitch__AddCustomerBillerAccount(struct soap*, const char*, struct __interswitch__AddCustomerBillerAccount *, const char*); + +#define soap_write___interswitch__AddCustomerBillerAccount(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__AddCustomerBillerAccount(soap, data), 0) || interswitch::soap_put___interswitch__AddCustomerBillerAccount(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__AddCustomerBillerAccount(struct soap*, const struct __interswitch__AddCustomerBillerAccount *, const char*, const char*); + +#define soap_read___interswitch__AddCustomerBillerAccount(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__AddCustomerBillerAccount(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__AddCustomerBillerAccount * SOAP_FMAC4 soap_get___interswitch__AddCustomerBillerAccount(struct soap*, struct __interswitch__AddCustomerBillerAccount *, const char*, const char*); + +#define soap_new___interswitch__AddCustomerBillerAccount(soap, n) soap_instantiate___interswitch__AddCustomerBillerAccount(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__AddCustomerBillerAccount(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__AddCustomerBillerAccount * SOAP_FMAC2 soap_instantiate___interswitch__AddCustomerBillerAccount(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__AddCustomerBillerAccount(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__SendPayments +#define SOAP_TYPE_interswitch___interswitch__SendPayments (247) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__SendPayments(struct soap*, struct __interswitch__SendPayments *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__SendPayments(struct soap*, const struct __interswitch__SendPayments *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__SendPayments(struct soap*, const char*, int, const struct __interswitch__SendPayments *, const char*); +SOAP_FMAC3 struct __interswitch__SendPayments * SOAP_FMAC4 soap_in___interswitch__SendPayments(struct soap*, const char*, struct __interswitch__SendPayments *, const char*); + +#define soap_write___interswitch__SendPayments(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__SendPayments(soap, data), 0) || interswitch::soap_put___interswitch__SendPayments(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__SendPayments(struct soap*, const struct __interswitch__SendPayments *, const char*, const char*); + +#define soap_read___interswitch__SendPayments(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__SendPayments(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__SendPayments * SOAP_FMAC4 soap_get___interswitch__SendPayments(struct soap*, struct __interswitch__SendPayments *, const char*, const char*); + +#define soap_new___interswitch__SendPayments(soap, n) soap_instantiate___interswitch__SendPayments(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__SendPayments(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__SendPayments * SOAP_FMAC2 soap_instantiate___interswitch__SendPayments(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__SendPayments(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__SendBillPaymentAdvice +#define SOAP_TYPE_interswitch___interswitch__SendBillPaymentAdvice (243) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__SendBillPaymentAdvice(struct soap*, struct __interswitch__SendBillPaymentAdvice *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__SendBillPaymentAdvice(struct soap*, const struct __interswitch__SendBillPaymentAdvice *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__SendBillPaymentAdvice(struct soap*, const char*, int, const struct __interswitch__SendBillPaymentAdvice *, const char*); +SOAP_FMAC3 struct __interswitch__SendBillPaymentAdvice * SOAP_FMAC4 soap_in___interswitch__SendBillPaymentAdvice(struct soap*, const char*, struct __interswitch__SendBillPaymentAdvice *, const char*); + +#define soap_write___interswitch__SendBillPaymentAdvice(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__SendBillPaymentAdvice(soap, data), 0) || interswitch::soap_put___interswitch__SendBillPaymentAdvice(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__SendBillPaymentAdvice(struct soap*, const struct __interswitch__SendBillPaymentAdvice *, const char*, const char*); + +#define soap_read___interswitch__SendBillPaymentAdvice(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__SendBillPaymentAdvice(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__SendBillPaymentAdvice * SOAP_FMAC4 soap_get___interswitch__SendBillPaymentAdvice(struct soap*, struct __interswitch__SendBillPaymentAdvice *, const char*, const char*); + +#define soap_new___interswitch__SendBillPaymentAdvice(soap, n) soap_instantiate___interswitch__SendBillPaymentAdvice(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__SendBillPaymentAdvice(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__SendBillPaymentAdvice * SOAP_FMAC2 soap_instantiate___interswitch__SendBillPaymentAdvice(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__SendBillPaymentAdvice(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__AuthenticateCustomer +#define SOAP_TYPE_interswitch___interswitch__AuthenticateCustomer (239) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__AuthenticateCustomer(struct soap*, struct __interswitch__AuthenticateCustomer *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__AuthenticateCustomer(struct soap*, const struct __interswitch__AuthenticateCustomer *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__AuthenticateCustomer(struct soap*, const char*, int, const struct __interswitch__AuthenticateCustomer *, const char*); +SOAP_FMAC3 struct __interswitch__AuthenticateCustomer * SOAP_FMAC4 soap_in___interswitch__AuthenticateCustomer(struct soap*, const char*, struct __interswitch__AuthenticateCustomer *, const char*); + +#define soap_write___interswitch__AuthenticateCustomer(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__AuthenticateCustomer(soap, data), 0) || interswitch::soap_put___interswitch__AuthenticateCustomer(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__AuthenticateCustomer(struct soap*, const struct __interswitch__AuthenticateCustomer *, const char*, const char*); + +#define soap_read___interswitch__AuthenticateCustomer(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__AuthenticateCustomer(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__AuthenticateCustomer * SOAP_FMAC4 soap_get___interswitch__AuthenticateCustomer(struct soap*, struct __interswitch__AuthenticateCustomer *, const char*, const char*); + +#define soap_new___interswitch__AuthenticateCustomer(soap, n) soap_instantiate___interswitch__AuthenticateCustomer(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__AuthenticateCustomer(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__AuthenticateCustomer * SOAP_FMAC2 soap_instantiate___interswitch__AuthenticateCustomer(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__AuthenticateCustomer(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__DoBillPaymentInquiry +#define SOAP_TYPE_interswitch___interswitch__DoBillPaymentInquiry (235) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__DoBillPaymentInquiry(struct soap*, struct __interswitch__DoBillPaymentInquiry *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__DoBillPaymentInquiry(struct soap*, const struct __interswitch__DoBillPaymentInquiry *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__DoBillPaymentInquiry(struct soap*, const char*, int, const struct __interswitch__DoBillPaymentInquiry *, const char*); +SOAP_FMAC3 struct __interswitch__DoBillPaymentInquiry * SOAP_FMAC4 soap_in___interswitch__DoBillPaymentInquiry(struct soap*, const char*, struct __interswitch__DoBillPaymentInquiry *, const char*); + +#define soap_write___interswitch__DoBillPaymentInquiry(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__DoBillPaymentInquiry(soap, data), 0) || interswitch::soap_put___interswitch__DoBillPaymentInquiry(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__DoBillPaymentInquiry(struct soap*, const struct __interswitch__DoBillPaymentInquiry *, const char*, const char*); + +#define soap_read___interswitch__DoBillPaymentInquiry(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__DoBillPaymentInquiry(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__DoBillPaymentInquiry * SOAP_FMAC4 soap_get___interswitch__DoBillPaymentInquiry(struct soap*, struct __interswitch__DoBillPaymentInquiry *, const char*, const char*); + +#define soap_new___interswitch__DoBillPaymentInquiry(soap, n) soap_instantiate___interswitch__DoBillPaymentInquiry(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__DoBillPaymentInquiry(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__DoBillPaymentInquiry * SOAP_FMAC2 soap_instantiate___interswitch__DoBillPaymentInquiry(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__DoBillPaymentInquiry(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__GetBillerCategories +#define SOAP_TYPE_interswitch___interswitch__GetBillerCategories (231) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetBillerCategories(struct soap*, struct __interswitch__GetBillerCategories *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetBillerCategories(struct soap*, const struct __interswitch__GetBillerCategories *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetBillerCategories(struct soap*, const char*, int, const struct __interswitch__GetBillerCategories *, const char*); +SOAP_FMAC3 struct __interswitch__GetBillerCategories * SOAP_FMAC4 soap_in___interswitch__GetBillerCategories(struct soap*, const char*, struct __interswitch__GetBillerCategories *, const char*); + +#define soap_write___interswitch__GetBillerCategories(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__GetBillerCategories(soap, data), 0) || interswitch::soap_put___interswitch__GetBillerCategories(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetBillerCategories(struct soap*, const struct __interswitch__GetBillerCategories *, const char*, const char*); + +#define soap_read___interswitch__GetBillerCategories(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__GetBillerCategories(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__GetBillerCategories * SOAP_FMAC4 soap_get___interswitch__GetBillerCategories(struct soap*, struct __interswitch__GetBillerCategories *, const char*, const char*); + +#define soap_new___interswitch__GetBillerCategories(soap, n) soap_instantiate___interswitch__GetBillerCategories(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__GetBillerCategories(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__GetBillerCategories * SOAP_FMAC2 soap_instantiate___interswitch__GetBillerCategories(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetBillerCategories(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__GetBillerPaymentItems +#define SOAP_TYPE_interswitch___interswitch__GetBillerPaymentItems (227) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetBillerPaymentItems(struct soap*, struct __interswitch__GetBillerPaymentItems *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetBillerPaymentItems(struct soap*, const struct __interswitch__GetBillerPaymentItems *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetBillerPaymentItems(struct soap*, const char*, int, const struct __interswitch__GetBillerPaymentItems *, const char*); +SOAP_FMAC3 struct __interswitch__GetBillerPaymentItems * SOAP_FMAC4 soap_in___interswitch__GetBillerPaymentItems(struct soap*, const char*, struct __interswitch__GetBillerPaymentItems *, const char*); + +#define soap_write___interswitch__GetBillerPaymentItems(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__GetBillerPaymentItems(soap, data), 0) || interswitch::soap_put___interswitch__GetBillerPaymentItems(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetBillerPaymentItems(struct soap*, const struct __interswitch__GetBillerPaymentItems *, const char*, const char*); + +#define soap_read___interswitch__GetBillerPaymentItems(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__GetBillerPaymentItems(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__GetBillerPaymentItems * SOAP_FMAC4 soap_get___interswitch__GetBillerPaymentItems(struct soap*, struct __interswitch__GetBillerPaymentItems *, const char*, const char*); + +#define soap_new___interswitch__GetBillerPaymentItems(soap, n) soap_instantiate___interswitch__GetBillerPaymentItems(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__GetBillerPaymentItems(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__GetBillerPaymentItems * SOAP_FMAC2 soap_instantiate___interswitch__GetBillerPaymentItems(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetBillerPaymentItems(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__GetFeaturedBillers +#define SOAP_TYPE_interswitch___interswitch__GetFeaturedBillers (223) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetFeaturedBillers(struct soap*, struct __interswitch__GetFeaturedBillers *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetFeaturedBillers(struct soap*, const struct __interswitch__GetFeaturedBillers *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetFeaturedBillers(struct soap*, const char*, int, const struct __interswitch__GetFeaturedBillers *, const char*); +SOAP_FMAC3 struct __interswitch__GetFeaturedBillers * SOAP_FMAC4 soap_in___interswitch__GetFeaturedBillers(struct soap*, const char*, struct __interswitch__GetFeaturedBillers *, const char*); + +#define soap_write___interswitch__GetFeaturedBillers(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__GetFeaturedBillers(soap, data), 0) || interswitch::soap_put___interswitch__GetFeaturedBillers(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetFeaturedBillers(struct soap*, const struct __interswitch__GetFeaturedBillers *, const char*, const char*); + +#define soap_read___interswitch__GetFeaturedBillers(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__GetFeaturedBillers(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__GetFeaturedBillers * SOAP_FMAC4 soap_get___interswitch__GetFeaturedBillers(struct soap*, struct __interswitch__GetFeaturedBillers *, const char*, const char*); + +#define soap_new___interswitch__GetFeaturedBillers(soap, n) soap_instantiate___interswitch__GetFeaturedBillers(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__GetFeaturedBillers(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__GetFeaturedBillers * SOAP_FMAC2 soap_instantiate___interswitch__GetFeaturedBillers(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetFeaturedBillers(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__GetLatestBillers +#define SOAP_TYPE_interswitch___interswitch__GetLatestBillers (219) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetLatestBillers(struct soap*, struct __interswitch__GetLatestBillers *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetLatestBillers(struct soap*, const struct __interswitch__GetLatestBillers *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetLatestBillers(struct soap*, const char*, int, const struct __interswitch__GetLatestBillers *, const char*); +SOAP_FMAC3 struct __interswitch__GetLatestBillers * SOAP_FMAC4 soap_in___interswitch__GetLatestBillers(struct soap*, const char*, struct __interswitch__GetLatestBillers *, const char*); + +#define soap_write___interswitch__GetLatestBillers(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__GetLatestBillers(soap, data), 0) || interswitch::soap_put___interswitch__GetLatestBillers(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetLatestBillers(struct soap*, const struct __interswitch__GetLatestBillers *, const char*, const char*); + +#define soap_read___interswitch__GetLatestBillers(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__GetLatestBillers(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__GetLatestBillers * SOAP_FMAC4 soap_get___interswitch__GetLatestBillers(struct soap*, struct __interswitch__GetLatestBillers *, const char*, const char*); + +#define soap_new___interswitch__GetLatestBillers(soap, n) soap_instantiate___interswitch__GetLatestBillers(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__GetLatestBillers(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__GetLatestBillers * SOAP_FMAC2 soap_instantiate___interswitch__GetLatestBillers(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetLatestBillers(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__GetBillers +#define SOAP_TYPE_interswitch___interswitch__GetBillers (215) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetBillers(struct soap*, struct __interswitch__GetBillers *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetBillers(struct soap*, const struct __interswitch__GetBillers *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetBillers(struct soap*, const char*, int, const struct __interswitch__GetBillers *, const char*); +SOAP_FMAC3 struct __interswitch__GetBillers * SOAP_FMAC4 soap_in___interswitch__GetBillers(struct soap*, const char*, struct __interswitch__GetBillers *, const char*); + +#define soap_write___interswitch__GetBillers(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__GetBillers(soap, data), 0) || interswitch::soap_put___interswitch__GetBillers(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetBillers(struct soap*, const struct __interswitch__GetBillers *, const char*, const char*); + +#define soap_read___interswitch__GetBillers(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__GetBillers(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__GetBillers * SOAP_FMAC4 soap_get___interswitch__GetBillers(struct soap*, struct __interswitch__GetBillers *, const char*, const char*); + +#define soap_new___interswitch__GetBillers(soap, n) soap_instantiate___interswitch__GetBillers(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__GetBillers(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__GetBillers * SOAP_FMAC2 soap_instantiate___interswitch__GetBillers(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetBillers(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__GetUser +#define SOAP_TYPE_interswitch___interswitch__GetUser (211) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetUser(struct soap*, struct __interswitch__GetUser *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetUser(struct soap*, const struct __interswitch__GetUser *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetUser(struct soap*, const char*, int, const struct __interswitch__GetUser *, const char*); +SOAP_FMAC3 struct __interswitch__GetUser * SOAP_FMAC4 soap_in___interswitch__GetUser(struct soap*, const char*, struct __interswitch__GetUser *, const char*); + +#define soap_write___interswitch__GetUser(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__GetUser(soap, data), 0) || interswitch::soap_put___interswitch__GetUser(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetUser(struct soap*, const struct __interswitch__GetUser *, const char*, const char*); + +#define soap_read___interswitch__GetUser(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__GetUser(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__GetUser * SOAP_FMAC4 soap_get___interswitch__GetUser(struct soap*, struct __interswitch__GetUser *, const char*, const char*); + +#define soap_new___interswitch__GetUser(soap, n) soap_instantiate___interswitch__GetUser(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__GetUser(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__GetUser * SOAP_FMAC2 soap_instantiate___interswitch__GetUser(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetUser(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__AuthenticateUserSecurityToken +#define SOAP_TYPE_interswitch___interswitch__AuthenticateUserSecurityToken (207) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__AuthenticateUserSecurityToken(struct soap*, struct __interswitch__AuthenticateUserSecurityToken *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__AuthenticateUserSecurityToken(struct soap*, const struct __interswitch__AuthenticateUserSecurityToken *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__AuthenticateUserSecurityToken(struct soap*, const char*, int, const struct __interswitch__AuthenticateUserSecurityToken *, const char*); +SOAP_FMAC3 struct __interswitch__AuthenticateUserSecurityToken * SOAP_FMAC4 soap_in___interswitch__AuthenticateUserSecurityToken(struct soap*, const char*, struct __interswitch__AuthenticateUserSecurityToken *, const char*); + +#define soap_write___interswitch__AuthenticateUserSecurityToken(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__AuthenticateUserSecurityToken(soap, data), 0) || interswitch::soap_put___interswitch__AuthenticateUserSecurityToken(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__AuthenticateUserSecurityToken(struct soap*, const struct __interswitch__AuthenticateUserSecurityToken *, const char*, const char*); + +#define soap_read___interswitch__AuthenticateUserSecurityToken(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__AuthenticateUserSecurityToken(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__AuthenticateUserSecurityToken * SOAP_FMAC4 soap_get___interswitch__AuthenticateUserSecurityToken(struct soap*, struct __interswitch__AuthenticateUserSecurityToken *, const char*, const char*); + +#define soap_new___interswitch__AuthenticateUserSecurityToken(soap, n) soap_instantiate___interswitch__AuthenticateUserSecurityToken(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__AuthenticateUserSecurityToken(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__AuthenticateUserSecurityToken * SOAP_FMAC2 soap_instantiate___interswitch__AuthenticateUserSecurityToken(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__AuthenticateUserSecurityToken(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__AuthenticateUser +#define SOAP_TYPE_interswitch___interswitch__AuthenticateUser (203) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__AuthenticateUser(struct soap*, struct __interswitch__AuthenticateUser *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__AuthenticateUser(struct soap*, const struct __interswitch__AuthenticateUser *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__AuthenticateUser(struct soap*, const char*, int, const struct __interswitch__AuthenticateUser *, const char*); +SOAP_FMAC3 struct __interswitch__AuthenticateUser * SOAP_FMAC4 soap_in___interswitch__AuthenticateUser(struct soap*, const char*, struct __interswitch__AuthenticateUser *, const char*); + +#define soap_write___interswitch__AuthenticateUser(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__AuthenticateUser(soap, data), 0) || interswitch::soap_put___interswitch__AuthenticateUser(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__AuthenticateUser(struct soap*, const struct __interswitch__AuthenticateUser *, const char*, const char*); + +#define soap_read___interswitch__AuthenticateUser(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__AuthenticateUser(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__AuthenticateUser * SOAP_FMAC4 soap_get___interswitch__AuthenticateUser(struct soap*, struct __interswitch__AuthenticateUser *, const char*, const char*); + +#define soap_new___interswitch__AuthenticateUser(soap, n) soap_instantiate___interswitch__AuthenticateUser(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__AuthenticateUser(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__AuthenticateUser * SOAP_FMAC2 soap_instantiate___interswitch__AuthenticateUser(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__AuthenticateUser(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__ResetPassword +#define SOAP_TYPE_interswitch___interswitch__ResetPassword (199) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__ResetPassword(struct soap*, struct __interswitch__ResetPassword *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__ResetPassword(struct soap*, const struct __interswitch__ResetPassword *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__ResetPassword(struct soap*, const char*, int, const struct __interswitch__ResetPassword *, const char*); +SOAP_FMAC3 struct __interswitch__ResetPassword * SOAP_FMAC4 soap_in___interswitch__ResetPassword(struct soap*, const char*, struct __interswitch__ResetPassword *, const char*); + +#define soap_write___interswitch__ResetPassword(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__ResetPassword(soap, data), 0) || interswitch::soap_put___interswitch__ResetPassword(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__ResetPassword(struct soap*, const struct __interswitch__ResetPassword *, const char*, const char*); + +#define soap_read___interswitch__ResetPassword(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__ResetPassword(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__ResetPassword * SOAP_FMAC4 soap_get___interswitch__ResetPassword(struct soap*, struct __interswitch__ResetPassword *, const char*, const char*); + +#define soap_new___interswitch__ResetPassword(soap, n) soap_instantiate___interswitch__ResetPassword(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__ResetPassword(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__ResetPassword * SOAP_FMAC2 soap_instantiate___interswitch__ResetPassword(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__ResetPassword(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__ChangePassword +#define SOAP_TYPE_interswitch___interswitch__ChangePassword (195) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__ChangePassword(struct soap*, struct __interswitch__ChangePassword *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__ChangePassword(struct soap*, const struct __interswitch__ChangePassword *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__ChangePassword(struct soap*, const char*, int, const struct __interswitch__ChangePassword *, const char*); +SOAP_FMAC3 struct __interswitch__ChangePassword * SOAP_FMAC4 soap_in___interswitch__ChangePassword(struct soap*, const char*, struct __interswitch__ChangePassword *, const char*); + +#define soap_write___interswitch__ChangePassword(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__ChangePassword(soap, data), 0) || interswitch::soap_put___interswitch__ChangePassword(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__ChangePassword(struct soap*, const struct __interswitch__ChangePassword *, const char*, const char*); + +#define soap_read___interswitch__ChangePassword(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__ChangePassword(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__ChangePassword * SOAP_FMAC4 soap_get___interswitch__ChangePassword(struct soap*, struct __interswitch__ChangePassword *, const char*, const char*); + +#define soap_new___interswitch__ChangePassword(soap, n) soap_instantiate___interswitch__ChangePassword(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__ChangePassword(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__ChangePassword * SOAP_FMAC2 soap_instantiate___interswitch__ChangePassword(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__ChangePassword(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__UpdateUser +#define SOAP_TYPE_interswitch___interswitch__UpdateUser (191) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__UpdateUser(struct soap*, struct __interswitch__UpdateUser *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__UpdateUser(struct soap*, const struct __interswitch__UpdateUser *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__UpdateUser(struct soap*, const char*, int, const struct __interswitch__UpdateUser *, const char*); +SOAP_FMAC3 struct __interswitch__UpdateUser * SOAP_FMAC4 soap_in___interswitch__UpdateUser(struct soap*, const char*, struct __interswitch__UpdateUser *, const char*); + +#define soap_write___interswitch__UpdateUser(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__UpdateUser(soap, data), 0) || interswitch::soap_put___interswitch__UpdateUser(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__UpdateUser(struct soap*, const struct __interswitch__UpdateUser *, const char*, const char*); + +#define soap_read___interswitch__UpdateUser(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__UpdateUser(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__UpdateUser * SOAP_FMAC4 soap_get___interswitch__UpdateUser(struct soap*, struct __interswitch__UpdateUser *, const char*, const char*); + +#define soap_new___interswitch__UpdateUser(soap, n) soap_instantiate___interswitch__UpdateUser(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__UpdateUser(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__UpdateUser * SOAP_FMAC2 soap_instantiate___interswitch__UpdateUser(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__UpdateUser(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__ActivateUser +#define SOAP_TYPE_interswitch___interswitch__ActivateUser (187) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__ActivateUser(struct soap*, struct __interswitch__ActivateUser *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__ActivateUser(struct soap*, const struct __interswitch__ActivateUser *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__ActivateUser(struct soap*, const char*, int, const struct __interswitch__ActivateUser *, const char*); +SOAP_FMAC3 struct __interswitch__ActivateUser * SOAP_FMAC4 soap_in___interswitch__ActivateUser(struct soap*, const char*, struct __interswitch__ActivateUser *, const char*); + +#define soap_write___interswitch__ActivateUser(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__ActivateUser(soap, data), 0) || interswitch::soap_put___interswitch__ActivateUser(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__ActivateUser(struct soap*, const struct __interswitch__ActivateUser *, const char*, const char*); + +#define soap_read___interswitch__ActivateUser(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__ActivateUser(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__ActivateUser * SOAP_FMAC4 soap_get___interswitch__ActivateUser(struct soap*, struct __interswitch__ActivateUser *, const char*, const char*); + +#define soap_new___interswitch__ActivateUser(soap, n) soap_instantiate___interswitch__ActivateUser(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__ActivateUser(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__ActivateUser * SOAP_FMAC2 soap_instantiate___interswitch__ActivateUser(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__ActivateUser(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__CreateUser +#define SOAP_TYPE_interswitch___interswitch__CreateUser (183) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__CreateUser(struct soap*, struct __interswitch__CreateUser *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__CreateUser(struct soap*, const struct __interswitch__CreateUser *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__CreateUser(struct soap*, const char*, int, const struct __interswitch__CreateUser *, const char*); +SOAP_FMAC3 struct __interswitch__CreateUser * SOAP_FMAC4 soap_in___interswitch__CreateUser(struct soap*, const char*, struct __interswitch__CreateUser *, const char*); + +#define soap_write___interswitch__CreateUser(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__CreateUser(soap, data), 0) || interswitch::soap_put___interswitch__CreateUser(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__CreateUser(struct soap*, const struct __interswitch__CreateUser *, const char*, const char*); + +#define soap_read___interswitch__CreateUser(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__CreateUser(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__CreateUser * SOAP_FMAC4 soap_get___interswitch__CreateUser(struct soap*, struct __interswitch__CreateUser *, const char*, const char*); + +#define soap_new___interswitch__CreateUser(soap, n) soap_instantiate___interswitch__CreateUser(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__CreateUser(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__CreateUser * SOAP_FMAC2 soap_instantiate___interswitch__CreateUser(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__CreateUser(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__GetSystemSettings +#define SOAP_TYPE_interswitch___interswitch__GetSystemSettings (179) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetSystemSettings(struct soap*, struct __interswitch__GetSystemSettings *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetSystemSettings(struct soap*, const struct __interswitch__GetSystemSettings *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetSystemSettings(struct soap*, const char*, int, const struct __interswitch__GetSystemSettings *, const char*); +SOAP_FMAC3 struct __interswitch__GetSystemSettings * SOAP_FMAC4 soap_in___interswitch__GetSystemSettings(struct soap*, const char*, struct __interswitch__GetSystemSettings *, const char*); + +#define soap_write___interswitch__GetSystemSettings(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__GetSystemSettings(soap, data), 0) || interswitch::soap_put___interswitch__GetSystemSettings(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetSystemSettings(struct soap*, const struct __interswitch__GetSystemSettings *, const char*, const char*); + +#define soap_read___interswitch__GetSystemSettings(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__GetSystemSettings(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__GetSystemSettings * SOAP_FMAC4 soap_get___interswitch__GetSystemSettings(struct soap*, struct __interswitch__GetSystemSettings *, const char*, const char*); + +#define soap_new___interswitch__GetSystemSettings(soap, n) soap_instantiate___interswitch__GetSystemSettings(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__GetSystemSettings(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__GetSystemSettings * SOAP_FMAC2 soap_instantiate___interswitch__GetSystemSettings(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetSystemSettings(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__QueryTransaction +#define SOAP_TYPE_interswitch___interswitch__QueryTransaction (175) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__QueryTransaction(struct soap*, struct __interswitch__QueryTransaction *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__QueryTransaction(struct soap*, const struct __interswitch__QueryTransaction *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__QueryTransaction(struct soap*, const char*, int, const struct __interswitch__QueryTransaction *, const char*); +SOAP_FMAC3 struct __interswitch__QueryTransaction * SOAP_FMAC4 soap_in___interswitch__QueryTransaction(struct soap*, const char*, struct __interswitch__QueryTransaction *, const char*); + +#define soap_write___interswitch__QueryTransaction(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__QueryTransaction(soap, data), 0) || interswitch::soap_put___interswitch__QueryTransaction(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__QueryTransaction(struct soap*, const struct __interswitch__QueryTransaction *, const char*, const char*); + +#define soap_read___interswitch__QueryTransaction(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__QueryTransaction(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__QueryTransaction * SOAP_FMAC4 soap_get___interswitch__QueryTransaction(struct soap*, struct __interswitch__QueryTransaction *, const char*, const char*); + +#define soap_new___interswitch__QueryTransaction(soap, n) soap_instantiate___interswitch__QueryTransaction(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__QueryTransaction(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__QueryTransaction * SOAP_FMAC2 soap_instantiate___interswitch__QueryTransaction(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__QueryTransaction(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__StatusCheck +#define SOAP_TYPE_interswitch___interswitch__StatusCheck (171) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__StatusCheck(struct soap*, struct __interswitch__StatusCheck *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__StatusCheck(struct soap*, const struct __interswitch__StatusCheck *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__StatusCheck(struct soap*, const char*, int, const struct __interswitch__StatusCheck *, const char*); +SOAP_FMAC3 struct __interswitch__StatusCheck * SOAP_FMAC4 soap_in___interswitch__StatusCheck(struct soap*, const char*, struct __interswitch__StatusCheck *, const char*); + +#define soap_write___interswitch__StatusCheck(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__StatusCheck(soap, data), 0) || interswitch::soap_put___interswitch__StatusCheck(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__StatusCheck(struct soap*, const struct __interswitch__StatusCheck *, const char*, const char*); + +#define soap_read___interswitch__StatusCheck(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__StatusCheck(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__StatusCheck * SOAP_FMAC4 soap_get___interswitch__StatusCheck(struct soap*, struct __interswitch__StatusCheck *, const char*, const char*); + +#define soap_new___interswitch__StatusCheck(soap, n) soap_instantiate___interswitch__StatusCheck(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__StatusCheck(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__StatusCheck * SOAP_FMAC2 soap_instantiate___interswitch__StatusCheck(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__StatusCheck(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__ReverseCashOut +#define SOAP_TYPE_interswitch___interswitch__ReverseCashOut (167) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__ReverseCashOut(struct soap*, struct __interswitch__ReverseCashOut *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__ReverseCashOut(struct soap*, const struct __interswitch__ReverseCashOut *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__ReverseCashOut(struct soap*, const char*, int, const struct __interswitch__ReverseCashOut *, const char*); +SOAP_FMAC3 struct __interswitch__ReverseCashOut * SOAP_FMAC4 soap_in___interswitch__ReverseCashOut(struct soap*, const char*, struct __interswitch__ReverseCashOut *, const char*); + +#define soap_write___interswitch__ReverseCashOut(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__ReverseCashOut(soap, data), 0) || interswitch::soap_put___interswitch__ReverseCashOut(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__ReverseCashOut(struct soap*, const struct __interswitch__ReverseCashOut *, const char*, const char*); + +#define soap_read___interswitch__ReverseCashOut(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__ReverseCashOut(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__ReverseCashOut * SOAP_FMAC4 soap_get___interswitch__ReverseCashOut(struct soap*, struct __interswitch__ReverseCashOut *, const char*, const char*); + +#define soap_new___interswitch__ReverseCashOut(soap, n) soap_instantiate___interswitch__ReverseCashOut(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__ReverseCashOut(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__ReverseCashOut * SOAP_FMAC2 soap_instantiate___interswitch__ReverseCashOut(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__ReverseCashOut(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__AuthoriseAccountCashOut +#define SOAP_TYPE_interswitch___interswitch__AuthoriseAccountCashOut (163) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__AuthoriseAccountCashOut(struct soap*, struct __interswitch__AuthoriseAccountCashOut *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__AuthoriseAccountCashOut(struct soap*, const struct __interswitch__AuthoriseAccountCashOut *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__AuthoriseAccountCashOut(struct soap*, const char*, int, const struct __interswitch__AuthoriseAccountCashOut *, const char*); +SOAP_FMAC3 struct __interswitch__AuthoriseAccountCashOut * SOAP_FMAC4 soap_in___interswitch__AuthoriseAccountCashOut(struct soap*, const char*, struct __interswitch__AuthoriseAccountCashOut *, const char*); + +#define soap_write___interswitch__AuthoriseAccountCashOut(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__AuthoriseAccountCashOut(soap, data), 0) || interswitch::soap_put___interswitch__AuthoriseAccountCashOut(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__AuthoriseAccountCashOut(struct soap*, const struct __interswitch__AuthoriseAccountCashOut *, const char*, const char*); + +#define soap_read___interswitch__AuthoriseAccountCashOut(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__AuthoriseAccountCashOut(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__AuthoriseAccountCashOut * SOAP_FMAC4 soap_get___interswitch__AuthoriseAccountCashOut(struct soap*, struct __interswitch__AuthoriseAccountCashOut *, const char*, const char*); + +#define soap_new___interswitch__AuthoriseAccountCashOut(soap, n) soap_instantiate___interswitch__AuthoriseAccountCashOut(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__AuthoriseAccountCashOut(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__AuthoriseAccountCashOut * SOAP_FMAC2 soap_instantiate___interswitch__AuthoriseAccountCashOut(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__AuthoriseAccountCashOut(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__AuthoriseCashOut +#define SOAP_TYPE_interswitch___interswitch__AuthoriseCashOut (159) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__AuthoriseCashOut(struct soap*, struct __interswitch__AuthoriseCashOut *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__AuthoriseCashOut(struct soap*, const struct __interswitch__AuthoriseCashOut *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__AuthoriseCashOut(struct soap*, const char*, int, const struct __interswitch__AuthoriseCashOut *, const char*); +SOAP_FMAC3 struct __interswitch__AuthoriseCashOut * SOAP_FMAC4 soap_in___interswitch__AuthoriseCashOut(struct soap*, const char*, struct __interswitch__AuthoriseCashOut *, const char*); + +#define soap_write___interswitch__AuthoriseCashOut(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__AuthoriseCashOut(soap, data), 0) || interswitch::soap_put___interswitch__AuthoriseCashOut(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__AuthoriseCashOut(struct soap*, const struct __interswitch__AuthoriseCashOut *, const char*, const char*); + +#define soap_read___interswitch__AuthoriseCashOut(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__AuthoriseCashOut(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__AuthoriseCashOut * SOAP_FMAC4 soap_get___interswitch__AuthoriseCashOut(struct soap*, struct __interswitch__AuthoriseCashOut *, const char*, const char*); + +#define soap_new___interswitch__AuthoriseCashOut(soap, n) soap_instantiate___interswitch__AuthoriseCashOut(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__AuthoriseCashOut(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__AuthoriseCashOut * SOAP_FMAC2 soap_instantiate___interswitch__AuthoriseCashOut(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__AuthoriseCashOut(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__QueryTransfer +#define SOAP_TYPE_interswitch___interswitch__QueryTransfer (155) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__QueryTransfer(struct soap*, struct __interswitch__QueryTransfer *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__QueryTransfer(struct soap*, const struct __interswitch__QueryTransfer *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__QueryTransfer(struct soap*, const char*, int, const struct __interswitch__QueryTransfer *, const char*); +SOAP_FMAC3 struct __interswitch__QueryTransfer * SOAP_FMAC4 soap_in___interswitch__QueryTransfer(struct soap*, const char*, struct __interswitch__QueryTransfer *, const char*); + +#define soap_write___interswitch__QueryTransfer(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__QueryTransfer(soap, data), 0) || interswitch::soap_put___interswitch__QueryTransfer(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__QueryTransfer(struct soap*, const struct __interswitch__QueryTransfer *, const char*, const char*); + +#define soap_read___interswitch__QueryTransfer(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__QueryTransfer(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__QueryTransfer * SOAP_FMAC4 soap_get___interswitch__QueryTransfer(struct soap*, struct __interswitch__QueryTransfer *, const char*, const char*); + +#define soap_new___interswitch__QueryTransfer(soap, n) soap_instantiate___interswitch__QueryTransfer(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__QueryTransfer(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__QueryTransfer * SOAP_FMAC2 soap_instantiate___interswitch__QueryTransfer(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__QueryTransfer(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__SendSessionKey +#define SOAP_TYPE_interswitch___interswitch__SendSessionKey (151) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__SendSessionKey(struct soap*, struct __interswitch__SendSessionKey *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__SendSessionKey(struct soap*, const struct __interswitch__SendSessionKey *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__SendSessionKey(struct soap*, const char*, int, const struct __interswitch__SendSessionKey *, const char*); +SOAP_FMAC3 struct __interswitch__SendSessionKey * SOAP_FMAC4 soap_in___interswitch__SendSessionKey(struct soap*, const char*, struct __interswitch__SendSessionKey *, const char*); + +#define soap_write___interswitch__SendSessionKey(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__SendSessionKey(soap, data), 0) || interswitch::soap_put___interswitch__SendSessionKey(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__SendSessionKey(struct soap*, const struct __interswitch__SendSessionKey *, const char*, const char*); + +#define soap_read___interswitch__SendSessionKey(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__SendSessionKey(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__SendSessionKey * SOAP_FMAC4 soap_get___interswitch__SendSessionKey(struct soap*, struct __interswitch__SendSessionKey *, const char*, const char*); + +#define soap_new___interswitch__SendSessionKey(soap, n) soap_instantiate___interswitch__SendSessionKey(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__SendSessionKey(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__SendSessionKey * SOAP_FMAC2 soap_instantiate___interswitch__SendSessionKey(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__SendSessionKey(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__CancelTransfer +#define SOAP_TYPE_interswitch___interswitch__CancelTransfer (147) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__CancelTransfer(struct soap*, struct __interswitch__CancelTransfer *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__CancelTransfer(struct soap*, const struct __interswitch__CancelTransfer *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__CancelTransfer(struct soap*, const char*, int, const struct __interswitch__CancelTransfer *, const char*); +SOAP_FMAC3 struct __interswitch__CancelTransfer * SOAP_FMAC4 soap_in___interswitch__CancelTransfer(struct soap*, const char*, struct __interswitch__CancelTransfer *, const char*); + +#define soap_write___interswitch__CancelTransfer(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__CancelTransfer(soap, data), 0) || interswitch::soap_put___interswitch__CancelTransfer(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__CancelTransfer(struct soap*, const struct __interswitch__CancelTransfer *, const char*, const char*); + +#define soap_read___interswitch__CancelTransfer(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__CancelTransfer(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__CancelTransfer * SOAP_FMAC4 soap_get___interswitch__CancelTransfer(struct soap*, struct __interswitch__CancelTransfer *, const char*, const char*); + +#define soap_new___interswitch__CancelTransfer(soap, n) soap_instantiate___interswitch__CancelTransfer(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__CancelTransfer(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__CancelTransfer * SOAP_FMAC2 soap_instantiate___interswitch__CancelTransfer(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__CancelTransfer(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__DoTransfer +#define SOAP_TYPE_interswitch___interswitch__DoTransfer (143) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__DoTransfer(struct soap*, struct __interswitch__DoTransfer *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__DoTransfer(struct soap*, const struct __interswitch__DoTransfer *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__DoTransfer(struct soap*, const char*, int, const struct __interswitch__DoTransfer *, const char*); +SOAP_FMAC3 struct __interswitch__DoTransfer * SOAP_FMAC4 soap_in___interswitch__DoTransfer(struct soap*, const char*, struct __interswitch__DoTransfer *, const char*); + +#define soap_write___interswitch__DoTransfer(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__DoTransfer(soap, data), 0) || interswitch::soap_put___interswitch__DoTransfer(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__DoTransfer(struct soap*, const struct __interswitch__DoTransfer *, const char*, const char*); + +#define soap_read___interswitch__DoTransfer(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__DoTransfer(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__DoTransfer * SOAP_FMAC4 soap_get___interswitch__DoTransfer(struct soap*, struct __interswitch__DoTransfer *, const char*, const char*); + +#define soap_new___interswitch__DoTransfer(soap, n) soap_instantiate___interswitch__DoTransfer(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__DoTransfer(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__DoTransfer * SOAP_FMAC2 soap_instantiate___interswitch__DoTransfer(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__DoTransfer(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__ValidateCustomer +#define SOAP_TYPE_interswitch___interswitch__ValidateCustomer (139) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__ValidateCustomer(struct soap*, struct __interswitch__ValidateCustomer *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__ValidateCustomer(struct soap*, const struct __interswitch__ValidateCustomer *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__ValidateCustomer(struct soap*, const char*, int, const struct __interswitch__ValidateCustomer *, const char*); +SOAP_FMAC3 struct __interswitch__ValidateCustomer * SOAP_FMAC4 soap_in___interswitch__ValidateCustomer(struct soap*, const char*, struct __interswitch__ValidateCustomer *, const char*); + +#define soap_write___interswitch__ValidateCustomer(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__ValidateCustomer(soap, data), 0) || interswitch::soap_put___interswitch__ValidateCustomer(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__ValidateCustomer(struct soap*, const struct __interswitch__ValidateCustomer *, const char*, const char*); + +#define soap_read___interswitch__ValidateCustomer(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__ValidateCustomer(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__ValidateCustomer * SOAP_FMAC4 soap_get___interswitch__ValidateCustomer(struct soap*, struct __interswitch__ValidateCustomer *, const char*, const char*); + +#define soap_new___interswitch__ValidateCustomer(soap, n) soap_instantiate___interswitch__ValidateCustomer(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__ValidateCustomer(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__ValidateCustomer * SOAP_FMAC2 soap_instantiate___interswitch__ValidateCustomer(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__ValidateCustomer(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_interswitch_PointerToSOAP_ENV__Reason +#define SOAP_TYPE_interswitch_PointerToSOAP_ENV__Reason (301) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Reason(struct soap*, const char *, int, struct SOAP_ENV__Reason *const*, const char *); +SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Reason(struct soap*, const char*, struct SOAP_ENV__Reason **, const char*); + +#define soap_write_PointerToSOAP_ENV__Reason(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerToSOAP_ENV__Reason(soap, data), 0) || interswitch::soap_put_PointerToSOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *const*, const char*, const char*); + +#define soap_read_PointerToSOAP_ENV__Reason(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerToSOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason **, const char*, const char*); + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_interswitch_PointerToSOAP_ENV__Detail +#define SOAP_TYPE_interswitch_PointerToSOAP_ENV__Detail (300) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Detail(struct soap*, const char *, int, struct SOAP_ENV__Detail *const*, const char *); +SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Detail(struct soap*, const char*, struct SOAP_ENV__Detail **, const char*); + +#define soap_write_PointerToSOAP_ENV__Detail(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerToSOAP_ENV__Detail(soap, data), 0) || interswitch::soap_put_PointerToSOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *const*, const char*, const char*); + +#define soap_read_PointerToSOAP_ENV__Detail(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerToSOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail **, const char*, const char*); + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_interswitch_PointerToSOAP_ENV__Code +#define SOAP_TYPE_interswitch_PointerToSOAP_ENV__Code (294) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Code(struct soap*, const char *, int, struct SOAP_ENV__Code *const*, const char *); +SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Code(struct soap*, const char*, struct SOAP_ENV__Code **, const char*); + +#define soap_write_PointerToSOAP_ENV__Code(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerToSOAP_ENV__Code(soap, data), 0) || interswitch::soap_put_PointerToSOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *const*, const char*, const char*); + +#define soap_read_PointerToSOAP_ENV__Code(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerToSOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code **, const char*, const char*); + +#endif + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__VerifyBillerResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__VerifyBillerResponse (289) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__VerifyBillerResponse(struct soap*, _interswitch__VerifyBillerResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__VerifyBillerResponse(struct soap*, const char *, int, _interswitch__VerifyBillerResponse *const*, const char *); +SOAP_FMAC3 _interswitch__VerifyBillerResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__VerifyBillerResponse(struct soap*, const char*, _interswitch__VerifyBillerResponse **, const char*); + +#define soap_write_PointerTo_interswitch__VerifyBillerResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__VerifyBillerResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__VerifyBillerResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__VerifyBillerResponse(struct soap*, _interswitch__VerifyBillerResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__VerifyBillerResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__VerifyBillerResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__VerifyBillerResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__VerifyBillerResponse(struct soap*, _interswitch__VerifyBillerResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__VerifyBiller +#define SOAP_TYPE_interswitch_PointerTo_interswitch__VerifyBiller (288) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__VerifyBiller(struct soap*, _interswitch__VerifyBiller *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__VerifyBiller(struct soap*, const char *, int, _interswitch__VerifyBiller *const*, const char *); +SOAP_FMAC3 _interswitch__VerifyBiller ** SOAP_FMAC4 soap_in_PointerTo_interswitch__VerifyBiller(struct soap*, const char*, _interswitch__VerifyBiller **, const char*); + +#define soap_write_PointerTo_interswitch__VerifyBiller(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__VerifyBiller(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__VerifyBiller(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__VerifyBiller(struct soap*, _interswitch__VerifyBiller *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__VerifyBiller(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__VerifyBiller(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__VerifyBiller ** SOAP_FMAC4 soap_get_PointerTo_interswitch__VerifyBiller(struct soap*, _interswitch__VerifyBiller **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__CreateBillerResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__CreateBillerResponse (285) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__CreateBillerResponse(struct soap*, _interswitch__CreateBillerResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__CreateBillerResponse(struct soap*, const char *, int, _interswitch__CreateBillerResponse *const*, const char *); +SOAP_FMAC3 _interswitch__CreateBillerResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__CreateBillerResponse(struct soap*, const char*, _interswitch__CreateBillerResponse **, const char*); + +#define soap_write_PointerTo_interswitch__CreateBillerResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__CreateBillerResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__CreateBillerResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__CreateBillerResponse(struct soap*, _interswitch__CreateBillerResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__CreateBillerResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__CreateBillerResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__CreateBillerResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__CreateBillerResponse(struct soap*, _interswitch__CreateBillerResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__CreateBiller +#define SOAP_TYPE_interswitch_PointerTo_interswitch__CreateBiller (284) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__CreateBiller(struct soap*, _interswitch__CreateBiller *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__CreateBiller(struct soap*, const char *, int, _interswitch__CreateBiller *const*, const char *); +SOAP_FMAC3 _interswitch__CreateBiller ** SOAP_FMAC4 soap_in_PointerTo_interswitch__CreateBiller(struct soap*, const char*, _interswitch__CreateBiller **, const char*); + +#define soap_write_PointerTo_interswitch__CreateBiller(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__CreateBiller(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__CreateBiller(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__CreateBiller(struct soap*, _interswitch__CreateBiller *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__CreateBiller(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__CreateBiller(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__CreateBiller ** SOAP_FMAC4 soap_get_PointerTo_interswitch__CreateBiller(struct soap*, _interswitch__CreateBiller **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__DoCustomProcessingResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__DoCustomProcessingResponse (281) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__DoCustomProcessingResponse(struct soap*, _interswitch__DoCustomProcessingResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__DoCustomProcessingResponse(struct soap*, const char *, int, _interswitch__DoCustomProcessingResponse *const*, const char *); +SOAP_FMAC3 _interswitch__DoCustomProcessingResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__DoCustomProcessingResponse(struct soap*, const char*, _interswitch__DoCustomProcessingResponse **, const char*); + +#define soap_write_PointerTo_interswitch__DoCustomProcessingResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__DoCustomProcessingResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__DoCustomProcessingResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__DoCustomProcessingResponse(struct soap*, _interswitch__DoCustomProcessingResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__DoCustomProcessingResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__DoCustomProcessingResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__DoCustomProcessingResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__DoCustomProcessingResponse(struct soap*, _interswitch__DoCustomProcessingResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__DoCustomProcessing +#define SOAP_TYPE_interswitch_PointerTo_interswitch__DoCustomProcessing (280) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__DoCustomProcessing(struct soap*, _interswitch__DoCustomProcessing *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__DoCustomProcessing(struct soap*, const char *, int, _interswitch__DoCustomProcessing *const*, const char *); +SOAP_FMAC3 _interswitch__DoCustomProcessing ** SOAP_FMAC4 soap_in_PointerTo_interswitch__DoCustomProcessing(struct soap*, const char*, _interswitch__DoCustomProcessing **, const char*); + +#define soap_write_PointerTo_interswitch__DoCustomProcessing(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__DoCustomProcessing(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__DoCustomProcessing(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__DoCustomProcessing(struct soap*, _interswitch__DoCustomProcessing *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__DoCustomProcessing(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__DoCustomProcessing(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__DoCustomProcessing ** SOAP_FMAC4 soap_get_PointerTo_interswitch__DoCustomProcessing(struct soap*, _interswitch__DoCustomProcessing **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__ResendActivationTokenResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__ResendActivationTokenResponse (277) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ResendActivationTokenResponse(struct soap*, _interswitch__ResendActivationTokenResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ResendActivationTokenResponse(struct soap*, const char *, int, _interswitch__ResendActivationTokenResponse *const*, const char *); +SOAP_FMAC3 _interswitch__ResendActivationTokenResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ResendActivationTokenResponse(struct soap*, const char*, _interswitch__ResendActivationTokenResponse **, const char*); + +#define soap_write_PointerTo_interswitch__ResendActivationTokenResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__ResendActivationTokenResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__ResendActivationTokenResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ResendActivationTokenResponse(struct soap*, _interswitch__ResendActivationTokenResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__ResendActivationTokenResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__ResendActivationTokenResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ResendActivationTokenResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ResendActivationTokenResponse(struct soap*, _interswitch__ResendActivationTokenResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__ResendActivationToken +#define SOAP_TYPE_interswitch_PointerTo_interswitch__ResendActivationToken (276) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ResendActivationToken(struct soap*, _interswitch__ResendActivationToken *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ResendActivationToken(struct soap*, const char *, int, _interswitch__ResendActivationToken *const*, const char *); +SOAP_FMAC3 _interswitch__ResendActivationToken ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ResendActivationToken(struct soap*, const char*, _interswitch__ResendActivationToken **, const char*); + +#define soap_write_PointerTo_interswitch__ResendActivationToken(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__ResendActivationToken(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__ResendActivationToken(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ResendActivationToken(struct soap*, _interswitch__ResendActivationToken *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__ResendActivationToken(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__ResendActivationToken(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ResendActivationToken ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ResendActivationToken(struct soap*, _interswitch__ResendActivationToken **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__EditCustomerBillerAccountResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__EditCustomerBillerAccountResponse (273) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__EditCustomerBillerAccountResponse(struct soap*, _interswitch__EditCustomerBillerAccountResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__EditCustomerBillerAccountResponse(struct soap*, const char *, int, _interswitch__EditCustomerBillerAccountResponse *const*, const char *); +SOAP_FMAC3 _interswitch__EditCustomerBillerAccountResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__EditCustomerBillerAccountResponse(struct soap*, const char*, _interswitch__EditCustomerBillerAccountResponse **, const char*); + +#define soap_write_PointerTo_interswitch__EditCustomerBillerAccountResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__EditCustomerBillerAccountResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__EditCustomerBillerAccountResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__EditCustomerBillerAccountResponse(struct soap*, _interswitch__EditCustomerBillerAccountResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__EditCustomerBillerAccountResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__EditCustomerBillerAccountResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__EditCustomerBillerAccountResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__EditCustomerBillerAccountResponse(struct soap*, _interswitch__EditCustomerBillerAccountResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__EditCustomerBillerAccount +#define SOAP_TYPE_interswitch_PointerTo_interswitch__EditCustomerBillerAccount (272) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__EditCustomerBillerAccount(struct soap*, _interswitch__EditCustomerBillerAccount *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__EditCustomerBillerAccount(struct soap*, const char *, int, _interswitch__EditCustomerBillerAccount *const*, const char *); +SOAP_FMAC3 _interswitch__EditCustomerBillerAccount ** SOAP_FMAC4 soap_in_PointerTo_interswitch__EditCustomerBillerAccount(struct soap*, const char*, _interswitch__EditCustomerBillerAccount **, const char*); + +#define soap_write_PointerTo_interswitch__EditCustomerBillerAccount(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__EditCustomerBillerAccount(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__EditCustomerBillerAccount(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__EditCustomerBillerAccount(struct soap*, _interswitch__EditCustomerBillerAccount *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__EditCustomerBillerAccount(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__EditCustomerBillerAccount(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__EditCustomerBillerAccount ** SOAP_FMAC4 soap_get_PointerTo_interswitch__EditCustomerBillerAccount(struct soap*, _interswitch__EditCustomerBillerAccount **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillersCollectionsAccountResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillersCollectionsAccountResponse (269) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetBillersCollectionsAccountResponse(struct soap*, _interswitch__GetBillersCollectionsAccountResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetBillersCollectionsAccountResponse(struct soap*, const char *, int, _interswitch__GetBillersCollectionsAccountResponse *const*, const char *); +SOAP_FMAC3 _interswitch__GetBillersCollectionsAccountResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetBillersCollectionsAccountResponse(struct soap*, const char*, _interswitch__GetBillersCollectionsAccountResponse **, const char*); + +#define soap_write_PointerTo_interswitch__GetBillersCollectionsAccountResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetBillersCollectionsAccountResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetBillersCollectionsAccountResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetBillersCollectionsAccountResponse(struct soap*, _interswitch__GetBillersCollectionsAccountResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetBillersCollectionsAccountResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetBillersCollectionsAccountResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetBillersCollectionsAccountResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetBillersCollectionsAccountResponse(struct soap*, _interswitch__GetBillersCollectionsAccountResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillersCollectionsAccount +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillersCollectionsAccount (268) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetBillersCollectionsAccount(struct soap*, _interswitch__GetBillersCollectionsAccount *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetBillersCollectionsAccount(struct soap*, const char *, int, _interswitch__GetBillersCollectionsAccount *const*, const char *); +SOAP_FMAC3 _interswitch__GetBillersCollectionsAccount ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetBillersCollectionsAccount(struct soap*, const char*, _interswitch__GetBillersCollectionsAccount **, const char*); + +#define soap_write_PointerTo_interswitch__GetBillersCollectionsAccount(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetBillersCollectionsAccount(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetBillersCollectionsAccount(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetBillersCollectionsAccount(struct soap*, _interswitch__GetBillersCollectionsAccount *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetBillersCollectionsAccount(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetBillersCollectionsAccount(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetBillersCollectionsAccount ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetBillersCollectionsAccount(struct soap*, _interswitch__GetBillersCollectionsAccount **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetCollectionsAccountResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetCollectionsAccountResponse (265) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetCollectionsAccountResponse(struct soap*, _interswitch__GetCollectionsAccountResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetCollectionsAccountResponse(struct soap*, const char *, int, _interswitch__GetCollectionsAccountResponse *const*, const char *); +SOAP_FMAC3 _interswitch__GetCollectionsAccountResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetCollectionsAccountResponse(struct soap*, const char*, _interswitch__GetCollectionsAccountResponse **, const char*); + +#define soap_write_PointerTo_interswitch__GetCollectionsAccountResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetCollectionsAccountResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetCollectionsAccountResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetCollectionsAccountResponse(struct soap*, _interswitch__GetCollectionsAccountResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetCollectionsAccountResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetCollectionsAccountResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetCollectionsAccountResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetCollectionsAccountResponse(struct soap*, _interswitch__GetCollectionsAccountResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetCollectionsAccount +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetCollectionsAccount (264) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetCollectionsAccount(struct soap*, _interswitch__GetCollectionsAccount *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetCollectionsAccount(struct soap*, const char *, int, _interswitch__GetCollectionsAccount *const*, const char *); +SOAP_FMAC3 _interswitch__GetCollectionsAccount ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetCollectionsAccount(struct soap*, const char*, _interswitch__GetCollectionsAccount **, const char*); + +#define soap_write_PointerTo_interswitch__GetCollectionsAccount(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetCollectionsAccount(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetCollectionsAccount(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetCollectionsAccount(struct soap*, _interswitch__GetCollectionsAccount *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetCollectionsAccount(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetCollectionsAccount(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetCollectionsAccount ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetCollectionsAccount(struct soap*, _interswitch__GetCollectionsAccount **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__AddBillerCustomerResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__AddBillerCustomerResponse (261) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AddBillerCustomerResponse(struct soap*, _interswitch__AddBillerCustomerResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AddBillerCustomerResponse(struct soap*, const char *, int, _interswitch__AddBillerCustomerResponse *const*, const char *); +SOAP_FMAC3 _interswitch__AddBillerCustomerResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AddBillerCustomerResponse(struct soap*, const char*, _interswitch__AddBillerCustomerResponse **, const char*); + +#define soap_write_PointerTo_interswitch__AddBillerCustomerResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__AddBillerCustomerResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__AddBillerCustomerResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AddBillerCustomerResponse(struct soap*, _interswitch__AddBillerCustomerResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__AddBillerCustomerResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__AddBillerCustomerResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AddBillerCustomerResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AddBillerCustomerResponse(struct soap*, _interswitch__AddBillerCustomerResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__AddBillerCustomer +#define SOAP_TYPE_interswitch_PointerTo_interswitch__AddBillerCustomer (260) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AddBillerCustomer(struct soap*, _interswitch__AddBillerCustomer *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AddBillerCustomer(struct soap*, const char *, int, _interswitch__AddBillerCustomer *const*, const char *); +SOAP_FMAC3 _interswitch__AddBillerCustomer ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AddBillerCustomer(struct soap*, const char*, _interswitch__AddBillerCustomer **, const char*); + +#define soap_write_PointerTo_interswitch__AddBillerCustomer(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__AddBillerCustomer(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__AddBillerCustomer(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AddBillerCustomer(struct soap*, _interswitch__AddBillerCustomer *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__AddBillerCustomer(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__AddBillerCustomer(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AddBillerCustomer ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AddBillerCustomer(struct soap*, _interswitch__AddBillerCustomer **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerPaymentsResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerPaymentsResponse (257) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetCustomerPaymentsResponse(struct soap*, _interswitch__GetCustomerPaymentsResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetCustomerPaymentsResponse(struct soap*, const char *, int, _interswitch__GetCustomerPaymentsResponse *const*, const char *); +SOAP_FMAC3 _interswitch__GetCustomerPaymentsResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetCustomerPaymentsResponse(struct soap*, const char*, _interswitch__GetCustomerPaymentsResponse **, const char*); + +#define soap_write_PointerTo_interswitch__GetCustomerPaymentsResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetCustomerPaymentsResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetCustomerPaymentsResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetCustomerPaymentsResponse(struct soap*, _interswitch__GetCustomerPaymentsResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetCustomerPaymentsResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetCustomerPaymentsResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetCustomerPaymentsResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetCustomerPaymentsResponse(struct soap*, _interswitch__GetCustomerPaymentsResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerPayments +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerPayments (256) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetCustomerPayments(struct soap*, _interswitch__GetCustomerPayments *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetCustomerPayments(struct soap*, const char *, int, _interswitch__GetCustomerPayments *const*, const char *); +SOAP_FMAC3 _interswitch__GetCustomerPayments ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetCustomerPayments(struct soap*, const char*, _interswitch__GetCustomerPayments **, const char*); + +#define soap_write_PointerTo_interswitch__GetCustomerPayments(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetCustomerPayments(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetCustomerPayments(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetCustomerPayments(struct soap*, _interswitch__GetCustomerPayments *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetCustomerPayments(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetCustomerPayments(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetCustomerPayments ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetCustomerPayments(struct soap*, _interswitch__GetCustomerPayments **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerBillerAccountsResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerBillerAccountsResponse (253) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetCustomerBillerAccountsResponse(struct soap*, _interswitch__GetCustomerBillerAccountsResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetCustomerBillerAccountsResponse(struct soap*, const char *, int, _interswitch__GetCustomerBillerAccountsResponse *const*, const char *); +SOAP_FMAC3 _interswitch__GetCustomerBillerAccountsResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetCustomerBillerAccountsResponse(struct soap*, const char*, _interswitch__GetCustomerBillerAccountsResponse **, const char*); + +#define soap_write_PointerTo_interswitch__GetCustomerBillerAccountsResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetCustomerBillerAccountsResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetCustomerBillerAccountsResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetCustomerBillerAccountsResponse(struct soap*, _interswitch__GetCustomerBillerAccountsResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetCustomerBillerAccountsResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetCustomerBillerAccountsResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetCustomerBillerAccountsResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetCustomerBillerAccountsResponse(struct soap*, _interswitch__GetCustomerBillerAccountsResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerBillerAccounts +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerBillerAccounts (252) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetCustomerBillerAccounts(struct soap*, _interswitch__GetCustomerBillerAccounts *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetCustomerBillerAccounts(struct soap*, const char *, int, _interswitch__GetCustomerBillerAccounts *const*, const char *); +SOAP_FMAC3 _interswitch__GetCustomerBillerAccounts ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetCustomerBillerAccounts(struct soap*, const char*, _interswitch__GetCustomerBillerAccounts **, const char*); + +#define soap_write_PointerTo_interswitch__GetCustomerBillerAccounts(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetCustomerBillerAccounts(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetCustomerBillerAccounts(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetCustomerBillerAccounts(struct soap*, _interswitch__GetCustomerBillerAccounts *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetCustomerBillerAccounts(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetCustomerBillerAccounts(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetCustomerBillerAccounts ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetCustomerBillerAccounts(struct soap*, _interswitch__GetCustomerBillerAccounts **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__AddCustomerBillerAccountResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__AddCustomerBillerAccountResponse (249) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AddCustomerBillerAccountResponse(struct soap*, _interswitch__AddCustomerBillerAccountResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AddCustomerBillerAccountResponse(struct soap*, const char *, int, _interswitch__AddCustomerBillerAccountResponse *const*, const char *); +SOAP_FMAC3 _interswitch__AddCustomerBillerAccountResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AddCustomerBillerAccountResponse(struct soap*, const char*, _interswitch__AddCustomerBillerAccountResponse **, const char*); + +#define soap_write_PointerTo_interswitch__AddCustomerBillerAccountResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__AddCustomerBillerAccountResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__AddCustomerBillerAccountResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AddCustomerBillerAccountResponse(struct soap*, _interswitch__AddCustomerBillerAccountResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__AddCustomerBillerAccountResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__AddCustomerBillerAccountResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AddCustomerBillerAccountResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AddCustomerBillerAccountResponse(struct soap*, _interswitch__AddCustomerBillerAccountResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__AddCustomerBillerAccount +#define SOAP_TYPE_interswitch_PointerTo_interswitch__AddCustomerBillerAccount (248) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AddCustomerBillerAccount(struct soap*, _interswitch__AddCustomerBillerAccount *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AddCustomerBillerAccount(struct soap*, const char *, int, _interswitch__AddCustomerBillerAccount *const*, const char *); +SOAP_FMAC3 _interswitch__AddCustomerBillerAccount ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AddCustomerBillerAccount(struct soap*, const char*, _interswitch__AddCustomerBillerAccount **, const char*); + +#define soap_write_PointerTo_interswitch__AddCustomerBillerAccount(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__AddCustomerBillerAccount(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__AddCustomerBillerAccount(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AddCustomerBillerAccount(struct soap*, _interswitch__AddCustomerBillerAccount *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__AddCustomerBillerAccount(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__AddCustomerBillerAccount(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AddCustomerBillerAccount ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AddCustomerBillerAccount(struct soap*, _interswitch__AddCustomerBillerAccount **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__SendPaymentsResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__SendPaymentsResponse (245) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__SendPaymentsResponse(struct soap*, _interswitch__SendPaymentsResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__SendPaymentsResponse(struct soap*, const char *, int, _interswitch__SendPaymentsResponse *const*, const char *); +SOAP_FMAC3 _interswitch__SendPaymentsResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__SendPaymentsResponse(struct soap*, const char*, _interswitch__SendPaymentsResponse **, const char*); + +#define soap_write_PointerTo_interswitch__SendPaymentsResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__SendPaymentsResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__SendPaymentsResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__SendPaymentsResponse(struct soap*, _interswitch__SendPaymentsResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__SendPaymentsResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__SendPaymentsResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__SendPaymentsResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__SendPaymentsResponse(struct soap*, _interswitch__SendPaymentsResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__SendPayments +#define SOAP_TYPE_interswitch_PointerTo_interswitch__SendPayments (244) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__SendPayments(struct soap*, _interswitch__SendPayments *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__SendPayments(struct soap*, const char *, int, _interswitch__SendPayments *const*, const char *); +SOAP_FMAC3 _interswitch__SendPayments ** SOAP_FMAC4 soap_in_PointerTo_interswitch__SendPayments(struct soap*, const char*, _interswitch__SendPayments **, const char*); + +#define soap_write_PointerTo_interswitch__SendPayments(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__SendPayments(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__SendPayments(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__SendPayments(struct soap*, _interswitch__SendPayments *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__SendPayments(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__SendPayments(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__SendPayments ** SOAP_FMAC4 soap_get_PointerTo_interswitch__SendPayments(struct soap*, _interswitch__SendPayments **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__SendBillPaymentAdviceResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__SendBillPaymentAdviceResponse (241) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__SendBillPaymentAdviceResponse(struct soap*, _interswitch__SendBillPaymentAdviceResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__SendBillPaymentAdviceResponse(struct soap*, const char *, int, _interswitch__SendBillPaymentAdviceResponse *const*, const char *); +SOAP_FMAC3 _interswitch__SendBillPaymentAdviceResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__SendBillPaymentAdviceResponse(struct soap*, const char*, _interswitch__SendBillPaymentAdviceResponse **, const char*); + +#define soap_write_PointerTo_interswitch__SendBillPaymentAdviceResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__SendBillPaymentAdviceResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__SendBillPaymentAdviceResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__SendBillPaymentAdviceResponse(struct soap*, _interswitch__SendBillPaymentAdviceResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__SendBillPaymentAdviceResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__SendBillPaymentAdviceResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__SendBillPaymentAdviceResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__SendBillPaymentAdviceResponse(struct soap*, _interswitch__SendBillPaymentAdviceResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__SendBillPaymentAdvice +#define SOAP_TYPE_interswitch_PointerTo_interswitch__SendBillPaymentAdvice (240) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__SendBillPaymentAdvice(struct soap*, _interswitch__SendBillPaymentAdvice *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__SendBillPaymentAdvice(struct soap*, const char *, int, _interswitch__SendBillPaymentAdvice *const*, const char *); +SOAP_FMAC3 _interswitch__SendBillPaymentAdvice ** SOAP_FMAC4 soap_in_PointerTo_interswitch__SendBillPaymentAdvice(struct soap*, const char*, _interswitch__SendBillPaymentAdvice **, const char*); + +#define soap_write_PointerTo_interswitch__SendBillPaymentAdvice(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__SendBillPaymentAdvice(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__SendBillPaymentAdvice(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__SendBillPaymentAdvice(struct soap*, _interswitch__SendBillPaymentAdvice *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__SendBillPaymentAdvice(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__SendBillPaymentAdvice(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__SendBillPaymentAdvice ** SOAP_FMAC4 soap_get_PointerTo_interswitch__SendBillPaymentAdvice(struct soap*, _interswitch__SendBillPaymentAdvice **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateCustomerResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateCustomerResponse (237) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthenticateCustomerResponse(struct soap*, _interswitch__AuthenticateCustomerResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthenticateCustomerResponse(struct soap*, const char *, int, _interswitch__AuthenticateCustomerResponse *const*, const char *); +SOAP_FMAC3 _interswitch__AuthenticateCustomerResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthenticateCustomerResponse(struct soap*, const char*, _interswitch__AuthenticateCustomerResponse **, const char*); + +#define soap_write_PointerTo_interswitch__AuthenticateCustomerResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__AuthenticateCustomerResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__AuthenticateCustomerResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthenticateCustomerResponse(struct soap*, _interswitch__AuthenticateCustomerResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__AuthenticateCustomerResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__AuthenticateCustomerResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthenticateCustomerResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthenticateCustomerResponse(struct soap*, _interswitch__AuthenticateCustomerResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateCustomer +#define SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateCustomer (236) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthenticateCustomer(struct soap*, _interswitch__AuthenticateCustomer *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthenticateCustomer(struct soap*, const char *, int, _interswitch__AuthenticateCustomer *const*, const char *); +SOAP_FMAC3 _interswitch__AuthenticateCustomer ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthenticateCustomer(struct soap*, const char*, _interswitch__AuthenticateCustomer **, const char*); + +#define soap_write_PointerTo_interswitch__AuthenticateCustomer(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__AuthenticateCustomer(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__AuthenticateCustomer(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthenticateCustomer(struct soap*, _interswitch__AuthenticateCustomer *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__AuthenticateCustomer(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__AuthenticateCustomer(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthenticateCustomer ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthenticateCustomer(struct soap*, _interswitch__AuthenticateCustomer **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__DoBillPaymentInquiryResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__DoBillPaymentInquiryResponse (233) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__DoBillPaymentInquiryResponse(struct soap*, _interswitch__DoBillPaymentInquiryResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__DoBillPaymentInquiryResponse(struct soap*, const char *, int, _interswitch__DoBillPaymentInquiryResponse *const*, const char *); +SOAP_FMAC3 _interswitch__DoBillPaymentInquiryResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__DoBillPaymentInquiryResponse(struct soap*, const char*, _interswitch__DoBillPaymentInquiryResponse **, const char*); + +#define soap_write_PointerTo_interswitch__DoBillPaymentInquiryResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__DoBillPaymentInquiryResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__DoBillPaymentInquiryResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__DoBillPaymentInquiryResponse(struct soap*, _interswitch__DoBillPaymentInquiryResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__DoBillPaymentInquiryResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__DoBillPaymentInquiryResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__DoBillPaymentInquiryResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__DoBillPaymentInquiryResponse(struct soap*, _interswitch__DoBillPaymentInquiryResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__DoBillPaymentInquiry +#define SOAP_TYPE_interswitch_PointerTo_interswitch__DoBillPaymentInquiry (232) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__DoBillPaymentInquiry(struct soap*, _interswitch__DoBillPaymentInquiry *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__DoBillPaymentInquiry(struct soap*, const char *, int, _interswitch__DoBillPaymentInquiry *const*, const char *); +SOAP_FMAC3 _interswitch__DoBillPaymentInquiry ** SOAP_FMAC4 soap_in_PointerTo_interswitch__DoBillPaymentInquiry(struct soap*, const char*, _interswitch__DoBillPaymentInquiry **, const char*); + +#define soap_write_PointerTo_interswitch__DoBillPaymentInquiry(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__DoBillPaymentInquiry(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__DoBillPaymentInquiry(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__DoBillPaymentInquiry(struct soap*, _interswitch__DoBillPaymentInquiry *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__DoBillPaymentInquiry(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__DoBillPaymentInquiry(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__DoBillPaymentInquiry ** SOAP_FMAC4 soap_get_PointerTo_interswitch__DoBillPaymentInquiry(struct soap*, _interswitch__DoBillPaymentInquiry **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerCategoriesResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerCategoriesResponse (229) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetBillerCategoriesResponse(struct soap*, _interswitch__GetBillerCategoriesResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetBillerCategoriesResponse(struct soap*, const char *, int, _interswitch__GetBillerCategoriesResponse *const*, const char *); +SOAP_FMAC3 _interswitch__GetBillerCategoriesResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetBillerCategoriesResponse(struct soap*, const char*, _interswitch__GetBillerCategoriesResponse **, const char*); + +#define soap_write_PointerTo_interswitch__GetBillerCategoriesResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetBillerCategoriesResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetBillerCategoriesResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetBillerCategoriesResponse(struct soap*, _interswitch__GetBillerCategoriesResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetBillerCategoriesResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetBillerCategoriesResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetBillerCategoriesResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetBillerCategoriesResponse(struct soap*, _interswitch__GetBillerCategoriesResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerCategories +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerCategories (228) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetBillerCategories(struct soap*, _interswitch__GetBillerCategories *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetBillerCategories(struct soap*, const char *, int, _interswitch__GetBillerCategories *const*, const char *); +SOAP_FMAC3 _interswitch__GetBillerCategories ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetBillerCategories(struct soap*, const char*, _interswitch__GetBillerCategories **, const char*); + +#define soap_write_PointerTo_interswitch__GetBillerCategories(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetBillerCategories(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetBillerCategories(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetBillerCategories(struct soap*, _interswitch__GetBillerCategories *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetBillerCategories(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetBillerCategories(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetBillerCategories ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetBillerCategories(struct soap*, _interswitch__GetBillerCategories **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerPaymentItemsResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerPaymentItemsResponse (225) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetBillerPaymentItemsResponse(struct soap*, _interswitch__GetBillerPaymentItemsResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetBillerPaymentItemsResponse(struct soap*, const char *, int, _interswitch__GetBillerPaymentItemsResponse *const*, const char *); +SOAP_FMAC3 _interswitch__GetBillerPaymentItemsResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetBillerPaymentItemsResponse(struct soap*, const char*, _interswitch__GetBillerPaymentItemsResponse **, const char*); + +#define soap_write_PointerTo_interswitch__GetBillerPaymentItemsResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetBillerPaymentItemsResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetBillerPaymentItemsResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetBillerPaymentItemsResponse(struct soap*, _interswitch__GetBillerPaymentItemsResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetBillerPaymentItemsResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetBillerPaymentItemsResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetBillerPaymentItemsResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetBillerPaymentItemsResponse(struct soap*, _interswitch__GetBillerPaymentItemsResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerPaymentItems +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerPaymentItems (224) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetBillerPaymentItems(struct soap*, _interswitch__GetBillerPaymentItems *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetBillerPaymentItems(struct soap*, const char *, int, _interswitch__GetBillerPaymentItems *const*, const char *); +SOAP_FMAC3 _interswitch__GetBillerPaymentItems ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetBillerPaymentItems(struct soap*, const char*, _interswitch__GetBillerPaymentItems **, const char*); + +#define soap_write_PointerTo_interswitch__GetBillerPaymentItems(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetBillerPaymentItems(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetBillerPaymentItems(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetBillerPaymentItems(struct soap*, _interswitch__GetBillerPaymentItems *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetBillerPaymentItems(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetBillerPaymentItems(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetBillerPaymentItems ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetBillerPaymentItems(struct soap*, _interswitch__GetBillerPaymentItems **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetFeaturedBillersResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetFeaturedBillersResponse (221) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetFeaturedBillersResponse(struct soap*, _interswitch__GetFeaturedBillersResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetFeaturedBillersResponse(struct soap*, const char *, int, _interswitch__GetFeaturedBillersResponse *const*, const char *); +SOAP_FMAC3 _interswitch__GetFeaturedBillersResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetFeaturedBillersResponse(struct soap*, const char*, _interswitch__GetFeaturedBillersResponse **, const char*); + +#define soap_write_PointerTo_interswitch__GetFeaturedBillersResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetFeaturedBillersResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetFeaturedBillersResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetFeaturedBillersResponse(struct soap*, _interswitch__GetFeaturedBillersResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetFeaturedBillersResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetFeaturedBillersResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetFeaturedBillersResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetFeaturedBillersResponse(struct soap*, _interswitch__GetFeaturedBillersResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetFeaturedBillers +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetFeaturedBillers (220) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetFeaturedBillers(struct soap*, _interswitch__GetFeaturedBillers *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetFeaturedBillers(struct soap*, const char *, int, _interswitch__GetFeaturedBillers *const*, const char *); +SOAP_FMAC3 _interswitch__GetFeaturedBillers ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetFeaturedBillers(struct soap*, const char*, _interswitch__GetFeaturedBillers **, const char*); + +#define soap_write_PointerTo_interswitch__GetFeaturedBillers(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetFeaturedBillers(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetFeaturedBillers(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetFeaturedBillers(struct soap*, _interswitch__GetFeaturedBillers *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetFeaturedBillers(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetFeaturedBillers(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetFeaturedBillers ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetFeaturedBillers(struct soap*, _interswitch__GetFeaturedBillers **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetLatestBillersResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetLatestBillersResponse (217) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetLatestBillersResponse(struct soap*, _interswitch__GetLatestBillersResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetLatestBillersResponse(struct soap*, const char *, int, _interswitch__GetLatestBillersResponse *const*, const char *); +SOAP_FMAC3 _interswitch__GetLatestBillersResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetLatestBillersResponse(struct soap*, const char*, _interswitch__GetLatestBillersResponse **, const char*); + +#define soap_write_PointerTo_interswitch__GetLatestBillersResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetLatestBillersResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetLatestBillersResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetLatestBillersResponse(struct soap*, _interswitch__GetLatestBillersResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetLatestBillersResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetLatestBillersResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetLatestBillersResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetLatestBillersResponse(struct soap*, _interswitch__GetLatestBillersResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetLatestBillers +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetLatestBillers (216) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetLatestBillers(struct soap*, _interswitch__GetLatestBillers *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetLatestBillers(struct soap*, const char *, int, _interswitch__GetLatestBillers *const*, const char *); +SOAP_FMAC3 _interswitch__GetLatestBillers ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetLatestBillers(struct soap*, const char*, _interswitch__GetLatestBillers **, const char*); + +#define soap_write_PointerTo_interswitch__GetLatestBillers(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetLatestBillers(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetLatestBillers(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetLatestBillers(struct soap*, _interswitch__GetLatestBillers *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetLatestBillers(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetLatestBillers(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetLatestBillers ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetLatestBillers(struct soap*, _interswitch__GetLatestBillers **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillersResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillersResponse (213) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetBillersResponse(struct soap*, _interswitch__GetBillersResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetBillersResponse(struct soap*, const char *, int, _interswitch__GetBillersResponse *const*, const char *); +SOAP_FMAC3 _interswitch__GetBillersResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetBillersResponse(struct soap*, const char*, _interswitch__GetBillersResponse **, const char*); + +#define soap_write_PointerTo_interswitch__GetBillersResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetBillersResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetBillersResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetBillersResponse(struct soap*, _interswitch__GetBillersResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetBillersResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetBillersResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetBillersResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetBillersResponse(struct soap*, _interswitch__GetBillersResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillers +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillers (212) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetBillers(struct soap*, _interswitch__GetBillers *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetBillers(struct soap*, const char *, int, _interswitch__GetBillers *const*, const char *); +SOAP_FMAC3 _interswitch__GetBillers ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetBillers(struct soap*, const char*, _interswitch__GetBillers **, const char*); + +#define soap_write_PointerTo_interswitch__GetBillers(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetBillers(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetBillers(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetBillers(struct soap*, _interswitch__GetBillers *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetBillers(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetBillers(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetBillers ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetBillers(struct soap*, _interswitch__GetBillers **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetUserResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetUserResponse (209) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetUserResponse(struct soap*, _interswitch__GetUserResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetUserResponse(struct soap*, const char *, int, _interswitch__GetUserResponse *const*, const char *); +SOAP_FMAC3 _interswitch__GetUserResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetUserResponse(struct soap*, const char*, _interswitch__GetUserResponse **, const char*); + +#define soap_write_PointerTo_interswitch__GetUserResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetUserResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetUserResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetUserResponse(struct soap*, _interswitch__GetUserResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetUserResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetUserResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetUserResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetUserResponse(struct soap*, _interswitch__GetUserResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetUser +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetUser (208) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetUser(struct soap*, _interswitch__GetUser *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetUser(struct soap*, const char *, int, _interswitch__GetUser *const*, const char *); +SOAP_FMAC3 _interswitch__GetUser ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetUser(struct soap*, const char*, _interswitch__GetUser **, const char*); + +#define soap_write_PointerTo_interswitch__GetUser(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetUser(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetUser(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetUser(struct soap*, _interswitch__GetUser *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetUser(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetUser(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetUser ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetUser(struct soap*, _interswitch__GetUser **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse (205) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(struct soap*, _interswitch__AuthenticateUserSecurityTokenResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(struct soap*, const char *, int, _interswitch__AuthenticateUserSecurityTokenResponse *const*, const char *); +SOAP_FMAC3 _interswitch__AuthenticateUserSecurityTokenResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(struct soap*, const char*, _interswitch__AuthenticateUserSecurityTokenResponse **, const char*); + +#define soap_write_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(struct soap*, _interswitch__AuthenticateUserSecurityTokenResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthenticateUserSecurityTokenResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(struct soap*, _interswitch__AuthenticateUserSecurityTokenResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUserSecurityToken +#define SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUserSecurityToken (204) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthenticateUserSecurityToken(struct soap*, _interswitch__AuthenticateUserSecurityToken *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthenticateUserSecurityToken(struct soap*, const char *, int, _interswitch__AuthenticateUserSecurityToken *const*, const char *); +SOAP_FMAC3 _interswitch__AuthenticateUserSecurityToken ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthenticateUserSecurityToken(struct soap*, const char*, _interswitch__AuthenticateUserSecurityToken **, const char*); + +#define soap_write_PointerTo_interswitch__AuthenticateUserSecurityToken(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__AuthenticateUserSecurityToken(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__AuthenticateUserSecurityToken(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthenticateUserSecurityToken(struct soap*, _interswitch__AuthenticateUserSecurityToken *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__AuthenticateUserSecurityToken(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__AuthenticateUserSecurityToken(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthenticateUserSecurityToken ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthenticateUserSecurityToken(struct soap*, _interswitch__AuthenticateUserSecurityToken **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUserResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUserResponse (201) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthenticateUserResponse(struct soap*, _interswitch__AuthenticateUserResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthenticateUserResponse(struct soap*, const char *, int, _interswitch__AuthenticateUserResponse *const*, const char *); +SOAP_FMAC3 _interswitch__AuthenticateUserResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthenticateUserResponse(struct soap*, const char*, _interswitch__AuthenticateUserResponse **, const char*); + +#define soap_write_PointerTo_interswitch__AuthenticateUserResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__AuthenticateUserResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__AuthenticateUserResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthenticateUserResponse(struct soap*, _interswitch__AuthenticateUserResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__AuthenticateUserResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__AuthenticateUserResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthenticateUserResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthenticateUserResponse(struct soap*, _interswitch__AuthenticateUserResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUser +#define SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUser (200) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthenticateUser(struct soap*, _interswitch__AuthenticateUser *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthenticateUser(struct soap*, const char *, int, _interswitch__AuthenticateUser *const*, const char *); +SOAP_FMAC3 _interswitch__AuthenticateUser ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthenticateUser(struct soap*, const char*, _interswitch__AuthenticateUser **, const char*); + +#define soap_write_PointerTo_interswitch__AuthenticateUser(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__AuthenticateUser(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__AuthenticateUser(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthenticateUser(struct soap*, _interswitch__AuthenticateUser *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__AuthenticateUser(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__AuthenticateUser(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthenticateUser ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthenticateUser(struct soap*, _interswitch__AuthenticateUser **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__ResetPasswordResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__ResetPasswordResponse (197) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ResetPasswordResponse(struct soap*, _interswitch__ResetPasswordResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ResetPasswordResponse(struct soap*, const char *, int, _interswitch__ResetPasswordResponse *const*, const char *); +SOAP_FMAC3 _interswitch__ResetPasswordResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ResetPasswordResponse(struct soap*, const char*, _interswitch__ResetPasswordResponse **, const char*); + +#define soap_write_PointerTo_interswitch__ResetPasswordResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__ResetPasswordResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__ResetPasswordResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ResetPasswordResponse(struct soap*, _interswitch__ResetPasswordResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__ResetPasswordResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__ResetPasswordResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ResetPasswordResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ResetPasswordResponse(struct soap*, _interswitch__ResetPasswordResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__ResetPassword +#define SOAP_TYPE_interswitch_PointerTo_interswitch__ResetPassword (196) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ResetPassword(struct soap*, _interswitch__ResetPassword *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ResetPassword(struct soap*, const char *, int, _interswitch__ResetPassword *const*, const char *); +SOAP_FMAC3 _interswitch__ResetPassword ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ResetPassword(struct soap*, const char*, _interswitch__ResetPassword **, const char*); + +#define soap_write_PointerTo_interswitch__ResetPassword(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__ResetPassword(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__ResetPassword(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ResetPassword(struct soap*, _interswitch__ResetPassword *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__ResetPassword(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__ResetPassword(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ResetPassword ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ResetPassword(struct soap*, _interswitch__ResetPassword **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__ChangePasswordResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__ChangePasswordResponse (193) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ChangePasswordResponse(struct soap*, _interswitch__ChangePasswordResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ChangePasswordResponse(struct soap*, const char *, int, _interswitch__ChangePasswordResponse *const*, const char *); +SOAP_FMAC3 _interswitch__ChangePasswordResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ChangePasswordResponse(struct soap*, const char*, _interswitch__ChangePasswordResponse **, const char*); + +#define soap_write_PointerTo_interswitch__ChangePasswordResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__ChangePasswordResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__ChangePasswordResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ChangePasswordResponse(struct soap*, _interswitch__ChangePasswordResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__ChangePasswordResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__ChangePasswordResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ChangePasswordResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ChangePasswordResponse(struct soap*, _interswitch__ChangePasswordResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__ChangePassword +#define SOAP_TYPE_interswitch_PointerTo_interswitch__ChangePassword (192) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ChangePassword(struct soap*, _interswitch__ChangePassword *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ChangePassword(struct soap*, const char *, int, _interswitch__ChangePassword *const*, const char *); +SOAP_FMAC3 _interswitch__ChangePassword ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ChangePassword(struct soap*, const char*, _interswitch__ChangePassword **, const char*); + +#define soap_write_PointerTo_interswitch__ChangePassword(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__ChangePassword(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__ChangePassword(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ChangePassword(struct soap*, _interswitch__ChangePassword *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__ChangePassword(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__ChangePassword(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ChangePassword ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ChangePassword(struct soap*, _interswitch__ChangePassword **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__UpdateUserResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__UpdateUserResponse (189) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__UpdateUserResponse(struct soap*, _interswitch__UpdateUserResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__UpdateUserResponse(struct soap*, const char *, int, _interswitch__UpdateUserResponse *const*, const char *); +SOAP_FMAC3 _interswitch__UpdateUserResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__UpdateUserResponse(struct soap*, const char*, _interswitch__UpdateUserResponse **, const char*); + +#define soap_write_PointerTo_interswitch__UpdateUserResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__UpdateUserResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__UpdateUserResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__UpdateUserResponse(struct soap*, _interswitch__UpdateUserResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__UpdateUserResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__UpdateUserResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__UpdateUserResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__UpdateUserResponse(struct soap*, _interswitch__UpdateUserResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__UpdateUser +#define SOAP_TYPE_interswitch_PointerTo_interswitch__UpdateUser (188) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__UpdateUser(struct soap*, _interswitch__UpdateUser *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__UpdateUser(struct soap*, const char *, int, _interswitch__UpdateUser *const*, const char *); +SOAP_FMAC3 _interswitch__UpdateUser ** SOAP_FMAC4 soap_in_PointerTo_interswitch__UpdateUser(struct soap*, const char*, _interswitch__UpdateUser **, const char*); + +#define soap_write_PointerTo_interswitch__UpdateUser(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__UpdateUser(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__UpdateUser(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__UpdateUser(struct soap*, _interswitch__UpdateUser *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__UpdateUser(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__UpdateUser(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__UpdateUser ** SOAP_FMAC4 soap_get_PointerTo_interswitch__UpdateUser(struct soap*, _interswitch__UpdateUser **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__ActivateUserResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__ActivateUserResponse (185) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ActivateUserResponse(struct soap*, _interswitch__ActivateUserResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ActivateUserResponse(struct soap*, const char *, int, _interswitch__ActivateUserResponse *const*, const char *); +SOAP_FMAC3 _interswitch__ActivateUserResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ActivateUserResponse(struct soap*, const char*, _interswitch__ActivateUserResponse **, const char*); + +#define soap_write_PointerTo_interswitch__ActivateUserResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__ActivateUserResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__ActivateUserResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ActivateUserResponse(struct soap*, _interswitch__ActivateUserResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__ActivateUserResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__ActivateUserResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ActivateUserResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ActivateUserResponse(struct soap*, _interswitch__ActivateUserResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__ActivateUser +#define SOAP_TYPE_interswitch_PointerTo_interswitch__ActivateUser (184) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ActivateUser(struct soap*, _interswitch__ActivateUser *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ActivateUser(struct soap*, const char *, int, _interswitch__ActivateUser *const*, const char *); +SOAP_FMAC3 _interswitch__ActivateUser ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ActivateUser(struct soap*, const char*, _interswitch__ActivateUser **, const char*); + +#define soap_write_PointerTo_interswitch__ActivateUser(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__ActivateUser(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__ActivateUser(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ActivateUser(struct soap*, _interswitch__ActivateUser *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__ActivateUser(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__ActivateUser(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ActivateUser ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ActivateUser(struct soap*, _interswitch__ActivateUser **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__CreateUserResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__CreateUserResponse (181) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__CreateUserResponse(struct soap*, _interswitch__CreateUserResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__CreateUserResponse(struct soap*, const char *, int, _interswitch__CreateUserResponse *const*, const char *); +SOAP_FMAC3 _interswitch__CreateUserResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__CreateUserResponse(struct soap*, const char*, _interswitch__CreateUserResponse **, const char*); + +#define soap_write_PointerTo_interswitch__CreateUserResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__CreateUserResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__CreateUserResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__CreateUserResponse(struct soap*, _interswitch__CreateUserResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__CreateUserResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__CreateUserResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__CreateUserResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__CreateUserResponse(struct soap*, _interswitch__CreateUserResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__CreateUser +#define SOAP_TYPE_interswitch_PointerTo_interswitch__CreateUser (180) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__CreateUser(struct soap*, _interswitch__CreateUser *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__CreateUser(struct soap*, const char *, int, _interswitch__CreateUser *const*, const char *); +SOAP_FMAC3 _interswitch__CreateUser ** SOAP_FMAC4 soap_in_PointerTo_interswitch__CreateUser(struct soap*, const char*, _interswitch__CreateUser **, const char*); + +#define soap_write_PointerTo_interswitch__CreateUser(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__CreateUser(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__CreateUser(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__CreateUser(struct soap*, _interswitch__CreateUser *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__CreateUser(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__CreateUser(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__CreateUser ** SOAP_FMAC4 soap_get_PointerTo_interswitch__CreateUser(struct soap*, _interswitch__CreateUser **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetSystemSettingsResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetSystemSettingsResponse (177) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetSystemSettingsResponse(struct soap*, _interswitch__GetSystemSettingsResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetSystemSettingsResponse(struct soap*, const char *, int, _interswitch__GetSystemSettingsResponse *const*, const char *); +SOAP_FMAC3 _interswitch__GetSystemSettingsResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetSystemSettingsResponse(struct soap*, const char*, _interswitch__GetSystemSettingsResponse **, const char*); + +#define soap_write_PointerTo_interswitch__GetSystemSettingsResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetSystemSettingsResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetSystemSettingsResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetSystemSettingsResponse(struct soap*, _interswitch__GetSystemSettingsResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetSystemSettingsResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetSystemSettingsResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetSystemSettingsResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetSystemSettingsResponse(struct soap*, _interswitch__GetSystemSettingsResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetSystemSettings +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetSystemSettings (176) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetSystemSettings(struct soap*, _interswitch__GetSystemSettings *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetSystemSettings(struct soap*, const char *, int, _interswitch__GetSystemSettings *const*, const char *); +SOAP_FMAC3 _interswitch__GetSystemSettings ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetSystemSettings(struct soap*, const char*, _interswitch__GetSystemSettings **, const char*); + +#define soap_write_PointerTo_interswitch__GetSystemSettings(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetSystemSettings(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetSystemSettings(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetSystemSettings(struct soap*, _interswitch__GetSystemSettings *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetSystemSettings(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetSystemSettings(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetSystemSettings ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetSystemSettings(struct soap*, _interswitch__GetSystemSettings **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransactionResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransactionResponse (173) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__QueryTransactionResponse(struct soap*, _interswitch__QueryTransactionResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__QueryTransactionResponse(struct soap*, const char *, int, _interswitch__QueryTransactionResponse *const*, const char *); +SOAP_FMAC3 _interswitch__QueryTransactionResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__QueryTransactionResponse(struct soap*, const char*, _interswitch__QueryTransactionResponse **, const char*); + +#define soap_write_PointerTo_interswitch__QueryTransactionResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__QueryTransactionResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__QueryTransactionResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__QueryTransactionResponse(struct soap*, _interswitch__QueryTransactionResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__QueryTransactionResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__QueryTransactionResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__QueryTransactionResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__QueryTransactionResponse(struct soap*, _interswitch__QueryTransactionResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransaction +#define SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransaction (172) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__QueryTransaction(struct soap*, _interswitch__QueryTransaction *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__QueryTransaction(struct soap*, const char *, int, _interswitch__QueryTransaction *const*, const char *); +SOAP_FMAC3 _interswitch__QueryTransaction ** SOAP_FMAC4 soap_in_PointerTo_interswitch__QueryTransaction(struct soap*, const char*, _interswitch__QueryTransaction **, const char*); + +#define soap_write_PointerTo_interswitch__QueryTransaction(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__QueryTransaction(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__QueryTransaction(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__QueryTransaction(struct soap*, _interswitch__QueryTransaction *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__QueryTransaction(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__QueryTransaction(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__QueryTransaction ** SOAP_FMAC4 soap_get_PointerTo_interswitch__QueryTransaction(struct soap*, _interswitch__QueryTransaction **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__StatusCheckResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__StatusCheckResponse (169) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__StatusCheckResponse(struct soap*, _interswitch__StatusCheckResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__StatusCheckResponse(struct soap*, const char *, int, _interswitch__StatusCheckResponse *const*, const char *); +SOAP_FMAC3 _interswitch__StatusCheckResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__StatusCheckResponse(struct soap*, const char*, _interswitch__StatusCheckResponse **, const char*); + +#define soap_write_PointerTo_interswitch__StatusCheckResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__StatusCheckResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__StatusCheckResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__StatusCheckResponse(struct soap*, _interswitch__StatusCheckResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__StatusCheckResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__StatusCheckResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__StatusCheckResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__StatusCheckResponse(struct soap*, _interswitch__StatusCheckResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__StatusCheck +#define SOAP_TYPE_interswitch_PointerTo_interswitch__StatusCheck (168) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__StatusCheck(struct soap*, _interswitch__StatusCheck *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__StatusCheck(struct soap*, const char *, int, _interswitch__StatusCheck *const*, const char *); +SOAP_FMAC3 _interswitch__StatusCheck ** SOAP_FMAC4 soap_in_PointerTo_interswitch__StatusCheck(struct soap*, const char*, _interswitch__StatusCheck **, const char*); + +#define soap_write_PointerTo_interswitch__StatusCheck(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__StatusCheck(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__StatusCheck(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__StatusCheck(struct soap*, _interswitch__StatusCheck *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__StatusCheck(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__StatusCheck(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__StatusCheck ** SOAP_FMAC4 soap_get_PointerTo_interswitch__StatusCheck(struct soap*, _interswitch__StatusCheck **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__ReverseCashOutResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__ReverseCashOutResponse (165) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ReverseCashOutResponse(struct soap*, _interswitch__ReverseCashOutResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ReverseCashOutResponse(struct soap*, const char *, int, _interswitch__ReverseCashOutResponse *const*, const char *); +SOAP_FMAC3 _interswitch__ReverseCashOutResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ReverseCashOutResponse(struct soap*, const char*, _interswitch__ReverseCashOutResponse **, const char*); + +#define soap_write_PointerTo_interswitch__ReverseCashOutResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__ReverseCashOutResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__ReverseCashOutResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ReverseCashOutResponse(struct soap*, _interswitch__ReverseCashOutResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__ReverseCashOutResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__ReverseCashOutResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ReverseCashOutResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ReverseCashOutResponse(struct soap*, _interswitch__ReverseCashOutResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__ReverseCashOut +#define SOAP_TYPE_interswitch_PointerTo_interswitch__ReverseCashOut (164) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ReverseCashOut(struct soap*, _interswitch__ReverseCashOut *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ReverseCashOut(struct soap*, const char *, int, _interswitch__ReverseCashOut *const*, const char *); +SOAP_FMAC3 _interswitch__ReverseCashOut ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ReverseCashOut(struct soap*, const char*, _interswitch__ReverseCashOut **, const char*); + +#define soap_write_PointerTo_interswitch__ReverseCashOut(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__ReverseCashOut(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__ReverseCashOut(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ReverseCashOut(struct soap*, _interswitch__ReverseCashOut *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__ReverseCashOut(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__ReverseCashOut(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ReverseCashOut ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ReverseCashOut(struct soap*, _interswitch__ReverseCashOut **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseAccountCashOutResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseAccountCashOutResponse (161) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthoriseAccountCashOutResponse(struct soap*, _interswitch__AuthoriseAccountCashOutResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthoriseAccountCashOutResponse(struct soap*, const char *, int, _interswitch__AuthoriseAccountCashOutResponse *const*, const char *); +SOAP_FMAC3 _interswitch__AuthoriseAccountCashOutResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthoriseAccountCashOutResponse(struct soap*, const char*, _interswitch__AuthoriseAccountCashOutResponse **, const char*); + +#define soap_write_PointerTo_interswitch__AuthoriseAccountCashOutResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__AuthoriseAccountCashOutResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__AuthoriseAccountCashOutResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthoriseAccountCashOutResponse(struct soap*, _interswitch__AuthoriseAccountCashOutResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__AuthoriseAccountCashOutResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__AuthoriseAccountCashOutResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthoriseAccountCashOutResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthoriseAccountCashOutResponse(struct soap*, _interswitch__AuthoriseAccountCashOutResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseAccountCashOut +#define SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseAccountCashOut (160) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthoriseAccountCashOut(struct soap*, _interswitch__AuthoriseAccountCashOut *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthoriseAccountCashOut(struct soap*, const char *, int, _interswitch__AuthoriseAccountCashOut *const*, const char *); +SOAP_FMAC3 _interswitch__AuthoriseAccountCashOut ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthoriseAccountCashOut(struct soap*, const char*, _interswitch__AuthoriseAccountCashOut **, const char*); + +#define soap_write_PointerTo_interswitch__AuthoriseAccountCashOut(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__AuthoriseAccountCashOut(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__AuthoriseAccountCashOut(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthoriseAccountCashOut(struct soap*, _interswitch__AuthoriseAccountCashOut *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__AuthoriseAccountCashOut(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__AuthoriseAccountCashOut(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthoriseAccountCashOut ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthoriseAccountCashOut(struct soap*, _interswitch__AuthoriseAccountCashOut **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseCashOutResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseCashOutResponse (157) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthoriseCashOutResponse(struct soap*, _interswitch__AuthoriseCashOutResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthoriseCashOutResponse(struct soap*, const char *, int, _interswitch__AuthoriseCashOutResponse *const*, const char *); +SOAP_FMAC3 _interswitch__AuthoriseCashOutResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthoriseCashOutResponse(struct soap*, const char*, _interswitch__AuthoriseCashOutResponse **, const char*); + +#define soap_write_PointerTo_interswitch__AuthoriseCashOutResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__AuthoriseCashOutResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__AuthoriseCashOutResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthoriseCashOutResponse(struct soap*, _interswitch__AuthoriseCashOutResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__AuthoriseCashOutResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__AuthoriseCashOutResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthoriseCashOutResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthoriseCashOutResponse(struct soap*, _interswitch__AuthoriseCashOutResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseCashOut +#define SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseCashOut (156) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthoriseCashOut(struct soap*, _interswitch__AuthoriseCashOut *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthoriseCashOut(struct soap*, const char *, int, _interswitch__AuthoriseCashOut *const*, const char *); +SOAP_FMAC3 _interswitch__AuthoriseCashOut ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthoriseCashOut(struct soap*, const char*, _interswitch__AuthoriseCashOut **, const char*); + +#define soap_write_PointerTo_interswitch__AuthoriseCashOut(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__AuthoriseCashOut(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__AuthoriseCashOut(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthoriseCashOut(struct soap*, _interswitch__AuthoriseCashOut *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__AuthoriseCashOut(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__AuthoriseCashOut(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthoriseCashOut ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthoriseCashOut(struct soap*, _interswitch__AuthoriseCashOut **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransferResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransferResponse (153) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__QueryTransferResponse(struct soap*, _interswitch__QueryTransferResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__QueryTransferResponse(struct soap*, const char *, int, _interswitch__QueryTransferResponse *const*, const char *); +SOAP_FMAC3 _interswitch__QueryTransferResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__QueryTransferResponse(struct soap*, const char*, _interswitch__QueryTransferResponse **, const char*); + +#define soap_write_PointerTo_interswitch__QueryTransferResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__QueryTransferResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__QueryTransferResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__QueryTransferResponse(struct soap*, _interswitch__QueryTransferResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__QueryTransferResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__QueryTransferResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__QueryTransferResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__QueryTransferResponse(struct soap*, _interswitch__QueryTransferResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransfer +#define SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransfer (152) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__QueryTransfer(struct soap*, _interswitch__QueryTransfer *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__QueryTransfer(struct soap*, const char *, int, _interswitch__QueryTransfer *const*, const char *); +SOAP_FMAC3 _interswitch__QueryTransfer ** SOAP_FMAC4 soap_in_PointerTo_interswitch__QueryTransfer(struct soap*, const char*, _interswitch__QueryTransfer **, const char*); + +#define soap_write_PointerTo_interswitch__QueryTransfer(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__QueryTransfer(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__QueryTransfer(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__QueryTransfer(struct soap*, _interswitch__QueryTransfer *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__QueryTransfer(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__QueryTransfer(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__QueryTransfer ** SOAP_FMAC4 soap_get_PointerTo_interswitch__QueryTransfer(struct soap*, _interswitch__QueryTransfer **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__SendSessionKeyResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__SendSessionKeyResponse (149) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__SendSessionKeyResponse(struct soap*, _interswitch__SendSessionKeyResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__SendSessionKeyResponse(struct soap*, const char *, int, _interswitch__SendSessionKeyResponse *const*, const char *); +SOAP_FMAC3 _interswitch__SendSessionKeyResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__SendSessionKeyResponse(struct soap*, const char*, _interswitch__SendSessionKeyResponse **, const char*); + +#define soap_write_PointerTo_interswitch__SendSessionKeyResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__SendSessionKeyResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__SendSessionKeyResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__SendSessionKeyResponse(struct soap*, _interswitch__SendSessionKeyResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__SendSessionKeyResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__SendSessionKeyResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__SendSessionKeyResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__SendSessionKeyResponse(struct soap*, _interswitch__SendSessionKeyResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__SendSessionKey +#define SOAP_TYPE_interswitch_PointerTo_interswitch__SendSessionKey (148) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__SendSessionKey(struct soap*, _interswitch__SendSessionKey *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__SendSessionKey(struct soap*, const char *, int, _interswitch__SendSessionKey *const*, const char *); +SOAP_FMAC3 _interswitch__SendSessionKey ** SOAP_FMAC4 soap_in_PointerTo_interswitch__SendSessionKey(struct soap*, const char*, _interswitch__SendSessionKey **, const char*); + +#define soap_write_PointerTo_interswitch__SendSessionKey(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__SendSessionKey(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__SendSessionKey(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__SendSessionKey(struct soap*, _interswitch__SendSessionKey *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__SendSessionKey(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__SendSessionKey(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__SendSessionKey ** SOAP_FMAC4 soap_get_PointerTo_interswitch__SendSessionKey(struct soap*, _interswitch__SendSessionKey **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__CancelTransferResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__CancelTransferResponse (145) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__CancelTransferResponse(struct soap*, _interswitch__CancelTransferResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__CancelTransferResponse(struct soap*, const char *, int, _interswitch__CancelTransferResponse *const*, const char *); +SOAP_FMAC3 _interswitch__CancelTransferResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__CancelTransferResponse(struct soap*, const char*, _interswitch__CancelTransferResponse **, const char*); + +#define soap_write_PointerTo_interswitch__CancelTransferResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__CancelTransferResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__CancelTransferResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__CancelTransferResponse(struct soap*, _interswitch__CancelTransferResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__CancelTransferResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__CancelTransferResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__CancelTransferResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__CancelTransferResponse(struct soap*, _interswitch__CancelTransferResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__CancelTransfer +#define SOAP_TYPE_interswitch_PointerTo_interswitch__CancelTransfer (144) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__CancelTransfer(struct soap*, _interswitch__CancelTransfer *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__CancelTransfer(struct soap*, const char *, int, _interswitch__CancelTransfer *const*, const char *); +SOAP_FMAC3 _interswitch__CancelTransfer ** SOAP_FMAC4 soap_in_PointerTo_interswitch__CancelTransfer(struct soap*, const char*, _interswitch__CancelTransfer **, const char*); + +#define soap_write_PointerTo_interswitch__CancelTransfer(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__CancelTransfer(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__CancelTransfer(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__CancelTransfer(struct soap*, _interswitch__CancelTransfer *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__CancelTransfer(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__CancelTransfer(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__CancelTransfer ** SOAP_FMAC4 soap_get_PointerTo_interswitch__CancelTransfer(struct soap*, _interswitch__CancelTransfer **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__DoTransferResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__DoTransferResponse (141) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__DoTransferResponse(struct soap*, _interswitch__DoTransferResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__DoTransferResponse(struct soap*, const char *, int, _interswitch__DoTransferResponse *const*, const char *); +SOAP_FMAC3 _interswitch__DoTransferResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__DoTransferResponse(struct soap*, const char*, _interswitch__DoTransferResponse **, const char*); + +#define soap_write_PointerTo_interswitch__DoTransferResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__DoTransferResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__DoTransferResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__DoTransferResponse(struct soap*, _interswitch__DoTransferResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__DoTransferResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__DoTransferResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__DoTransferResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__DoTransferResponse(struct soap*, _interswitch__DoTransferResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__DoTransfer +#define SOAP_TYPE_interswitch_PointerTo_interswitch__DoTransfer (140) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__DoTransfer(struct soap*, _interswitch__DoTransfer *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__DoTransfer(struct soap*, const char *, int, _interswitch__DoTransfer *const*, const char *); +SOAP_FMAC3 _interswitch__DoTransfer ** SOAP_FMAC4 soap_in_PointerTo_interswitch__DoTransfer(struct soap*, const char*, _interswitch__DoTransfer **, const char*); + +#define soap_write_PointerTo_interswitch__DoTransfer(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__DoTransfer(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__DoTransfer(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__DoTransfer(struct soap*, _interswitch__DoTransfer *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__DoTransfer(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__DoTransfer(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__DoTransfer ** SOAP_FMAC4 soap_get_PointerTo_interswitch__DoTransfer(struct soap*, _interswitch__DoTransfer **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__ValidateCustomerResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__ValidateCustomerResponse (137) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ValidateCustomerResponse(struct soap*, _interswitch__ValidateCustomerResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ValidateCustomerResponse(struct soap*, const char *, int, _interswitch__ValidateCustomerResponse *const*, const char *); +SOAP_FMAC3 _interswitch__ValidateCustomerResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ValidateCustomerResponse(struct soap*, const char*, _interswitch__ValidateCustomerResponse **, const char*); + +#define soap_write_PointerTo_interswitch__ValidateCustomerResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__ValidateCustomerResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__ValidateCustomerResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ValidateCustomerResponse(struct soap*, _interswitch__ValidateCustomerResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__ValidateCustomerResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__ValidateCustomerResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ValidateCustomerResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ValidateCustomerResponse(struct soap*, _interswitch__ValidateCustomerResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__ValidateCustomer +#define SOAP_TYPE_interswitch_PointerTo_interswitch__ValidateCustomer (136) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ValidateCustomer(struct soap*, _interswitch__ValidateCustomer *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ValidateCustomer(struct soap*, const char *, int, _interswitch__ValidateCustomer *const*, const char *); +SOAP_FMAC3 _interswitch__ValidateCustomer ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ValidateCustomer(struct soap*, const char*, _interswitch__ValidateCustomer **, const char*); + +#define soap_write_PointerTo_interswitch__ValidateCustomer(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__ValidateCustomer(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__ValidateCustomer(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ValidateCustomer(struct soap*, _interswitch__ValidateCustomer *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__ValidateCustomer(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__ValidateCustomer(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ValidateCustomer ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ValidateCustomer(struct soap*, _interswitch__ValidateCustomer **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTostd__string +#define SOAP_TYPE_interswitch_PointerTostd__string (135) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTostd__string(struct soap*, std::string *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTostd__string(struct soap*, const char *, int, std::string *const*, const char *); +SOAP_FMAC3 std::string ** SOAP_FMAC4 soap_in_PointerTostd__string(struct soap*, const char*, std::string **, const char*); + +#define soap_write_PointerTostd__string(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTostd__string(soap, data), 0) || interswitch::soap_put_PointerTostd__string(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTostd__string(struct soap*, std::string *const*, const char*, const char*); + +#define soap_read_PointerTostd__string(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTostd__string(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 std::string ** SOAP_FMAC4 soap_get_PointerTostd__string(struct soap*, std::string **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTounsignedByte +#define SOAP_TYPE_interswitch_PointerTounsignedByte (22) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTounsignedByte(struct soap*, unsigned char *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTounsignedByte(struct soap*, const char *, int, unsigned char *const*, const char *); +SOAP_FMAC3 unsigned char ** SOAP_FMAC4 soap_in_PointerTounsignedByte(struct soap*, const char*, unsigned char **, const char*); + +#define soap_write_PointerTounsignedByte(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTounsignedByte(soap, data), 0) || interswitch::soap_put_PointerTounsignedByte(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTounsignedByte(struct soap*, unsigned char *const*, const char*, const char*); + +#define soap_read_PointerTounsignedByte(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTounsignedByte(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 unsigned char ** SOAP_FMAC4 soap_get_PointerTounsignedByte(struct soap*, unsigned char **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch__QName +#define SOAP_TYPE_interswitch__QName (5) +#endif + +#define soap_default__QName(soap, a) soap_default_string(soap, a) + + +#define soap_serialize__QName(soap, a) soap_serialize_string(soap, a) + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__QName(struct soap*, const char*, int, char*const*, const char*); +SOAP_FMAC3 char * * SOAP_FMAC4 soap_in__QName(struct soap*, const char*, char **, const char*); + +#define soap_write__QName(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize__QName(soap, data), 0) || interswitch::soap_put__QName(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put__QName(struct soap*, char *const*, const char*, const char*); + +#define soap_read__QName(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__QName(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 char ** SOAP_FMAC4 soap_get__QName(struct soap*, char **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_string +#define SOAP_TYPE_interswitch_string (4) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_string(struct soap*, char **); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_string(struct soap*, char *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_string(struct soap*, const char*, int, char*const*, const char*); +SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_string(struct soap*, const char*, char **, const char*); + +#define soap_write_string(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_string(soap, data), 0) || interswitch::soap_put_string(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_string(struct soap*, char *const*, const char*, const char*); + +#define soap_read_string(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_string(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_string(struct soap*, char **, const char*, const char*); + +} // namespace interswitch + + +#endif + +/* End of interswitchH.h */ diff --git a/coregrade/src/include/interswitchStub.h b/coregrade/src/include/interswitchStub.h new file mode 100644 index 0000000..ebd31b9 --- /dev/null +++ b/coregrade/src/include/interswitchStub.h @@ -0,0 +1,2730 @@ +/* interswitchStub.h + Generated by gSOAP 2.7.16 from QuickTellerService.h + Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. + This part of the software is released under one of the following licenses: + GPL, the gSOAP public license, or Genivia's license for commercial use. +*/ + +#ifndef interswitchStub_H +#define interswitchStub_H +#include +#define SOAP_NAMESPACE_OF_interswitch "http://services.interswitchng.com/quicktellerservice/" +#define SOAP_NAMESPACE_OF_interswitch2 "http://schemas.microsoft.com/2003/10/Serialization/" +#ifndef WITH_NONAMESPACES +#define WITH_NONAMESPACES +#endif +#ifndef WITH_NOGLOBAL +#define WITH_NOGLOBAL +#endif +#include "stdsoap2.h" + +namespace interswitch { + +/******************************************************************************\ + * * + * Enumerations * + * * +\******************************************************************************/ + + +/******************************************************************************\ + * * + * Types with Custom Serializers * + * * +\******************************************************************************/ + +#ifndef SOAP_TYPE_interswitch_xsd__QName +#define SOAP_TYPE_interswitch_xsd__QName (15) +typedef std::string xsd__QName; +#endif + + +/******************************************************************************\ + * * + * Classes and Structs * + * * +\******************************************************************************/ + + +#if 0 /* volatile type: do not redeclare here */ + +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__anyType +#define SOAP_TYPE_interswitch_xsd__anyType (8) +/* Primitive xsd:anyType schema type: */ +class SOAP_CMAC xsd__anyType +{ +public: + char *__item; + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 8; } /* = unique id SOAP_TYPE_interswitch_xsd__anyType */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__anyType(): __item(NULL), soap(NULL) { xsd__anyType::soap_default(NULL); } + virtual ~xsd__anyType() { } +}; +#endif + +#if 0 /* volatile type: do not redeclare here */ + +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__ID_ +#define SOAP_TYPE_interswitch_xsd__ID_ (12) +/* Primitive xsd:ID schema type: */ +class SOAP_CMAC xsd__ID_ : public xsd__anyType +{ +public: + std::string __item; +public: + virtual int soap_type() const { return 12; } /* = unique id SOAP_TYPE_interswitch_xsd__ID_ */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__ID_() { xsd__ID_::soap_default(NULL); } + virtual ~xsd__ID_() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__IDREF_ +#define SOAP_TYPE_interswitch_xsd__IDREF_ (14) +/* Primitive xsd:IDREF schema type: */ +class SOAP_CMAC xsd__IDREF_ : public xsd__anyType +{ +public: + std::string __item; +public: + virtual int soap_type() const { return 14; } /* = unique id SOAP_TYPE_interswitch_xsd__IDREF_ */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__IDREF_() { xsd__IDREF_::soap_default(NULL); } + virtual ~xsd__IDREF_() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__QName_ +#define SOAP_TYPE_interswitch_xsd__QName_ (16) +/* Primitive xsd:QName schema type: */ +class SOAP_CMAC xsd__QName_ : public xsd__anyType +{ +public: + xsd__QName __item; +public: + virtual int soap_type() const { return 16; } /* = unique id SOAP_TYPE_interswitch_xsd__QName_ */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__QName_() { xsd__QName_::soap_default(NULL); } + virtual ~xsd__QName_() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__anyURI_ +#define SOAP_TYPE_interswitch_xsd__anyURI_ (18) +/* Primitive xsd:anyURI schema type: */ +class SOAP_CMAC xsd__anyURI_ : public xsd__anyType +{ +public: + std::string __item; +public: + virtual int soap_type() const { return 18; } /* = unique id SOAP_TYPE_interswitch_xsd__anyURI_ */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__anyURI_() { xsd__anyURI_::soap_default(NULL); } + virtual ~xsd__anyURI_() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__base64Binary +#define SOAP_TYPE_interswitch_xsd__base64Binary (19) +/* Base64 schema type: */ +class SOAP_CMAC xsd__base64Binary +{ +public: + unsigned char *__ptr; + int __size; + char *id; /* optional element of type xsd:string */ + char *type; /* optional element of type xsd:string */ + char *options; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 19; } /* = unique id SOAP_TYPE_interswitch_xsd__base64Binary */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__base64Binary(): __ptr(NULL), id(NULL), type(NULL), options(NULL), soap(NULL) { xsd__base64Binary::soap_default(NULL); } + virtual ~xsd__base64Binary() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__base64Binary_ +#define SOAP_TYPE_interswitch_xsd__base64Binary_ (23) +/* Primitive xsd:base64Binary schema type: */ +class SOAP_CMAC xsd__base64Binary_ : public xsd__anyType +{ +public: + xsd__base64Binary __item; +public: + virtual int soap_type() const { return 23; } /* = unique id SOAP_TYPE_interswitch_xsd__base64Binary_ */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__base64Binary_() { xsd__base64Binary_::soap_default(NULL); } + virtual ~xsd__base64Binary_() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__boolean +#define SOAP_TYPE_interswitch_xsd__boolean (24) +/* Primitive xsd:boolean schema type: */ +class SOAP_CMAC xsd__boolean : public xsd__anyType +{ +public: + bool __item; +public: + virtual int soap_type() const { return 24; } /* = unique id SOAP_TYPE_interswitch_xsd__boolean */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__boolean() { xsd__boolean::soap_default(NULL); } + virtual ~xsd__boolean() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__byte_ +#define SOAP_TYPE_interswitch_xsd__byte_ (27) +/* Primitive xsd:byte schema type: */ +class SOAP_CMAC xsd__byte_ : public xsd__anyType +{ +public: + char __item; +public: + virtual int soap_type() const { return 27; } /* = unique id SOAP_TYPE_interswitch_xsd__byte_ */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__byte_() { xsd__byte_::soap_default(NULL); } + virtual ~xsd__byte_() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__dateTime +#define SOAP_TYPE_interswitch_xsd__dateTime (28) +/* Primitive xsd:dateTime schema type: */ +class SOAP_CMAC xsd__dateTime : public xsd__anyType +{ +public: + time_t __item; +public: + virtual int soap_type() const { return 28; } /* = unique id SOAP_TYPE_interswitch_xsd__dateTime */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__dateTime() { xsd__dateTime::soap_default(NULL); } + virtual ~xsd__dateTime() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__decimal_ +#define SOAP_TYPE_interswitch_xsd__decimal_ (31) +/* Primitive xsd:decimal schema type: */ +class SOAP_CMAC xsd__decimal_ : public xsd__anyType +{ +public: + std::string __item; +public: + virtual int soap_type() const { return 31; } /* = unique id SOAP_TYPE_interswitch_xsd__decimal_ */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__decimal_() { xsd__decimal_::soap_default(NULL); } + virtual ~xsd__decimal_() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__double +#define SOAP_TYPE_interswitch_xsd__double (32) +/* Primitive xsd:double schema type: */ +class SOAP_CMAC xsd__double : public xsd__anyType +{ +public: + double __item; +public: + virtual int soap_type() const { return 32; } /* = unique id SOAP_TYPE_interswitch_xsd__double */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__double() { xsd__double::soap_default(NULL); } + virtual ~xsd__double() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__duration_ +#define SOAP_TYPE_interswitch_xsd__duration_ (35) +/* Primitive xsd:duration schema type: */ +class SOAP_CMAC xsd__duration_ : public xsd__anyType +{ +public: + std::string __item; +public: + virtual int soap_type() const { return 35; } /* = unique id SOAP_TYPE_interswitch_xsd__duration_ */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__duration_() { xsd__duration_::soap_default(NULL); } + virtual ~xsd__duration_() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__float +#define SOAP_TYPE_interswitch_xsd__float (36) +/* Primitive xsd:float schema type: */ +class SOAP_CMAC xsd__float : public xsd__anyType +{ +public: + float __item; +public: + virtual int soap_type() const { return 36; } /* = unique id SOAP_TYPE_interswitch_xsd__float */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__float() { xsd__float::soap_default(NULL); } + virtual ~xsd__float() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__int +#define SOAP_TYPE_interswitch_xsd__int (38) +/* Primitive xsd:int schema type: */ +class SOAP_CMAC xsd__int : public xsd__anyType +{ +public: + int __item; +public: + virtual int soap_type() const { return 38; } /* = unique id SOAP_TYPE_interswitch_xsd__int */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__int() { xsd__int::soap_default(NULL); } + virtual ~xsd__int() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__long +#define SOAP_TYPE_interswitch_xsd__long (39) +/* Primitive xsd:long schema type: */ +class SOAP_CMAC xsd__long : public xsd__anyType +{ +public: + LONG64 __item; +public: + virtual int soap_type() const { return 39; } /* = unique id SOAP_TYPE_interswitch_xsd__long */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__long() { xsd__long::soap_default(NULL); } + virtual ~xsd__long() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__short +#define SOAP_TYPE_interswitch_xsd__short (41) +/* Primitive xsd:short schema type: */ +class SOAP_CMAC xsd__short : public xsd__anyType +{ +public: + short __item; +public: + virtual int soap_type() const { return 41; } /* = unique id SOAP_TYPE_interswitch_xsd__short */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__short() { xsd__short::soap_default(NULL); } + virtual ~xsd__short() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__string +#define SOAP_TYPE_interswitch_xsd__string (43) +/* Primitive xsd:string schema type: */ +class SOAP_CMAC xsd__string : public xsd__anyType +{ +public: + std::string __item; +public: + virtual int soap_type() const { return 43; } /* = unique id SOAP_TYPE_interswitch_xsd__string */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__string() { xsd__string::soap_default(NULL); } + virtual ~xsd__string() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__unsignedByte_ +#define SOAP_TYPE_interswitch_xsd__unsignedByte_ (45) +/* Primitive xsd:unsignedByte schema type: */ +class SOAP_CMAC xsd__unsignedByte_ : public xsd__anyType +{ +public: + unsigned char __item; +public: + virtual int soap_type() const { return 45; } /* = unique id SOAP_TYPE_interswitch_xsd__unsignedByte_ */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__unsignedByte_() { xsd__unsignedByte_::soap_default(NULL); } + virtual ~xsd__unsignedByte_() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__unsignedInt +#define SOAP_TYPE_interswitch_xsd__unsignedInt (46) +/* Primitive xsd:unsignedInt schema type: */ +class SOAP_CMAC xsd__unsignedInt : public xsd__anyType +{ +public: + unsigned int __item; +public: + virtual int soap_type() const { return 46; } /* = unique id SOAP_TYPE_interswitch_xsd__unsignedInt */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__unsignedInt() { xsd__unsignedInt::soap_default(NULL); } + virtual ~xsd__unsignedInt() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__unsignedLong +#define SOAP_TYPE_interswitch_xsd__unsignedLong (47) +/* Primitive xsd:unsignedLong schema type: */ +class SOAP_CMAC xsd__unsignedLong : public xsd__anyType +{ +public: + ULONG64 __item; +public: + virtual int soap_type() const { return 47; } /* = unique id SOAP_TYPE_interswitch_xsd__unsignedLong */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__unsignedLong() { xsd__unsignedLong::soap_default(NULL); } + virtual ~xsd__unsignedLong() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__unsignedShort +#define SOAP_TYPE_interswitch_xsd__unsignedShort (49) +/* Primitive xsd:unsignedShort schema type: */ +class SOAP_CMAC xsd__unsignedShort : public xsd__anyType +{ +public: + unsigned short __item; +public: + virtual int soap_type() const { return 49; } /* = unique id SOAP_TYPE_interswitch_xsd__unsignedShort */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__unsignedShort() { xsd__unsignedShort::soap_default(NULL); } + virtual ~xsd__unsignedShort() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_interswitch2__char__ +#define SOAP_TYPE_interswitch_interswitch2__char__ (130) +/* Primitive interswitch2:char schema type: */ +class SOAP_CMAC interswitch2__char__ : public xsd__anyType +{ +public: + int __item; +public: + virtual int soap_type() const { return 130; } /* = unique id SOAP_TYPE_interswitch_interswitch2__char__ */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + interswitch2__char__() { interswitch2__char__::soap_default(NULL); } + virtual ~interswitch2__char__() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_interswitch2__duration__ +#define SOAP_TYPE_interswitch_interswitch2__duration__ (132) +/* Primitive interswitch2:duration schema type: */ +class SOAP_CMAC interswitch2__duration__ : public xsd__anyType +{ +public: + std::string __item; +public: + virtual int soap_type() const { return 132; } /* = unique id SOAP_TYPE_interswitch_interswitch2__duration__ */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + interswitch2__duration__() { interswitch2__duration__::soap_default(NULL); } + virtual ~interswitch2__duration__() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_interswitch2__guid__ +#define SOAP_TYPE_interswitch_interswitch2__guid__ (134) +/* Primitive interswitch2:guid schema type: */ +class SOAP_CMAC interswitch2__guid__ : public xsd__anyType +{ +public: + std::string __item; +public: + virtual int soap_type() const { return 134; } /* = unique id SOAP_TYPE_interswitch_interswitch2__guid__ */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + interswitch2__guid__() { interswitch2__guid__::soap_default(NULL); } + virtual ~interswitch2__guid__() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__ValidateCustomer +#define SOAP_TYPE_interswitch__interswitch__ValidateCustomer (51) +/* interswitch:ValidateCustomer */ +class SOAP_CMAC _interswitch__ValidateCustomer +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 51; } /* = unique id SOAP_TYPE_interswitch__interswitch__ValidateCustomer */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__ValidateCustomer(): xmlParams(NULL), soap(NULL) { _interswitch__ValidateCustomer::soap_default(NULL); } + virtual ~_interswitch__ValidateCustomer() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse +#define SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse (52) +/* interswitch:ValidateCustomerResponse */ +class SOAP_CMAC _interswitch__ValidateCustomerResponse +{ +public: + std::string *ValidateCustomerResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 52; } /* = unique id SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__ValidateCustomerResponse(): ValidateCustomerResult(NULL), soap(NULL) { _interswitch__ValidateCustomerResponse::soap_default(NULL); } + virtual ~_interswitch__ValidateCustomerResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__DoTransfer +#define SOAP_TYPE_interswitch__interswitch__DoTransfer (53) +/* interswitch:DoTransfer */ +class SOAP_CMAC _interswitch__DoTransfer +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 53; } /* = unique id SOAP_TYPE_interswitch__interswitch__DoTransfer */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__DoTransfer(): xmlParams(NULL), soap(NULL) { _interswitch__DoTransfer::soap_default(NULL); } + virtual ~_interswitch__DoTransfer() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__DoTransferResponse +#define SOAP_TYPE_interswitch__interswitch__DoTransferResponse (54) +/* interswitch:DoTransferResponse */ +class SOAP_CMAC _interswitch__DoTransferResponse +{ +public: + std::string *DoTransferResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 54; } /* = unique id SOAP_TYPE_interswitch__interswitch__DoTransferResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__DoTransferResponse(): DoTransferResult(NULL), soap(NULL) { _interswitch__DoTransferResponse::soap_default(NULL); } + virtual ~_interswitch__DoTransferResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__CancelTransfer +#define SOAP_TYPE_interswitch__interswitch__CancelTransfer (55) +/* interswitch:CancelTransfer */ +class SOAP_CMAC _interswitch__CancelTransfer +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 55; } /* = unique id SOAP_TYPE_interswitch__interswitch__CancelTransfer */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__CancelTransfer(): xmlParams(NULL), soap(NULL) { _interswitch__CancelTransfer::soap_default(NULL); } + virtual ~_interswitch__CancelTransfer() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__CancelTransferResponse +#define SOAP_TYPE_interswitch__interswitch__CancelTransferResponse (56) +/* interswitch:CancelTransferResponse */ +class SOAP_CMAC _interswitch__CancelTransferResponse +{ +public: + std::string *CancelTransferResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 56; } /* = unique id SOAP_TYPE_interswitch__interswitch__CancelTransferResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__CancelTransferResponse(): CancelTransferResult(NULL), soap(NULL) { _interswitch__CancelTransferResponse::soap_default(NULL); } + virtual ~_interswitch__CancelTransferResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__SendSessionKey +#define SOAP_TYPE_interswitch__interswitch__SendSessionKey (57) +/* interswitch:SendSessionKey */ +class SOAP_CMAC _interswitch__SendSessionKey +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 57; } /* = unique id SOAP_TYPE_interswitch__interswitch__SendSessionKey */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__SendSessionKey(): xmlParams(NULL), soap(NULL) { _interswitch__SendSessionKey::soap_default(NULL); } + virtual ~_interswitch__SendSessionKey() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse +#define SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse (58) +/* interswitch:SendSessionKeyResponse */ +class SOAP_CMAC _interswitch__SendSessionKeyResponse +{ +public: + std::string *SendSessionKeyResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 58; } /* = unique id SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__SendSessionKeyResponse(): SendSessionKeyResult(NULL), soap(NULL) { _interswitch__SendSessionKeyResponse::soap_default(NULL); } + virtual ~_interswitch__SendSessionKeyResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__QueryTransfer +#define SOAP_TYPE_interswitch__interswitch__QueryTransfer (59) +/* interswitch:QueryTransfer */ +class SOAP_CMAC _interswitch__QueryTransfer +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 59; } /* = unique id SOAP_TYPE_interswitch__interswitch__QueryTransfer */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__QueryTransfer(): xmlParams(NULL), soap(NULL) { _interswitch__QueryTransfer::soap_default(NULL); } + virtual ~_interswitch__QueryTransfer() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__QueryTransferResponse +#define SOAP_TYPE_interswitch__interswitch__QueryTransferResponse (60) +/* interswitch:QueryTransferResponse */ +class SOAP_CMAC _interswitch__QueryTransferResponse +{ +public: + std::string *QueryTransferResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 60; } /* = unique id SOAP_TYPE_interswitch__interswitch__QueryTransferResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__QueryTransferResponse(): QueryTransferResult(NULL), soap(NULL) { _interswitch__QueryTransferResponse::soap_default(NULL); } + virtual ~_interswitch__QueryTransferResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut +#define SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut (61) +/* interswitch:AuthoriseCashOut */ +class SOAP_CMAC _interswitch__AuthoriseCashOut +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 61; } /* = unique id SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__AuthoriseCashOut(): xmlParams(NULL), soap(NULL) { _interswitch__AuthoriseCashOut::soap_default(NULL); } + virtual ~_interswitch__AuthoriseCashOut() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse +#define SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse (62) +/* interswitch:AuthoriseCashOutResponse */ +class SOAP_CMAC _interswitch__AuthoriseCashOutResponse +{ +public: + std::string *AuthoriseCashOutResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 62; } /* = unique id SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__AuthoriseCashOutResponse(): AuthoriseCashOutResult(NULL), soap(NULL) { _interswitch__AuthoriseCashOutResponse::soap_default(NULL); } + virtual ~_interswitch__AuthoriseCashOutResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut +#define SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut (63) +/* interswitch:AuthoriseAccountCashOut */ +class SOAP_CMAC _interswitch__AuthoriseAccountCashOut +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 63; } /* = unique id SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__AuthoriseAccountCashOut(): xmlParams(NULL), soap(NULL) { _interswitch__AuthoriseAccountCashOut::soap_default(NULL); } + virtual ~_interswitch__AuthoriseAccountCashOut() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse +#define SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse (64) +/* interswitch:AuthoriseAccountCashOutResponse */ +class SOAP_CMAC _interswitch__AuthoriseAccountCashOutResponse +{ +public: + std::string *AuthoriseAccountCashOutResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 64; } /* = unique id SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__AuthoriseAccountCashOutResponse(): AuthoriseAccountCashOutResult(NULL), soap(NULL) { _interswitch__AuthoriseAccountCashOutResponse::soap_default(NULL); } + virtual ~_interswitch__AuthoriseAccountCashOutResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__ReverseCashOut +#define SOAP_TYPE_interswitch__interswitch__ReverseCashOut (65) +/* interswitch:ReverseCashOut */ +class SOAP_CMAC _interswitch__ReverseCashOut +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 65; } /* = unique id SOAP_TYPE_interswitch__interswitch__ReverseCashOut */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__ReverseCashOut(): xmlParams(NULL), soap(NULL) { _interswitch__ReverseCashOut::soap_default(NULL); } + virtual ~_interswitch__ReverseCashOut() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse +#define SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse (66) +/* interswitch:ReverseCashOutResponse */ +class SOAP_CMAC _interswitch__ReverseCashOutResponse +{ +public: + std::string *ReverseCashOutResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 66; } /* = unique id SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__ReverseCashOutResponse(): ReverseCashOutResult(NULL), soap(NULL) { _interswitch__ReverseCashOutResponse::soap_default(NULL); } + virtual ~_interswitch__ReverseCashOutResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__StatusCheck +#define SOAP_TYPE_interswitch__interswitch__StatusCheck (67) +/* interswitch:StatusCheck */ +class SOAP_CMAC _interswitch__StatusCheck +{ +public: + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 67; } /* = unique id SOAP_TYPE_interswitch__interswitch__StatusCheck */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__StatusCheck(): soap(NULL) { _interswitch__StatusCheck::soap_default(NULL); } + virtual ~_interswitch__StatusCheck() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__StatusCheckResponse +#define SOAP_TYPE_interswitch__interswitch__StatusCheckResponse (68) +/* interswitch:StatusCheckResponse */ +class SOAP_CMAC _interswitch__StatusCheckResponse +{ +public: + std::string *StatusCheckResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 68; } /* = unique id SOAP_TYPE_interswitch__interswitch__StatusCheckResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__StatusCheckResponse(): StatusCheckResult(NULL), soap(NULL) { _interswitch__StatusCheckResponse::soap_default(NULL); } + virtual ~_interswitch__StatusCheckResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__QueryTransaction +#define SOAP_TYPE_interswitch__interswitch__QueryTransaction (69) +/* interswitch:QueryTransaction */ +class SOAP_CMAC _interswitch__QueryTransaction +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 69; } /* = unique id SOAP_TYPE_interswitch__interswitch__QueryTransaction */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__QueryTransaction(): xmlParams(NULL), soap(NULL) { _interswitch__QueryTransaction::soap_default(NULL); } + virtual ~_interswitch__QueryTransaction() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse +#define SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse (70) +/* interswitch:QueryTransactionResponse */ +class SOAP_CMAC _interswitch__QueryTransactionResponse +{ +public: + std::string *QueryTransactionResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 70; } /* = unique id SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__QueryTransactionResponse(): QueryTransactionResult(NULL), soap(NULL) { _interswitch__QueryTransactionResponse::soap_default(NULL); } + virtual ~_interswitch__QueryTransactionResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetSystemSettings +#define SOAP_TYPE_interswitch__interswitch__GetSystemSettings (71) +/* interswitch:GetSystemSettings */ +class SOAP_CMAC _interswitch__GetSystemSettings +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 71; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetSystemSettings */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetSystemSettings(): xmlParams(NULL), soap(NULL) { _interswitch__GetSystemSettings::soap_default(NULL); } + virtual ~_interswitch__GetSystemSettings() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse +#define SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse (72) +/* interswitch:GetSystemSettingsResponse */ +class SOAP_CMAC _interswitch__GetSystemSettingsResponse +{ +public: + std::string *GetSystemSettingsResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 72; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetSystemSettingsResponse(): GetSystemSettingsResult(NULL), soap(NULL) { _interswitch__GetSystemSettingsResponse::soap_default(NULL); } + virtual ~_interswitch__GetSystemSettingsResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__CreateUser +#define SOAP_TYPE_interswitch__interswitch__CreateUser (73) +/* interswitch:CreateUser */ +class SOAP_CMAC _interswitch__CreateUser +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 73; } /* = unique id SOAP_TYPE_interswitch__interswitch__CreateUser */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__CreateUser(): xmlParams(NULL), soap(NULL) { _interswitch__CreateUser::soap_default(NULL); } + virtual ~_interswitch__CreateUser() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__CreateUserResponse +#define SOAP_TYPE_interswitch__interswitch__CreateUserResponse (74) +/* interswitch:CreateUserResponse */ +class SOAP_CMAC _interswitch__CreateUserResponse +{ +public: + std::string *CreateUserResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 74; } /* = unique id SOAP_TYPE_interswitch__interswitch__CreateUserResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__CreateUserResponse(): CreateUserResult(NULL), soap(NULL) { _interswitch__CreateUserResponse::soap_default(NULL); } + virtual ~_interswitch__CreateUserResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__ActivateUser +#define SOAP_TYPE_interswitch__interswitch__ActivateUser (75) +/* interswitch:ActivateUser */ +class SOAP_CMAC _interswitch__ActivateUser +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 75; } /* = unique id SOAP_TYPE_interswitch__interswitch__ActivateUser */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__ActivateUser(): xmlParams(NULL), soap(NULL) { _interswitch__ActivateUser::soap_default(NULL); } + virtual ~_interswitch__ActivateUser() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__ActivateUserResponse +#define SOAP_TYPE_interswitch__interswitch__ActivateUserResponse (76) +/* interswitch:ActivateUserResponse */ +class SOAP_CMAC _interswitch__ActivateUserResponse +{ +public: + std::string *ActivateUserResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 76; } /* = unique id SOAP_TYPE_interswitch__interswitch__ActivateUserResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__ActivateUserResponse(): ActivateUserResult(NULL), soap(NULL) { _interswitch__ActivateUserResponse::soap_default(NULL); } + virtual ~_interswitch__ActivateUserResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__UpdateUser +#define SOAP_TYPE_interswitch__interswitch__UpdateUser (77) +/* interswitch:UpdateUser */ +class SOAP_CMAC _interswitch__UpdateUser +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 77; } /* = unique id SOAP_TYPE_interswitch__interswitch__UpdateUser */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__UpdateUser(): xmlParams(NULL), soap(NULL) { _interswitch__UpdateUser::soap_default(NULL); } + virtual ~_interswitch__UpdateUser() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__UpdateUserResponse +#define SOAP_TYPE_interswitch__interswitch__UpdateUserResponse (78) +/* interswitch:UpdateUserResponse */ +class SOAP_CMAC _interswitch__UpdateUserResponse +{ +public: + std::string *UpdateUserResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 78; } /* = unique id SOAP_TYPE_interswitch__interswitch__UpdateUserResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__UpdateUserResponse(): UpdateUserResult(NULL), soap(NULL) { _interswitch__UpdateUserResponse::soap_default(NULL); } + virtual ~_interswitch__UpdateUserResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__ChangePassword +#define SOAP_TYPE_interswitch__interswitch__ChangePassword (79) +/* interswitch:ChangePassword */ +class SOAP_CMAC _interswitch__ChangePassword +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 79; } /* = unique id SOAP_TYPE_interswitch__interswitch__ChangePassword */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__ChangePassword(): xmlParams(NULL), soap(NULL) { _interswitch__ChangePassword::soap_default(NULL); } + virtual ~_interswitch__ChangePassword() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse +#define SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse (80) +/* interswitch:ChangePasswordResponse */ +class SOAP_CMAC _interswitch__ChangePasswordResponse +{ +public: + std::string *ChangePasswordResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 80; } /* = unique id SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__ChangePasswordResponse(): ChangePasswordResult(NULL), soap(NULL) { _interswitch__ChangePasswordResponse::soap_default(NULL); } + virtual ~_interswitch__ChangePasswordResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__ResetPassword +#define SOAP_TYPE_interswitch__interswitch__ResetPassword (81) +/* interswitch:ResetPassword */ +class SOAP_CMAC _interswitch__ResetPassword +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 81; } /* = unique id SOAP_TYPE_interswitch__interswitch__ResetPassword */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__ResetPassword(): xmlParams(NULL), soap(NULL) { _interswitch__ResetPassword::soap_default(NULL); } + virtual ~_interswitch__ResetPassword() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse +#define SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse (82) +/* interswitch:ResetPasswordResponse */ +class SOAP_CMAC _interswitch__ResetPasswordResponse +{ +public: + std::string *ResetPasswordResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 82; } /* = unique id SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__ResetPasswordResponse(): ResetPasswordResult(NULL), soap(NULL) { _interswitch__ResetPasswordResponse::soap_default(NULL); } + virtual ~_interswitch__ResetPasswordResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthenticateUser +#define SOAP_TYPE_interswitch__interswitch__AuthenticateUser (83) +/* interswitch:AuthenticateUser */ +class SOAP_CMAC _interswitch__AuthenticateUser +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 83; } /* = unique id SOAP_TYPE_interswitch__interswitch__AuthenticateUser */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__AuthenticateUser(): xmlParams(NULL), soap(NULL) { _interswitch__AuthenticateUser::soap_default(NULL); } + virtual ~_interswitch__AuthenticateUser() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse +#define SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse (84) +/* interswitch:AuthenticateUserResponse */ +class SOAP_CMAC _interswitch__AuthenticateUserResponse +{ +public: + std::string *AuthenticateUserResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 84; } /* = unique id SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__AuthenticateUserResponse(): AuthenticateUserResult(NULL), soap(NULL) { _interswitch__AuthenticateUserResponse::soap_default(NULL); } + virtual ~_interswitch__AuthenticateUserResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken +#define SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken (85) +/* interswitch:AuthenticateUserSecurityToken */ +class SOAP_CMAC _interswitch__AuthenticateUserSecurityToken +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 85; } /* = unique id SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__AuthenticateUserSecurityToken(): xmlParams(NULL), soap(NULL) { _interswitch__AuthenticateUserSecurityToken::soap_default(NULL); } + virtual ~_interswitch__AuthenticateUserSecurityToken() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse +#define SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse (86) +/* interswitch:AuthenticateUserSecurityTokenResponse */ +class SOAP_CMAC _interswitch__AuthenticateUserSecurityTokenResponse +{ +public: + std::string *AuthenticateUserSecurityTokenResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 86; } /* = unique id SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__AuthenticateUserSecurityTokenResponse(): AuthenticateUserSecurityTokenResult(NULL), soap(NULL) { _interswitch__AuthenticateUserSecurityTokenResponse::soap_default(NULL); } + virtual ~_interswitch__AuthenticateUserSecurityTokenResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetUser +#define SOAP_TYPE_interswitch__interswitch__GetUser (87) +/* interswitch:GetUser */ +class SOAP_CMAC _interswitch__GetUser +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 87; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetUser */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetUser(): xmlParams(NULL), soap(NULL) { _interswitch__GetUser::soap_default(NULL); } + virtual ~_interswitch__GetUser() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetUserResponse +#define SOAP_TYPE_interswitch__interswitch__GetUserResponse (88) +/* interswitch:GetUserResponse */ +class SOAP_CMAC _interswitch__GetUserResponse +{ +public: + std::string *GetUserResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 88; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetUserResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetUserResponse(): GetUserResult(NULL), soap(NULL) { _interswitch__GetUserResponse::soap_default(NULL); } + virtual ~_interswitch__GetUserResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetBillers +#define SOAP_TYPE_interswitch__interswitch__GetBillers (89) +/* interswitch:GetBillers */ +class SOAP_CMAC _interswitch__GetBillers +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 89; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetBillers */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetBillers(): xmlParams(NULL), soap(NULL) { _interswitch__GetBillers::soap_default(NULL); } + virtual ~_interswitch__GetBillers() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetBillersResponse +#define SOAP_TYPE_interswitch__interswitch__GetBillersResponse (90) +/* interswitch:GetBillersResponse */ +class SOAP_CMAC _interswitch__GetBillersResponse +{ +public: + std::string *GetBillersResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 90; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetBillersResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetBillersResponse(): GetBillersResult(NULL), soap(NULL) { _interswitch__GetBillersResponse::soap_default(NULL); } + virtual ~_interswitch__GetBillersResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetLatestBillers +#define SOAP_TYPE_interswitch__interswitch__GetLatestBillers (91) +/* interswitch:GetLatestBillers */ +class SOAP_CMAC _interswitch__GetLatestBillers +{ +public: + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 91; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetLatestBillers */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetLatestBillers(): soap(NULL) { _interswitch__GetLatestBillers::soap_default(NULL); } + virtual ~_interswitch__GetLatestBillers() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse +#define SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse (92) +/* interswitch:GetLatestBillersResponse */ +class SOAP_CMAC _interswitch__GetLatestBillersResponse +{ +public: + std::string *GetLatestBillersResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 92; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetLatestBillersResponse(): GetLatestBillersResult(NULL), soap(NULL) { _interswitch__GetLatestBillersResponse::soap_default(NULL); } + virtual ~_interswitch__GetLatestBillersResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers +#define SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers (93) +/* interswitch:GetFeaturedBillers */ +class SOAP_CMAC _interswitch__GetFeaturedBillers +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 93; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetFeaturedBillers(): xmlParams(NULL), soap(NULL) { _interswitch__GetFeaturedBillers::soap_default(NULL); } + virtual ~_interswitch__GetFeaturedBillers() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse +#define SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse (94) +/* interswitch:GetFeaturedBillersResponse */ +class SOAP_CMAC _interswitch__GetFeaturedBillersResponse +{ +public: + std::string *GetFeaturedBillersResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 94; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetFeaturedBillersResponse(): GetFeaturedBillersResult(NULL), soap(NULL) { _interswitch__GetFeaturedBillersResponse::soap_default(NULL); } + virtual ~_interswitch__GetFeaturedBillersResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems +#define SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems (95) +/* interswitch:GetBillerPaymentItems */ +class SOAP_CMAC _interswitch__GetBillerPaymentItems +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 95; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetBillerPaymentItems(): xmlParams(NULL), soap(NULL) { _interswitch__GetBillerPaymentItems::soap_default(NULL); } + virtual ~_interswitch__GetBillerPaymentItems() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse +#define SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse (96) +/* interswitch:GetBillerPaymentItemsResponse */ +class SOAP_CMAC _interswitch__GetBillerPaymentItemsResponse +{ +public: + std::string *GetBillerPaymentItemsResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 96; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetBillerPaymentItemsResponse(): GetBillerPaymentItemsResult(NULL), soap(NULL) { _interswitch__GetBillerPaymentItemsResponse::soap_default(NULL); } + virtual ~_interswitch__GetBillerPaymentItemsResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetBillerCategories +#define SOAP_TYPE_interswitch__interswitch__GetBillerCategories (97) +/* interswitch:GetBillerCategories */ +class SOAP_CMAC _interswitch__GetBillerCategories +{ +public: + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 97; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetBillerCategories */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetBillerCategories(): soap(NULL) { _interswitch__GetBillerCategories::soap_default(NULL); } + virtual ~_interswitch__GetBillerCategories() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse +#define SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse (98) +/* interswitch:GetBillerCategoriesResponse */ +class SOAP_CMAC _interswitch__GetBillerCategoriesResponse +{ +public: + std::string *GetBillerCategoriesResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 98; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetBillerCategoriesResponse(): GetBillerCategoriesResult(NULL), soap(NULL) { _interswitch__GetBillerCategoriesResponse::soap_default(NULL); } + virtual ~_interswitch__GetBillerCategoriesResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry +#define SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry (99) +/* interswitch:DoBillPaymentInquiry */ +class SOAP_CMAC _interswitch__DoBillPaymentInquiry +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 99; } /* = unique id SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__DoBillPaymentInquiry(): xmlParams(NULL), soap(NULL) { _interswitch__DoBillPaymentInquiry::soap_default(NULL); } + virtual ~_interswitch__DoBillPaymentInquiry() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse +#define SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse (100) +/* interswitch:DoBillPaymentInquiryResponse */ +class SOAP_CMAC _interswitch__DoBillPaymentInquiryResponse +{ +public: + std::string *DoBillPaymentInquiryResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 100; } /* = unique id SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__DoBillPaymentInquiryResponse(): DoBillPaymentInquiryResult(NULL), soap(NULL) { _interswitch__DoBillPaymentInquiryResponse::soap_default(NULL); } + virtual ~_interswitch__DoBillPaymentInquiryResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer +#define SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer (101) +/* interswitch:AuthenticateCustomer */ +class SOAP_CMAC _interswitch__AuthenticateCustomer +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 101; } /* = unique id SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__AuthenticateCustomer(): xmlParams(NULL), soap(NULL) { _interswitch__AuthenticateCustomer::soap_default(NULL); } + virtual ~_interswitch__AuthenticateCustomer() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse +#define SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse (102) +/* interswitch:AuthenticateCustomerResponse */ +class SOAP_CMAC _interswitch__AuthenticateCustomerResponse +{ +public: + std::string *AuthenticateCustomerResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 102; } /* = unique id SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__AuthenticateCustomerResponse(): AuthenticateCustomerResult(NULL), soap(NULL) { _interswitch__AuthenticateCustomerResponse::soap_default(NULL); } + virtual ~_interswitch__AuthenticateCustomerResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice +#define SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice (103) +/* interswitch:SendBillPaymentAdvice */ +class SOAP_CMAC _interswitch__SendBillPaymentAdvice +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 103; } /* = unique id SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__SendBillPaymentAdvice(): xmlParams(NULL), soap(NULL) { _interswitch__SendBillPaymentAdvice::soap_default(NULL); } + virtual ~_interswitch__SendBillPaymentAdvice() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse +#define SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse (104) +/* interswitch:SendBillPaymentAdviceResponse */ +class SOAP_CMAC _interswitch__SendBillPaymentAdviceResponse +{ +public: + std::string *SendBillPaymentAdviceResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 104; } /* = unique id SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__SendBillPaymentAdviceResponse(): SendBillPaymentAdviceResult(NULL), soap(NULL) { _interswitch__SendBillPaymentAdviceResponse::soap_default(NULL); } + virtual ~_interswitch__SendBillPaymentAdviceResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__SendPayments +#define SOAP_TYPE_interswitch__interswitch__SendPayments (105) +/* interswitch:SendPayments */ +class SOAP_CMAC _interswitch__SendPayments +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 105; } /* = unique id SOAP_TYPE_interswitch__interswitch__SendPayments */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__SendPayments(): xmlParams(NULL), soap(NULL) { _interswitch__SendPayments::soap_default(NULL); } + virtual ~_interswitch__SendPayments() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse +#define SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse (106) +/* interswitch:SendPaymentsResponse */ +class SOAP_CMAC _interswitch__SendPaymentsResponse +{ +public: + std::string *SendPaymentsResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 106; } /* = unique id SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__SendPaymentsResponse(): SendPaymentsResult(NULL), soap(NULL) { _interswitch__SendPaymentsResponse::soap_default(NULL); } + virtual ~_interswitch__SendPaymentsResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount +#define SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount (107) +/* interswitch:AddCustomerBillerAccount */ +class SOAP_CMAC _interswitch__AddCustomerBillerAccount +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 107; } /* = unique id SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__AddCustomerBillerAccount(): xmlParams(NULL), soap(NULL) { _interswitch__AddCustomerBillerAccount::soap_default(NULL); } + virtual ~_interswitch__AddCustomerBillerAccount() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse +#define SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse (108) +/* interswitch:AddCustomerBillerAccountResponse */ +class SOAP_CMAC _interswitch__AddCustomerBillerAccountResponse +{ +public: + std::string *AddCustomerBillerAccountResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 108; } /* = unique id SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__AddCustomerBillerAccountResponse(): AddCustomerBillerAccountResult(NULL), soap(NULL) { _interswitch__AddCustomerBillerAccountResponse::soap_default(NULL); } + virtual ~_interswitch__AddCustomerBillerAccountResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts +#define SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts (109) +/* interswitch:GetCustomerBillerAccounts */ +class SOAP_CMAC _interswitch__GetCustomerBillerAccounts +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 109; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetCustomerBillerAccounts(): xmlParams(NULL), soap(NULL) { _interswitch__GetCustomerBillerAccounts::soap_default(NULL); } + virtual ~_interswitch__GetCustomerBillerAccounts() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse +#define SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse (110) +/* interswitch:GetCustomerBillerAccountsResponse */ +class SOAP_CMAC _interswitch__GetCustomerBillerAccountsResponse +{ +public: + std::string *GetCustomerBillerAccountsResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 110; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetCustomerBillerAccountsResponse(): GetCustomerBillerAccountsResult(NULL), soap(NULL) { _interswitch__GetCustomerBillerAccountsResponse::soap_default(NULL); } + virtual ~_interswitch__GetCustomerBillerAccountsResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetCustomerPayments +#define SOAP_TYPE_interswitch__interswitch__GetCustomerPayments (111) +/* interswitch:GetCustomerPayments */ +class SOAP_CMAC _interswitch__GetCustomerPayments +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 111; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetCustomerPayments */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetCustomerPayments(): xmlParams(NULL), soap(NULL) { _interswitch__GetCustomerPayments::soap_default(NULL); } + virtual ~_interswitch__GetCustomerPayments() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse +#define SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse (112) +/* interswitch:GetCustomerPaymentsResponse */ +class SOAP_CMAC _interswitch__GetCustomerPaymentsResponse +{ +public: + std::string *GetCustomerPaymentsResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 112; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetCustomerPaymentsResponse(): GetCustomerPaymentsResult(NULL), soap(NULL) { _interswitch__GetCustomerPaymentsResponse::soap_default(NULL); } + virtual ~_interswitch__GetCustomerPaymentsResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__AddBillerCustomer +#define SOAP_TYPE_interswitch__interswitch__AddBillerCustomer (113) +/* interswitch:AddBillerCustomer */ +class SOAP_CMAC _interswitch__AddBillerCustomer +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 113; } /* = unique id SOAP_TYPE_interswitch__interswitch__AddBillerCustomer */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__AddBillerCustomer(): xmlParams(NULL), soap(NULL) { _interswitch__AddBillerCustomer::soap_default(NULL); } + virtual ~_interswitch__AddBillerCustomer() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse +#define SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse (114) +/* interswitch:AddBillerCustomerResponse */ +class SOAP_CMAC _interswitch__AddBillerCustomerResponse +{ +public: + std::string *AddBillerCustomerResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 114; } /* = unique id SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__AddBillerCustomerResponse(): AddBillerCustomerResult(NULL), soap(NULL) { _interswitch__AddBillerCustomerResponse::soap_default(NULL); } + virtual ~_interswitch__AddBillerCustomerResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount +#define SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount (115) +/* interswitch:GetCollectionsAccount */ +class SOAP_CMAC _interswitch__GetCollectionsAccount +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 115; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetCollectionsAccount(): xmlParams(NULL), soap(NULL) { _interswitch__GetCollectionsAccount::soap_default(NULL); } + virtual ~_interswitch__GetCollectionsAccount() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse +#define SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse (116) +/* interswitch:GetCollectionsAccountResponse */ +class SOAP_CMAC _interswitch__GetCollectionsAccountResponse +{ +public: + std::string *GetCollectionsAccountResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 116; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetCollectionsAccountResponse(): GetCollectionsAccountResult(NULL), soap(NULL) { _interswitch__GetCollectionsAccountResponse::soap_default(NULL); } + virtual ~_interswitch__GetCollectionsAccountResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount +#define SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount (117) +/* interswitch:GetBillersCollectionsAccount */ +class SOAP_CMAC _interswitch__GetBillersCollectionsAccount +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 117; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetBillersCollectionsAccount(): xmlParams(NULL), soap(NULL) { _interswitch__GetBillersCollectionsAccount::soap_default(NULL); } + virtual ~_interswitch__GetBillersCollectionsAccount() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse +#define SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse (118) +/* interswitch:GetBillersCollectionsAccountResponse */ +class SOAP_CMAC _interswitch__GetBillersCollectionsAccountResponse +{ +public: + std::string *GetBillersCollectionsAccountResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 118; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetBillersCollectionsAccountResponse(): GetBillersCollectionsAccountResult(NULL), soap(NULL) { _interswitch__GetBillersCollectionsAccountResponse::soap_default(NULL); } + virtual ~_interswitch__GetBillersCollectionsAccountResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount +#define SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount (119) +/* interswitch:EditCustomerBillerAccount */ +class SOAP_CMAC _interswitch__EditCustomerBillerAccount +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 119; } /* = unique id SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__EditCustomerBillerAccount(): xmlParams(NULL), soap(NULL) { _interswitch__EditCustomerBillerAccount::soap_default(NULL); } + virtual ~_interswitch__EditCustomerBillerAccount() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse +#define SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse (120) +/* interswitch:EditCustomerBillerAccountResponse */ +class SOAP_CMAC _interswitch__EditCustomerBillerAccountResponse +{ +public: + std::string *EditCustomerBillerAccountResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 120; } /* = unique id SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__EditCustomerBillerAccountResponse(): EditCustomerBillerAccountResult(NULL), soap(NULL) { _interswitch__EditCustomerBillerAccountResponse::soap_default(NULL); } + virtual ~_interswitch__EditCustomerBillerAccountResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__ResendActivationToken +#define SOAP_TYPE_interswitch__interswitch__ResendActivationToken (121) +/* interswitch:ResendActivationToken */ +class SOAP_CMAC _interswitch__ResendActivationToken +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 121; } /* = unique id SOAP_TYPE_interswitch__interswitch__ResendActivationToken */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__ResendActivationToken(): xmlParams(NULL), soap(NULL) { _interswitch__ResendActivationToken::soap_default(NULL); } + virtual ~_interswitch__ResendActivationToken() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse +#define SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse (122) +/* interswitch:ResendActivationTokenResponse */ +class SOAP_CMAC _interswitch__ResendActivationTokenResponse +{ +public: + std::string *ResendActivationTokenResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 122; } /* = unique id SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__ResendActivationTokenResponse(): ResendActivationTokenResult(NULL), soap(NULL) { _interswitch__ResendActivationTokenResponse::soap_default(NULL); } + virtual ~_interswitch__ResendActivationTokenResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__DoCustomProcessing +#define SOAP_TYPE_interswitch__interswitch__DoCustomProcessing (123) +/* interswitch:DoCustomProcessing */ +class SOAP_CMAC _interswitch__DoCustomProcessing +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 123; } /* = unique id SOAP_TYPE_interswitch__interswitch__DoCustomProcessing */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__DoCustomProcessing(): xmlParams(NULL), soap(NULL) { _interswitch__DoCustomProcessing::soap_default(NULL); } + virtual ~_interswitch__DoCustomProcessing() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse +#define SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse (124) +/* interswitch:DoCustomProcessingResponse */ +class SOAP_CMAC _interswitch__DoCustomProcessingResponse +{ +public: + std::string *DoCustomProcessingResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 124; } /* = unique id SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__DoCustomProcessingResponse(): DoCustomProcessingResult(NULL), soap(NULL) { _interswitch__DoCustomProcessingResponse::soap_default(NULL); } + virtual ~_interswitch__DoCustomProcessingResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__CreateBiller +#define SOAP_TYPE_interswitch__interswitch__CreateBiller (125) +/* interswitch:CreateBiller */ +class SOAP_CMAC _interswitch__CreateBiller +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 125; } /* = unique id SOAP_TYPE_interswitch__interswitch__CreateBiller */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__CreateBiller(): xmlParams(NULL), soap(NULL) { _interswitch__CreateBiller::soap_default(NULL); } + virtual ~_interswitch__CreateBiller() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__CreateBillerResponse +#define SOAP_TYPE_interswitch__interswitch__CreateBillerResponse (126) +/* interswitch:CreateBillerResponse */ +class SOAP_CMAC _interswitch__CreateBillerResponse +{ +public: + std::string *CreateBillerResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 126; } /* = unique id SOAP_TYPE_interswitch__interswitch__CreateBillerResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__CreateBillerResponse(): CreateBillerResult(NULL), soap(NULL) { _interswitch__CreateBillerResponse::soap_default(NULL); } + virtual ~_interswitch__CreateBillerResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__VerifyBiller +#define SOAP_TYPE_interswitch__interswitch__VerifyBiller (127) +/* interswitch:VerifyBiller */ +class SOAP_CMAC _interswitch__VerifyBiller +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 127; } /* = unique id SOAP_TYPE_interswitch__interswitch__VerifyBiller */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__VerifyBiller(): xmlParams(NULL), soap(NULL) { _interswitch__VerifyBiller::soap_default(NULL); } + virtual ~_interswitch__VerifyBiller() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse +#define SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse (128) +/* interswitch:VerifyBillerResponse */ +class SOAP_CMAC _interswitch__VerifyBillerResponse +{ +public: + std::string *VerifyBillerResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 128; } /* = unique id SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__VerifyBillerResponse(): VerifyBillerResult(NULL), soap(NULL) { _interswitch__VerifyBillerResponse::soap_default(NULL); } + virtual ~_interswitch__VerifyBillerResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__ValidateCustomer +#define SOAP_TYPE_interswitch___interswitch__ValidateCustomer (139) +/* Operation wrapper: */ +struct __interswitch__ValidateCustomer +{ +public: + _interswitch__ValidateCustomer *interswitch__ValidateCustomer; /* optional element of type interswitch:ValidateCustomer */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__DoTransfer +#define SOAP_TYPE_interswitch___interswitch__DoTransfer (143) +/* Operation wrapper: */ +struct __interswitch__DoTransfer +{ +public: + _interswitch__DoTransfer *interswitch__DoTransfer; /* optional element of type interswitch:DoTransfer */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__CancelTransfer +#define SOAP_TYPE_interswitch___interswitch__CancelTransfer (147) +/* Operation wrapper: */ +struct __interswitch__CancelTransfer +{ +public: + _interswitch__CancelTransfer *interswitch__CancelTransfer; /* optional element of type interswitch:CancelTransfer */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__SendSessionKey +#define SOAP_TYPE_interswitch___interswitch__SendSessionKey (151) +/* Operation wrapper: */ +struct __interswitch__SendSessionKey +{ +public: + _interswitch__SendSessionKey *interswitch__SendSessionKey; /* optional element of type interswitch:SendSessionKey */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__QueryTransfer +#define SOAP_TYPE_interswitch___interswitch__QueryTransfer (155) +/* Operation wrapper: */ +struct __interswitch__QueryTransfer +{ +public: + _interswitch__QueryTransfer *interswitch__QueryTransfer; /* optional element of type interswitch:QueryTransfer */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__AuthoriseCashOut +#define SOAP_TYPE_interswitch___interswitch__AuthoriseCashOut (159) +/* Operation wrapper: */ +struct __interswitch__AuthoriseCashOut +{ +public: + _interswitch__AuthoriseCashOut *interswitch__AuthoriseCashOut; /* optional element of type interswitch:AuthoriseCashOut */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__AuthoriseAccountCashOut +#define SOAP_TYPE_interswitch___interswitch__AuthoriseAccountCashOut (163) +/* Operation wrapper: */ +struct __interswitch__AuthoriseAccountCashOut +{ +public: + _interswitch__AuthoriseAccountCashOut *interswitch__AuthoriseAccountCashOut; /* optional element of type interswitch:AuthoriseAccountCashOut */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__ReverseCashOut +#define SOAP_TYPE_interswitch___interswitch__ReverseCashOut (167) +/* Operation wrapper: */ +struct __interswitch__ReverseCashOut +{ +public: + _interswitch__ReverseCashOut *interswitch__ReverseCashOut; /* optional element of type interswitch:ReverseCashOut */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__StatusCheck +#define SOAP_TYPE_interswitch___interswitch__StatusCheck (171) +/* Operation wrapper: */ +struct __interswitch__StatusCheck +{ +public: + _interswitch__StatusCheck *interswitch__StatusCheck; /* optional element of type interswitch:StatusCheck */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__QueryTransaction +#define SOAP_TYPE_interswitch___interswitch__QueryTransaction (175) +/* Operation wrapper: */ +struct __interswitch__QueryTransaction +{ +public: + _interswitch__QueryTransaction *interswitch__QueryTransaction; /* optional element of type interswitch:QueryTransaction */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__GetSystemSettings +#define SOAP_TYPE_interswitch___interswitch__GetSystemSettings (179) +/* Operation wrapper: */ +struct __interswitch__GetSystemSettings +{ +public: + _interswitch__GetSystemSettings *interswitch__GetSystemSettings; /* optional element of type interswitch:GetSystemSettings */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__CreateUser +#define SOAP_TYPE_interswitch___interswitch__CreateUser (183) +/* Operation wrapper: */ +struct __interswitch__CreateUser +{ +public: + _interswitch__CreateUser *interswitch__CreateUser; /* optional element of type interswitch:CreateUser */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__ActivateUser +#define SOAP_TYPE_interswitch___interswitch__ActivateUser (187) +/* Operation wrapper: */ +struct __interswitch__ActivateUser +{ +public: + _interswitch__ActivateUser *interswitch__ActivateUser; /* optional element of type interswitch:ActivateUser */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__UpdateUser +#define SOAP_TYPE_interswitch___interswitch__UpdateUser (191) +/* Operation wrapper: */ +struct __interswitch__UpdateUser +{ +public: + _interswitch__UpdateUser *interswitch__UpdateUser; /* optional element of type interswitch:UpdateUser */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__ChangePassword +#define SOAP_TYPE_interswitch___interswitch__ChangePassword (195) +/* Operation wrapper: */ +struct __interswitch__ChangePassword +{ +public: + _interswitch__ChangePassword *interswitch__ChangePassword; /* optional element of type interswitch:ChangePassword */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__ResetPassword +#define SOAP_TYPE_interswitch___interswitch__ResetPassword (199) +/* Operation wrapper: */ +struct __interswitch__ResetPassword +{ +public: + _interswitch__ResetPassword *interswitch__ResetPassword; /* optional element of type interswitch:ResetPassword */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__AuthenticateUser +#define SOAP_TYPE_interswitch___interswitch__AuthenticateUser (203) +/* Operation wrapper: */ +struct __interswitch__AuthenticateUser +{ +public: + _interswitch__AuthenticateUser *interswitch__AuthenticateUser; /* optional element of type interswitch:AuthenticateUser */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__AuthenticateUserSecurityToken +#define SOAP_TYPE_interswitch___interswitch__AuthenticateUserSecurityToken (207) +/* Operation wrapper: */ +struct __interswitch__AuthenticateUserSecurityToken +{ +public: + _interswitch__AuthenticateUserSecurityToken *interswitch__AuthenticateUserSecurityToken; /* optional element of type interswitch:AuthenticateUserSecurityToken */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__GetUser +#define SOAP_TYPE_interswitch___interswitch__GetUser (211) +/* Operation wrapper: */ +struct __interswitch__GetUser +{ +public: + _interswitch__GetUser *interswitch__GetUser; /* optional element of type interswitch:GetUser */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__GetBillers +#define SOAP_TYPE_interswitch___interswitch__GetBillers (215) +/* Operation wrapper: */ +struct __interswitch__GetBillers +{ +public: + _interswitch__GetBillers *interswitch__GetBillers; /* optional element of type interswitch:GetBillers */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__GetLatestBillers +#define SOAP_TYPE_interswitch___interswitch__GetLatestBillers (219) +/* Operation wrapper: */ +struct __interswitch__GetLatestBillers +{ +public: + _interswitch__GetLatestBillers *interswitch__GetLatestBillers; /* optional element of type interswitch:GetLatestBillers */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__GetFeaturedBillers +#define SOAP_TYPE_interswitch___interswitch__GetFeaturedBillers (223) +/* Operation wrapper: */ +struct __interswitch__GetFeaturedBillers +{ +public: + _interswitch__GetFeaturedBillers *interswitch__GetFeaturedBillers; /* optional element of type interswitch:GetFeaturedBillers */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__GetBillerPaymentItems +#define SOAP_TYPE_interswitch___interswitch__GetBillerPaymentItems (227) +/* Operation wrapper: */ +struct __interswitch__GetBillerPaymentItems +{ +public: + _interswitch__GetBillerPaymentItems *interswitch__GetBillerPaymentItems; /* optional element of type interswitch:GetBillerPaymentItems */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__GetBillerCategories +#define SOAP_TYPE_interswitch___interswitch__GetBillerCategories (231) +/* Operation wrapper: */ +struct __interswitch__GetBillerCategories +{ +public: + _interswitch__GetBillerCategories *interswitch__GetBillerCategories; /* optional element of type interswitch:GetBillerCategories */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__DoBillPaymentInquiry +#define SOAP_TYPE_interswitch___interswitch__DoBillPaymentInquiry (235) +/* Operation wrapper: */ +struct __interswitch__DoBillPaymentInquiry +{ +public: + _interswitch__DoBillPaymentInquiry *interswitch__DoBillPaymentInquiry; /* optional element of type interswitch:DoBillPaymentInquiry */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__AuthenticateCustomer +#define SOAP_TYPE_interswitch___interswitch__AuthenticateCustomer (239) +/* Operation wrapper: */ +struct __interswitch__AuthenticateCustomer +{ +public: + _interswitch__AuthenticateCustomer *interswitch__AuthenticateCustomer; /* optional element of type interswitch:AuthenticateCustomer */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__SendBillPaymentAdvice +#define SOAP_TYPE_interswitch___interswitch__SendBillPaymentAdvice (243) +/* Operation wrapper: */ +struct __interswitch__SendBillPaymentAdvice +{ +public: + _interswitch__SendBillPaymentAdvice *interswitch__SendBillPaymentAdvice; /* optional element of type interswitch:SendBillPaymentAdvice */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__SendPayments +#define SOAP_TYPE_interswitch___interswitch__SendPayments (247) +/* Operation wrapper: */ +struct __interswitch__SendPayments +{ +public: + _interswitch__SendPayments *interswitch__SendPayments; /* optional element of type interswitch:SendPayments */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__AddCustomerBillerAccount +#define SOAP_TYPE_interswitch___interswitch__AddCustomerBillerAccount (251) +/* Operation wrapper: */ +struct __interswitch__AddCustomerBillerAccount +{ +public: + _interswitch__AddCustomerBillerAccount *interswitch__AddCustomerBillerAccount; /* optional element of type interswitch:AddCustomerBillerAccount */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__GetCustomerBillerAccounts +#define SOAP_TYPE_interswitch___interswitch__GetCustomerBillerAccounts (255) +/* Operation wrapper: */ +struct __interswitch__GetCustomerBillerAccounts +{ +public: + _interswitch__GetCustomerBillerAccounts *interswitch__GetCustomerBillerAccounts; /* optional element of type interswitch:GetCustomerBillerAccounts */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__GetCustomerPayments +#define SOAP_TYPE_interswitch___interswitch__GetCustomerPayments (259) +/* Operation wrapper: */ +struct __interswitch__GetCustomerPayments +{ +public: + _interswitch__GetCustomerPayments *interswitch__GetCustomerPayments; /* optional element of type interswitch:GetCustomerPayments */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__AddBillerCustomer +#define SOAP_TYPE_interswitch___interswitch__AddBillerCustomer (263) +/* Operation wrapper: */ +struct __interswitch__AddBillerCustomer +{ +public: + _interswitch__AddBillerCustomer *interswitch__AddBillerCustomer; /* optional element of type interswitch:AddBillerCustomer */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__GetCollectionsAccount +#define SOAP_TYPE_interswitch___interswitch__GetCollectionsAccount (267) +/* Operation wrapper: */ +struct __interswitch__GetCollectionsAccount +{ +public: + _interswitch__GetCollectionsAccount *interswitch__GetCollectionsAccount; /* optional element of type interswitch:GetCollectionsAccount */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__GetBillersCollectionsAccount +#define SOAP_TYPE_interswitch___interswitch__GetBillersCollectionsAccount (271) +/* Operation wrapper: */ +struct __interswitch__GetBillersCollectionsAccount +{ +public: + _interswitch__GetBillersCollectionsAccount *interswitch__GetBillersCollectionsAccount; /* optional element of type interswitch:GetBillersCollectionsAccount */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__EditCustomerBillerAccount +#define SOAP_TYPE_interswitch___interswitch__EditCustomerBillerAccount (275) +/* Operation wrapper: */ +struct __interswitch__EditCustomerBillerAccount +{ +public: + _interswitch__EditCustomerBillerAccount *interswitch__EditCustomerBillerAccount; /* optional element of type interswitch:EditCustomerBillerAccount */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__ResendActivationToken +#define SOAP_TYPE_interswitch___interswitch__ResendActivationToken (279) +/* Operation wrapper: */ +struct __interswitch__ResendActivationToken +{ +public: + _interswitch__ResendActivationToken *interswitch__ResendActivationToken; /* optional element of type interswitch:ResendActivationToken */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__DoCustomProcessing +#define SOAP_TYPE_interswitch___interswitch__DoCustomProcessing (283) +/* Operation wrapper: */ +struct __interswitch__DoCustomProcessing +{ +public: + _interswitch__DoCustomProcessing *interswitch__DoCustomProcessing; /* optional element of type interswitch:DoCustomProcessing */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__CreateBiller +#define SOAP_TYPE_interswitch___interswitch__CreateBiller (287) +/* Operation wrapper: */ +struct __interswitch__CreateBiller +{ +public: + _interswitch__CreateBiller *interswitch__CreateBiller; /* optional element of type interswitch:CreateBiller */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__VerifyBiller +#define SOAP_TYPE_interswitch___interswitch__VerifyBiller (291) +/* Operation wrapper: */ +struct __interswitch__VerifyBiller +{ +public: + _interswitch__VerifyBiller *interswitch__VerifyBiller; /* optional element of type interswitch:VerifyBiller */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch_SOAP_ENV__Header +#define SOAP_TYPE_interswitch_SOAP_ENV__Header (292) +/* SOAP Header: */ +struct SOAP_ENV__Header +{ +#ifdef WITH_NOEMPTYSTRUCT +private: + char dummy; /* dummy member to enable compilation */ +#endif +}; +#endif + +#ifndef SOAP_TYPE_interswitch_SOAP_ENV__Code +#define SOAP_TYPE_interswitch_SOAP_ENV__Code (293) +/* SOAP Fault Code: */ +struct SOAP_ENV__Code +{ +public: + char *SOAP_ENV__Value; /* optional element of type xsd:QName */ + struct SOAP_ENV__Code *SOAP_ENV__Subcode; /* optional element of type SOAP-ENV:Code */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch_SOAP_ENV__Detail +#define SOAP_TYPE_interswitch_SOAP_ENV__Detail (295) +/* SOAP-ENV:Detail */ +struct SOAP_ENV__Detail +{ +public: + int __type; /* any type of element (defined below) */ + void *fault; /* transient */ + char *__any; +}; +#endif + +#ifndef SOAP_TYPE_interswitch_SOAP_ENV__Reason +#define SOAP_TYPE_interswitch_SOAP_ENV__Reason (298) +/* SOAP-ENV:Reason */ +struct SOAP_ENV__Reason +{ +public: + char *SOAP_ENV__Text; /* optional element of type xsd:string */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch_SOAP_ENV__Fault +#define SOAP_TYPE_interswitch_SOAP_ENV__Fault (299) +/* SOAP Fault: */ +struct SOAP_ENV__Fault +{ +public: + char *faultcode; /* optional element of type xsd:QName */ + char *faultstring; /* optional element of type xsd:string */ + char *faultactor; /* optional element of type xsd:string */ + struct SOAP_ENV__Detail *detail; /* optional element of type SOAP-ENV:Detail */ + struct SOAP_ENV__Code *SOAP_ENV__Code; /* optional element of type SOAP-ENV:Code */ + struct SOAP_ENV__Reason *SOAP_ENV__Reason; /* optional element of type SOAP-ENV:Reason */ + char *SOAP_ENV__Node; /* optional element of type xsd:string */ + char *SOAP_ENV__Role; /* optional element of type xsd:string */ + struct SOAP_ENV__Detail *SOAP_ENV__Detail; /* optional element of type SOAP-ENV:Detail */ +}; +#endif + +/******************************************************************************\ + * * + * Typedefs * + * * +\******************************************************************************/ + +#ifndef SOAP_TYPE_interswitch__QName +#define SOAP_TYPE_interswitch__QName (5) +typedef char *_QName; +#endif + +#ifndef SOAP_TYPE_interswitch__XML +#define SOAP_TYPE_interswitch__XML (6) +typedef char *_XML; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__ID +#define SOAP_TYPE_interswitch_xsd__ID (11) +typedef std::string xsd__ID; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__IDREF +#define SOAP_TYPE_interswitch_xsd__IDREF (13) +typedef std::string xsd__IDREF; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__anyURI +#define SOAP_TYPE_interswitch_xsd__anyURI (17) +typedef std::string xsd__anyURI; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__byte +#define SOAP_TYPE_interswitch_xsd__byte (26) +typedef char xsd__byte; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__decimal +#define SOAP_TYPE_interswitch_xsd__decimal (30) +typedef std::string xsd__decimal; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__duration +#define SOAP_TYPE_interswitch_xsd__duration (34) +typedef std::string xsd__duration; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__unsignedByte +#define SOAP_TYPE_interswitch_xsd__unsignedByte (44) +typedef unsigned char xsd__unsignedByte; +#endif + +#ifndef SOAP_TYPE_interswitch_interswitch2__char +#define SOAP_TYPE_interswitch_interswitch2__char (129) +typedef int interswitch2__char; +#endif + +#ifndef SOAP_TYPE_interswitch_interswitch2__duration +#define SOAP_TYPE_interswitch_interswitch2__duration (131) +typedef std::string interswitch2__duration; +#endif + +#ifndef SOAP_TYPE_interswitch_interswitch2__guid +#define SOAP_TYPE_interswitch_interswitch2__guid (133) +typedef std::string interswitch2__guid; +#endif + + +/******************************************************************************\ + * * + * Externals * + * * +\******************************************************************************/ + + +} // namespace interswitch + + +#endif + +/* End of interswitchStub.h */ diff --git a/coregrade/src/include/interswitch_sendmoney.h b/coregrade/src/include/interswitch_sendmoney.h new file mode 100644 index 0000000..822af38 --- /dev/null +++ b/coregrade/src/include/interswitch_sendmoney.h @@ -0,0 +1,28 @@ +#ifndef __INTERSITCH_SENDMONEY_H__ +#define __INTERSITCH_SENDMONEY_H__ + +#include +#include "vars.h" +#include "interswitch.h" + +extern "C" { + + long INTW_configure(CVars in, CVars &out); + long INTW_getBillersSave(hash_map, eqstr> saveData); + long INTW_getBillers(CVars in, CVars &out); + long INTW_getSaveGeneric(const char *table, hash_map, eqstr> saveData); + long INTW_getBillerPaymentItems(CVars in, CVars &out); + long INTW_getBillerCategories(CVars in, CVars &out ); + long INTW_sendBillPaymentAdvice(CVars in, CVars &out ); + long INTW_doTransfer(CVars in, CVars &out ); + long INTW_queryTransaction(CVars in, CVars &out ); + long INTW_doServiceTransfer(CVars in, CVars &out ); + long do_transferPayment(CVars pm); + long INTW_querySendMoneyTransaction(CVars in, CVars &out); + long INTW_doCompleteSavedTransfer(CVars in, CVars &out); + + +} + +#endif + diff --git a/coregrade/src/include/list.h b/coregrade/src/include/list.h new file mode 100644 index 0000000..5252d92 --- /dev/null +++ b/coregrade/src/include/list.h @@ -0,0 +1,21 @@ +#ifndef __storeface_list_h__ +#define __storeface_list_h__ + +typedef struct _list +{ + char * text; + struct _list * next; +} TList; + + + +void DestroyList( TList * top ); + +TList * Add( TList * list, char * text, long size ); + +TList * AddF( TList * list, char * format, ... ); + + + +#endif + diff --git a/coregrade/src/include/paylid.h b/coregrade/src/include/paylid.h new file mode 100644 index 0000000..0d23c32 --- /dev/null +++ b/coregrade/src/include/paylid.h @@ -0,0 +1,13 @@ +#ifndef __PAYLID_H__ +#define __PAYLID_H__ + +long storeface_getAccountBalance(const char *endpoint, const char *tid, const char *key, char *status); +long storeface_transferFund(const char *endpoint, const char *tid, const char *toDestination, const char *key, char *status); +long storeface_checkTransferStatus(const char *endpoint, const char *tid, const char *transactionRef, const char *key, char *status); +long storeface_directAirTimeTopUp(const char *endpoint, const char *tid, const char *topupData, const char *key, char *status, long &delivery_status); + +#endif + +/* +vi:ts=2 +*/ diff --git a/coregrade/src/include/paylid.nsmap b/coregrade/src/include/paylid.nsmap new file mode 100644 index 0000000..56fcbcc --- /dev/null +++ b/coregrade/src/include/paylid.nsmap @@ -0,0 +1,11 @@ + +#include "paylidH.h" +SOAP_NMAC struct Namespace paylid_namespaces[] = +{ + {"SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/", "http://www.w3.org/*/soap-envelope", NULL}, + {"SOAP-ENC", "http://schemas.xmlsoap.org/soap/encoding/", "http://www.w3.org/*/soap-encoding", NULL}, + {"xsi", "http://www.w3.org/2001/XMLSchema-instance", "http://www.w3.org/*/XMLSchema-instance", NULL}, + {"xsd", "http://www.w3.org/2001/XMLSchema", "http://www.w3.org/*/XMLSchema", NULL}, + {"paylid", "urn:paylidwsdl", NULL, NULL}, + {NULL, NULL, NULL, NULL} +}; diff --git a/coregrade/src/include/paylidH.h b/coregrade/src/include/paylidH.h new file mode 100644 index 0000000..b053793 --- /dev/null +++ b/coregrade/src/include/paylidH.h @@ -0,0 +1,730 @@ +/* paylidH.h + Generated by gSOAP 2.7.16 from PaylidService.h + Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. + This part of the software is released under one of the following licenses: + GPL, the gSOAP public license, or Genivia's license for commercial use. +*/ + +#ifndef paylidH_H +#define paylidH_H +#include "paylidStub.h" + +namespace paylid { +#ifndef WITH_NOIDREF +SOAP_FMAC3 void SOAP_FMAC4 soap_markelement(struct soap*, const void*, int); +SOAP_FMAC3 int SOAP_FMAC4 soap_putelement(struct soap*, const void*, const char*, int, int); +SOAP_FMAC3 void *SOAP_FMAC4 soap_getelement(struct soap*, int*); +SOAP_FMAC3 int SOAP_FMAC4 soap_putindependent(struct soap*); +SOAP_FMAC3 int SOAP_FMAC4 soap_getindependent(struct soap*); +#endif +SOAP_FMAC3 int SOAP_FMAC4 soap_ignore_element(struct soap*); + +SOAP_FMAC3 void * SOAP_FMAC4 soap_instantiate(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 int SOAP_FMAC4 soap_fdelete(struct soap_clist*); +SOAP_FMAC3 void* SOAP_FMAC4 soap_class_id_enter(struct soap*, const char*, void*, int, size_t, const char*, const char*); + +SOAP_FMAC3 void* SOAP_FMAC4 soap_container_id_forward(struct soap*, const char*, void*, size_t, int, int, size_t, unsigned int); + +SOAP_FMAC3 void SOAP_FMAC4 soap_container_insert(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_paylid_byte +#define SOAP_TYPE_paylid_byte (3) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_byte(struct soap*, char *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_byte(struct soap*, const char*, int, const char *, const char*); +SOAP_FMAC3 char * SOAP_FMAC4 soap_in_byte(struct soap*, const char*, char *, const char*); + +#define soap_write_byte(soap, data) ( soap_begin_send(soap) || paylid::soap_put_byte(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_byte(struct soap*, const char *, const char*, const char*); + +#define soap_read_byte(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_byte(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 char * SOAP_FMAC4 soap_get_byte(struct soap*, char *, const char*, const char*); + +#ifndef SOAP_TYPE_paylid_int +#define SOAP_TYPE_paylid_int (1) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_int(struct soap*, int *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_int(struct soap*, const char*, int, const int *, const char*); +SOAP_FMAC3 int * SOAP_FMAC4 soap_in_int(struct soap*, const char*, int *, const char*); + +#define soap_write_int(soap, data) ( soap_begin_send(soap) || paylid::soap_put_int(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_int(struct soap*, const int *, const char*, const char*); + +#define soap_read_int(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_int(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 int * SOAP_FMAC4 soap_get_int(struct soap*, int *, const char*, const char*); + +#ifndef SOAP_TYPE_paylid_std__string +#define SOAP_TYPE_paylid_std__string (9) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_std__string(struct soap*, std::string *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__string(struct soap*, const std::string *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__string(struct soap*, const char*, int, const std::string*, const char*); +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_std__string(struct soap*, const char*, std::string*, const char*); + +#define soap_write_std__string(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__string(struct soap*, const std::string *, const char*, const char*); + +#define soap_read_std__string(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_std__string(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_std__string(struct soap*, std::string *, const char*, const char*); + +#define soap_new_std__string(soap, n) soap_instantiate_std__string(soap, n, NULL, NULL, NULL) + + +#define soap_delete_std__string(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 std::string * SOAP_FMAC2 soap_instantiate_std__string(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_std__string(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_paylid_SOAP_ENV__Fault +#define SOAP_TYPE_paylid_SOAP_ENV__Fault (48) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Fault(struct soap*, struct SOAP_ENV__Fault *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Fault(struct soap*, const struct SOAP_ENV__Fault *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Fault(struct soap*, const char*, int, const struct SOAP_ENV__Fault *, const char*); +SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_in_SOAP_ENV__Fault(struct soap*, const char*, struct SOAP_ENV__Fault *, const char*); + +#define soap_write_SOAP_ENV__Fault(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_SOAP_ENV__Fault(soap, data), 0) || paylid::soap_put_SOAP_ENV__Fault(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Fault(struct soap*, const struct SOAP_ENV__Fault *, const char*, const char*); + +#define soap_read_SOAP_ENV__Fault(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_SOAP_ENV__Fault(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_get_SOAP_ENV__Fault(struct soap*, struct SOAP_ENV__Fault *, const char*, const char*); + +#define soap_new_SOAP_ENV__Fault(soap, n) soap_instantiate_SOAP_ENV__Fault(soap, n, NULL, NULL, NULL) + + +#define soap_delete_SOAP_ENV__Fault(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct SOAP_ENV__Fault * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Fault(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Fault(struct soap*, int, int, void*, size_t, const void*, size_t); + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_paylid_SOAP_ENV__Reason +#define SOAP_TYPE_paylid_SOAP_ENV__Reason (47) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Reason(struct soap*, const struct SOAP_ENV__Reason *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Reason(struct soap*, const char*, int, const struct SOAP_ENV__Reason *, const char*); +SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_in_SOAP_ENV__Reason(struct soap*, const char*, struct SOAP_ENV__Reason *, const char*); + +#define soap_write_SOAP_ENV__Reason(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_SOAP_ENV__Reason(soap, data), 0) || paylid::soap_put_SOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Reason(struct soap*, const struct SOAP_ENV__Reason *, const char*, const char*); + +#define soap_read_SOAP_ENV__Reason(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_SOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_get_SOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *, const char*, const char*); + +#define soap_new_SOAP_ENV__Reason(soap, n) soap_instantiate_SOAP_ENV__Reason(soap, n, NULL, NULL, NULL) + + +#define soap_delete_SOAP_ENV__Reason(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct SOAP_ENV__Reason * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Reason(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Reason(struct soap*, int, int, void*, size_t, const void*, size_t); + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_paylid_SOAP_ENV__Detail +#define SOAP_TYPE_paylid_SOAP_ENV__Detail (44) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Detail(struct soap*, const struct SOAP_ENV__Detail *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Detail(struct soap*, const char*, int, const struct SOAP_ENV__Detail *, const char*); +SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_in_SOAP_ENV__Detail(struct soap*, const char*, struct SOAP_ENV__Detail *, const char*); + +#define soap_write_SOAP_ENV__Detail(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_SOAP_ENV__Detail(soap, data), 0) || paylid::soap_put_SOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Detail(struct soap*, const struct SOAP_ENV__Detail *, const char*, const char*); + +#define soap_read_SOAP_ENV__Detail(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_SOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_get_SOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *, const char*, const char*); + +#define soap_new_SOAP_ENV__Detail(soap, n) soap_instantiate_SOAP_ENV__Detail(soap, n, NULL, NULL, NULL) + + +#define soap_delete_SOAP_ENV__Detail(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct SOAP_ENV__Detail * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Detail(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Detail(struct soap*, int, int, void*, size_t, const void*, size_t); + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_paylid_SOAP_ENV__Code +#define SOAP_TYPE_paylid_SOAP_ENV__Code (42) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Code(struct soap*, const struct SOAP_ENV__Code *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Code(struct soap*, const char*, int, const struct SOAP_ENV__Code *, const char*); +SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_in_SOAP_ENV__Code(struct soap*, const char*, struct SOAP_ENV__Code *, const char*); + +#define soap_write_SOAP_ENV__Code(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_SOAP_ENV__Code(soap, data), 0) || paylid::soap_put_SOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Code(struct soap*, const struct SOAP_ENV__Code *, const char*, const char*); + +#define soap_read_SOAP_ENV__Code(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_SOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_get_SOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *, const char*, const char*); + +#define soap_new_SOAP_ENV__Code(soap, n) soap_instantiate_SOAP_ENV__Code(soap, n, NULL, NULL, NULL) + + +#define soap_delete_SOAP_ENV__Code(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct SOAP_ENV__Code * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Code(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Code(struct soap*, int, int, void*, size_t, const void*, size_t); + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_paylid_SOAP_ENV__Header +#define SOAP_TYPE_paylid_SOAP_ENV__Header (41) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Header(struct soap*, struct SOAP_ENV__Header *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Header(struct soap*, const struct SOAP_ENV__Header *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Header(struct soap*, const char*, int, const struct SOAP_ENV__Header *, const char*); +SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_in_SOAP_ENV__Header(struct soap*, const char*, struct SOAP_ENV__Header *, const char*); + +#define soap_write_SOAP_ENV__Header(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_SOAP_ENV__Header(soap, data), 0) || paylid::soap_put_SOAP_ENV__Header(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Header(struct soap*, const struct SOAP_ENV__Header *, const char*, const char*); + +#define soap_read_SOAP_ENV__Header(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_SOAP_ENV__Header(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_get_SOAP_ENV__Header(struct soap*, struct SOAP_ENV__Header *, const char*, const char*); + +#define soap_new_SOAP_ENV__Header(soap, n) soap_instantiate_SOAP_ENV__Header(soap, n, NULL, NULL, NULL) + + +#define soap_delete_SOAP_ENV__Header(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct SOAP_ENV__Header * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Header(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Header(struct soap*, int, int, void*, size_t, const void*, size_t); + +#endif + +#ifndef SOAP_TYPE_paylid_paylid__getSupportedBanks +#define SOAP_TYPE_paylid_paylid__getSupportedBanks (40) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getSupportedBanks(struct soap*, struct paylid__getSupportedBanks *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getSupportedBanks(struct soap*, const struct paylid__getSupportedBanks *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getSupportedBanks(struct soap*, const char*, int, const struct paylid__getSupportedBanks *, const char*); +SOAP_FMAC3 struct paylid__getSupportedBanks * SOAP_FMAC4 soap_in_paylid__getSupportedBanks(struct soap*, const char*, struct paylid__getSupportedBanks *, const char*); + +#define soap_write_paylid__getSupportedBanks(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__getSupportedBanks(soap, data), 0) || paylid::soap_put_paylid__getSupportedBanks(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getSupportedBanks(struct soap*, const struct paylid__getSupportedBanks *, const char*, const char*); + +#define soap_read_paylid__getSupportedBanks(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__getSupportedBanks(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct paylid__getSupportedBanks * SOAP_FMAC4 soap_get_paylid__getSupportedBanks(struct soap*, struct paylid__getSupportedBanks *, const char*, const char*); + +#define soap_new_paylid__getSupportedBanks(soap, n) soap_instantiate_paylid__getSupportedBanks(soap, n, NULL, NULL, NULL) + + +#define soap_delete_paylid__getSupportedBanks(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct paylid__getSupportedBanks * SOAP_FMAC2 soap_instantiate_paylid__getSupportedBanks(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getSupportedBanks(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_paylid_paylid__getSupportedBanksResponse +#define SOAP_TYPE_paylid_paylid__getSupportedBanksResponse (37) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getSupportedBanksResponse(struct soap*, struct paylid__getSupportedBanksResponse *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getSupportedBanksResponse(struct soap*, const struct paylid__getSupportedBanksResponse *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getSupportedBanksResponse(struct soap*, const char*, int, const struct paylid__getSupportedBanksResponse *, const char*); +SOAP_FMAC3 struct paylid__getSupportedBanksResponse * SOAP_FMAC4 soap_in_paylid__getSupportedBanksResponse(struct soap*, const char*, struct paylid__getSupportedBanksResponse *, const char*); + +#define soap_write_paylid__getSupportedBanksResponse(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__getSupportedBanksResponse(soap, data), 0) || paylid::soap_put_paylid__getSupportedBanksResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getSupportedBanksResponse(struct soap*, const struct paylid__getSupportedBanksResponse *, const char*, const char*); + +#define soap_read_paylid__getSupportedBanksResponse(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__getSupportedBanksResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct paylid__getSupportedBanksResponse * SOAP_FMAC4 soap_get_paylid__getSupportedBanksResponse(struct soap*, struct paylid__getSupportedBanksResponse *, const char*, const char*); + +#define soap_new_paylid__getSupportedBanksResponse(soap, n) soap_instantiate_paylid__getSupportedBanksResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete_paylid__getSupportedBanksResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct paylid__getSupportedBanksResponse * SOAP_FMAC2 soap_instantiate_paylid__getSupportedBanksResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getSupportedBanksResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_paylid_paylid__getTrxStatus +#define SOAP_TYPE_paylid_paylid__getTrxStatus (36) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getTrxStatus(struct soap*, struct paylid__getTrxStatus *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getTrxStatus(struct soap*, const struct paylid__getTrxStatus *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getTrxStatus(struct soap*, const char*, int, const struct paylid__getTrxStatus *, const char*); +SOAP_FMAC3 struct paylid__getTrxStatus * SOAP_FMAC4 soap_in_paylid__getTrxStatus(struct soap*, const char*, struct paylid__getTrxStatus *, const char*); + +#define soap_write_paylid__getTrxStatus(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__getTrxStatus(soap, data), 0) || paylid::soap_put_paylid__getTrxStatus(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getTrxStatus(struct soap*, const struct paylid__getTrxStatus *, const char*, const char*); + +#define soap_read_paylid__getTrxStatus(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__getTrxStatus(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct paylid__getTrxStatus * SOAP_FMAC4 soap_get_paylid__getTrxStatus(struct soap*, struct paylid__getTrxStatus *, const char*, const char*); + +#define soap_new_paylid__getTrxStatus(soap, n) soap_instantiate_paylid__getTrxStatus(soap, n, NULL, NULL, NULL) + + +#define soap_delete_paylid__getTrxStatus(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct paylid__getTrxStatus * SOAP_FMAC2 soap_instantiate_paylid__getTrxStatus(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getTrxStatus(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_paylid_paylid__getTrxStatusResponse +#define SOAP_TYPE_paylid_paylid__getTrxStatusResponse (33) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getTrxStatusResponse(struct soap*, struct paylid__getTrxStatusResponse *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getTrxStatusResponse(struct soap*, const struct paylid__getTrxStatusResponse *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getTrxStatusResponse(struct soap*, const char*, int, const struct paylid__getTrxStatusResponse *, const char*); +SOAP_FMAC3 struct paylid__getTrxStatusResponse * SOAP_FMAC4 soap_in_paylid__getTrxStatusResponse(struct soap*, const char*, struct paylid__getTrxStatusResponse *, const char*); + +#define soap_write_paylid__getTrxStatusResponse(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__getTrxStatusResponse(soap, data), 0) || paylid::soap_put_paylid__getTrxStatusResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getTrxStatusResponse(struct soap*, const struct paylid__getTrxStatusResponse *, const char*, const char*); + +#define soap_read_paylid__getTrxStatusResponse(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__getTrxStatusResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct paylid__getTrxStatusResponse * SOAP_FMAC4 soap_get_paylid__getTrxStatusResponse(struct soap*, struct paylid__getTrxStatusResponse *, const char*, const char*); + +#define soap_new_paylid__getTrxStatusResponse(soap, n) soap_instantiate_paylid__getTrxStatusResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete_paylid__getTrxStatusResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct paylid__getTrxStatusResponse * SOAP_FMAC2 soap_instantiate_paylid__getTrxStatusResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getTrxStatusResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_paylid_paylid__getAccount +#define SOAP_TYPE_paylid_paylid__getAccount (32) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getAccount(struct soap*, struct paylid__getAccount *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getAccount(struct soap*, const struct paylid__getAccount *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getAccount(struct soap*, const char*, int, const struct paylid__getAccount *, const char*); +SOAP_FMAC3 struct paylid__getAccount * SOAP_FMAC4 soap_in_paylid__getAccount(struct soap*, const char*, struct paylid__getAccount *, const char*); + +#define soap_write_paylid__getAccount(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__getAccount(soap, data), 0) || paylid::soap_put_paylid__getAccount(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getAccount(struct soap*, const struct paylid__getAccount *, const char*, const char*); + +#define soap_read_paylid__getAccount(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__getAccount(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct paylid__getAccount * SOAP_FMAC4 soap_get_paylid__getAccount(struct soap*, struct paylid__getAccount *, const char*, const char*); + +#define soap_new_paylid__getAccount(soap, n) soap_instantiate_paylid__getAccount(soap, n, NULL, NULL, NULL) + + +#define soap_delete_paylid__getAccount(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct paylid__getAccount * SOAP_FMAC2 soap_instantiate_paylid__getAccount(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getAccount(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_paylid_paylid__getAccountResponse +#define SOAP_TYPE_paylid_paylid__getAccountResponse (29) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getAccountResponse(struct soap*, struct paylid__getAccountResponse *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getAccountResponse(struct soap*, const struct paylid__getAccountResponse *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getAccountResponse(struct soap*, const char*, int, const struct paylid__getAccountResponse *, const char*); +SOAP_FMAC3 struct paylid__getAccountResponse * SOAP_FMAC4 soap_in_paylid__getAccountResponse(struct soap*, const char*, struct paylid__getAccountResponse *, const char*); + +#define soap_write_paylid__getAccountResponse(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__getAccountResponse(soap, data), 0) || paylid::soap_put_paylid__getAccountResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getAccountResponse(struct soap*, const struct paylid__getAccountResponse *, const char*, const char*); + +#define soap_read_paylid__getAccountResponse(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__getAccountResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct paylid__getAccountResponse * SOAP_FMAC4 soap_get_paylid__getAccountResponse(struct soap*, struct paylid__getAccountResponse *, const char*, const char*); + +#define soap_new_paylid__getAccountResponse(soap, n) soap_instantiate_paylid__getAccountResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete_paylid__getAccountResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct paylid__getAccountResponse * SOAP_FMAC2 soap_instantiate_paylid__getAccountResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getAccountResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_paylid_paylid__currentXrate +#define SOAP_TYPE_paylid_paylid__currentXrate (28) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__currentXrate(struct soap*, struct paylid__currentXrate *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__currentXrate(struct soap*, const struct paylid__currentXrate *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__currentXrate(struct soap*, const char*, int, const struct paylid__currentXrate *, const char*); +SOAP_FMAC3 struct paylid__currentXrate * SOAP_FMAC4 soap_in_paylid__currentXrate(struct soap*, const char*, struct paylid__currentXrate *, const char*); + +#define soap_write_paylid__currentXrate(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__currentXrate(soap, data), 0) || paylid::soap_put_paylid__currentXrate(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__currentXrate(struct soap*, const struct paylid__currentXrate *, const char*, const char*); + +#define soap_read_paylid__currentXrate(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__currentXrate(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct paylid__currentXrate * SOAP_FMAC4 soap_get_paylid__currentXrate(struct soap*, struct paylid__currentXrate *, const char*, const char*); + +#define soap_new_paylid__currentXrate(soap, n) soap_instantiate_paylid__currentXrate(soap, n, NULL, NULL, NULL) + + +#define soap_delete_paylid__currentXrate(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct paylid__currentXrate * SOAP_FMAC2 soap_instantiate_paylid__currentXrate(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__currentXrate(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_paylid_paylid__currentXrateResponse +#define SOAP_TYPE_paylid_paylid__currentXrateResponse (25) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__currentXrateResponse(struct soap*, struct paylid__currentXrateResponse *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__currentXrateResponse(struct soap*, const struct paylid__currentXrateResponse *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__currentXrateResponse(struct soap*, const char*, int, const struct paylid__currentXrateResponse *, const char*); +SOAP_FMAC3 struct paylid__currentXrateResponse * SOAP_FMAC4 soap_in_paylid__currentXrateResponse(struct soap*, const char*, struct paylid__currentXrateResponse *, const char*); + +#define soap_write_paylid__currentXrateResponse(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__currentXrateResponse(soap, data), 0) || paylid::soap_put_paylid__currentXrateResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__currentXrateResponse(struct soap*, const struct paylid__currentXrateResponse *, const char*, const char*); + +#define soap_read_paylid__currentXrateResponse(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__currentXrateResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct paylid__currentXrateResponse * SOAP_FMAC4 soap_get_paylid__currentXrateResponse(struct soap*, struct paylid__currentXrateResponse *, const char*, const char*); + +#define soap_new_paylid__currentXrateResponse(soap, n) soap_instantiate_paylid__currentXrateResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete_paylid__currentXrateResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct paylid__currentXrateResponse * SOAP_FMAC2 soap_instantiate_paylid__currentXrateResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__currentXrateResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_paylid_paylid__directAirTimeTopUp +#define SOAP_TYPE_paylid_paylid__directAirTimeTopUp (24) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__directAirTimeTopUp(struct soap*, struct paylid__directAirTimeTopUp *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__directAirTimeTopUp(struct soap*, const struct paylid__directAirTimeTopUp *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__directAirTimeTopUp(struct soap*, const char*, int, const struct paylid__directAirTimeTopUp *, const char*); +SOAP_FMAC3 struct paylid__directAirTimeTopUp * SOAP_FMAC4 soap_in_paylid__directAirTimeTopUp(struct soap*, const char*, struct paylid__directAirTimeTopUp *, const char*); + +#define soap_write_paylid__directAirTimeTopUp(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__directAirTimeTopUp(soap, data), 0) || paylid::soap_put_paylid__directAirTimeTopUp(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__directAirTimeTopUp(struct soap*, const struct paylid__directAirTimeTopUp *, const char*, const char*); + +#define soap_read_paylid__directAirTimeTopUp(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__directAirTimeTopUp(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct paylid__directAirTimeTopUp * SOAP_FMAC4 soap_get_paylid__directAirTimeTopUp(struct soap*, struct paylid__directAirTimeTopUp *, const char*, const char*); + +#define soap_new_paylid__directAirTimeTopUp(soap, n) soap_instantiate_paylid__directAirTimeTopUp(soap, n, NULL, NULL, NULL) + + +#define soap_delete_paylid__directAirTimeTopUp(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct paylid__directAirTimeTopUp * SOAP_FMAC2 soap_instantiate_paylid__directAirTimeTopUp(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__directAirTimeTopUp(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_paylid_paylid__directAirTimeTopUpResponse +#define SOAP_TYPE_paylid_paylid__directAirTimeTopUpResponse (21) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__directAirTimeTopUpResponse(struct soap*, struct paylid__directAirTimeTopUpResponse *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__directAirTimeTopUpResponse(struct soap*, const struct paylid__directAirTimeTopUpResponse *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__directAirTimeTopUpResponse(struct soap*, const char*, int, const struct paylid__directAirTimeTopUpResponse *, const char*); +SOAP_FMAC3 struct paylid__directAirTimeTopUpResponse * SOAP_FMAC4 soap_in_paylid__directAirTimeTopUpResponse(struct soap*, const char*, struct paylid__directAirTimeTopUpResponse *, const char*); + +#define soap_write_paylid__directAirTimeTopUpResponse(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__directAirTimeTopUpResponse(soap, data), 0) || paylid::soap_put_paylid__directAirTimeTopUpResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__directAirTimeTopUpResponse(struct soap*, const struct paylid__directAirTimeTopUpResponse *, const char*, const char*); + +#define soap_read_paylid__directAirTimeTopUpResponse(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__directAirTimeTopUpResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct paylid__directAirTimeTopUpResponse * SOAP_FMAC4 soap_get_paylid__directAirTimeTopUpResponse(struct soap*, struct paylid__directAirTimeTopUpResponse *, const char*, const char*); + +#define soap_new_paylid__directAirTimeTopUpResponse(soap, n) soap_instantiate_paylid__directAirTimeTopUpResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete_paylid__directAirTimeTopUpResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct paylid__directAirTimeTopUpResponse * SOAP_FMAC2 soap_instantiate_paylid__directAirTimeTopUpResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__directAirTimeTopUpResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_paylid_paylid__checkTransferStatus +#define SOAP_TYPE_paylid_paylid__checkTransferStatus (20) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__checkTransferStatus(struct soap*, struct paylid__checkTransferStatus *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__checkTransferStatus(struct soap*, const struct paylid__checkTransferStatus *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__checkTransferStatus(struct soap*, const char*, int, const struct paylid__checkTransferStatus *, const char*); +SOAP_FMAC3 struct paylid__checkTransferStatus * SOAP_FMAC4 soap_in_paylid__checkTransferStatus(struct soap*, const char*, struct paylid__checkTransferStatus *, const char*); + +#define soap_write_paylid__checkTransferStatus(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__checkTransferStatus(soap, data), 0) || paylid::soap_put_paylid__checkTransferStatus(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__checkTransferStatus(struct soap*, const struct paylid__checkTransferStatus *, const char*, const char*); + +#define soap_read_paylid__checkTransferStatus(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__checkTransferStatus(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct paylid__checkTransferStatus * SOAP_FMAC4 soap_get_paylid__checkTransferStatus(struct soap*, struct paylid__checkTransferStatus *, const char*, const char*); + +#define soap_new_paylid__checkTransferStatus(soap, n) soap_instantiate_paylid__checkTransferStatus(soap, n, NULL, NULL, NULL) + + +#define soap_delete_paylid__checkTransferStatus(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct paylid__checkTransferStatus * SOAP_FMAC2 soap_instantiate_paylid__checkTransferStatus(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__checkTransferStatus(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_paylid_paylid__checkTransferStatusResponse +#define SOAP_TYPE_paylid_paylid__checkTransferStatusResponse (17) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__checkTransferStatusResponse(struct soap*, struct paylid__checkTransferStatusResponse *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__checkTransferStatusResponse(struct soap*, const struct paylid__checkTransferStatusResponse *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__checkTransferStatusResponse(struct soap*, const char*, int, const struct paylid__checkTransferStatusResponse *, const char*); +SOAP_FMAC3 struct paylid__checkTransferStatusResponse * SOAP_FMAC4 soap_in_paylid__checkTransferStatusResponse(struct soap*, const char*, struct paylid__checkTransferStatusResponse *, const char*); + +#define soap_write_paylid__checkTransferStatusResponse(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__checkTransferStatusResponse(soap, data), 0) || paylid::soap_put_paylid__checkTransferStatusResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__checkTransferStatusResponse(struct soap*, const struct paylid__checkTransferStatusResponse *, const char*, const char*); + +#define soap_read_paylid__checkTransferStatusResponse(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__checkTransferStatusResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct paylid__checkTransferStatusResponse * SOAP_FMAC4 soap_get_paylid__checkTransferStatusResponse(struct soap*, struct paylid__checkTransferStatusResponse *, const char*, const char*); + +#define soap_new_paylid__checkTransferStatusResponse(soap, n) soap_instantiate_paylid__checkTransferStatusResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete_paylid__checkTransferStatusResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct paylid__checkTransferStatusResponse * SOAP_FMAC2 soap_instantiate_paylid__checkTransferStatusResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__checkTransferStatusResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_paylid_paylid__transferFund +#define SOAP_TYPE_paylid_paylid__transferFund (16) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__transferFund(struct soap*, struct paylid__transferFund *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__transferFund(struct soap*, const struct paylid__transferFund *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__transferFund(struct soap*, const char*, int, const struct paylid__transferFund *, const char*); +SOAP_FMAC3 struct paylid__transferFund * SOAP_FMAC4 soap_in_paylid__transferFund(struct soap*, const char*, struct paylid__transferFund *, const char*); + +#define soap_write_paylid__transferFund(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__transferFund(soap, data), 0) || paylid::soap_put_paylid__transferFund(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__transferFund(struct soap*, const struct paylid__transferFund *, const char*, const char*); + +#define soap_read_paylid__transferFund(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__transferFund(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct paylid__transferFund * SOAP_FMAC4 soap_get_paylid__transferFund(struct soap*, struct paylid__transferFund *, const char*, const char*); + +#define soap_new_paylid__transferFund(soap, n) soap_instantiate_paylid__transferFund(soap, n, NULL, NULL, NULL) + + +#define soap_delete_paylid__transferFund(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct paylid__transferFund * SOAP_FMAC2 soap_instantiate_paylid__transferFund(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__transferFund(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_paylid_paylid__transferFundResponse +#define SOAP_TYPE_paylid_paylid__transferFundResponse (13) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__transferFundResponse(struct soap*, struct paylid__transferFundResponse *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__transferFundResponse(struct soap*, const struct paylid__transferFundResponse *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__transferFundResponse(struct soap*, const char*, int, const struct paylid__transferFundResponse *, const char*); +SOAP_FMAC3 struct paylid__transferFundResponse * SOAP_FMAC4 soap_in_paylid__transferFundResponse(struct soap*, const char*, struct paylid__transferFundResponse *, const char*); + +#define soap_write_paylid__transferFundResponse(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__transferFundResponse(soap, data), 0) || paylid::soap_put_paylid__transferFundResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__transferFundResponse(struct soap*, const struct paylid__transferFundResponse *, const char*, const char*); + +#define soap_read_paylid__transferFundResponse(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__transferFundResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct paylid__transferFundResponse * SOAP_FMAC4 soap_get_paylid__transferFundResponse(struct soap*, struct paylid__transferFundResponse *, const char*, const char*); + +#define soap_new_paylid__transferFundResponse(soap, n) soap_instantiate_paylid__transferFundResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete_paylid__transferFundResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct paylid__transferFundResponse * SOAP_FMAC2 soap_instantiate_paylid__transferFundResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__transferFundResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_paylid_paylid__getAccountBalance +#define SOAP_TYPE_paylid_paylid__getAccountBalance (12) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getAccountBalance(struct soap*, struct paylid__getAccountBalance *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getAccountBalance(struct soap*, const struct paylid__getAccountBalance *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getAccountBalance(struct soap*, const char*, int, const struct paylid__getAccountBalance *, const char*); +SOAP_FMAC3 struct paylid__getAccountBalance * SOAP_FMAC4 soap_in_paylid__getAccountBalance(struct soap*, const char*, struct paylid__getAccountBalance *, const char*); + +#define soap_write_paylid__getAccountBalance(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__getAccountBalance(soap, data), 0) || paylid::soap_put_paylid__getAccountBalance(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getAccountBalance(struct soap*, const struct paylid__getAccountBalance *, const char*, const char*); + +#define soap_read_paylid__getAccountBalance(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__getAccountBalance(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct paylid__getAccountBalance * SOAP_FMAC4 soap_get_paylid__getAccountBalance(struct soap*, struct paylid__getAccountBalance *, const char*, const char*); + +#define soap_new_paylid__getAccountBalance(soap, n) soap_instantiate_paylid__getAccountBalance(soap, n, NULL, NULL, NULL) + + +#define soap_delete_paylid__getAccountBalance(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct paylid__getAccountBalance * SOAP_FMAC2 soap_instantiate_paylid__getAccountBalance(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getAccountBalance(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_paylid_paylid__getAccountBalanceResponse +#define SOAP_TYPE_paylid_paylid__getAccountBalanceResponse (8) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getAccountBalanceResponse(struct soap*, struct paylid__getAccountBalanceResponse *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getAccountBalanceResponse(struct soap*, const struct paylid__getAccountBalanceResponse *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getAccountBalanceResponse(struct soap*, const char*, int, const struct paylid__getAccountBalanceResponse *, const char*); +SOAP_FMAC3 struct paylid__getAccountBalanceResponse * SOAP_FMAC4 soap_in_paylid__getAccountBalanceResponse(struct soap*, const char*, struct paylid__getAccountBalanceResponse *, const char*); + +#define soap_write_paylid__getAccountBalanceResponse(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__getAccountBalanceResponse(soap, data), 0) || paylid::soap_put_paylid__getAccountBalanceResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getAccountBalanceResponse(struct soap*, const struct paylid__getAccountBalanceResponse *, const char*, const char*); + +#define soap_read_paylid__getAccountBalanceResponse(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__getAccountBalanceResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct paylid__getAccountBalanceResponse * SOAP_FMAC4 soap_get_paylid__getAccountBalanceResponse(struct soap*, struct paylid__getAccountBalanceResponse *, const char*, const char*); + +#define soap_new_paylid__getAccountBalanceResponse(soap, n) soap_instantiate_paylid__getAccountBalanceResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete_paylid__getAccountBalanceResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct paylid__getAccountBalanceResponse * SOAP_FMAC2 soap_instantiate_paylid__getAccountBalanceResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getAccountBalanceResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_paylid_PointerToSOAP_ENV__Reason +#define SOAP_TYPE_paylid_PointerToSOAP_ENV__Reason (50) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Reason(struct soap*, const char *, int, struct SOAP_ENV__Reason *const*, const char *); +SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Reason(struct soap*, const char*, struct SOAP_ENV__Reason **, const char*); + +#define soap_write_PointerToSOAP_ENV__Reason(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_PointerToSOAP_ENV__Reason(soap, data), 0) || paylid::soap_put_PointerToSOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *const*, const char*, const char*); + +#define soap_read_PointerToSOAP_ENV__Reason(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_PointerToSOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason **, const char*, const char*); + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_paylid_PointerToSOAP_ENV__Detail +#define SOAP_TYPE_paylid_PointerToSOAP_ENV__Detail (49) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Detail(struct soap*, const char *, int, struct SOAP_ENV__Detail *const*, const char *); +SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Detail(struct soap*, const char*, struct SOAP_ENV__Detail **, const char*); + +#define soap_write_PointerToSOAP_ENV__Detail(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_PointerToSOAP_ENV__Detail(soap, data), 0) || paylid::soap_put_PointerToSOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *const*, const char*, const char*); + +#define soap_read_PointerToSOAP_ENV__Detail(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_PointerToSOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail **, const char*, const char*); + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_paylid_PointerToSOAP_ENV__Code +#define SOAP_TYPE_paylid_PointerToSOAP_ENV__Code (43) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Code(struct soap*, const char *, int, struct SOAP_ENV__Code *const*, const char *); +SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Code(struct soap*, const char*, struct SOAP_ENV__Code **, const char*); + +#define soap_write_PointerToSOAP_ENV__Code(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_PointerToSOAP_ENV__Code(soap, data), 0) || paylid::soap_put_PointerToSOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *const*, const char*, const char*); + +#define soap_read_PointerToSOAP_ENV__Code(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_PointerToSOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code **, const char*, const char*); + +#endif + +#ifndef SOAP_TYPE_paylid__QName +#define SOAP_TYPE_paylid__QName (5) +#endif + +#define soap_default__QName(soap, a) soap_default_string(soap, a) + + +#define soap_serialize__QName(soap, a) soap_serialize_string(soap, a) + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__QName(struct soap*, const char*, int, char*const*, const char*); +SOAP_FMAC3 char * * SOAP_FMAC4 soap_in__QName(struct soap*, const char*, char **, const char*); + +#define soap_write__QName(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize__QName(soap, data), 0) || paylid::soap_put__QName(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put__QName(struct soap*, char *const*, const char*, const char*); + +#define soap_read__QName(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get__QName(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 char ** SOAP_FMAC4 soap_get__QName(struct soap*, char **, const char*, const char*); + +#ifndef SOAP_TYPE_paylid_string +#define SOAP_TYPE_paylid_string (4) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_string(struct soap*, char **); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_string(struct soap*, char *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_string(struct soap*, const char*, int, char*const*, const char*); +SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_string(struct soap*, const char*, char **, const char*); + +#define soap_write_string(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_string(soap, data), 0) || paylid::soap_put_string(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_string(struct soap*, char *const*, const char*, const char*); + +#define soap_read_string(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_string(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_string(struct soap*, char **, const char*, const char*); + +} // namespace paylid + + +#endif + +/* End of paylidH.h */ diff --git a/coregrade/src/include/paylidStub.h b/coregrade/src/include/paylidStub.h new file mode 100644 index 0000000..06dc242 --- /dev/null +++ b/coregrade/src/include/paylidStub.h @@ -0,0 +1,334 @@ +/* paylidStub.h + Generated by gSOAP 2.7.16 from PaylidService.h + Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. + This part of the software is released under one of the following licenses: + GPL, the gSOAP public license, or Genivia's license for commercial use. +*/ + +#ifndef paylidStub_H +#define paylidStub_H +#include +#define SOAP_NAMESPACE_OF_paylid "urn:paylidwsdl" +#ifndef WITH_NONAMESPACES +#define WITH_NONAMESPACES +#endif +#ifndef WITH_NOGLOBAL +#define WITH_NOGLOBAL +#endif +#include "stdsoap2.h" + +namespace paylid { + +/******************************************************************************\ + * * + * Enumerations * + * * +\******************************************************************************/ + + +/******************************************************************************\ + * * + * Types with Custom Serializers * + * * +\******************************************************************************/ + + +/******************************************************************************\ + * * + * Classes and Structs * + * * +\******************************************************************************/ + + +#if 0 /* volatile type: do not redeclare here */ + +#endif + +#if 0 /* volatile type: do not redeclare here */ + +#endif + +#ifndef SOAP_TYPE_paylid_paylid__getAccountBalanceResponse +#define SOAP_TYPE_paylid_paylid__getAccountBalanceResponse (8) +/* paylid:getAccountBalanceResponse */ +struct paylid__getAccountBalanceResponse +{ +public: + std::string Code; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type xsd:string */ + std::string Data; /* required element of type xsd:string */ + std::string Hmac; /* required element of type xsd:string */ +}; +#endif + +#ifndef SOAP_TYPE_paylid_paylid__getAccountBalance +#define SOAP_TYPE_paylid_paylid__getAccountBalance (12) +/* paylid:getAccountBalance */ +struct paylid__getAccountBalance +{ +public: + std::string terminalID; /* required element of type xsd:string */ + std::string hmac; /* required element of type xsd:string */ +}; +#endif + +#ifndef SOAP_TYPE_paylid_paylid__transferFundResponse +#define SOAP_TYPE_paylid_paylid__transferFundResponse (13) +/* paylid:transferFundResponse */ +struct paylid__transferFundResponse +{ +public: + std::string Code; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type xsd:string */ + std::string Data; /* required element of type xsd:string */ + std::string Hmac; /* required element of type xsd:string */ +}; +#endif + +#ifndef SOAP_TYPE_paylid_paylid__transferFund +#define SOAP_TYPE_paylid_paylid__transferFund (16) +/* paylid:transferFund */ +struct paylid__transferFund +{ +public: + std::string terminalID; /* required element of type xsd:string */ + std::string toDestination; /* required element of type xsd:string */ + std::string hmac; /* required element of type xsd:string */ +}; +#endif + +#ifndef SOAP_TYPE_paylid_paylid__checkTransferStatusResponse +#define SOAP_TYPE_paylid_paylid__checkTransferStatusResponse (17) +/* paylid:checkTransferStatusResponse */ +struct paylid__checkTransferStatusResponse +{ +public: + std::string Code; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type xsd:string */ + std::string Data; /* required element of type xsd:string */ + std::string Hmac; /* required element of type xsd:string */ +}; +#endif + +#ifndef SOAP_TYPE_paylid_paylid__checkTransferStatus +#define SOAP_TYPE_paylid_paylid__checkTransferStatus (20) +/* paylid:checkTransferStatus */ +struct paylid__checkTransferStatus +{ +public: + std::string terminalID; /* required element of type xsd:string */ + std::string transactionRef; /* required element of type xsd:string */ + std::string hmac; /* required element of type xsd:string */ +}; +#endif + +#ifndef SOAP_TYPE_paylid_paylid__directAirTimeTopUpResponse +#define SOAP_TYPE_paylid_paylid__directAirTimeTopUpResponse (21) +/* paylid:directAirTimeTopUpResponse */ +struct paylid__directAirTimeTopUpResponse +{ +public: + std::string Code; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type xsd:string */ + std::string Data; /* required element of type xsd:string */ + std::string Hmac; /* required element of type xsd:string */ +}; +#endif + +#ifndef SOAP_TYPE_paylid_paylid__directAirTimeTopUp +#define SOAP_TYPE_paylid_paylid__directAirTimeTopUp (24) +/* paylid:directAirTimeTopUp */ +struct paylid__directAirTimeTopUp +{ +public: + std::string terminalID; /* required element of type xsd:string */ + std::string topupData; /* required element of type xsd:string */ + std::string hmac; /* required element of type xsd:string */ +}; +#endif + +#ifndef SOAP_TYPE_paylid_paylid__currentXrateResponse +#define SOAP_TYPE_paylid_paylid__currentXrateResponse (25) +/* paylid:currentXrateResponse */ +struct paylid__currentXrateResponse +{ +public: + std::string Code; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type xsd:string */ + std::string Data; /* required element of type xsd:string */ + std::string Hmac; /* required element of type xsd:string */ +}; +#endif + +#ifndef SOAP_TYPE_paylid_paylid__currentXrate +#define SOAP_TYPE_paylid_paylid__currentXrate (28) +/* paylid:currentXrate */ +struct paylid__currentXrate +{ +public: + std::string terminalID; /* required element of type xsd:string */ + std::string topupData; /* required element of type xsd:string */ + std::string hmac; /* required element of type xsd:string */ +}; +#endif + +#ifndef SOAP_TYPE_paylid_paylid__getAccountResponse +#define SOAP_TYPE_paylid_paylid__getAccountResponse (29) +/* paylid:getAccountResponse */ +struct paylid__getAccountResponse +{ +public: + std::string Code; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type xsd:string */ + std::string Data; /* required element of type xsd:string */ + std::string Hmac; /* required element of type xsd:string */ +}; +#endif + +#ifndef SOAP_TYPE_paylid_paylid__getAccount +#define SOAP_TYPE_paylid_paylid__getAccount (32) +/* paylid:getAccount */ +struct paylid__getAccount +{ +public: + std::string terminalID; /* required element of type xsd:string */ + std::string topupData; /* required element of type xsd:string */ + std::string hmac; /* required element of type xsd:string */ +}; +#endif + +#ifndef SOAP_TYPE_paylid_paylid__getTrxStatusResponse +#define SOAP_TYPE_paylid_paylid__getTrxStatusResponse (33) +/* paylid:getTrxStatusResponse */ +struct paylid__getTrxStatusResponse +{ +public: + std::string Code; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type xsd:string */ + std::string Data; /* required element of type xsd:string */ + std::string Hmac; /* required element of type xsd:string */ +}; +#endif + +#ifndef SOAP_TYPE_paylid_paylid__getTrxStatus +#define SOAP_TYPE_paylid_paylid__getTrxStatus (36) +/* paylid:getTrxStatus */ +struct paylid__getTrxStatus +{ +public: + std::string terminalID; /* required element of type xsd:string */ + std::string topupData; /* required element of type xsd:string */ + std::string hmac; /* required element of type xsd:string */ +}; +#endif + +#ifndef SOAP_TYPE_paylid_paylid__getSupportedBanksResponse +#define SOAP_TYPE_paylid_paylid__getSupportedBanksResponse (37) +/* paylid:getSupportedBanksResponse */ +struct paylid__getSupportedBanksResponse +{ +public: + std::string Code; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type xsd:string */ + std::string Data; /* required element of type xsd:string */ + std::string Hmac; /* required element of type xsd:string */ +}; +#endif + +#ifndef SOAP_TYPE_paylid_paylid__getSupportedBanks +#define SOAP_TYPE_paylid_paylid__getSupportedBanks (40) +/* paylid:getSupportedBanks */ +struct paylid__getSupportedBanks +{ +public: + std::string terminalID; /* required element of type xsd:string */ + std::string topupData; /* required element of type xsd:string */ + std::string hmac; /* required element of type xsd:string */ +}; +#endif + +#ifndef SOAP_TYPE_paylid_SOAP_ENV__Header +#define SOAP_TYPE_paylid_SOAP_ENV__Header (41) +/* SOAP Header: */ +struct SOAP_ENV__Header +{ +#ifdef WITH_NOEMPTYSTRUCT +private: + char dummy; /* dummy member to enable compilation */ +#endif +}; +#endif + +#ifndef SOAP_TYPE_paylid_SOAP_ENV__Code +#define SOAP_TYPE_paylid_SOAP_ENV__Code (42) +/* SOAP Fault Code: */ +struct SOAP_ENV__Code +{ +public: + char *SOAP_ENV__Value; /* optional element of type xsd:QName */ + struct SOAP_ENV__Code *SOAP_ENV__Subcode; /* optional element of type SOAP-ENV:Code */ +}; +#endif + +#ifndef SOAP_TYPE_paylid_SOAP_ENV__Detail +#define SOAP_TYPE_paylid_SOAP_ENV__Detail (44) +/* SOAP-ENV:Detail */ +struct SOAP_ENV__Detail +{ +public: + int __type; /* any type of element (defined below) */ + void *fault; /* transient */ + char *__any; +}; +#endif + +#ifndef SOAP_TYPE_paylid_SOAP_ENV__Reason +#define SOAP_TYPE_paylid_SOAP_ENV__Reason (47) +/* SOAP-ENV:Reason */ +struct SOAP_ENV__Reason +{ +public: + char *SOAP_ENV__Text; /* optional element of type xsd:string */ +}; +#endif + +#ifndef SOAP_TYPE_paylid_SOAP_ENV__Fault +#define SOAP_TYPE_paylid_SOAP_ENV__Fault (48) +/* SOAP Fault: */ +struct SOAP_ENV__Fault +{ +public: + char *faultcode; /* optional element of type xsd:QName */ + char *faultstring; /* optional element of type xsd:string */ + char *faultactor; /* optional element of type xsd:string */ + struct SOAP_ENV__Detail *detail; /* optional element of type SOAP-ENV:Detail */ + struct SOAP_ENV__Code *SOAP_ENV__Code; /* optional element of type SOAP-ENV:Code */ + struct SOAP_ENV__Reason *SOAP_ENV__Reason; /* optional element of type SOAP-ENV:Reason */ + char *SOAP_ENV__Node; /* optional element of type xsd:string */ + char *SOAP_ENV__Role; /* optional element of type xsd:string */ + struct SOAP_ENV__Detail *SOAP_ENV__Detail; /* optional element of type SOAP-ENV:Detail */ +}; +#endif + +/******************************************************************************\ + * * + * Typedefs * + * * +\******************************************************************************/ + +#ifndef SOAP_TYPE_paylid__QName +#define SOAP_TYPE_paylid__QName (5) +typedef char *_QName; +#endif + +#ifndef SOAP_TYPE_paylid__XML +#define SOAP_TYPE_paylid__XML (6) +typedef char *_XML; +#endif + + +/******************************************************************************\ + * * + * Externals * + * * +\******************************************************************************/ + + +} // namespace paylid + + +#endif + +/* End of paylidStub.h */ diff --git a/coregrade/src/include/paylidpaylidwsdlBindingProxy.h b/coregrade/src/include/paylidpaylidwsdlBindingProxy.h new file mode 100644 index 0000000..df6acc1 --- /dev/null +++ b/coregrade/src/include/paylidpaylidwsdlBindingProxy.h @@ -0,0 +1,78 @@ +/* paylidpaylidwsdlBindingProxy.h + Generated by gSOAP 2.7.16 from PaylidService.h + Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. + This part of the software is released under one of the following licenses: + GPL, the gSOAP public license, or Genivia's license for commercial use. +*/ + +#ifndef paylidpaylidwsdlBindingProxy_H +#define paylidpaylidwsdlBindingProxy_H +#include "paylidH.h" + +namespace paylid { + +class SOAP_CMAC paylidwsdlBindingProxy : public soap +{ public: + /// Endpoint URL of service 'paylidwsdlBindingProxy' (change as needed) + const char *soap_endpoint; + /// Constructor + paylidwsdlBindingProxy(); + /// Constructor with copy of another engine state + paylidwsdlBindingProxy(const struct soap&); + /// Constructor with engine input+output mode control + paylidwsdlBindingProxy(soap_mode iomode); + /// Constructor with engine input and output mode control + paylidwsdlBindingProxy(soap_mode imode, soap_mode omode); + /// Destructor frees deserialized data + virtual ~paylidwsdlBindingProxy(); + /// Initializer used by constructors + virtual void paylidwsdlBindingProxy_init(soap_mode imode, soap_mode omode); + /// Delete all deserialized data (uses soap_destroy and soap_end) + virtual void destroy(); + /// Disables and removes SOAP Header from message + virtual void soap_noheader(); + /// Get SOAP Fault structure (NULL when absent) + virtual const SOAP_ENV__Fault *soap_fault(); + /// Get SOAP Fault string (NULL when absent) + virtual const char *soap_fault_string(); + /// Get SOAP Fault detail as string (NULL when absent) + virtual const char *soap_fault_detail(); + /// Force close connection (normally automatic, except for send_X ops) + virtual int soap_close_socket(); + /// Print fault + virtual void soap_print_fault(FILE*); +#ifndef WITH_LEAN + /// Print fault to stream + virtual void soap_stream_fault(std::ostream&); + /// Put fault into buffer + virtual char *soap_sprint_fault(char *buf, size_t len); +#endif + + /// Web service operation 'getAccountBalance' (returns error code or SOAP_OK) + virtual int getAccountBalance(std::string terminalID, std::string hmac, struct paylid__getAccountBalanceResponse &_param_1); + + /// Web service operation 'transferFund' (returns error code or SOAP_OK) + virtual int transferFund(std::string terminalID, std::string toDestination, std::string hmac, struct paylid__transferFundResponse &_param_2); + + /// Web service operation 'checkTransferStatus' (returns error code or SOAP_OK) + virtual int checkTransferStatus(std::string terminalID, std::string transactionRef, std::string hmac, struct paylid__checkTransferStatusResponse &_param_3); + + /// Web service operation 'directAirTimeTopUp' (returns error code or SOAP_OK) + virtual int directAirTimeTopUp(std::string terminalID, std::string topupData, std::string hmac, struct paylid__directAirTimeTopUpResponse &_param_4); + + /// Web service operation 'currentXrate' (returns error code or SOAP_OK) + virtual int currentXrate(std::string terminalID, std::string topupData, std::string hmac, struct paylid__currentXrateResponse &_param_5); + + /// Web service operation 'getAccount' (returns error code or SOAP_OK) + virtual int getAccount(std::string terminalID, std::string topupData, std::string hmac, struct paylid__getAccountResponse &_param_6); + + /// Web service operation 'getTrxStatus' (returns error code or SOAP_OK) + virtual int getTrxStatus(std::string terminalID, std::string topupData, std::string hmac, struct paylid__getTrxStatusResponse &_param_7); + + /// Web service operation 'getSupportedBanks' (returns error code or SOAP_OK) + virtual int getSupportedBanks(std::string terminalID, std::string topupData, std::string hmac, struct paylid__getSupportedBanksResponse &_param_8); +}; + +} // namespace paylid + +#endif diff --git a/coregrade/src/include/pgsql.h b/coregrade/src/include/pgsql.h new file mode 100644 index 0000000..22c2a05 --- /dev/null +++ b/coregrade/src/include/pgsql.h @@ -0,0 +1,28 @@ +#ifndef __PGSQL_H__ +#define __PGSQL_H__ + +#include +#include +#include +#include +#include +#include +#include + +using namespace std; + +int pgsql_db_connect(const char*host,const char*name,const char*user,const char*pass,long port); +int pgsql_exec(const char * format, ... ); +const PGresult* pgsql_query(const char * format, ... ); +int pgsql_num_rows(const PGresult *res); +int pgsql_num_fields(const PGresult *res); +map pgsql_fetch_assoc(const PGresult *res, int row); +vector pgsql_fetch_row(const PGresult *res, int row); +void pgsql_close(); +char* pgsql_uitoa(unsigned n, char *s, int radix); + +#endif + +/* +vi:ts=2 +*/ \ No newline at end of file diff --git a/coregrade/src/include/pgsql_wrapper.h b/coregrade/src/include/pgsql_wrapper.h new file mode 100644 index 0000000..0dca1b3 --- /dev/null +++ b/coregrade/src/include/pgsql_wrapper.h @@ -0,0 +1,41 @@ +#ifndef __PGSQL_WRAPPER_H__ +#define __PGSQL_WRAPPER_H__ + +#include "exceptions.h" + +enum { DBS_ALL=0, DBS_VALID=1, DBS_STREAM=2 }; + +class CEscape; + +#define NEED_ESC CEscape __esc( cmd ); +#define esc( param ) __esc.Escape( param ) + +#define ESCAPE_MAX_VARS 50 + +void load_db_record( const char * table, CVars &rec, const char * where, ... ); +long load_db_record( CVars &rec, const char * query, ... ); +long insert_db_record( int mode, const char *table, const char *seq, CVars &rec ); +void update_db_record( int mode, const char * table, CVars &rec, long id, const char * where=NULL, ... ) throw ( bad_parameter ); +void v_update_db_record( int mode, const char * table, CVars &rec, const char *index, long id, const char * where=NULL, va_list ap=NULL ) throw ( bad_parameter ); +void update_db_record( int mode, const char * table, CVars &rec, const char *index, long id, const char * where=NULL, ... ) throw ( bad_parameter ); +long curr_val( const char *seq ); + +class CEscape +{ + public: + char * New( int sz ); + CEscape( char * st ); + ~CEscape(); + char * Escape( const char * param ); + + private: + char * vars[ESCAPE_MAX_VARS]; + int n; + char * st; + char esc[1000]; + int EscapeLength( const char * par ); // Calculate the required buffer size for escaped par + char *EscapeReal( const char * cmd, char * _esc=NULL, int sz=0 ); // Escape a string for SQL server +}; + +#endif + diff --git a/coregrade/src/include/php_coregrade_api.h b/coregrade/src/include/php_coregrade_api.h new file mode 100644 index 0000000..52bff5f --- /dev/null +++ b/coregrade/src/include/php_coregrade_api.h @@ -0,0 +1,18 @@ +#ifndef PHP_COREGRADE_API_H +#define PHP_COREGRADE_API_H + +#define PHP_COREGRADE_API_EXTNAME "coregrade_api" +#define PHP_COREGRADE_API_EXTVER "0.1" + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +extern "C" { +#include "php.h" +} + +extern zend_module_entry coregrade_api_module_entry; +#define phpext_coregrade_api_ptr &coregrade_api_module_entry; + +#endif /* PHP_COREGRADE_API_H */ diff --git a/coregrade/src/include/php_coregrade_api_ns.h b/coregrade/src/include/php_coregrade_api_ns.h new file mode 100644 index 0000000..00fccc0 --- /dev/null +++ b/coregrade/src/include/php_coregrade_api_ns.h @@ -0,0 +1 @@ +#define COREGRADE_API_NS "coregrade_api_oameye" diff --git a/coregrade/src/include/php_coregrade_config.h b/coregrade/src/include/php_coregrade_config.h new file mode 100644 index 0000000..a6475fc --- /dev/null +++ b/coregrade/src/include/php_coregrade_config.h @@ -0,0 +1 @@ +#define COREGRADE_CONFIG "/home/oameye/coregrade/coregrade/etc/" diff --git a/coregrade/src/include/php_coregrade_log.h b/coregrade/src/include/php_coregrade_log.h new file mode 100644 index 0000000..5ea2396 --- /dev/null +++ b/coregrade/src/include/php_coregrade_log.h @@ -0,0 +1 @@ +#define COREGRADE_LOG "/home/oameye/coregrade/coregrade/logs/coregrade_api.log" diff --git a/coregrade/src/include/php_filelog_max_level.h b/coregrade/src/include/php_filelog_max_level.h new file mode 100644 index 0000000..f91f936 --- /dev/null +++ b/coregrade/src/include/php_filelog_max_level.h @@ -0,0 +1 @@ +#define FILELOG_MAX_LEVEL 9 diff --git a/coregrade/src/include/php_tmpl_prefix.h b/coregrade/src/include/php_tmpl_prefix.h new file mode 100644 index 0000000..49f68ee --- /dev/null +++ b/coregrade/src/include/php_tmpl_prefix.h @@ -0,0 +1 @@ +#define TMPL_PREFIX "/home/oameye/coregrade/coregrade/email/" diff --git a/coregrade/src/include/safestring.h b/coregrade/src/include/safestring.h new file mode 100644 index 0000000..8b67e0a --- /dev/null +++ b/coregrade/src/include/safestring.h @@ -0,0 +1,49 @@ + +#ifndef __safestr_lib +#define __safestr_lib +#include "config.h" + +#define SAFESTRING_COMMON_BUFFER_SIZE 1024 + +#ifdef __cplusplus +extern "C" +{ +#endif + +char * strsafecpy( char * dest, const char * src, int size ); + +char * strnsafecpy( char * dest, const char * src, int n, int size ); + +char * strsafecat( char * dest, const char * src, int size ); + +char * strcatf( char * dest, int size, const char * fmt, ... ); + +char * strnsafecat( char * dest, const char * src, int n, int size ); + // Append first n characters of src to dest + +char * last_line( char * buf ); // find the last line and return the pointer to its beginning + +char * safestrdup( const char *s ); + +char * strreverse( char *s ); + +#ifdef __cplusplus +} +#endif + + +#ifdef __cplusplus + +char * toupper( char * s, char * dest=0, int sz=0 ); +char * tolower( char * s, char * dest=0, int sz=0 ); + +char * toupper( const char * s, char * dest, int sz ); +char * tolower( const char * s, char * dest, int sz ); + +#endif + + +//int GetParam(char * params, char _name[], char value[], int valuelen, char ** end = 0 ); + + +#endif diff --git a/coregrade/src/include/sha2.h b/coregrade/src/include/sha2.h new file mode 100644 index 0000000..60f52e3 --- /dev/null +++ b/coregrade/src/include/sha2.h @@ -0,0 +1,108 @@ +/* + * FIPS 180-2 SHA-224/256/384/512 implementation + * Last update: 02/02/2007 + * Issue date: 04/30/2005 + * + * Copyright (C) 2005, 2007 Olivier Gay + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the project nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#ifndef SHA2_H +#define SHA2_H + +#define SHA224_DIGEST_SIZE ( 224 / 8) +#define SHA256_DIGEST_SIZE ( 256 / 8) +#define SHA384_DIGEST_SIZE ( 384 / 8) +#define SHA512_DIGEST_SIZE ( 512 / 8) + +#define SHA256_BLOCK_SIZE ( 512 / 8) +#define SHA512_BLOCK_SIZE (1024 / 8) +#define SHA384_BLOCK_SIZE SHA512_BLOCK_SIZE +#define SHA224_BLOCK_SIZE SHA256_BLOCK_SIZE + +#ifndef SHA2_TYPES +#define SHA2_TYPES +typedef unsigned char uint8; +typedef unsigned int uint32; +typedef unsigned long long uint64; +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + unsigned int tot_len; + unsigned int len; + unsigned char block[2 * SHA256_BLOCK_SIZE]; + uint32 h[8]; +} sha256_ctx; + +typedef struct { + unsigned int tot_len; + unsigned int len; + unsigned char block[2 * SHA512_BLOCK_SIZE]; + uint64 h[8]; +} sha512_ctx; + +typedef sha512_ctx sha384_ctx; +typedef sha256_ctx sha224_ctx; + +void sha224_init(sha224_ctx *ctx); +void sha224_update(sha224_ctx *ctx, const unsigned char *message, + unsigned int len); +void sha224_final(sha224_ctx *ctx, unsigned char *digest); +void sha224(const unsigned char *message, unsigned int len, + unsigned char *digest); + +void sha256_init(sha256_ctx * ctx); +void sha256_update(sha256_ctx *ctx, const unsigned char *message, + unsigned int len); +void sha256_final(sha256_ctx *ctx, unsigned char *digest); +void sha256(const unsigned char *message, unsigned int len, + unsigned char *digest); + +void sha384_init(sha384_ctx *ctx); +void sha384_update(sha384_ctx *ctx, const unsigned char *message, + unsigned int len); +void sha384_final(sha384_ctx *ctx, unsigned char *digest); +void sha384(const unsigned char *message, unsigned int len, + unsigned char *digest); + +void sha512_init(sha512_ctx *ctx); +void sha512_update(sha512_ctx *ctx, const unsigned char *message, + unsigned int len); +void sha512_final(sha512_ctx *ctx, unsigned char *digest); +void sha512(const unsigned char *message, unsigned int len, + unsigned char *digest); + +#ifdef __cplusplus +} +#endif + +#endif /* !SHA2_H */ + diff --git a/coregrade/src/include/sha512.h b/coregrade/src/include/sha512.h new file mode 100644 index 0000000..21374dc --- /dev/null +++ b/coregrade/src/include/sha512.h @@ -0,0 +1,10 @@ +#ifndef __SHA512_H__ +#define __SHA512_H__ + +#include +using namespace std; + +string hash_sha512_cpp(string msg_arr); + + +#endif diff --git a/coregrade/src/include/smtp.h b/coregrade/src/include/smtp.h new file mode 100644 index 0000000..4b9d98f --- /dev/null +++ b/coregrade/src/include/smtp.h @@ -0,0 +1,10 @@ +#ifndef __smtp_lib +#define __smtp_lib + +#include "php_tmpl_prefix.h" + +#define EMAIL_PREFIX TMPL_PREFIX + +int SMTP2( const char * _server, const char * _from, char * _to, char * _body, const char * _domain, const char * _user, const char * _pass, const char * _name); + +#endif diff --git a/coregrade/src/include/storeface.h b/coregrade/src/include/storeface.h new file mode 100644 index 0000000..69f20e4 --- /dev/null +++ b/coregrade/src/include/storeface.h @@ -0,0 +1,15 @@ +#ifndef __STOREFACE_H__ +#define __STOREFACE_H__ + +#include "vars.h" + +long paylid_getAccountBalance(CVars in, CVars &out); +long paylid_transferFund(CVars in, CVars &out); +long paylid_checkTransferStatus(CVars in, CVars &out); +long paylid_directAirTimeTopUp(CVars in, CVars &out); + +#endif + +/* +vi:ts=2 +*/ diff --git a/coregrade/src/include/timer.h b/coregrade/src/include/timer.h new file mode 100644 index 0000000..d3709df --- /dev/null +++ b/coregrade/src/include/timer.h @@ -0,0 +1,20 @@ +#ifndef __timer_h__ +#define __timer_h__ + + +class CTimer +{ +public: + CTimer( ); + + void init(); + bool timeout( unsigned long t ); + void wake( unsigned long ); + unsigned long elapsed( ); + +private: + unsigned long prev; +}; + +#endif + diff --git a/coregrade/src/include/topups.h b/coregrade/src/include/topups.h new file mode 100644 index 0000000..c4e66cc --- /dev/null +++ b/coregrade/src/include/topups.h @@ -0,0 +1,15 @@ +#ifndef __mx_topups_h__ +#define __mx_topups_h__ + +#include "vars.h" + +//long CreateCoreGradeAccount(CVars in, CVars &out); +long CreateBulkTopupBatch(CVars in, CVars &out); +long AddBulkTopupBatchItem(CVars in, CVars &out); +long UpdateBulkTopupItem(CVars in, CVars &out); +long DeliverBulkTopupItem(CVars in, CVars &out); +long CreateTopupOrder(CVars in, CVars &out); +long DeliverTopOrderByBalance(CVars in, CVars &out); + +#endif + diff --git a/coregrade/src/include/util.h b/coregrade/src/include/util.h new file mode 100644 index 0000000..572d0cb --- /dev/null +++ b/coregrade/src/include/util.h @@ -0,0 +1,10 @@ +#ifndef __UTIL_H__ +#define __UTIL_H__ + +bool reg_match( const char * input, const char * regexp, char * ret=NULL, int sz=0, int * pos = NULL ); +//char * urlencode(const char * buf); // Encode a string using URL-encoding +char * urlencode(const char * buf, char *, int ); // Encode a string using URL-encoding +//char * urldecode( char * buf); // Decode a string using URL-encoding +char * urldecode( char * buf, char *, int ); // Decode a string using URL-encoding + +#endif diff --git a/coregrade/src/include/vars.h b/coregrade/src/include/vars.h new file mode 100644 index 0000000..5242f99 --- /dev/null +++ b/coregrade/src/include/vars.h @@ -0,0 +1,125 @@ +#ifndef __vars_h__ +#define __vars_h__ + + +#pragma interface + + +#include +#include + + +using std::string; +using std::map; + +/* +struct hash_str +{ + inline size_t string_hf(const string& str) + { return hash(str.c_str()); } +}; + +struct MyHASHER : public hash{ + size_t operator(string a_string){ + return (*this)( a_string.c_str() ); + } +} + + +struct eqstr +{ + bool operator()(const char* s1, const char* s2) const + { + return strcmp(s1, s2) == 0; + } +}; + +*/ + +class varstring : public string +{ +public: + varstring(); + varstring( const varstring &c ); + varstring( const string &c ); + varstring( const char* c, int len); + varstring( const char *c ); + + long Long() const; + double Double(); + varstring& operator=( const char* c ); + void operator=( long l ); + void operator=( const string c ); + varstring& operator=( const varstring &c ); + operator long(); // type conversion + operator const char*(); // type conversion + + bool valid() const; + void set_valid( bool validated = true ); + + bool db() const; + void set_db( bool validated = true ); + + bool binary() const; + void set_binary( bool binary = true ); + + friend class CVars; + +private: + bool validated; + bool db_var; // is this variable to be used in DB updates + bool binary_var; +}; + +/* +class string_key : public string +{ +public: + string_key& operator=( const char* c ); + void operator=( long l ); + void operator=( const string c ); + + string_key(); + string_key( const char *c ); + + bool valid() const; + void set_valid( bool validated = true ); + +private: + bool validated; +}; +*/ + + +typedef +// hash_map, eqstr> +// map< string_key, varstring > + map< const string, varstring > +CVars1; + + + +class CVars : public CVars1 +{ +public: + CVars() : CVars1() {}; + + CVars& operator<<( char const *name ); // schedule for db processing + CVars& operator>>( char const *name ); // ignore db processing for this variable + + void ClearDB(); + + long serialize( unsigned char *&buf ); // this will serialize the data into buf and return the resulting size + // it is the responsibility of the caller to free the buffer with free() + int deserialize( unsigned char *buf, long buf_sz ); // this will initialize the current instance by de-serializing the data from buf + // returns number of elements de-serialized + +}; + + + + + + +#endif + diff --git a/coregrade/src/install-sh b/coregrade/src/install-sh new file mode 100644 index 0000000..e69de29 diff --git a/coregrade/src/libconfig-1.3.1/.deps/libconfig___la-grammar.Plo b/coregrade/src/libconfig-1.3.1/.deps/libconfig___la-grammar.Plo new file mode 100644 index 0000000..4205136 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/.deps/libconfig___la-grammar.Plo @@ -0,0 +1,85 @@ +libconfig___la-grammar.lo: grammar.c /usr/include/string.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stddef.h \ + /usr/include/xlocale.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h libconfig.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h private.h + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +libconfig.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +private.h: diff --git a/coregrade/src/libconfig-1.3.1/.deps/libconfig___la-libconfig.Plo b/coregrade/src/libconfig-1.3.1/.deps/libconfig___la-libconfig.Plo new file mode 100644 index 0000000..c97e50d --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/.deps/libconfig___la-libconfig.Plo @@ -0,0 +1,116 @@ +libconfig___la-libconfig.lo: libconfig.c ac_config.h libconfig.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h grammar.h \ + scanner.h /usr/include/string.h /usr/include/xlocale.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h private.h \ + wincompat.h /usr/include/locale.h /usr/include/bits/locale.h \ + /usr/include/ctype.h + +ac_config.h: + +libconfig.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +grammar.h: + +scanner.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +private.h: + +wincompat.h: + +/usr/include/locale.h: + +/usr/include/bits/locale.h: + +/usr/include/ctype.h: diff --git a/coregrade/src/libconfig-1.3.1/.deps/libconfig___la-libconfigcpp.Plo b/coregrade/src/libconfig-1.3.1/.deps/libconfig___la-libconfigcpp.Plo new file mode 100644 index 0000000..5be3575 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/.deps/libconfig___la-libconfigcpp.Plo @@ -0,0 +1,332 @@ +libconfig___la-libconfigcpp.lo: libconfigcpp.c++ libconfig.h++ \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/string \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/c++config.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/os_defines.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/cpu_defines.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stringfwd.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/char_traits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_algobase.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cstddef \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/functexcept.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/exception_defines.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/cpp_type_traits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/type_traits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/numeric_traits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_pair.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/move.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/concept_check.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_iterator_base_types.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_iterator_base_funcs.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_iterator.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/debug/debug.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/postypes.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cwchar \ + /usr/include/bits/wchar.h /usr/include/xlocale.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/allocator.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/c++allocator.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/new_allocator.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/new \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/exception \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/localefwd.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/c++locale.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/clocale \ + /usr/include/locale.h /usr/include/bits/locale.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/iosfwd \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cctype \ + /usr/include/ctype.h /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/ostream_insert.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cxxabi-forced.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_function.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/backward/binders.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_string.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/atomicity.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/gthr.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \ + /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/setjmp.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/atomic_word.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/initializer_list \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_string.tcc \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/map \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_tree.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_map.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_multimap.h \ + libconfig.h wincompat.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cstring \ + /usr/include/string.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cstdlib \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/sys/sysmacros.h \ + /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/sstream \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/istream \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ios \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/ios_base.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_classes.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_classes.tcc \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/streambuf \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/streambuf.tcc \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_ios.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_facets.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cwctype \ + /usr/include/wctype.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/ctype_base.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/streambuf_iterator.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/ctype_inline.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_facets.tcc \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_ios.tcc \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ostream \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/ostream.tcc \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/istream.tcc \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/sstream.tcc + +libconfig.h++: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/string: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/c++config.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/os_defines.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/cpu_defines.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stringfwd.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/char_traits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_algobase.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cstddef: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/functexcept.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/exception_defines.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/cpp_type_traits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/type_traits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/numeric_traits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_pair.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/move.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/concept_check.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_iterator_base_types.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_iterator_base_funcs.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_iterator.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/debug/debug.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/postypes.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cwchar: + +/usr/include/bits/wchar.h: + +/usr/include/xlocale.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/allocator.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/c++allocator.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/new_allocator.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/new: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/exception: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/localefwd.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/c++locale.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/clocale: + +/usr/include/locale.h: + +/usr/include/bits/locale.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/iosfwd: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cctype: + +/usr/include/ctype.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/ostream_insert.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cxxabi-forced.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_function.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/backward/binders.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_string.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/atomicity.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/gthr.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/gthr-default.h: + +/usr/include/pthread.h: + +/usr/include/sched.h: + +/usr/include/time.h: + +/usr/include/bits/sched.h: + +/usr/include/bits/time.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/bits/setjmp.h: + +/usr/include/unistd.h: + +/usr/include/bits/posix_opt.h: + +/usr/include/bits/environments.h: + +/usr/include/bits/confname.h: + +/usr/include/getopt.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/atomic_word.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/initializer_list: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_string.tcc: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/map: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_tree.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_map.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_multimap.h: + +libconfig.h: + +wincompat.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cstring: + +/usr/include/string.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cstdlib: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/sys/types.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/alloca.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/sstream: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/istream: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ios: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/ios_base.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_classes.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_classes.tcc: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/streambuf: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/streambuf.tcc: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_ios.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_facets.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cwctype: + +/usr/include/wctype.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/ctype_base.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/streambuf_iterator.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/ctype_inline.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_facets.tcc: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_ios.tcc: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ostream: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/ostream.tcc: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/istream.tcc: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/sstream.tcc: diff --git a/coregrade/src/libconfig-1.3.1/.deps/libconfig___la-scanner.Plo b/coregrade/src/libconfig-1.3.1/.deps/libconfig___la-scanner.Plo new file mode 100644 index 0000000..681ae91 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/.deps/libconfig___la-scanner.Plo @@ -0,0 +1,102 @@ +libconfig___la-scanner.lo: scanner.c /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/string.h /usr/include/xlocale.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/ctype.h grammar.h wincompat.h + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/ctype.h: + +grammar.h: + +wincompat.h: diff --git a/coregrade/src/libconfig-1.3.1/.deps/libconfig_la-grammar.Plo b/coregrade/src/libconfig-1.3.1/.deps/libconfig_la-grammar.Plo new file mode 100644 index 0000000..e6e54dd --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/.deps/libconfig_la-grammar.Plo @@ -0,0 +1,85 @@ +libconfig_la-grammar.lo: grammar.c /usr/include/string.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stddef.h \ + /usr/include/xlocale.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h libconfig.h /usr/include/stdio.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h private.h + +/usr/include/string.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stddef.h: + +/usr/include/xlocale.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +libconfig.h: + +/usr/include/stdio.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +private.h: diff --git a/coregrade/src/libconfig-1.3.1/.deps/libconfig_la-libconfig.Plo b/coregrade/src/libconfig-1.3.1/.deps/libconfig_la-libconfig.Plo new file mode 100644 index 0000000..90ac754 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/.deps/libconfig_la-libconfig.Plo @@ -0,0 +1,116 @@ +libconfig_la-libconfig.lo: libconfig.c ac_config.h libconfig.h \ + /usr/include/stdio.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h grammar.h \ + scanner.h /usr/include/string.h /usr/include/xlocale.h \ + /usr/include/errno.h /usr/include/bits/errno.h \ + /usr/include/linux/errno.h /usr/include/asm/errno.h \ + /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h private.h \ + wincompat.h /usr/include/locale.h /usr/include/bits/locale.h \ + /usr/include/ctype.h + +ac_config.h: + +libconfig.h: + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +grammar.h: + +scanner.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +private.h: + +wincompat.h: + +/usr/include/locale.h: + +/usr/include/bits/locale.h: + +/usr/include/ctype.h: diff --git a/coregrade/src/libconfig-1.3.1/.deps/libconfig_la-scanner.Plo b/coregrade/src/libconfig-1.3.1/.deps/libconfig_la-scanner.Plo new file mode 100644 index 0000000..2809c08 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/.deps/libconfig_la-scanner.Plo @@ -0,0 +1,102 @@ +libconfig_la-scanner.lo: scanner.c /usr/include/stdio.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/string.h /usr/include/xlocale.h /usr/include/errno.h \ + /usr/include/bits/errno.h /usr/include/linux/errno.h \ + /usr/include/asm/errno.h /usr/include/asm-generic/errno.h \ + /usr/include/asm-generic/errno-base.h /usr/include/stdlib.h \ + /usr/include/bits/waitflags.h /usr/include/bits/waitstatus.h \ + /usr/include/endian.h /usr/include/bits/endian.h \ + /usr/include/bits/byteswap.h /usr/include/sys/types.h \ + /usr/include/time.h /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h /usr/include/ctype.h grammar.h wincompat.h + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/string.h: + +/usr/include/xlocale.h: + +/usr/include/errno.h: + +/usr/include/bits/errno.h: + +/usr/include/linux/errno.h: + +/usr/include/asm/errno.h: + +/usr/include/asm-generic/errno.h: + +/usr/include/asm-generic/errno-base.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/include/ctype.h: + +grammar.h: + +wincompat.h: diff --git a/coregrade/src/libconfig-1.3.1/AUTHORS b/coregrade/src/libconfig-1.3.1/AUTHORS new file mode 100644 index 0000000..bd30122 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/AUTHORS @@ -0,0 +1,5 @@ + +Mark Lindner - Lead developer & maintainer. +Daniel Marjamäki - Enhancements & bugfixes. +Andrew Tytula - Windows Port. +Glenn Herteg - Enhancements, bugfixes, documentation corrections. diff --git a/coregrade/src/libconfig-1.3.1/COPYING.LIB b/coregrade/src/libconfig-1.3.1/COPYING.LIB new file mode 100644 index 0000000..b124cf5 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/COPYING.LIB @@ -0,0 +1,510 @@ + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations +below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it +becomes a de-facto standard. To achieve this, non-free programs must +be allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control +compilation and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at least + three years, to give the same user the materials specified in + Subsection 6a, above, for a charge no more than the cost of + performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply, and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License +may add an explicit geographical distribution limitation excluding those +countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms +of the ordinary General Public License). + + To apply these terms, attach the following notices to the library. +It is safest to attach them to the start of each source file to most +effectively convey the exclusion of warranty; and each file should +have at least the "copyright" line and a pointer to where the full +notice is found. + + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or +your school, if any, to sign a "copyright disclaimer" for the library, +if necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James + Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/coregrade/src/libconfig-1.3.1/ChangeLog b/coregrade/src/libconfig-1.3.1/ChangeLog new file mode 100644 index 0000000..22209c2 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/ChangeLog @@ -0,0 +1,339 @@ + + ----- version 1.3.1 ------ + +2008-09-07 Mark Lindner + + * scanner.l, wincompat.h - workarounds for problems with parsing and + formatting of 64-bit integers on MinGW + * scanner.c - regenerated + +2008-09-05 Mark Lindner + + * libconfig.spec -= updated for 1.3.1 + * Makefile.am - fix version + * scanner.l - add fromhex() function, since strtoull() seems broken + on MinGW + +2008-08-25 Mark Lindner + + * libconfigcpp.c++, libconfig.h++ - derive exceptions from + std::exception + +2008-08-10 Mark Lindner + + * wincompat.h - fix MinGW build issue + * configure.ac, ac_config.h, Makefile.am - bump version + * doc/libconfig.texi - doc updates + * libconfigcpp.c++, libconfig.h++ - include path information in + setting exceptions + * libconfig.c - force "C" locale for parsing & formatting + + ----- version 1.3 ------ + +2008-04-07 Mark Lindner + + * libconfig.spec - updated for 1.3 + +2008-04-03 Mark Lindner + + * scanner.l, grammar.y, libconfig.c, libconfig.h, wincompat.h - + fix/add comment headers, add C90 portability fixes from + Chris Pickett (C-style comments, renamed 'index' to 'idx' to + resolve name clash) + * scanner.c, grammar.c - regenerated + * configure.ac - enable more gcc warnings + * libconfigcpp.c++, libconfig.h++ - added getPath(), fixed impl of + isRoot(), add portability fixes from Chris Pickett (renamed 'index' + to 'idx' to resolve name clash), moved exception constructors into + source file; changed SettingExistsException to SettingNameException + to be more broad in scope + * Makefile.am - add wincompat.h to sources; add missing debian files + to EXTRA_DIST + * test.cfg - added example 64-bit integer settings + * samples/* - expanded some examples + * doc/libconfig.texi - documentation updates + * Makefile.am, *msvc7* - added (generated) VS2003 projects/solution + +2008-03-22 Mark Lindner + + * debian/* - updates from Klaus Schneider + +2008-03-22 Mark Lindner + + * scanner.l, grammar.y, libconfig.h++, libconfig.c, libconfig.h, + wincompat.h, libconfigcpp.c++, grammar.c, scanner.c, grammar.h - + add support for 64-bit integer values + * libconfig.texi - documentation updates + * Makefile.am, ac_config.h, configure.ac, libtool - bump version + * libconfig.h - add config_setting_parent(), config_setting_is_root() + * libconfigcpp.c++, libconfig.h++ - add isRoot(), getParent() to + Setting + +2008-03-15 Mark Lindner + + * scanner.l - made 'true' and 'false' tokens completely + case-insensitive + * libconfigcpp.cc, libconfig.hh - added alias files for Windows + * libconfig.c, libconfig.h - modified __config_write_value() to write + out floating point values in a more human-readable form; added name + validation; added config_setting_remove_elem() and + config_setting_index() + * libconfigcpp.c++, libconfig.h++ - added remove(unsigned int) and + getIndex() to Setting + * libconfig.texi - documentation updates + + ----- version 1.2.1 ------ + +2007-12-21 Mark Lindner + + * libconfig.c - source cleanup + * config.guess, config.sub, ltmain.sh, libtool - updated to newer + * configure.ac, Makefile.am, ac_config.h.in, ac_config.h + - MinGW-related fixes + + ----- version 1.2 ------ + +2007-10-15 Mark Lindner + + * libconfig.h++, libconfigcpp.c++ - renamed "SettingFormat" to + "Setting::Format" to reduce namespace pollution + +2007-10-13 Mark Lindner + + * scanner.l - updated regexp for float to allow for values which have + an exponent but no decimal point + * grammar.y - capture input line number when parsing settings + * libconfig.c, libconfig.h - added config_setting_is*() macros; + added config_setting_source_line(); added line member to + config_setting_t struct + * libconfig.c++, libconfig.h++ - renamed "SettingType" enum to + Setting::Type to reduce namespace pollution; added getSourceLine() + * samples/* - various updates + * debian/changelog - added entry + * ac_config.h, configure.ac, libtool, Makefile.am - new version # + * TODO - updates + * doc/libconfig.texi - documentation updates + +2007-10-12 Mark Lindner + + * libconfig.c, libconfig.h - added config_set_auto_convert(), + config_get_auto_convert(), and number auto-conversion logic + * libconfigcpp.c++, libconfig.h++ - add setAutoConvert(), + getAutoConvert(), lookupValue() that takes std::string&, + corrected return values of assignment operators + * debian/rules - made file executable + * debian/libconfigduo-dev.install - add pkgconfig files to list + +2007-09-22 Mark Lindner + + * libconfig.c, libconfig.h - change 'type' and 'format' members of + config_setting_t to short, thereby saving 4 bytes + +2007-09-22 Mark Lindner + + * doc/libconfig.texi - add @direntry to fix install-info warnings + * libconfig.spec.in, Makefile.am, configure.ac - added RPM support + (from Deneys S. Maartens) + +2007-09-18 Mark Lindner + + * libconfig.h - remove DLL_EXPORT; add LIBCONFIG_STATIC to fix + static linking on Windows + +2007-09-18 Deneys S. Maartens + + * samples/c/Makefile.am, samples/c++/Makefile.am - Add + AM_CPPFLAGS to fix distcheck build failure + * Makefile.am - expand wildcards in EXTRA_DIST to fix distcheck + build failure + + ----- version 1.1.3 ------ + +2007-08-03 Mark Lindner + + * libconfigcpp.c++ - bugfix in unsigned cast operators (incorrect value + clipping logic) + * debian/control - made some corrections + + ----- version 1.1.2 ------ + +2007-07-01 Mark Lindner + + * debian/* added debian package files from Klaus Schneider + * libconfig.h++ - added new predicate is() functions + * libconfig.h - fix comments + * doc/libconfig.texi - documentation updates + * ac_config.h, configure.ac, Makefile.am - new version # + + ----- version 1.1.1 ------ + +2007-06-15 Mark Lindner + + * scanner.l - bugfix in string parsing + * test.cfg - added test case + + ----- version 1.1 ------ + +2007-04-18 Mark Lindner + + * libconfigcpp.c++ - bugfix in add(SettingType) + * stubcpp.cpp - add more ad-hoc tests + +2007-04-05 Mark Lindner + + * scanner.l - Add string concatenation patch from Glenn Herteg. + Add \f as a whitespace character. + * grammar.y - add mode directive emacs + * libconfigcpp.c++, libconfig.h++ - add exists() and lookupValue() + methods; add Setting::operator std::string() + * libconfig.texi - documentation updates + + ----- version 1.0.1 ------ + +2006-11-26 Mark Lindner + + * samples/c/Makefile.am, samples/c++/Makefile.am - fix linker error + * libconfig.texi - documentation update + + ----- version 1.0 ------ + +2006-10-19 Mark Lindner + + * libconfigcpp.c++ - bugfix in add() for lists + +2006-10-11 Mark Lindner + + * scanner.l - allow asterisk in setting names (submitted by + James McCann) + * libconfig.texi - documentation updates + * configure.ac, Makefile.am, samples/Makefile.am - add --disable-cxx + configure option; conditionally build/install C++ components + +2006-10-01 Mark Lindner + + * - samples cleanup + +2006-09-14 Mark Lindner + + * libconfig.c - Change %.8f to %e for double values in + __config_write_value(). Submitted by Filipe Maia. + +2006-08-31 Mark Lindner + + * Makefile.am - changed bin_PROGRAMS to noinst_PROGRAMS; the stub + programs are for testing and should not be installed. + +2006-08-26 Mark Lindner + + * libconfig.texi - documentation corrections & updates + * stub.c, stubcpp.c++ - check return value of fopen(); fix compiler + warnings + * configure.ac, Makefile.am - add -Wall to CFLAGS only for gcc; + add test.cfg to EXTRA_DIST + * grammar.y, libconfigcpp.c++ - fix compiler warnings + * libconfig.c - use CONFIG_TRUE & CONFIG_FALSE rather than 1 & 0 + for success/failure return values. + + ----- version 0.9 ------ + +2006-07-29 Mark Lindner + + * - major grammar redesign: groups are now values instead of + distinct syntax constructs; this allows groups to be elements of + lists + * libconfig.texi - documentation updates; added new chapter containing + the BNF grammar + * test.cfg - modified to reflect new syntax and to demonstrate lists + +2006-06-23 Mark Lindner + + * - added support for lists (collections of + heterogeneous values of any type) + * libconfig.c - pretty-printing fixes in config_write() + +2006-06-08 Mark Lindner + + * libconfig.h++ - added private copy constructor & assignment operator + (from Josef Meile) + * ligconfigcpp.c++, libconfig.h++ - added cast operators for unsigned + int and unsigned long (from Scott Frazer) + * - add support for value formats; the only non-default + format currently supported is hexadecimal format for integer values + (based on patch from Scott Frazer) + +2006-04-15 Mark Lindner + + * - added pkg-config support + +2006-03-31 mlindner + + * - cleaned up config.tab.h mess (this file was obsolete, + and superseded by grammar.h ... problem identified by Scott Frazer) + +2006-03-30 mlindner + + * grammar.y - fixed includes for windows (missing decl of malloc/free) + * libconfig.c - fixed several signed/unsigned warnings + * doc/libconfig.texi - documentation updates, formatting fix + * scanner.l - allow lowercase 'true' and 'false' in addition to + 'TRUE' and 'FALSE' + +2006-03-27 Mark Lindner + + * libconfigcpp.c++ - added missing break statements in switch (from + Lukas Zweifel) + * libconfig.c - don't strdup() a NULL string (from Lukas Zweifel) + * grammar.c, grammar.h - regenerated with bison 2.1 + +2006-03-20 Mark Lindner + + * scanner.l - added '%option nounistd' and regenerated with newest + version of flex; Windows doesn't have unistd.h. + +2006-03-17 Mark Lindner + + * grammar.y - bugfix; error & abort parsing if duplicate setting name + encountered (previously caused a crash ... reported by Tobias Witek) + * scanner.l - bugfix; multi-line C-style comments were causing line + number counting to be thrown off, because the newlines were being + "eaten" + * - various fixes to support building of DLLs on Windows. + +2005-11-26 Mark Lindner + + * grammar.y, scanner.l - always strdup() yytext, and free the memory + in the grammar rules. + +2005-11-22 Mark Lindner + + * libconfigcpp.c++, libconfig.h++, libconfig.c, libconfig.h - + Added Daniel's enhancements: methods & functions for reading/writing + files, fixes for various memory leaks, etc. + * samples/* - Added Daniel's example code. + * docs/libconfig.texi - Updated documentation + +2005-09-28 Mark Lindner + + * libconfigcpp.c++, libconfig.h++, libconfig.c, libconfig.h + Enhanced API to support modification of a configuration. + * libconfig.texi - updated manual + +2005-06-02 Mark Lindner + + * libconfigcpp.c++, libconfig.h++ - Added getName() method; + fixed operator[](int) to work with groups; this allows iteration over + a group's child settings. Added a missing break statement (bugfix + submitted by Pablo Barrera Gonzalez). Added operator int() and + operator float() to Setting; note that these may cause loss of + precision since the actual values are stored internally as long + and double, respectively. + + * libconfig.h - added config_setting_name() macro + + * libconfig.c - maintain two lists of children at each node; a sorted + list and an unsorted list (to preserve the order of the settings as + they appear in the file). + + * scanner.l - fixed scanner rule for comments. '#' no longer has to + be in column 0 to be recognized as a comment. Added support for C + and C++ style comments. diff --git a/coregrade/src/libconfig-1.3.1/INSTALL b/coregrade/src/libconfig-1.3.1/INSTALL new file mode 100644 index 0000000..095b1eb --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/INSTALL @@ -0,0 +1,231 @@ +Installation Instructions +************************* + +Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004 Free +Software Foundation, Inc. + +This file is free documentation; the Free Software Foundation gives +unlimited permission to copy, distribute and modify it. + +Basic Installation +================== + +These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + + It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring. (Caching is +disabled by default to prevent problems with accidental use of stale +cache files.) + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'. You only need +`configure.ac' if you want to change it or regenerate `configure' using +a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + +Compilers and Options +===================== + +Some systems require unusual options for compilation or linking that the +`configure' script does not know about. Run `./configure --help' for +details on some of the pertinent environment variables. + + You can give `configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here +is an example: + + ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix + + *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + +You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not support the `VPATH' +variable, you have to compile the package for one architecture at a +time in the source code directory. After you have installed the +package for one architecture, use `make distclean' before reconfiguring +for another architecture. + +Installation Names +================== + +By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PREFIX'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PREFIX', the package will +use PREFIX as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=DIR' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + +Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + +There may be some features `configure' cannot figure out automatically, +but needs to determine by the type of machine the package will run on. +Usually, assuming the package is built to be run on the _same_ +architectures, `configure' can figure that out, but if it prints a +message saying it cannot guess the machine type, give it the +`--build=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS KERNEL-OS + + See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the `--target=TYPE' option to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with `--host=TYPE'. + +Sharing Defaults +================ + +If you want to set default values for `configure' scripts to share, you +can create a site shell script called `config.site' that gives default +values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Defining Variables +================== + +Variables not defined in a site shell script can be set in the +environment passed to `configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +will cause the specified gcc to be used as the C compiler (unless it is +overridden in the site shell script). + +`configure' Invocation +====================== + +`configure' recognizes the following options to control how it operates. + +`--help' +`-h' + Print a summary of the options to `configure', and exit. + +`--version' +`-V' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally `config.cache'. FILE defaults to `/dev/null' to + disable caching. + +`--config-cache' +`-C' + Alias for `--cache-file=config.cache'. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. + diff --git a/coregrade/src/libconfig-1.3.1/Makefile.am b/coregrade/src/libconfig-1.3.1/Makefile.am new file mode 100644 index 0000000..f57435f --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/Makefile.am @@ -0,0 +1,115 @@ + +lib_LTLIBRARIES = libconfig.la + +if BUILDCXX +lib_LTLIBRARIES += libconfig++.la +endif + +# Versioning rules ( C:R:A ) +# +# 1. Start with version 0:0:0. +# 2. If any of the sources have changed, increment R. This is a new revision +# of the current interface. +# 3. If the interface has changed, increment C and set R to 0. This is the +# first revision of a new interface. +# 4. If the new interface is a superset of the previous interface +# (that is, if the previous interface has not been broken by the +# changes in this new release), increment A. This release is backwards +# compatible with the previous release. +# 5. If the new interface has removed elements with respect to the +# previous interface, then backward compatibility is broken; set A to 0. +# This release has a new, but backwards incompatible interface. +# +# For more info see section 6.3 of the GNU Libtool Manual. + +VERINFO = -version-info 7:1:1 + +PARSER_PREFIX = libconfig_yy + +libconfig_la_LDFLAGS = $(VERINFO) -no-undefined + +libconfig___la_LDFLAGS = $(VERINFO) -no-undefined + +libsrc = libconfig.c scanner.l grammar.y private.h wincompat.h +libinc = libconfig.h + +libsrc_cpp = $(libsrc) libconfigcpp.c++ +libinc_cpp = $(libinc) libconfig.h++ + +BUILT_SOURCES = scanner.c scanner.h grammar.c grammar.h + +libconfig_la_SOURCES = $(libsrc) + +libconfig___la_SOURCES = $(libsrc_cpp) + +libcppflags = -D_REENTRANT + +if GNU_WIN +libcppflags += -DLIBCONFIG_EXPORTS +endif + +libconfig_la_CPPFLAGS = -DPARSER_PREFIX=\"$(PARSER_PREFIX)\" $(libcppflags) +libconfig___la_CPPFLAGS = -DPARSER_PREFIX=\"$(PARSER_PREFIX)\" $(libcppflags) + +include_HEADERS = $(libinc) + +if BUILDCXX +include_HEADERS += $(libinc_cpp) +endif + +AM_YFLAGS = -d -p $(PARSER_PREFIX) + +AM_LFLAGS = --header-file=scanner.h --prefix=$(PARSER_PREFIX) + +EXTRA_DIST = \ + $(BUILT_SOURCES) \ + libconfig++.vcproj \ + libconfig++_stub.vcproj \ + libconfig.vcproj \ + libconfig_stub.vcproj \ + libconfig.sln \ + test.cfg \ + TODO \ + debian/changelog \ + debian/compat \ + debian/control \ + debian/copyright \ + debian/libconfigduo2-dev.docs \ + debian/libconfigduo2-dev.install \ + debian/libconfigduo2.install \ + debian/libconfigduo2.postinst \ + debian/shlibs \ + debian/rules \ + libconfig.spec \ + libconfigcpp.cc libconfig.hh + +pkgconfigdir = $(libdir)/pkgconfig + +pkgconfig_DATA = libconfig.pc + +if BUILDCXX +pkgconfig_DATA += libconfig++.pc +endif + +SUBDIRS = . samples doc + +.PHONY: dist-rpm + +dist-rpm: distcheck + rpmbuild -ta $(distdir).tar.gz + + +msvc7: + find . -name '*\.vcproj' | grep -v '7' \ + | while read x; do \ + d=`dirname $$x`; \ + y=`basename $$x .vcproj`-msvc7.vcproj; \ + rm -f $$d/$$y; \ + perl -p -e 's/Version="8.00"/Version="7.10"/g' < $$x > $$d/$$y; \ + done; \ + rm -f libconfig-msvc7.sln libconfig-msvc7.sln.tmp; \ + perl -p -e 's/Version 9.00/Version 8.00/g' < libconfig.sln \ + > libconfig-msvc7.sln.tmp; \ + perl -p -e 's/\.vcproj/-msvc7.vcproj/g' \ + < libconfig-msvc7.sln.tmp > libconfig-msvc7.sln; \ + rm -f libconfig-msvc7.sln.tmp diff --git a/coregrade/src/libconfig-1.3.1/Makefile.in b/coregrade/src/libconfig-1.3.1/Makefile.in new file mode 100644 index 0000000..64dd368 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/Makefile.in @@ -0,0 +1,1003 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +@BUILDCXX_TRUE@am__append_1 = libconfig++.la +@GNU_WIN_TRUE@am__append_2 = -DLIBCONFIG_EXPORTS +@BUILDCXX_TRUE@am__append_3 = $(libinc_cpp) +@BUILDCXX_TRUE@am__append_4 = libconfig++.pc +subdir = . +DIST_COMMON = README $(am__configure_deps) $(am__include_HEADERS_DIST) \ + $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(srcdir)/ac_config.h.in $(srcdir)/libconfig++.pc.in \ + $(srcdir)/libconfig.pc.in $(srcdir)/libconfig.spec.in \ + $(top_srcdir)/configure AUTHORS COPYING.LIB ChangeLog INSTALL \ + NEWS TODO compile config.guess config.sub depcomp grammar.c \ + grammar.h install-sh ltmain.sh missing mkinstalldirs scanner.c \ + ylwrap +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = ac_config.h +CONFIG_CLEAN_FILES = libconfig.pc libconfig++.pc libconfig.spec +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" \ + "$(DESTDIR)$(includedir)" +libLTLIBRARIES_INSTALL = $(INSTALL) +LTLIBRARIES = $(lib_LTLIBRARIES) +libconfig___la_LIBADD = +am__objects_1 = libconfig___la-libconfig.lo libconfig___la-scanner.lo \ + libconfig___la-grammar.lo +am__objects_2 = $(am__objects_1) libconfig___la-libconfigcpp.lo +am_libconfig___la_OBJECTS = $(am__objects_2) +libconfig___la_OBJECTS = $(am_libconfig___la_OBJECTS) +libconfig___la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \ + $(CXXFLAGS) $(libconfig___la_LDFLAGS) $(LDFLAGS) -o $@ +@BUILDCXX_TRUE@am_libconfig___la_rpath = -rpath $(libdir) +libconfig_la_LIBADD = +am__objects_3 = libconfig_la-libconfig.lo libconfig_la-scanner.lo \ + libconfig_la-grammar.lo +am_libconfig_la_OBJECTS = $(am__objects_3) +libconfig_la_OBJECTS = $(am_libconfig_la_OBJECTS) +libconfig_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(libconfig_la_LDFLAGS) $(LDFLAGS) -o $@ +DEFAULT_INCLUDES = -I.@am__isrc@ +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +LEXCOMPILE = $(LEX) $(LFLAGS) $(AM_LFLAGS) +LTLEXCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(LEX) $(LFLAGS) $(AM_LFLAGS) +YLWRAP = $(top_srcdir)/ylwrap +YACCCOMPILE = $(YACC) $(YFLAGS) $(AM_YFLAGS) +LTYACCCOMPILE = $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(YACC) $(YFLAGS) $(AM_YFLAGS) +SOURCES = $(libconfig___la_SOURCES) $(libconfig_la_SOURCES) +DIST_SOURCES = $(libconfig___la_SOURCES) $(libconfig_la_SOURCES) +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +pkgconfigDATA_INSTALL = $(INSTALL_DATA) +DATA = $(pkgconfig_DATA) +am__include_HEADERS_DIST = libconfig.h libconfig.h++ +includeHEADERS_INSTALL = $(INSTALL_HEADER) +HEADERS = $(include_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + { test ! -d $(distdir) \ + || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -fr $(distdir); }; } +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LEX = @LEX@ +LEXLIB = @LEXLIB@ +LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +YACC = @YACC@ +YFLAGS = @YFLAGS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +lib_LTLIBRARIES = libconfig.la $(am__append_1) + +# Versioning rules ( C:R:A ) +# +# 1. Start with version 0:0:0. +# 2. If any of the sources have changed, increment R. This is a new revision +# of the current interface. +# 3. If the interface has changed, increment C and set R to 0. This is the +# first revision of a new interface. +# 4. If the new interface is a superset of the previous interface +# (that is, if the previous interface has not been broken by the +# changes in this new release), increment A. This release is backwards +# compatible with the previous release. +# 5. If the new interface has removed elements with respect to the +# previous interface, then backward compatibility is broken; set A to 0. +# This release has a new, but backwards incompatible interface. +# +# For more info see section 6.3 of the GNU Libtool Manual. +VERINFO = -version-info 7:1:1 +PARSER_PREFIX = libconfig_yy +libconfig_la_LDFLAGS = $(VERINFO) -no-undefined +libconfig___la_LDFLAGS = $(VERINFO) -no-undefined +libsrc = libconfig.c scanner.l grammar.y private.h wincompat.h +libinc = libconfig.h +libsrc_cpp = $(libsrc) libconfigcpp.c++ +libinc_cpp = $(libinc) libconfig.h++ +BUILT_SOURCES = scanner.c scanner.h grammar.c grammar.h +libconfig_la_SOURCES = $(libsrc) +libconfig___la_SOURCES = $(libsrc_cpp) +libcppflags = -D_REENTRANT $(am__append_2) +libconfig_la_CPPFLAGS = -DPARSER_PREFIX=\"$(PARSER_PREFIX)\" $(libcppflags) +libconfig___la_CPPFLAGS = -DPARSER_PREFIX=\"$(PARSER_PREFIX)\" $(libcppflags) +include_HEADERS = $(libinc) $(am__append_3) +AM_YFLAGS = -d -p $(PARSER_PREFIX) +AM_LFLAGS = --header-file=scanner.h --prefix=$(PARSER_PREFIX) +EXTRA_DIST = \ + $(BUILT_SOURCES) \ + libconfig++.vcproj \ + libconfig++_stub.vcproj \ + libconfig.vcproj \ + libconfig_stub.vcproj \ + libconfig.sln \ + test.cfg \ + TODO \ + debian/changelog \ + debian/compat \ + debian/control \ + debian/copyright \ + debian/libconfigduo2-dev.docs \ + debian/libconfigduo2-dev.install \ + debian/libconfigduo2.install \ + debian/libconfigduo2.postinst \ + debian/shlibs \ + debian/rules \ + libconfig.spec \ + libconfigcpp.cc libconfig.hh + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = libconfig.pc $(am__append_4) +SUBDIRS = . samples doc +all: $(BUILT_SOURCES) ac_config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +.SUFFIXES: .c .c++ .l .lo .o .obj .y +am--refresh: + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ + cd $(srcdir) && $(AUTOMAKE) --gnu \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) + +ac_config.h: stamp-h1 + @if test ! -f $@; then \ + rm -f stamp-h1; \ + $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ + else :; fi + +stamp-h1: $(srcdir)/ac_config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status ac_config.h +$(srcdir)/ac_config.h.in: $(am__configure_deps) + cd $(top_srcdir) && $(AUTOHEADER) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f ac_config.h stamp-h1 +libconfig.pc: $(top_builddir)/config.status $(srcdir)/libconfig.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +libconfig++.pc: $(top_builddir)/config.status $(srcdir)/libconfig++.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +libconfig.spec: $(top_builddir)/config.status $(srcdir)/libconfig.spec.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + if test -f $$p; then \ + f=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ + else :; fi; \ + done + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + p=$(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ + dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ + test "$$dir" != "$$p" || dir=.; \ + echo "rm -f \"$${dir}/so_locations\""; \ + rm -f "$${dir}/so_locations"; \ + done +grammar.h: grammar.c + @if test ! -f $@; then \ + rm -f grammar.c; \ + $(MAKE) $(AM_MAKEFLAGS) grammar.c; \ + else :; fi +libconfig++.la: $(libconfig___la_OBJECTS) $(libconfig___la_DEPENDENCIES) + $(libconfig___la_LINK) $(am_libconfig___la_rpath) $(libconfig___la_OBJECTS) $(libconfig___la_LIBADD) $(LIBS) +libconfig.la: $(libconfig_la_OBJECTS) $(libconfig_la_DEPENDENCIES) + $(libconfig_la_LINK) -rpath $(libdir) $(libconfig_la_OBJECTS) $(libconfig_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libconfig___la-grammar.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libconfig___la-libconfig.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libconfig___la-libconfigcpp.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libconfig___la-scanner.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libconfig_la-grammar.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libconfig_la-libconfig.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libconfig_la-scanner.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +libconfig___la-libconfig.lo: libconfig.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libconfig___la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libconfig___la-libconfig.lo -MD -MP -MF $(DEPDIR)/libconfig___la-libconfig.Tpo -c -o libconfig___la-libconfig.lo `test -f 'libconfig.c' || echo '$(srcdir)/'`libconfig.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libconfig___la-libconfig.Tpo $(DEPDIR)/libconfig___la-libconfig.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libconfig.c' object='libconfig___la-libconfig.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libconfig___la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libconfig___la-libconfig.lo `test -f 'libconfig.c' || echo '$(srcdir)/'`libconfig.c + +libconfig___la-scanner.lo: scanner.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libconfig___la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libconfig___la-scanner.lo -MD -MP -MF $(DEPDIR)/libconfig___la-scanner.Tpo -c -o libconfig___la-scanner.lo `test -f 'scanner.c' || echo '$(srcdir)/'`scanner.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libconfig___la-scanner.Tpo $(DEPDIR)/libconfig___la-scanner.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='scanner.c' object='libconfig___la-scanner.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libconfig___la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libconfig___la-scanner.lo `test -f 'scanner.c' || echo '$(srcdir)/'`scanner.c + +libconfig___la-grammar.lo: grammar.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libconfig___la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libconfig___la-grammar.lo -MD -MP -MF $(DEPDIR)/libconfig___la-grammar.Tpo -c -o libconfig___la-grammar.lo `test -f 'grammar.c' || echo '$(srcdir)/'`grammar.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libconfig___la-grammar.Tpo $(DEPDIR)/libconfig___la-grammar.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='grammar.c' object='libconfig___la-grammar.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libconfig___la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libconfig___la-grammar.lo `test -f 'grammar.c' || echo '$(srcdir)/'`grammar.c + +libconfig_la-libconfig.lo: libconfig.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libconfig_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libconfig_la-libconfig.lo -MD -MP -MF $(DEPDIR)/libconfig_la-libconfig.Tpo -c -o libconfig_la-libconfig.lo `test -f 'libconfig.c' || echo '$(srcdir)/'`libconfig.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libconfig_la-libconfig.Tpo $(DEPDIR)/libconfig_la-libconfig.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libconfig.c' object='libconfig_la-libconfig.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libconfig_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libconfig_la-libconfig.lo `test -f 'libconfig.c' || echo '$(srcdir)/'`libconfig.c + +libconfig_la-scanner.lo: scanner.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libconfig_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libconfig_la-scanner.lo -MD -MP -MF $(DEPDIR)/libconfig_la-scanner.Tpo -c -o libconfig_la-scanner.lo `test -f 'scanner.c' || echo '$(srcdir)/'`scanner.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libconfig_la-scanner.Tpo $(DEPDIR)/libconfig_la-scanner.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='scanner.c' object='libconfig_la-scanner.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libconfig_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libconfig_la-scanner.lo `test -f 'scanner.c' || echo '$(srcdir)/'`scanner.c + +libconfig_la-grammar.lo: grammar.c +@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libconfig_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libconfig_la-grammar.lo -MD -MP -MF $(DEPDIR)/libconfig_la-grammar.Tpo -c -o libconfig_la-grammar.lo `test -f 'grammar.c' || echo '$(srcdir)/'`grammar.c +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/libconfig_la-grammar.Tpo $(DEPDIR)/libconfig_la-grammar.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='grammar.c' object='libconfig_la-grammar.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libconfig_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libconfig_la-grammar.lo `test -f 'grammar.c' || echo '$(srcdir)/'`grammar.c + +.c++.o: +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.c++.obj: +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.c++.lo: +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< + +libconfig___la-libconfigcpp.lo: libconfigcpp.c++ +@am__fastdepCXX_TRUE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libconfig___la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT libconfig___la-libconfigcpp.lo -MD -MP -MF $(DEPDIR)/libconfig___la-libconfigcpp.Tpo -c -o libconfig___la-libconfigcpp.lo `test -f 'libconfigcpp.c++' || echo '$(srcdir)/'`libconfigcpp.c++ +@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/libconfig___la-libconfigcpp.Tpo $(DEPDIR)/libconfig___la-libconfigcpp.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='libconfigcpp.c++' object='libconfig___la-libconfigcpp.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libconfig___la_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o libconfig___la-libconfigcpp.lo `test -f 'libconfigcpp.c++' || echo '$(srcdir)/'`libconfigcpp.c++ + +.l.c: + $(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ -- $(LEXCOMPILE) + +.y.c: + $(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h $*.h y.output $*.output -- $(YACCCOMPILE) + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool +install-pkgconfigDATA: $(pkgconfig_DATA) + @$(NORMAL_INSTALL) + test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" + @list='$(pkgconfig_DATA)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(pkgconfigDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pkgconfigdir)/$$f'"; \ + $(pkgconfigDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pkgconfigdir)/$$f"; \ + done + +uninstall-pkgconfigDATA: + @$(NORMAL_UNINSTALL) + @list='$(pkgconfig_DATA)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(pkgconfigdir)/$$f'"; \ + rm -f "$(DESTDIR)$(pkgconfigdir)/$$f"; \ + done +install-includeHEADERS: $(include_HEADERS) + @$(NORMAL_INSTALL) + test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)" + @list='$(include_HEADERS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includedir)/$$f'"; \ + $(includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \ + done + +uninstall-includeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(include_HEADERS)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(includedir)/$$f'"; \ + rm -f "$(DESTDIR)$(includedir)/$$f"; \ + done + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) ac_config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) ac_config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) ac_config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) ac_config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + $(am__remove_distdir) + test -d $(distdir) || mkdir $(distdir) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done + -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r $(distdir) +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-lzma: distdir + tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma + $(am__remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + +dist dist-all: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lzma*) \ + unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst + chmod a-w $(distdir) + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && cd $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck + $(am__remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @cd $(distuninstallcheck_dir) \ + && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) check-recursive +all-am: Makefile $(LTLIBRARIES) $(DATA) $(HEADERS) ac_config.h +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." + -rm -f grammar.c + -rm -f grammar.h + -rm -f scanner.c + -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) +clean: clean-recursive + +clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-hdr distclean-libtool distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: install-includeHEADERS install-pkgconfigDATA + +install-dvi: install-dvi-recursive + +install-exec-am: install-libLTLIBRARIES + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES \ + uninstall-pkgconfigDATA + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am am--refresh check check-am clean clean-generic \ + clean-libLTLIBRARIES clean-libtool ctags ctags-recursive dist \ + dist-all dist-bzip2 dist-gzip dist-lzma dist-shar dist-tarZ \ + dist-zip distcheck distclean distclean-compile \ + distclean-generic distclean-hdr distclean-libtool \ + distclean-tags distcleancheck distdir distuninstallcheck dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-includeHEADERS install-info install-info-am \ + install-libLTLIBRARIES install-man install-pdf install-pdf-am \ + install-pkgconfigDATA install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs installdirs-am \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ + uninstall-includeHEADERS uninstall-libLTLIBRARIES \ + uninstall-pkgconfigDATA + + +.PHONY: dist-rpm + +dist-rpm: distcheck + rpmbuild -ta $(distdir).tar.gz + +msvc7: + find . -name '*\.vcproj' | grep -v '7' \ + | while read x; do \ + d=`dirname $$x`; \ + y=`basename $$x .vcproj`-msvc7.vcproj; \ + rm -f $$d/$$y; \ + perl -p -e 's/Version="8.00"/Version="7.10"/g' < $$x > $$d/$$y; \ + done; \ + rm -f libconfig-msvc7.sln libconfig-msvc7.sln.tmp; \ + perl -p -e 's/Version 9.00/Version 8.00/g' < libconfig.sln \ + > libconfig-msvc7.sln.tmp; \ + perl -p -e 's/\.vcproj/-msvc7.vcproj/g' \ + < libconfig-msvc7.sln.tmp > libconfig-msvc7.sln; \ + rm -f libconfig-msvc7.sln.tmp +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/coregrade/src/libconfig-1.3.1/NEWS b/coregrade/src/libconfig-1.3.1/NEWS new file mode 100644 index 0000000..e69de29 diff --git a/coregrade/src/libconfig-1.3.1/README b/coregrade/src/libconfig-1.3.1/README new file mode 100644 index 0000000..1bb45a0 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/README @@ -0,0 +1,44 @@ + +To produce a PDF manual, issue the command "make pdf" after running +`./configure'. + + -*- + +If you do not wish to build the C++ components, use: + +./configure --disable-cxx + + -*- + +The `samples' subdirectory contains some examples of using libconfig +from C and C++. + + -*- + +The config file syntax changed between versions 0.8 and 0.9. In order +to implement all of the feature/enhancement requests in an elegant and +self-consistent way, the configuration grammar had to be changed in a +non-backward-compatible way. In particular, groups are now values, so +the old syntax: + +group +{ + ... +} + +must now be written as: + +group = +{ + ... +}; + +Note that the trailing semicolon, which was previously optional, is +now required. Also note that a colon (':') can be used in place of the +equals sign. + + -*- + +Flex and Bison are not required in order to build this +package. However, if you modify the .l or .y files, you must have Flex +(2.5.31 or better) and Bison (2.1 or better), respectively. diff --git a/coregrade/src/libconfig-1.3.1/TODO b/coregrade/src/libconfig-1.3.1/TODO new file mode 100644 index 0000000..3faa3e3 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/TODO @@ -0,0 +1,16 @@ + +LONGER-TERM STUFF: + +- Add a += operator, so that additional elements can be appended to a list or + array + +- Add support for #include's; a patch was submitted for this previously, but it + is not reentrant (uses static global variables), so can't be used as-is. I + just haven't gotten around to implementing this because it's not a trivial + change, and free time being in limited supply as it is... + +- Add limited support for preserving comments? + +- Add support for unicode strings? A bit problematic, since flex doesn't + support unicode input, AFAICT. But maybe a way to convert between + parsed UTF-8 strings and std::wstring. diff --git a/coregrade/src/libconfig-1.3.1/ac_config.h b/coregrade/src/libconfig-1.3.1/ac_config.h new file mode 100644 index 0000000..11be51a --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/ac_config.h @@ -0,0 +1,81 @@ +/* ac_config.h. Generated from ac_config.h.in by configure. */ +/* ac_config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if you have the header file. */ +#define HAVE_DLFCN_H 1 + +/* Define to 1 if you have the `freelocale' function. */ +#define HAVE_FREELOCALE 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `newlocale' function. */ +#define HAVE_NEWLOCALE 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to 1 if you have the `uselocale' function. */ +#define HAVE_USELOCALE 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_XLOCALE_H 1 + +/* Name of package */ +#define PACKAGE "libconfig" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "" + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Configured target name. */ +#define TARGET "x86_64-unknown-linux-gnu" + +/* Version number of package */ +#define VERSION "1.3.1" + +/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a + `char[]'. */ +#define YYTEXT_POINTER 1 + +/* */ +#define _GNU_SOURCE 1 + +/* Define to empty if `const' does not conform to ANSI C. */ +/* #undef const */ diff --git a/coregrade/src/libconfig-1.3.1/ac_config.h.in b/coregrade/src/libconfig-1.3.1/ac_config.h.in new file mode 100644 index 0000000..89ece14 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/ac_config.h.in @@ -0,0 +1,80 @@ +/* ac_config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define to 1 if you have the `freelocale' function. */ +#undef HAVE_FREELOCALE + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the `newlocale' function. */ +#undef HAVE_NEWLOCALE + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if you have the `uselocale' function. */ +#undef HAVE_USELOCALE + +/* Define to 1 if you have the header file. */ +#undef HAVE_XLOCALE_H + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Configured target name. */ +#undef TARGET + +/* Version number of package */ +#undef VERSION + +/* Define to 1 if `lex' declares `yytext' as a `char *' by default, not a + `char[]'. */ +#undef YYTEXT_POINTER + +/* */ +#undef _GNU_SOURCE + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const diff --git a/coregrade/src/libconfig-1.3.1/aclocal.m4 b/coregrade/src/libconfig-1.3.1/aclocal.m4 new file mode 100644 index 0000000..4528ab2 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/aclocal.m4 @@ -0,0 +1,7537 @@ +# generated automatically by aclocal 1.10.1 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(AC_AUTOCONF_VERSION, [2.62],, +[m4_warning([this file was generated for autoconf 2.62. +You have another version of autoconf. It may work, but is not guaranteed to. +If you have problems, you may need to regenerate the build system entirely. +To do so, use the procedure documented by the package, typically `autoreconf'.])]) + +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- + +# serial 52 AC_PROG_LIBTOOL + + +# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED) +# ----------------------------------------------------------- +# If this macro is not defined by Autoconf, define it here. +m4_ifdef([AC_PROVIDE_IFELSE], + [], + [m4_define([AC_PROVIDE_IFELSE], + [m4_ifdef([AC_PROVIDE_$1], + [$2], [$3])])]) + + +# AC_PROG_LIBTOOL +# --------------- +AC_DEFUN([AC_PROG_LIBTOOL], +[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl +dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX +dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX. + AC_PROVIDE_IFELSE([AC_PROG_CXX], + [AC_LIBTOOL_CXX], + [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX + ])]) +dnl And a similar setup for Fortran 77 support + AC_PROVIDE_IFELSE([AC_PROG_F77], + [AC_LIBTOOL_F77], + [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77 +])]) + +dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly. +dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run +dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both. + AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ], + [AC_LIBTOOL_GCJ], + [ifdef([AC_PROG_GCJ], + [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])]) + ifdef([A][M_PROG_GCJ], + [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])]) + ifdef([LT_AC_PROG_GCJ], + [define([LT_AC_PROG_GCJ], + defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])]) +])])# AC_PROG_LIBTOOL + + +# _AC_PROG_LIBTOOL +# ---------------- +AC_DEFUN([_AC_PROG_LIBTOOL], +[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl +AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl +AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl +AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +# Prevent multiple expansion +define([AC_PROG_LIBTOOL], []) +])# _AC_PROG_LIBTOOL + + +# AC_LIBTOOL_SETUP +# ---------------- +AC_DEFUN([AC_LIBTOOL_SETUP], +[AC_PREREQ(2.50)dnl +AC_REQUIRE([AC_ENABLE_SHARED])dnl +AC_REQUIRE([AC_ENABLE_STATIC])dnl +AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_LD])dnl +AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl +AC_REQUIRE([AC_PROG_NM])dnl + +AC_REQUIRE([AC_PROG_LN_S])dnl +AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl +# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! +AC_REQUIRE([AC_OBJEXT])dnl +AC_REQUIRE([AC_EXEEXT])dnl +dnl +AC_LIBTOOL_SYS_MAX_CMD_LEN +AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +AC_LIBTOOL_OBJDIR + +AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +_LT_AC_PROG_ECHO_BACKSLASH + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e 1s/^X//' +[sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g'] + +# Same as above, but do not quote variable references. +[double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g'] + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" + +AC_CHECK_TOOL(AR, ar, false) +AC_CHECK_TOOL(RANLIB, ranlib, :) +AC_CHECK_TOOL(STRIP, strip, :) + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$SED" && SED=sed +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + AC_PATH_MAGIC + fi + ;; +esac + +_LT_REQUIRED_DARWIN_CHECKS + +AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no) +AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +enable_win32_dll=yes, enable_win32_dll=no) + +AC_ARG_ENABLE([libtool-lock], + [AC_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +AC_ARG_WITH([pic], + [AC_HELP_STRING([--with-pic], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [pic_mode="$withval"], + [pic_mode=default]) +test -z "$pic_mode" && pic_mode=default + +# Use C for the default configuration in the libtool script +tagname= +AC_LIBTOOL_LANG_C_CONFIG +_LT_AC_TAGCONFIG +])# AC_LIBTOOL_SETUP + + +# _LT_AC_SYS_COMPILER +# ------------------- +AC_DEFUN([_LT_AC_SYS_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_AC_SYS_COMPILER + + +# _LT_CC_BASENAME(CC) +# ------------------- +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +AC_DEFUN([_LT_CC_BASENAME], +[for cc_temp in $1""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` +]) + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +AC_DEFUN([_LT_COMPILER_BOILERPLATE], +[AC_REQUIRE([LT_AC_PROG_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +AC_DEFUN([_LT_LINKER_BOILERPLATE], +[AC_REQUIRE([LT_AC_PROG_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm -r conftest* +])# _LT_LINKER_BOILERPLATE + +# _LT_REQUIRED_DARWIN_CHECKS +# -------------------------- +# Check for some things on darwin +AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS],[ + case $host_os in + rhapsody* | darwin*) + AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) + AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) + + AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], + [lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + echo "int foo(void){return 1;}" > conftest.c + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib ${wl}-single_module conftest.c + if test -f libconftest.dylib; then + lt_cv_apple_cc_single_mod=yes + rm -rf libconftest.dylib* + fi + rm conftest.c + fi]) + AC_CACHE_CHECK([for -exported_symbols_list linker flag], + [lt_cv_ld_exported_symbols_list], + [lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [lt_cv_ld_exported_symbols_list=yes], + [lt_cv_ld_exported_symbols_list=no]) + LDFLAGS="$save_LDFLAGS" + ]) + case $host_os in + rhapsody* | darwin1.[[0123]]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[[012]]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms="~$NMEDIT -s \$output_objdir/\${libname}-symbols.expsym \${lib}" + fi + if test "$DSYMUTIL" != ":"; then + _lt_dsymutil="~$DSYMUTIL \$lib || :" + else + _lt_dsymutil= + fi + ;; + esac +]) + +# _LT_AC_SYS_LIBPATH_AIX +# ---------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX], +[AC_REQUIRE([LT_AC_PROG_SED])dnl +AC_LINK_IFELSE(AC_LANG_PROGRAM,[ +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi],[]) +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi +])# _LT_AC_SYS_LIBPATH_AIX + + +# _LT_AC_SHELL_INIT(ARG) +# ---------------------- +AC_DEFUN([_LT_AC_SHELL_INIT], +[ifdef([AC_DIVERSION_NOTICE], + [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], + [AC_DIVERT_PUSH(NOTICE)]) +$1 +AC_DIVERT_POP +])# _LT_AC_SHELL_INIT + + +# _LT_AC_PROG_ECHO_BACKSLASH +# -------------------------- +# Add some code to the start of the generated configure script which +# will find an echo command which doesn't interpret backslashes. +AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH], +[_LT_AC_SHELL_INIT([ +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` + ;; +esac + +echo=${ECHO-echo} +if test "X[$]1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X[$]1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} +fi + +if test "X[$]1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null 2>&1 && unset CDPATH + +if test -z "$ECHO"; then +if test "X${echo_test_string+set}" != Xset; then +# find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if (echo_test_string=`eval $cmd`) 2>/dev/null && + echo_test_string=`eval $cmd` && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL [$]0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL [$]0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "[$]0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" +fi + +AC_SUBST(ECHO) +])])# _LT_AC_PROG_ECHO_BACKSLASH + + +# _LT_AC_LOCK +# ----------- +AC_DEFUN([_LT_AC_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AC_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line __oline__ "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +s390*-*linux*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_TRY_LINK([],[],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL], +[*-*-cygwin* | *-*-mingw* | *-*-pw32*) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; + ]) +esac + +need_locks="$enable_libtool_lock" + +])# _LT_AC_LOCK + + +# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], +[AC_REQUIRE([LT_AC_PROG_SED]) +AC_CACHE_CHECK([$1], [$2], + [$2=no + ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $rm conftest* +]) + +if test x"[$]$2" = xyes; then + ifelse([$5], , :, [$5]) +else + ifelse([$6], , :, [$6]) +fi +])# AC_LIBTOOL_COMPILER_OPTION + + +# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ------------------------------------------------------------ +# Check whether the given compiler option works +AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], +[AC_REQUIRE([LT_AC_PROG_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $rm -r conftest* + LDFLAGS="$save_LDFLAGS" +]) + +if test x"[$]$2" = xyes; then + ifelse([$4], , :, [$4]) +else + ifelse([$5], , :, [$5]) +fi +])# AC_LIBTOOL_LINKER_OPTION + + +# AC_LIBTOOL_SYS_MAX_CMD_LEN +# -------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], +[# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \ + = "XX$teststring") >/dev/null 2>&1 && + new_result=`expr "X$teststring" : ".*" 2>&1` && + lt_cv_sys_max_cmd_len=$new_result && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + teststring= + # Add a significant safety factor because C++ compilers can tack on massive + # amounts of additional arguments before passing them to the linker. + # It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac +]) +if test -n $lt_cv_sys_max_cmd_len ; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +])# AC_LIBTOOL_SYS_MAX_CMD_LEN + + +# _LT_AC_CHECK_DLFCN +# ------------------ +AC_DEFUN([_LT_AC_CHECK_DLFCN], +[AC_CHECK_HEADERS(dlfcn.h)dnl +])# _LT_AC_CHECK_DLFCN + + +# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# --------------------------------------------------------------------- +AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF], +[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +if test "$cross_compiling" = yes; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + exit (status); +}] +EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_AC_TRY_DLOPEN_SELF + + +# AC_LIBTOOL_DLOPEN_SELF +# ---------------------- +AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], +[AC_REQUIRE([_LT_AC_CHECK_DLFCN])dnl +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_AC_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +])# AC_LIBTOOL_DLOPEN_SELF + + +# AC_LIBTOOL_PROG_CC_C_O([TAGNAME]) +# --------------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler +AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O], +[AC_REQUIRE([LT_AC_PROG_SED])dnl +AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:__oline__: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* +]) +])# AC_LIBTOOL_PROG_CC_C_O + + +# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME]) +# ----------------------------------------- +# Check to see if we can do hard links to lock some files if needed +AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], +[AC_REQUIRE([_LT_AC_LOCK])dnl + +hard_links="nottested" +if test "$_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS + + +# AC_LIBTOOL_OBJDIR +# ----------------- +AC_DEFUN([AC_LIBTOOL_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +])# AC_LIBTOOL_OBJDIR + + +# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME]) +# ---------------------------------------------- +# Check hardcoding attributes. +AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_AC_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \ + test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \ + test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$_LT_AC_TAGVAR(hardcode_direct, $1)" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no && + test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then + # Linking always hardcodes the temporary library directory. + _LT_AC_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_AC_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_AC_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)]) + +if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi +])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH + + +# AC_LIBTOOL_SYS_LIB_STRIP +# ------------------------ +AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP], +[striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) +fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +])# AC_LIBTOOL_SYS_LIB_STRIP + + +# AC_LIBTOOL_SYS_DYNAMIC_LINKER +# ----------------------------- +# PORTME Fill in your ld.so characteristics +AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER], +[AC_REQUIRE([LT_AC_PROG_SED])dnl +AC_MSG_CHECKING([dynamic linker characteristics]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +m4_if($1,[],[ +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$lt_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e 's/;/ /g'` + else + lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`echo $lt_tmp_lt_search_path_spec | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[[lt_foo]]++; } + if (lt_freq[[lt_foo]] == 1) { print lt_foo; } +}'` + sys_lib_search_path_spec=`echo $lt_search_path_spec` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi]) +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[[4-9]]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[123]]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix[[3-9]]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no + +AC_CACHE_VAL([lt_cv_sys_lib_search_path_spec], +[lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec"]) +sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +AC_CACHE_VAL([lt_cv_sys_lib_dlsearch_path_spec], +[lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec"]) +sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi +])# AC_LIBTOOL_SYS_DYNAMIC_LINKER + + +# _LT_AC_TAGCONFIG +# ---------------- +AC_DEFUN([_LT_AC_TAGCONFIG], +[AC_REQUIRE([LT_AC_PROG_SED])dnl +AC_ARG_WITH([tags], + [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@], + [include additional configurations @<:@automatic@:>@])], + [tagnames="$withval"]) + +if test -f "$ltmain" && test -n "$tagnames"; then + if test ! -f "${ofile}"; then + AC_MSG_WARN([output file `$ofile' does not exist]) + fi + + if test -z "$LTCC"; then + eval "`$SHELL ${ofile} --config | grep '^LTCC='`" + if test -z "$LTCC"; then + AC_MSG_WARN([output file `$ofile' does not look like a libtool script]) + else + AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile']) + fi + fi + if test -z "$LTCFLAGS"; then + eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" + fi + + # Extract list of available tagged configurations in $ofile. + # Note that this assumes the entire list is on one line. + available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` + + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for tagname in $tagnames; do + IFS="$lt_save_ifs" + # Check whether tagname contains only valid characters + case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in + "") ;; + *) AC_MSG_ERROR([invalid tag name: $tagname]) + ;; + esac + + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null + then + AC_MSG_ERROR([tag name \"$tagname\" already exists]) + fi + + # Update the list of available tags. + if test -n "$tagname"; then + echo appending configuration tag \"$tagname\" to $ofile + + case $tagname in + CXX) + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_LIBTOOL_LANG_CXX_CONFIG + else + tagname="" + fi + ;; + + F77) + if test -n "$F77" && test "X$F77" != "Xno"; then + AC_LIBTOOL_LANG_F77_CONFIG + else + tagname="" + fi + ;; + + GCJ) + if test -n "$GCJ" && test "X$GCJ" != "Xno"; then + AC_LIBTOOL_LANG_GCJ_CONFIG + else + tagname="" + fi + ;; + + RC) + AC_LIBTOOL_LANG_RC_CONFIG + ;; + + *) + AC_MSG_ERROR([Unsupported tag name: $tagname]) + ;; + esac + + # Append the new tag name to the list of available tags. + if test -n "$tagname" ; then + available_tags="$available_tags $tagname" + fi + fi + done + IFS="$lt_save_ifs" + + # Now substitute the updated list of available tags. + if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then + mv "${ofile}T" "$ofile" + chmod +x "$ofile" + else + rm -f "${ofile}T" + AC_MSG_ERROR([unable to update list of available tagged configurations.]) + fi +fi +])# _LT_AC_TAGCONFIG + + +# AC_LIBTOOL_DLOPEN +# ----------------- +# enable checks for dlopen support +AC_DEFUN([AC_LIBTOOL_DLOPEN], + [AC_BEFORE([$0],[AC_LIBTOOL_SETUP]) +])# AC_LIBTOOL_DLOPEN + + +# AC_LIBTOOL_WIN32_DLL +# -------------------- +# declare package support for building win32 DLLs +AC_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_BEFORE([$0], [AC_LIBTOOL_SETUP]) +])# AC_LIBTOOL_WIN32_DLL + + +# AC_ENABLE_SHARED([DEFAULT]) +# --------------------------- +# implement the --enable-shared flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_SHARED], +[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([shared], + [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]AC_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_shared=]AC_ENABLE_SHARED_DEFAULT) +])# AC_ENABLE_SHARED + + +# AC_DISABLE_SHARED +# ----------------- +# set the default shared flag to --disable-shared +AC_DEFUN([AC_DISABLE_SHARED], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_SHARED(no) +])# AC_DISABLE_SHARED + + +# AC_ENABLE_STATIC([DEFAULT]) +# --------------------------- +# implement the --enable-static flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_STATIC], +[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([static], + [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]AC_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_static=]AC_ENABLE_STATIC_DEFAULT) +])# AC_ENABLE_STATIC + + +# AC_DISABLE_STATIC +# ----------------- +# set the default static flag to --disable-static +AC_DEFUN([AC_DISABLE_STATIC], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_STATIC(no) +])# AC_DISABLE_STATIC + + +# AC_ENABLE_FAST_INSTALL([DEFAULT]) +# --------------------------------- +# implement the --enable-fast-install flag +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +AC_DEFUN([AC_ENABLE_FAST_INSTALL], +[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl +AC_ARG_ENABLE([fast-install], + [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]AC_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_fast_install=]AC_ENABLE_FAST_INSTALL_DEFAULT) +])# AC_ENABLE_FAST_INSTALL + + +# AC_DISABLE_FAST_INSTALL +# ----------------------- +# set the default to --disable-fast-install +AC_DEFUN([AC_DISABLE_FAST_INSTALL], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +AC_ENABLE_FAST_INSTALL(no) +])# AC_DISABLE_FAST_INSTALL + + +# AC_LIBTOOL_PICMODE([MODE]) +# -------------------------- +# implement the --with-pic flag +# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +AC_DEFUN([AC_LIBTOOL_PICMODE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl +pic_mode=ifelse($#,1,$1,default) +])# AC_LIBTOOL_PICMODE + + +# AC_PROG_EGREP +# ------------- +# This is predefined starting with Autoconf 2.54, so this conditional +# definition can be removed once we require Autoconf 2.54 or later. +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP], +[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], + [if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi]) + EGREP=$ac_cv_prog_egrep + AC_SUBST([EGREP]) +])]) + + +# AC_PATH_TOOL_PREFIX +# ------------------- +# find a file program which can recognize shared library +AC_DEFUN([AC_PATH_TOOL_PREFIX], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="ifelse([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +])# AC_PATH_TOOL_PREFIX + + +# AC_PATH_MAGIC +# ------------- +# find a file program which can recognize a shared library +AC_DEFUN([AC_PATH_MAGIC], +[AC_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# AC_PATH_MAGIC + + +# AC_PROG_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([AC_PROG_LD], +[AC_ARG_WITH([gnu-ld], + [AC_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test "$withval" = no || with_gnu_ld=yes], + [with_gnu_ld=no]) +AC_REQUIRE([LT_AC_PROG_SED])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]].[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[[3-9]]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +nto-qnx*) + lt_cv_deplibs_check_method=unknown + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown +])# AC_DEPLIBS_CHECK_METHOD + + +# AC_PROG_NM +# ---------- +# find the pathname to a BSD-compatible name lister +AC_DEFUN([AC_PROG_NM], +[AC_CACHE_CHECK([for BSD-compatible nm], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi]) +NM="$lt_cv_path_NM" +])# AC_PROG_NM + + +# AC_CHECK_LIBM +# ------------- +# check for math library +AC_DEFUN([AC_CHECK_LIBM], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cygwin* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM="-lm") + ;; +esac +])# AC_CHECK_LIBM + + +# AC_LIBLTDL_CONVENIENCE([DIRECTORY]) +# ----------------------------------- +# sets LIBLTDL to the link flags for the libltdl convenience library and +# LTDLINCL to the include flags for the libltdl header and adds +# --enable-ltdl-convenience to the configure arguments. Note that +# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, +# it is assumed to be `libltdl'. LIBLTDL will be prefixed with +# '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/' +# (note the single quotes!). If your package is not flat and you're not +# using automake, define top_builddir and top_srcdir appropriately in +# the Makefiles. +AC_DEFUN([AC_LIBLTDL_CONVENIENCE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + case $enable_ltdl_convenience in + no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;; + "") enable_ltdl_convenience=yes + ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;; + esac + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +])# AC_LIBLTDL_CONVENIENCE + + +# AC_LIBLTDL_INSTALLABLE([DIRECTORY]) +# ----------------------------------- +# sets LIBLTDL to the link flags for the libltdl installable library and +# LTDLINCL to the include flags for the libltdl header and adds +# --enable-ltdl-install to the configure arguments. Note that +# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided, +# and an installed libltdl is not found, it is assumed to be `libltdl'. +# LIBLTDL will be prefixed with '${top_builddir}/'# and LTDLINCL with +# '${top_srcdir}/' (note the single quotes!). If your package is not +# flat and you're not using automake, define top_builddir and top_srcdir +# appropriately in the Makefiles. +# In the future, this macro may have to be called after AC_PROG_LIBTOOL. +AC_DEFUN([AC_LIBLTDL_INSTALLABLE], +[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl + AC_CHECK_LIB(ltdl, lt_dlinit, + [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no], + [if test x"$enable_ltdl_install" = xno; then + AC_MSG_WARN([libltdl not installed, but installation disabled]) + else + enable_ltdl_install=yes + fi + ]) + if test x"$enable_ltdl_install" = x"yes"; then + ac_configure_args="$ac_configure_args --enable-ltdl-install" + LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la + LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl']) + else + ac_configure_args="$ac_configure_args --enable-ltdl-install=no" + LIBLTDL="-lltdl" + LTDLINCL= + fi + # For backwards non-gettext consistent compatibility... + INCLTDL="$LTDLINCL" +])# AC_LIBLTDL_INSTALLABLE + + +# AC_LIBTOOL_CXX +# -------------- +# enable support for C++ libraries +AC_DEFUN([AC_LIBTOOL_CXX], +[AC_REQUIRE([_LT_AC_LANG_CXX]) +])# AC_LIBTOOL_CXX + + +# _LT_AC_LANG_CXX +# --------------- +AC_DEFUN([_LT_AC_LANG_CXX], +[AC_REQUIRE([AC_PROG_CXX]) +AC_REQUIRE([_LT_AC_PROG_CXXCPP]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX]) +])# _LT_AC_LANG_CXX + +# _LT_AC_PROG_CXXCPP +# ------------------ +AC_DEFUN([_LT_AC_PROG_CXXCPP], +[ +AC_REQUIRE([AC_PROG_CXX]) +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_PROG_CXXCPP +fi +])# _LT_AC_PROG_CXXCPP + +# AC_LIBTOOL_F77 +# -------------- +# enable support for Fortran 77 libraries +AC_DEFUN([AC_LIBTOOL_F77], +[AC_REQUIRE([_LT_AC_LANG_F77]) +])# AC_LIBTOOL_F77 + + +# _LT_AC_LANG_F77 +# --------------- +AC_DEFUN([_LT_AC_LANG_F77], +[AC_REQUIRE([AC_PROG_F77]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77]) +])# _LT_AC_LANG_F77 + + +# AC_LIBTOOL_GCJ +# -------------- +# enable support for GCJ libraries +AC_DEFUN([AC_LIBTOOL_GCJ], +[AC_REQUIRE([_LT_AC_LANG_GCJ]) +])# AC_LIBTOOL_GCJ + + +# _LT_AC_LANG_GCJ +# --------------- +AC_DEFUN([_LT_AC_LANG_GCJ], +[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[], + [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[], + [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])], + [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])], + [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ]) +])# _LT_AC_LANG_GCJ + + +# AC_LIBTOOL_RC +# ------------- +# enable support for Windows resource files +AC_DEFUN([AC_LIBTOOL_RC], +[AC_REQUIRE([LT_AC_PROG_RC]) +_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC]) +])# AC_LIBTOOL_RC + + +# AC_LIBTOOL_LANG_C_CONFIG +# ------------------------ +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG]) +AC_DEFUN([_LT_AC_LANG_C_CONFIG], +[lt_save_CC="$CC" +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) +AC_LIBTOOL_SYS_LIB_STRIP +AC_LIBTOOL_DLOPEN_SELF + +# Report which library types will actually be built +AC_MSG_CHECKING([if libtool supports shared libraries]) +AC_MSG_RESULT([$can_build_shared]) + +AC_MSG_CHECKING([whether to build shared libraries]) +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case $host_os in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +AC_MSG_RESULT([$enable_shared]) + +AC_MSG_CHECKING([whether to build static libraries]) +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +AC_MSG_RESULT([$enable_static]) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC="$lt_save_CC" +])# AC_LIBTOOL_LANG_C_CONFIG + + +# AC_LIBTOOL_LANG_CXX_CONFIG +# -------------------------- +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)]) +AC_DEFUN([_LT_AC_LANG_CXX_CONFIG], +[AC_LANG_PUSH(C++) +AC_REQUIRE([AC_PROG_CXX]) +AC_REQUIRE([_LT_AC_PROG_CXXCPP]) + +_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_AC_TAGVAR(allow_undefined_flag, $1)= +_LT_AC_TAGVAR(always_export_symbols, $1)=no +_LT_AC_TAGVAR(archive_expsym_cmds, $1)= +_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_direct, $1)=no +_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= +_LT_AC_TAGVAR(hardcode_minus_L, $1)=no +_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_AC_TAGVAR(hardcode_automatic, $1)=no +_LT_AC_TAGVAR(module_cmds, $1)= +_LT_AC_TAGVAR(module_expsym_cmds, $1)= +_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown +_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_AC_TAGVAR(no_undefined_flag, $1)= +_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= +_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Dependencies to place before and after the object being linked: +_LT_AC_TAGVAR(predep_objects, $1)= +_LT_AC_TAGVAR(postdep_objects, $1)= +_LT_AC_TAGVAR(predeps, $1)= +_LT_AC_TAGVAR(postdeps, $1)= +_LT_AC_TAGVAR(compiler_lib_search_path, $1)= +_LT_AC_TAGVAR(compiler_lib_search_dirs, $1)= + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_LD=$LD +lt_save_GCC=$GCC +GCC=$GXX +lt_save_with_gnu_ld=$with_gnu_ld +lt_save_path_LD=$lt_cv_path_LD +if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx +else + $as_unset lt_cv_prog_gnu_ld +fi +if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX +else + $as_unset lt_cv_path_LD +fi +test -z "${LDCXX+set}" || LD=$LDCXX +CC=${CXX-"c++"} +compiler=$CC +_LT_AC_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) + +# We don't want -fno-exception wen compiling C++ code, so set the +# no_builtin_flag separately +if test "$GXX" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' +else + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= +fi + +if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + AC_PROG_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ + grep 'no-whole-archive' > /dev/null; then + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +else + GXX=no + with_gnu_ld=no + wlarc= +fi + +# PORTME: fill in a description of your system's C++ link characteristics +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +_LT_AC_TAGVAR(ld_shlibs, $1)=yes +case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_AC_TAGVAR(archive_cmds, $1)='' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GXX" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared libraries. + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + darwin* | rhapsody*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_automatic, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + _LT_AC_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" + if test "$GXX" = yes ; then + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + _LT_AC_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + _LT_AC_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + if test "$lt_cv_apple_cc_single_mod" != "yes"; then + _LT_AC_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" + fi + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + freebsd[[12]]*) + # C++ shared libraries reported to be fairly broken before switch to ELF + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + freebsd-elf*) + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + ;; + gnu*) + ;; + hpux9*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) ;; + *) + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + interix[[3-9]]*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' + fi + fi + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc*) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + lynxos*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + m88k*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + openbsd2*) + # C++ shared libraries are fairly broken + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd='echo' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + osf3*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_AC_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ + $rm $lib.exp' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + psos*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + ;; + esac + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' + if $CC --version | grep -v '^2\.7' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + fi + + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + # So that behaviour is only enabled if SCOABSPATH is set to a + # non-empty value in the environment. Most likely only useful for + # creating official distributions of packages. + # This is a hack until libtool officially supports absolute path + # names for shared libraries. + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + vxworks*) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; +esac +AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) +test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +_LT_AC_TAGVAR(GCC, $1)="$GXX" +_LT_AC_TAGVAR(LD, $1)="$LD" + +AC_LIBTOOL_POSTDEP_PREDEP($1) +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC=$lt_save_CC +LDCXX=$LD +LD=$lt_save_LD +GCC=$lt_save_GCC +with_gnu_ldcxx=$with_gnu_ld +with_gnu_ld=$lt_save_with_gnu_ld +lt_cv_path_LDCXX=$lt_cv_path_LD +lt_cv_path_LD=$lt_save_path_LD +lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld +lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +])# AC_LIBTOOL_LANG_CXX_CONFIG + +# AC_LIBTOOL_POSTDEP_PREDEP([TAGNAME]) +# ------------------------------------ +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP], +[AC_REQUIRE([LT_AC_PROG_SED])dnl +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +ifelse([$1],[],[cat > conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext < conftest.$ac_ext <&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + # + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + if test "$solaris_use_stlport4" != yes; then + _LT_AC_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; + +solaris*) + case $cc_basename in + CC*) + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + if test "$solaris_use_stlport4" != yes; then + _LT_AC_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; +esac +]) +case " $_LT_AC_TAGVAR(postdeps, $1) " in +*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;; +esac +])# AC_LIBTOOL_POSTDEP_PREDEP + +# AC_LIBTOOL_LANG_F77_CONFIG +# -------------------------- +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)]) +AC_DEFUN([_LT_AC_LANG_F77_CONFIG], +[AC_REQUIRE([AC_PROG_F77]) +AC_LANG_PUSH(Fortran 77) + +_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_AC_TAGVAR(allow_undefined_flag, $1)= +_LT_AC_TAGVAR(always_export_symbols, $1)=no +_LT_AC_TAGVAR(archive_expsym_cmds, $1)= +_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_direct, $1)=no +_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_AC_TAGVAR(hardcode_libdir_separator, $1)= +_LT_AC_TAGVAR(hardcode_minus_L, $1)=no +_LT_AC_TAGVAR(hardcode_automatic, $1)=no +_LT_AC_TAGVAR(module_cmds, $1)= +_LT_AC_TAGVAR(module_expsym_cmds, $1)= +_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown +_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_AC_TAGVAR(no_undefined_flag, $1)= +_LT_AC_TAGVAR(whole_archive_flag_spec, $1)= +_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="\ + subroutine t + return + end +" + +# Code to be used in simple link tests +lt_simple_link_test_code="\ + program t + end +" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${F77-"f77"} +compiler=$CC +_LT_AC_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) + +AC_MSG_CHECKING([if libtool supports shared libraries]) +AC_MSG_RESULT([$can_build_shared]) + +AC_MSG_CHECKING([whether to build shared libraries]) +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case $host_os in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; +aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +AC_MSG_RESULT([$enable_shared]) + +AC_MSG_CHECKING([whether to build static libraries]) +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +AC_MSG_RESULT([$enable_static]) + +_LT_AC_TAGVAR(GCC, $1)="$G77" +_LT_AC_TAGVAR(LD, $1)="$LD" + +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_POP +CC="$lt_save_CC" +])# AC_LIBTOOL_LANG_F77_CONFIG + + +# AC_LIBTOOL_LANG_GCJ_CONFIG +# -------------------------- +# Ensure that the configuration vars for the C compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)]) +AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG], +[AC_LANG_SAVE + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${GCJ-"gcj"} +compiler=$CC +_LT_AC_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds + +AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1) +AC_LIBTOOL_PROG_COMPILER_PIC($1) +AC_LIBTOOL_PROG_CC_C_O($1) +AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1) +AC_LIBTOOL_PROG_LD_SHLIBS($1) +AC_LIBTOOL_SYS_DYNAMIC_LINKER($1) +AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1) + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_RESTORE +CC="$lt_save_CC" +])# AC_LIBTOOL_LANG_GCJ_CONFIG + + +# AC_LIBTOOL_LANG_RC_CONFIG +# ------------------------- +# Ensure that the configuration vars for the Windows resource compiler are +# suitably defined. Those variables are subsequently used by +# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'. +AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)]) +AC_DEFUN([_LT_AC_LANG_RC_CONFIG], +[AC_LANG_SAVE + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +_LT_AC_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_AC_SYS_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${RC-"windres"} +compiler=$CC +_LT_AC_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) +_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + +AC_LIBTOOL_CONFIG($1) + +AC_LANG_RESTORE +CC="$lt_save_CC" +])# AC_LIBTOOL_LANG_RC_CONFIG + + +# AC_LIBTOOL_CONFIG([TAGNAME]) +# ---------------------------- +# If TAGNAME is not passed, then create an initial libtool script +# with a default configuration from the untagged config vars. Otherwise +# add code to config.status for appending the configuration named by +# TAGNAME from the matching tagged config vars. +AC_DEFUN([AC_LIBTOOL_CONFIG], +[# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + _LT_AC_TAGVAR(compiler, $1) \ + _LT_AC_TAGVAR(CC, $1) \ + _LT_AC_TAGVAR(LD, $1) \ + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \ + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \ + _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \ + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \ + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \ + _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \ + _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \ + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \ + _LT_AC_TAGVAR(old_archive_cmds, $1) \ + _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \ + _LT_AC_TAGVAR(predep_objects, $1) \ + _LT_AC_TAGVAR(postdep_objects, $1) \ + _LT_AC_TAGVAR(predeps, $1) \ + _LT_AC_TAGVAR(postdeps, $1) \ + _LT_AC_TAGVAR(compiler_lib_search_path, $1) \ + _LT_AC_TAGVAR(compiler_lib_search_dirs, $1) \ + _LT_AC_TAGVAR(archive_cmds, $1) \ + _LT_AC_TAGVAR(archive_expsym_cmds, $1) \ + _LT_AC_TAGVAR(postinstall_cmds, $1) \ + _LT_AC_TAGVAR(postuninstall_cmds, $1) \ + _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \ + _LT_AC_TAGVAR(allow_undefined_flag, $1) \ + _LT_AC_TAGVAR(no_undefined_flag, $1) \ + _LT_AC_TAGVAR(export_symbols_cmds, $1) \ + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) \ + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) \ + _LT_AC_TAGVAR(hardcode_libdir_separator, $1) \ + _LT_AC_TAGVAR(hardcode_automatic, $1) \ + _LT_AC_TAGVAR(module_cmds, $1) \ + _LT_AC_TAGVAR(module_expsym_cmds, $1) \ + _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \ + _LT_AC_TAGVAR(fix_srcfile_path, $1) \ + _LT_AC_TAGVAR(exclude_expsyms, $1) \ + _LT_AC_TAGVAR(include_expsyms, $1); do + + case $var in + _LT_AC_TAGVAR(old_archive_cmds, $1) | \ + _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \ + _LT_AC_TAGVAR(archive_cmds, $1) | \ + _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \ + _LT_AC_TAGVAR(module_cmds, $1) | \ + _LT_AC_TAGVAR(module_expsym_cmds, $1) | \ + _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \ + _LT_AC_TAGVAR(export_symbols_cmds, $1) | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\[$]0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\[$]0 --fallback-echo"[$]/[$]0 --fallback-echo"/'` + ;; + esac + +ifelse([$1], [], + [cfgfile="${ofile}T" + trap "$rm \"$cfgfile\"; exit 1" 1 2 15 + $rm -f "$cfgfile" + AC_MSG_NOTICE([creating $ofile])], + [cfgfile="$ofile"]) + + cat <<__EOF__ >> "$cfgfile" +ifelse([$1], [], +[#! $SHELL + +# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 +# Free Software Foundation, Inc. +# +# This file is part of GNU Libtool: +# Originally by Gordon Matzigkeit , 1996 +# +# 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 +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="$SED -e 1s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# The names of the tagged configurations supported by this script. +available_tags= + +# ### BEGIN LIBTOOL CONFIG], +[# ### BEGIN LIBTOOL TAG CONFIG: $tagname]) + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1) + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_[]_LT_AC_TAGVAR(compiler, $1) + +# Is the compiler the GNU C compiler? +with_gcc=$_LT_AC_TAGVAR(GCC, $1) + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_[]_LT_AC_TAGVAR(LD, $1) + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1) + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1) + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1) + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1) + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1) +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1) + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) + +# Commands used to build and install a shared archive. +archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1) +archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1) +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1) +module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1) + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1) + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1) + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1) + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1) + +# The directories searched by this compiler when creating a shared +# library +compiler_lib_search_dirs=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_dirs, $1) + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1) + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1) + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1) + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1) + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1) + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1) + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1) + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$_LT_AC_TAGVAR(hardcode_automatic, $1) + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1) + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path=$lt_fix_srcfile_path + +# Set to yes if exported symbols are required. +always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1) + +# The commands to list exported symbols. +export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1) + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1) + +# Symbols that must always be exported. +include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1) + +ifelse([$1],[], +[# ### END LIBTOOL CONFIG], +[# ### END LIBTOOL TAG CONFIG: $tagname]) + +__EOF__ + +ifelse([$1],[], [ + case $host_os in + aix3*) + cat <<\EOF >> "$cfgfile" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || \ + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +]) +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi +])# AC_LIBTOOL_CONFIG + + +# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------------------- +AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], +[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl + +_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test "$GCC" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + + AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI + + +# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE +# --------------------------------- +AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], +[AC_REQUIRE([AC_CANONICAL_HOST]) +AC_REQUIRE([LT_AC_PROG_SED]) +AC_REQUIRE([AC_PROG_NM]) +AC_REQUIRE([AC_OBJEXT]) +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) # Its linker distinguishes data from code symbols + if test "$host_cpu" = ia64; then + symcode='[[ABCDEGRST]]' + fi + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +linux* | k*bsd*-gnu) + if test "$host_cpu" = ia64; then + symcode='[[ABCDGIRSTW]]' + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext < $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if grep ' nm_test_var$' "$nlist" >/dev/null; then + if grep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' + + cat <> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[[]] = +{ +EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi +]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE + + +# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME]) +# --------------------------------------- +AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC], +[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_AC_TAGVAR(lt_prog_compiler_static, $1)= + +AC_MSG_CHECKING([for $compiler option to produce PIC]) + ifelse([$1],[CXX],[ + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix[[4-9]]*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_AC_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + icpc* | ecpc*) + # Intel C++ + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler. + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test "$GCC" = yes; then + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + hpux9* | hpux10* | hpux11*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + newsos6) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + icc* | ecc*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C 5.9 + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + *Sun\ F*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='' + ;; + esac + ;; + esac + ;; + + osf3* | osf4* | osf5*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + rdos*) + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + solaris*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)]) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then + AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works], + _LT_AC_TAGVAR(lt_cv_prog_compiler_pic_works, $1), + [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\" +AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_AC_TAGVAR(lt_cv_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=]) +]) + + +# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME]) +# ------------------------------------ +# See if the linker supports building shared libraries. +AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS], +[AC_REQUIRE([LT_AC_PROG_SED])dnl +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +ifelse([$1],[CXX],[ + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix[[4-9]]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + else + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" + ;; + cygwin* | mingw*) + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + ;; + *) + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + _LT_AC_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] +],[ + runpath_var= + _LT_AC_TAGVAR(allow_undefined_flag, $1)= + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_AC_TAGVAR(archive_cmds, $1)= + _LT_AC_TAGVAR(archive_expsym_cmds, $1)= + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)= + _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + _LT_AC_TAGVAR(thread_safe_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_minus_L, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown + _LT_AC_TAGVAR(hardcode_automatic, $1)=no + _LT_AC_TAGVAR(module_cmds, $1)= + _LT_AC_TAGVAR(module_expsym_cmds, $1)= + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_AC_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + _LT_AC_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. +dnl Note also adjust exclude_expsyms for C++ above. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + _LT_CC_BASENAME([$compiler]) + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[[3-9]]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=no + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/'\'' -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + interix[[3-9]]*) + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | k*bsd*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + *) + tmp_sharedflag='-shared' ;; + esac + _LT_AC_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then + runpath_var= + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + else + _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_AC_TAGVAR(archive_cmds, $1)='' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_AC_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_AC_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + _LT_AC_SYS_LIBPATH_AIX + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared libraries. + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + # see comment about different semantics on the GNU ld section + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + bsdi[[45]]*) + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_AC_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' + _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' + _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[[012]]) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_automatic, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + _LT_AC_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + _LT_AC_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + _LT_AC_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' + _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi + ;; + + dgux*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + freebsd1*) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + else + case $host_os in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + ;; + *) + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + ;; + esac + fi + else + _LT_AC_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + os2*) + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_AC_TAGVAR(archive_cmds, $1)='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + else + _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + solaris*) + _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + fi + ;; + esac + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes + _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_AC_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_AC_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_AC_TAGVAR(link_all_deplibs, $1)=yes + _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_AC_TAGVAR(ld_shlibs, $1)=no + ;; + esac + fi +]) +AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)]) +test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $_LT_AC_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_MSG_CHECKING([whether -lc should be explicitly linked in]) + $rm conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1) + _LT_AC_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) + then + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no + else + _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)]) + ;; + esac + fi + ;; +esac +])# AC_LIBTOOL_PROG_LD_SHLIBS + + +# _LT_AC_FILE_LTDLL_C +# ------------------- +# Be careful that the start marker always follows a newline. +AC_DEFUN([_LT_AC_FILE_LTDLL_C], [ +# /* ltdll.c starts here */ +# #define WIN32_LEAN_AND_MEAN +# #include +# #undef WIN32_LEAN_AND_MEAN +# #include +# +# #ifndef __CYGWIN__ +# # ifdef __CYGWIN32__ +# # define __CYGWIN__ __CYGWIN32__ +# # endif +# #endif +# +# #ifdef __cplusplus +# extern "C" { +# #endif +# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved); +# #ifdef __cplusplus +# } +# #endif +# +# #ifdef __CYGWIN__ +# #include +# DECLARE_CYGWIN_DLL( DllMain ); +# #endif +# HINSTANCE __hDllInstance_base; +# +# BOOL APIENTRY +# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved) +# { +# __hDllInstance_base = hInst; +# return TRUE; +# } +# /* ltdll.c ends here */ +])# _LT_AC_FILE_LTDLL_C + + +# _LT_AC_TAGVAR(VARNAME, [TAGNAME]) +# --------------------------------- +AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])]) + + +# old names +AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL]) +AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) +AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) +AC_DEFUN([AM_PROG_LD], [AC_PROG_LD]) +AC_DEFUN([AM_PROG_NM], [AC_PROG_NM]) + +# This is just to silence aclocal about the macro not being used +ifelse([AC_DISABLE_FAST_INSTALL]) + +AC_DEFUN([LT_AC_PROG_GCJ], +[AC_CHECK_TOOL(GCJ, gcj, no) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS) +]) + +AC_DEFUN([LT_AC_PROG_RC], +[AC_CHECK_TOOL(RC, windres, no) +]) + + +# Cheap backport of AS_EXECUTABLE_P and required macros +# from Autoconf 2.59; we should not use $as_executable_p directly. + +# _AS_TEST_PREPARE +# ---------------- +m4_ifndef([_AS_TEST_PREPARE], +[m4_defun([_AS_TEST_PREPARE], +[if test -x / >/dev/null 2>&1; then + as_executable_p='test -x' +else + as_executable_p='test -f' +fi +])])# _AS_TEST_PREPARE + +# AS_EXECUTABLE_P +# --------------- +# Check whether a file is executable. +m4_ifndef([AS_EXECUTABLE_P], +[m4_defun([AS_EXECUTABLE_P], +[AS_REQUIRE([_AS_TEST_PREPARE])dnl +$as_executable_p $1[]dnl +])])# AS_EXECUTABLE_P + +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +# LT_AC_PROG_SED +# -------------- +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +AC_DEFUN([LT_AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if AS_EXECUTABLE_P(["$as_dir/$lt_ac_prog$ac_exec_ext"]); then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_SUBST([SED]) +AC_MSG_RESULT([$SED]) +]) + +# Copyright (C) 2002, 2003, 2005, 2006, 2007 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.10' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.10.1], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AC_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.10.1])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(AC_AUTOCONF_VERSION)]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to +# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is `.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[dnl Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50])dnl +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 8 + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ(2.52)dnl + ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 9 + +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "GCJ", or "OBJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +ifelse([$1], CC, [depcc="$CC" am_compiler_list=], + [$1], CXX, [depcc="$CXX" am_compiler_list=], + [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], UPC, [depcc="$UPC" am_compiler_list=], + [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +#serial 3 + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each `.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 8 + +# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. +AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006, 2008 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 13 + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.60])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) + AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +AM_MISSING_PROG(AUTOCONF, autoconf) +AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +AM_MISSING_PROG(AUTOHEADER, autoheader) +AM_MISSING_PROG(MAKEINFO, makeinfo) +AM_PROG_INSTALL_SH +AM_PROG_INSTALL_STRIP +AC_REQUIRE([AM_PROG_MKDIR_P])dnl +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_CC], + defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_CXX], + defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES(OBJC)], + [define([AC_PROG_OBJC], + defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl +]) +]) + + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} +AC_SUBST(install_sh)]) + +# Copyright (C) 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 5 + +# AM_PROG_LEX +# ----------- +# Autoconf leaves LEX=: if lex or flex can't be found. Change that to a +# "missing" invocation, for better error output. +AC_DEFUN([AM_PROG_LEX], +[AC_PREREQ(2.50)dnl +AC_REQUIRE([AM_MISSING_HAS_RUN])dnl +AC_REQUIRE([AC_PROG_LEX])dnl +if test "$LEX" = :; then + LEX=${am_missing_run}flex +fi]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 5 + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it supports --run. +# If it does, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + AC_MSG_WARN([`missing' script is too old or missing]) +fi +]) + +# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_MKDIR_P +# --------------- +# Check for `mkdir -p'. +AC_DEFUN([AM_PROG_MKDIR_P], +[AC_PREREQ([2.60])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, +dnl while keeping a definition of mkdir_p for backward compatibility. +dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. +dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of +dnl Makefile.ins that do not define MKDIR_P, so we do our own +dnl adjustment using top_builddir (which is defined more often than +dnl MKDIR_P). +AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl +case $mkdir_p in + [[\\/$]]* | ?:[[\\/]]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# ------------------------------ +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) + +# _AM_SET_OPTIONS(OPTIONS) +# ---------------------------------- +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[AC_FOREACH([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT(yes)]) + +# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor `install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in `make install-strip', and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of `v7', `ustar', or `pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. +AM_MISSING_PROG([AMTAR], [tar]) +m4_if([$1], [v7], + [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], + [m4_case([$1], [ustar],, [pax],, + [m4_fatal([Unknown tar format])]) +AC_MSG_CHECKING([how to create a $1 tar archive]) +# Loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' +_am_tools=${am_cv_prog_tar_$1-$_am_tools} +# Do not fold the above two line into one, because Tru64 sh and +# Solaris sh will not grok spaces in the rhs of `-'. +for _am_tool in $_am_tools +do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; + do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi +done +rm -rf conftest.dir + +AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) +AC_MSG_RESULT([$am_cv_prog_tar_$1])]) +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + diff --git a/coregrade/src/libconfig-1.3.1/autom4te.cache/output.0 b/coregrade/src/libconfig-1.3.1/autom4te.cache/output.0 new file mode 100644 index 0000000..8adda2e --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/autom4te.cache/output.0 @@ -0,0 +1,23163 @@ +@%:@! /bin/sh +@%:@ Guess values for system-dependent variables and create Makefiles. +@%:@ Generated by GNU Autoconf 2.63. +@%:@ +@%:@ Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +@%:@ 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +@%:@ This configure script is free software; the Free Software Foundation +@%:@ gives unlimited permission to copy, distribute and modify it. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + +# Work around bugs in pre-3.0 UWIN ksh. +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# CDPATH. +$as_unset CDPATH + + +if test "x$CONFIG_SHELL" = x; then + if (eval ":") 2>/dev/null; then + as_have_required=yes +else + as_have_required=no +fi + + if test $as_have_required = yes && (eval ": +(as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=\$LINENO + as_lineno_2=\$LINENO + test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && + test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } +") 2> /dev/null; then + : +else + as_candidate_shells= + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + case $as_dir in + /*) + for as_base in sh bash ksh sh5; do + as_candidate_shells="$as_candidate_shells $as_dir/$as_base" + done;; + esac +done +IFS=$as_save_IFS + + + for as_shell in $as_candidate_shells $SHELL; do + # Try only shells that exist, to save several forks. + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { ("$as_shell") 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +_ASEOF +}; then + CONFIG_SHELL=$as_shell + as_have_required=yes + if { "$as_shell" 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +(as_func_return () { + (exit $1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = "$1" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test $exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } + +_ASEOF +}; then + break +fi + +fi + + done + + if test "x$CONFIG_SHELL" != x; then + for as_var in BASH_ENV ENV + do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + done + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} +fi + + + if test $as_have_required = no; then + echo This script requires a shell more modern than all the + echo shells that I found on your system. Please install a + echo modern shell, or manually run the script under such a + echo shell if you do have one. + { (exit 1); exit 1; } +fi + + +fi + +fi + + + +(eval "as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0") || { + echo No shell found that supports shell functions. + echo Please tell bug-autoconf@gnu.org about your system, + echo including any error possibly output before this message. + echo This can help us improve future autoconf versions. + echo Configuration will now proceed without shell functions. +} + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; +esac +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + + + +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` + ;; +esac + +echo=${ECHO-echo} +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "$0" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null 2>&1 && unset CDPATH + +if test -z "$ECHO"; then +if test "X${echo_test_string+set}" != Xset; then +# find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if (echo_test_string=`eval $cmd`) 2>/dev/null && + echo_test_string=`eval $cmd` && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL $0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL $0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "$0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" +fi + + + + +tagnames=${tagnames+${tagnames},}CXX + +tagnames=${tagnames+${tagnames},}F77 + +exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIB@&t@OBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= + +ac_unique_file="libconfig.c" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='LTLIBOBJS +LIB@&t@OBJS +GNU_WIN_FALSE +GNU_WIN_TRUE +BUILDCXX_FALSE +BUILDCXX_TRUE +YFLAGS +YACC +LEXLIB +LEX_OUTPUT_ROOT +LEX +LIBTOOL +ac_ct_F77 +FFLAGS +F77 +CXXCPP +am__fastdepCXX_FALSE +am__fastdepCXX_TRUE +CXXDEPMODE +ac_ct_CXX +CXXFLAGS +CXX +CPP +OBJDUMP +AS +DLLTOOL +NMEDIT +DSYMUTIL +AR +ECHO +LN_S +EGREP +GREP +SED +RANLIB +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__quote +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +target_os +target_vendor +target_cpu +target +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_dependency_tracking +enable_shared +enable_static +enable_fast_install +with_gnu_ld +enable_libtool_lock +with_pic +with_tags +enable_cxx +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +CXX +CXXFLAGS +CCC +CXXCPP +F77 +FFLAGS +YACC +YFLAGS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 + { (exit 1); exit 1; }; } + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 + { (exit 1); exit 1; }; } + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 + { (exit 1); exit 1; }; } + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 + { (exit 1); exit 1; }; } + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { $as_echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { $as_echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2 + { (exit 1); exit 1; }; } ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; } +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + { $as_echo "$as_me: error: working directory cannot be determined" >&2 + { (exit 1); exit 1; }; } +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + { $as_echo "$as_me: error: pwd does not report name of working directory" >&2 + { (exit 1); exit 1; }; } + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2 + { (exit 1); exit 1; }; } + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures this package to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root @<:@DATAROOTDIR/doc/PACKAGE@:>@ + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] + --target=TARGET configure for building compilers for TARGET [HOST] +_ACEOF +fi + +if test -n "$ac_init_help"; then + + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors + --enable-shared@<:@=PKGS@:>@ build shared libraries @<:@default=yes@:>@ + --enable-static@<:@=PKGS@:>@ build static libraries @<:@default=yes@:>@ + --enable-fast-install@<:@=PKGS@:>@ + optimize for fast installation @<:@default=yes@:>@ + --disable-libtool-lock avoid locking (might break parallel builds) + --disable-cxx Disable building of the C++ library + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gnu-ld assume the C compiler uses GNU ld @<:@default=no@:>@ + --with-pic try to use only PIC/non-PIC objects @<:@default=use + both@:>@ + --with-tags@<:@=TAGS@:>@ include additional configurations @<:@automatic@:>@ + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + CXX C++ compiler command + CXXFLAGS C++ compiler flags + CXXCPP C++ preprocessor + F77 Fortran 77 compiler command + FFLAGS Fortran 77 compiler flags + YACC The `Yet Another C Compiler' implementation to use. Defaults to + the first program found out of: `bison -y', `byacc', `yacc'. + YFLAGS The list of arguments that will be passed by default to $YACC. + This script will default YFLAGS to the empty string to avoid a + default value of `-d' given by some make applications. + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +configure +generated by GNU Autoconf 2.63 + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by $as_me, which was +generated by GNU Autoconf 2.63. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +@%:@@%:@ --------- @%:@@%:@ +@%:@@%:@ Platform. @%:@@%:@ +@%:@@%:@ --------- @%:@@%:@ + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" +done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +@%:@@%:@ ----------- @%:@@%:@ +@%:@@%:@ Core tests. @%:@@%:@ +@%:@@%:@ ----------- @%:@@%:@ + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args '$ac_arg'" + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +@%:@@%:@ ---------------- @%:@@%:@ +@%:@@%:@ Cache variables. @%:@@%:@ +@%:@@%:@ ---------------- @%:@@%:@ +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + cat <<\_ASBOX +@%:@@%:@ ----------------- @%:@@%:@ +@%:@@%:@ Output variables. @%:@@%:@ +@%:@@%:@ ----------------- @%:@@%:@ +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +@%:@@%:@ ------------------- @%:@@%:@ +@%:@@%:@ File substitutions. @%:@@%:@ +@%:@@%:@ ------------------- @%:@@%:@ +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +@%:@@%:@ ----------- @%:@@%:@ +@%:@@%:@ confdefs.h. @%:@@%:@ +@%:@@%:@ ----------- @%:@@%:@ +_ASBOX + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + ac_site_file1=$CONFIG_SITE +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test -r "$ac_site_file"; then + { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:$LINENO: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:$LINENO: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +$as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + + + + + + + + + + + + + + + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +ac_aux_dir= +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 +$as_echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} + { (exit 1); exit 1; }; } +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + { { $as_echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 +$as_echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} + { (exit 1); exit 1; }; } + +{ $as_echo "$as_me:$LINENO: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if test "${ac_cv_build+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + { { $as_echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +$as_echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 +$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 +$as_echo "$as_me: error: invalid value of canonical build" >&2;} + { (exit 1); exit 1; }; };; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:$LINENO: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if test "${ac_cv_host+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 +$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} + { (exit 1); exit 1; }; } +fi + +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 +$as_echo "$as_me: error: invalid value of canonical host" >&2;} + { (exit 1); exit 1; }; };; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:$LINENO: checking target system type" >&5 +$as_echo_n "checking target system type... " >&6; } +if test "${ac_cv_target+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test "x$target_alias" = x; then + ac_cv_target=$ac_cv_host +else + ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || + { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5 +$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;} + { (exit 1); exit 1; }; } +fi + +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_target" >&5 +$as_echo "$ac_cv_target" >&6; } +case $ac_cv_target in +*-*-*) ;; +*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical target" >&5 +$as_echo "$as_me: error: invalid value of canonical target" >&2;} + { (exit 1); exit 1; }; };; +esac +target=$ac_cv_target +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_target +shift +target_cpu=$1 +target_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +target_os=$* +IFS=$ac_save_IFS +case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac + + +# The aliases save the names the user supplied, while $host etc. +# will get canonicalized. +test -n "$target_alias" && + test "$program_prefix$program_suffix$program_transform_name" = \ + NONENONEs,x,x, && + program_prefix=${target_alias}- +am__api_version='1.10' + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + +done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ $as_echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + { { $as_echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&5 +$as_echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&2;} + { (exit 1); exit 1; }; } + fi + + test "$2" = conftest.file + ) +then + # Ok. + : +else + { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files! +Check your system clock" >&5 +$as_echo "$as_me: error: newly created file is older than distributed files! +Check your system clock" >&2;} + { (exit 1); exit 1; }; } +fi +{ $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was `s,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + { $as_echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} +fi + +{ $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if test "${ac_cv_path_mkdir+set}" = set; then + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done +done +IFS=$as_save_IFS + +fi + + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + test -d ./--version && rmdir ./--version + MKDIR_P="$ac_install_sh -d" + fi +fi +{ $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } + +mkdir_p="$MKDIR_P" +case $mkdir_p in + [\\/$]* | ?:[\\/]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_AWK+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:$LINENO: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + { { $as_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 +$as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} + { (exit 1); exit 1; }; } + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE=libconfig + VERSION=1.3.1 + + +cat >>confdefs.h <<_ACEOF +@%:@define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +@%:@define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} + +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_STRIP+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:$LINENO: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +# Always define AMTAR for backward compatibility. + +AMTAR=${AMTAR-"${am_missing_run}tar"} + +am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' + + + + + + +ac_config_headers="$ac_config_headers ac_config.h" + + +cat >>confdefs.h <<_ACEOF +@%:@define TARGET "${target}" +_ACEOF + + + + +cat >>confdefs.h <<\_ACEOF +@%:@define _GNU_SOURCE 1 +_ACEOF + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $@%:@ != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; }; } + +# Provide some information about the compiler. +$as_echo "$as_me:$LINENO: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { (ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi + +{ $as_echo "$as_me:$LINENO: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +if test -z "$ac_file"; then + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: C compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; }; } +fi + +ac_exeext=$ac_cv_exeext + +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; }; } + fi + fi +fi +{ $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +{ $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +{ $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; }; } +fi + +rm -f conftest$ac_cv_exeext +{ $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +{ $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if test "${ac_cv_objext+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if test "${ac_cv_c_compiler_gnu+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_compiler_gnu=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if test "${ac_cv_prog_cc_g+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + CFLAGS="" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if test "${ac_cv_prog_cc_c89+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_c89=$ac_arg +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:$LINENO: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:$LINENO: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +{ $as_echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +$as_echo_n "checking for style of include used by $am_make... " >&6; } +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi + + +{ $as_echo "$as_me:$LINENO: result: $_am_result" >&5 +$as_echo "$_am_result" >&6; } +rm -f confinc confmf + +@%:@ Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + +depcc="$CC" am_compiler_list= + +{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_RANLIB+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + + + +@%:@ Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_shared=yes +fi + + +@%:@ Check whether --enable-static was given. +if test "${enable_static+set}" = set; then + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_static=yes +fi + + +@%:@ Check whether --enable-fast-install was given. +if test "${enable_fast_install+set}" = set; then + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_fast_install=yes +fi + + +{ $as_echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if test "${lt_cv_path_SED+set}" = set; then + $as_echo_n "(cached) " >&6 +else + # Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$lt_ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$lt_ac_prog$ac_exec_ext"; }; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done + +fi + +SED=$lt_cv_path_SED + +{ $as_echo "$as_me:$LINENO: result: $SED" >&5 +$as_echo "$SED" >&6; } + +{ $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if test "${ac_cv_path_GREP+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done +done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +$as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:$LINENO: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if test "${ac_cv_path_EGREP+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done +done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +$as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + + +@%:@ Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if test "${lt_cv_path_LD+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +$as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +{ $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if test "${lt_cv_prog_gnu_ld+set}" = set; then + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + +{ $as_echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 +$as_echo_n "checking for $LD option to reload object files... " >&6; } +if test "${lt_cv_ld_reload_flag+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_reload_flag='-r' +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 +$as_echo "$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + darwin*) + if test "$GCC" = yes; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + +{ $as_echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 +$as_echo_n "checking for BSD-compatible nm... " >&6; } +if test "${lt_cv_path_NM+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 +$as_echo "$lt_cv_path_NM" >&6; } +NM="$lt_cv_path_NM" + +{ $as_echo "$as_me:$LINENO: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi + +{ $as_echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5 +$as_echo_n "checking how to recognize dependent libraries... " >&6; } +if test "${lt_cv_deplibs_check_method+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[4-9]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +nto-qnx*) + lt_cv_deplibs_check_method=unknown + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 +$as_echo "$lt_cv_deplibs_check_method" >&6; } +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +@%:@ Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then + enableval=$enable_libtool_lock; +fi + +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '#line __oline__ "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +s390*-*linux*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + { $as_echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 +$as_echo_n "checking whether the C compiler needs -belf... " >&6; } +if test "${lt_cv_cc_needs_belf+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + lt_cv_cc_needs_belf=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + lt_cv_cc_needs_belf=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 +$as_echo "$lt_cv_cc_needs_belf" >&6; } + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-cygwin* | *-*-mingw* | *-*-pw32*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_DLLTOOL+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:$LINENO: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_DLLTOOL+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:$LINENO: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. +set dummy ${ac_tool_prefix}as; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_AS+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$AS"; then + ac_cv_prog_AS="$AS" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AS="${ac_tool_prefix}as" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +AS=$ac_cv_prog_AS +if test -n "$AS"; then + { $as_echo "$as_me:$LINENO: result: $AS" >&5 +$as_echo "$AS" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AS"; then + ac_ct_AS=$AS + # Extract the first word of "as", so it can be a program name with args. +set dummy as; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_AS+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AS"; then + ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_AS="as" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_AS=$ac_cv_prog_ac_ct_AS +if test -n "$ac_ct_AS"; then + { $as_echo "$as_me:$LINENO: result: $ac_ct_AS" >&5 +$as_echo "$ac_ct_AS" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_AS" = x; then + AS="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AS=$ac_ct_AS + fi +else + AS="$ac_cv_prog_AS" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_OBJDUMP+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:$LINENO: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:$LINENO: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + + ;; + +esac + +need_locks="$enable_libtool_lock" + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +@%:@ifdef __STDC__ +@%:@ include +@%:@else +@%:@ include +@%:@endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + : +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi + +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +@%:@include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + # Broken: success on invalid input. +continue +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi + +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:$LINENO: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +@%:@ifdef __STDC__ +@%:@ include +@%:@else +@%:@ include +@%:@endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + : +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi + +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +@%:@include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + # Broken: success on invalid input. +continue +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi + +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if test "${ac_cv_header_stdc+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_header_stdc=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_header_stdc=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + +fi +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +@%:@define STDC_HEADERS 1 +_ACEOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +@%:@include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + eval "$as_ac_Header=yes" +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_Header=no" +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +as_val=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + +for ac_header in dlfcn.h +do +as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +$as_echo_n "checking $ac_header usability... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +@%:@include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +$as_echo_n "checking $ac_header presence... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +@%:@include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + + ;; +esac +{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + +fi +as_val=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CXX+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { $as_echo "$as_me:$LINENO: result: $CXX" >&5 +$as_echo "$CXX" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { $as_echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +$as_echo "$as_me:$LINENO: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_compiler_gnu=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ $as_echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if test "${ac_cv_prog_cxx_g+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cxx_g=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + CXXFLAGS="" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cxx_g=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +depcc="$CXX" am_compiler_list= + +{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi + + + + +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +{ $as_echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 +$as_echo_n "checking how to run the C++ preprocessor... " >&6; } +if test -z "$CXXCPP"; then + if test "${ac_cv_prog_CXXCPP+set}" = set; then + $as_echo_n "(cached) " >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +@%:@ifdef __STDC__ +@%:@ include +@%:@else +@%:@ include +@%:@endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then + : +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi + +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +@%:@include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then + # Broken: success on invalid input. +continue +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi + +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +{ $as_echo "$as_me:$LINENO: result: $CXXCPP" >&5 +$as_echo "$CXXCPP" >&6; } +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +@%:@ifdef __STDC__ +@%:@ include +@%:@else +@%:@ include +@%:@endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then + : +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi + +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +@%:@include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then + # Broken: success on invalid input. +continue +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi + +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +{ { $as_echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; }; } +fi + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +fi + + +ac_ext=f +ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' +ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_f77_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_F77+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$F77"; then + ac_cv_prog_F77="$F77" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_F77="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +F77=$ac_cv_prog_F77 +if test -n "$F77"; then + { $as_echo "$as_me:$LINENO: result: $F77" >&5 +$as_echo "$F77" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$F77" && break + done +fi +if test -z "$F77"; then + ac_ct_F77=$F77 + for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_F77+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_F77"; then + ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_F77="$ac_prog" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_F77=$ac_cv_prog_ac_ct_F77 +if test -n "$ac_ct_F77"; then + { $as_echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 +$as_echo "$ac_ct_F77" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_F77" && break +done + + if test "x$ac_ct_F77" = x; then + F77="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + F77=$ac_ct_F77 + fi +fi + + +# Provide some information about the compiler. +$as_echo "$as_me:$LINENO: checking for Fortran 77 compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +rm -f a.out + +# If we don't use `.F' as extension, the preprocessor is not run on the +# input file. (Note that this only needs to work for GNU compilers.) +ac_save_ext=$ac_ext +ac_ext=F +{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 +$as_echo_n "checking whether we are using the GNU Fortran 77 compiler... " >&6; } +if test "${ac_cv_f77_compiler_gnu+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF + program main +#ifndef __GNUC__ + choke me +#endif + + end +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_compiler_gnu=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_f77_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 +$as_echo "$ac_cv_f77_compiler_gnu" >&6; } +ac_ext=$ac_save_ext +ac_test_FFLAGS=${FFLAGS+set} +ac_save_FFLAGS=$FFLAGS +FFLAGS= +{ $as_echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 +$as_echo_n "checking whether $F77 accepts -g... " >&6; } +if test "${ac_cv_prog_f77_g+set}" = set; then + $as_echo_n "(cached) " >&6 +else + FFLAGS=-g +cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_f77_g=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_prog_f77_g=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 +$as_echo "$ac_cv_prog_f77_g" >&6; } +if test "$ac_test_FFLAGS" = set; then + FFLAGS=$ac_save_FFLAGS +elif test $ac_cv_prog_f77_g = yes; then + if test "x$ac_cv_f77_compiler_gnu" = xyes; then + FFLAGS="-g -O2" + else + FFLAGS="-g" + fi +else + if test "x$ac_cv_f77_compiler_gnu" = xyes; then + FFLAGS="-O2" + else + FFLAGS= + fi +fi + +if test $ac_compiler_gnu = yes; then + G77=yes +else + G77= +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! +# find the maximum length of command line arguments +{ $as_echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 +$as_echo_n "checking the maximum length of command line arguments... " >&6; } +if test "${lt_cv_sys_max_cmd_len+set}" = set; then + $as_echo_n "(cached) " >&6 +else + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ + = "XX$teststring") >/dev/null 2>&1 && + new_result=`expr "X$teststring" : ".*" 2>&1` && + lt_cv_sys_max_cmd_len=$new_result && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + teststring= + # Add a significant safety factor because C++ compilers can tack on massive + # amounts of additional arguments before passing them to the linker. + # It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac + +fi + +if test -n $lt_cv_sys_max_cmd_len ; then + { $as_echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 +$as_echo "$lt_cv_sys_max_cmd_len" >&6; } +else + { $as_echo "$as_me:$LINENO: result: none" >&5 +$as_echo "none" >&6; } +fi + + + + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ $as_echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 +$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then + $as_echo_n "(cached) " >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32*) + symcode='[ABCDGISTW]' + ;; +hpux*) # Its linker distinguishes data from code symbols + if test "$host_cpu" = ia64; then + symcode='[ABCDEGRST]' + fi + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +linux* | k*bsd*-gnu) + if test "$host_cpu" = ia64; then + symcode='[ABCDGIRSTW]' + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 + (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if grep ' nm_test_var$' "$nlist" >/dev/null; then + if grep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' + + cat <> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[] = +{ +EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { $as_echo "$as_me:$LINENO: result: failed" >&5 +$as_echo "failed" >&6; } +else + { $as_echo "$as_me:$LINENO: result: ok" >&5 +$as_echo "ok" >&6; } +fi + +{ $as_echo "$as_me:$LINENO: checking for objdir" >&5 +$as_echo_n "checking for objdir... " >&6; } +if test "${lt_cv_objdir+set}" = set; then + $as_echo_n "(cached) " >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 +$as_echo "$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e 1s/^X//' +sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_AR+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:$LINENO: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_AR+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_AR="ar" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +else + AR="$ac_cv_prog_AR" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_RANLIB+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_STRIP+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:$LINENO: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$SED" && SED=sed +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { $as_echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 +$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/${ac_tool_prefix}file; then + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { $as_echo "$as_me:$LINENO: checking for file" >&5 +$as_echo_n "checking for file... " >&6; } +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/file; then + lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + + + case $host_os in + rhapsody* | darwin*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_DSYMUTIL+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + { $as_echo "$as_me:$LINENO: result: $DSYMUTIL" >&5 +$as_echo "$DSYMUTIL" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + { $as_echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5 +$as_echo "$ac_ct_DSYMUTIL" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DSYMUTIL" = x; then + DSYMUTIL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DSYMUTIL=$ac_ct_DSYMUTIL + fi +else + DSYMUTIL="$ac_cv_prog_DSYMUTIL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_NMEDIT+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + { $as_echo "$as_me:$LINENO: result: $NMEDIT" >&5 +$as_echo "$NMEDIT" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + { $as_echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5 +$as_echo "$ac_ct_NMEDIT" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_NMEDIT" = x; then + NMEDIT=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + NMEDIT=$ac_ct_NMEDIT + fi +else + NMEDIT="$ac_cv_prog_NMEDIT" +fi + + + { $as_echo "$as_me:$LINENO: checking for -single_module linker flag" >&5 +$as_echo_n "checking for -single_module linker flag... " >&6; } +if test "${lt_cv_apple_cc_single_mod+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + echo "int foo(void){return 1;}" > conftest.c + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib ${wl}-single_module conftest.c + if test -f libconftest.dylib; then + lt_cv_apple_cc_single_mod=yes + rm -rf libconftest.dylib* + fi + rm conftest.c + fi +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5 +$as_echo "$lt_cv_apple_cc_single_mod" >&6; } + { $as_echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5 +$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } +if test "${lt_cv_ld_exported_symbols_list+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + lt_cv_ld_exported_symbols_list=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + lt_cv_ld_exported_symbols_list=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5 +$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } + case $host_os in + rhapsody* | darwin1.[0123]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[91]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[012]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms="~$NMEDIT -s \$output_objdir/\${libname}-symbols.expsym \${lib}" + fi + if test "$DSYMUTIL" != ":"; then + _lt_dsymutil="~$DSYMUTIL \$lib || :" + else + _lt_dsymutil= + fi + ;; + esac + + +enable_dlopen=no +enable_win32_dll=yes + +@%:@ Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then + enableval=$enable_libtool_lock; +fi + +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + + +@%:@ Check whether --with-pic was given. +if test "${with_pic+set}" = set; then + withval=$with_pic; pic_mode="$withval" +else + pic_mode=default +fi + +test -z "$pic_mode" && pic_mode=default + +# Use C for the default configuration in the libtool script +tagname= +lt_save_CC="$CC" +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm -r conftest* + + + +lt_prog_compiler_no_builtin_flag= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag=' -fno-builtin' + + +{ $as_echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:__oline__: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $rm conftest* + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + +lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + +{ $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } + + if test "$GCC" = yes; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic='-qnocommon' + lt_prog_compiler_wl='-Wl,' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + *Sun\ F*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + esac + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +{ $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 +$as_echo "$lt_prog_compiler_pic" >&6; } + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + +{ $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if test "${lt_cv_prog_compiler_pic_works+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:__oline__: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $rm conftest* + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works" = xyes; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if test "${lt_cv_prog_compiler_static_works+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $rm -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5 +$as_echo "$lt_cv_prog_compiler_static_works" >&6; } + +if test x"$lt_cv_prog_compiler_static_works" = xyes; then + : +else + lt_prog_compiler_static= +fi + + +{ $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test "${lt_cv_prog_compiler_c_o+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:__oline__: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:$LINENO: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test "$hard_links" = no; then + { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +{ $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag= + enable_shared_with_static_runtimes=no + archive_cmds= + archive_expsym_cmds= + old_archive_From_new_cmds= + old_archive_from_expsyms_cmds= + export_dynamic_flag_spec= + whole_archive_flag_spec= + thread_safe_flag_spec= + hardcode_libdir_flag_spec= + hardcode_libdir_flag_spec_ld= + hardcode_libdir_separator= + hardcode_direct=no + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + link_all_deplibs=unknown + hardcode_automatic=no + module_cmds= + module_expsym_cmds= + always_export_symbols=no + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | k*bsd*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + *) + tmp_sharedflag='-shared' ;; + esac + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + ld_shlibs=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = no; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' ${wl}-bernotok' + allow_undefined_flag=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + archive_cmds_need_lc=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + whole_archive_flag_spec='' + link_all_deplibs=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' + module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + freebsd1*) + ld_shlibs=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + + hardcode_direct=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_libdir_flag_spec_ld='+b $libdir' + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld='-rpath $libdir' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + link_all_deplibs=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag='${wl}-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='${wl}-z,text' + allow_undefined_flag='${wl}-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + fi + +{ $as_echo "$as_me:$LINENO: result: $ld_shlibs" >&5 +$as_echo "$ld_shlibs" >&6; } +test "$ld_shlibs" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } + $rm conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc=no + else + archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 +$as_echo "$archive_cmds_need_lc" >&6; } + ;; + esac + fi + ;; +esac + +{ $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" + +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$lt_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e 's/;/ /g'` + else + lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`echo $lt_tmp_lt_search_path_spec | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } +}'` + sys_lib_search_path_spec=`echo $lt_search_path_spec` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[4-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix[3-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" +fi + +sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" +fi + +sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +{ $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || \ + test -n "$runpath_var" || \ + test "X$hardcode_automatic" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ $as_echo "$as_me:$LINENO: result: $hardcode_action" >&5 +$as_echo "$hardcode_action" >&6; } + +if test "$hardcode_action" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +striplib= +old_striplib= +{ $as_echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +$as_echo_n "checking whether stripping libraries is possible... " >&6; } +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + ;; + *) + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } + ;; + esac +fi + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_lib_dl_dlopen=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_dl_dlopen=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = x""yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + { $as_echo "$as_me:$LINENO: checking for shl_load" >&5 +$as_echo_n "checking for shl_load... " >&6; } +if test "${ac_cv_func_shl_load+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define shl_load to an innocuous variant, in case declares shl_load. + For example, HP-UX 11i declares gettimeofday. */ +#define shl_load innocuous_shl_load + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shl_load (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef shl_load + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_shl_load || defined __stub___shl_load +choke me +#endif + +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_func_shl_load=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_shl_load=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +$as_echo "$ac_cv_func_shl_load" >&6; } +if test "x$ac_cv_func_shl_load" = x""yes; then + lt_cv_dlopen="shl_load" +else + { $as_echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +$as_echo_n "checking for shl_load in -ldld... " >&6; } +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_lib_dld_shl_load=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_dld_shl_load=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = x""yes; then + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" +else + { $as_echo "$as_me:$LINENO: checking for dlopen" >&5 +$as_echo_n "checking for dlopen... " >&6; } +if test "${ac_cv_func_dlopen+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define dlopen to an innocuous variant, in case declares dlopen. + For example, HP-UX 11i declares gettimeofday. */ +#define dlopen innocuous_dlopen + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char dlopen (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef dlopen + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_dlopen || defined __stub___dlopen +choke me +#endif + +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_func_dlopen=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_dlopen=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +$as_echo "$ac_cv_func_dlopen" >&6; } +if test "x$ac_cv_func_dlopen" = x""yes; then + lt_cv_dlopen="dlopen" +else + { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_lib_dl_dlopen=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_dl_dlopen=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = x""yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + { $as_echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +$as_echo_n "checking for dlopen in -lsvld... " >&6; } +if test "${ac_cv_lib_svld_dlopen+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_lib_svld_dlopen=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_svld_dlopen=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = x""yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + { $as_echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +$as_echo_n "checking for dld_link in -ldld... " >&6; } +if test "${ac_cv_lib_dld_dld_link+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (); +int +main () +{ +return dld_link (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_lib_dld_dld_link=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_dld_dld_link=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +$as_echo "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = x""yes; then + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + { $as_echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +$as_echo_n "checking whether a program can dlopen itself... " >&6; } +if test "${lt_cv_dlopen_self+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +$as_echo "$lt_cv_dlopen_self" >&6; } + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { $as_echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +if test "${lt_cv_dlopen_self_static+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +$as_echo "$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + +# Report which library types will actually be built +{ $as_echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } +{ $as_echo "$as_me:$LINENO: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } + +{ $as_echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case $host_os in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix[4-9]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +{ $as_echo "$as_me:$LINENO: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } + +{ $as_echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +{ $as_echo "$as_me:$LINENO: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler \ + CC \ + LD \ + lt_prog_compiler_wl \ + lt_prog_compiler_pic \ + lt_prog_compiler_static \ + lt_prog_compiler_no_builtin_flag \ + export_dynamic_flag_spec \ + thread_safe_flag_spec \ + whole_archive_flag_spec \ + enable_shared_with_static_runtimes \ + old_archive_cmds \ + old_archive_from_new_cmds \ + predep_objects \ + postdep_objects \ + predeps \ + postdeps \ + compiler_lib_search_path \ + compiler_lib_search_dirs \ + archive_cmds \ + archive_expsym_cmds \ + postinstall_cmds \ + postuninstall_cmds \ + old_archive_from_expsyms_cmds \ + allow_undefined_flag \ + no_undefined_flag \ + export_symbols_cmds \ + hardcode_libdir_flag_spec \ + hardcode_libdir_flag_spec_ld \ + hardcode_libdir_separator \ + hardcode_automatic \ + module_cmds \ + module_expsym_cmds \ + lt_cv_prog_compiler_c_o \ + fix_srcfile_path \ + exclude_expsyms \ + include_expsyms; do + + case $var in + old_archive_cmds | \ + old_archive_from_new_cmds | \ + archive_cmds | \ + archive_expsym_cmds | \ + module_cmds | \ + module_expsym_cmds | \ + old_archive_from_expsyms_cmds | \ + export_symbols_cmds | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="${ofile}T" + trap "$rm \"$cfgfile\"; exit 1" 1 2 15 + $rm -f "$cfgfile" + { $as_echo "$as_me:$LINENO: creating $ofile" >&5 +$as_echo "$as_me: creating $ofile" >&6;} + + cat <<__EOF__ >> "$cfgfile" +#! $SHELL + +# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 +# Free Software Foundation, Inc. +# +# This file is part of GNU Libtool: +# Originally by Gordon Matzigkeit , 1996 +# +# 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 +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="$SED -e 1s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# The names of the tagged configurations supported by this script. +available_tags= + +# ### BEGIN LIBTOOL CONFIG + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU C compiler? +with_gcc=$GCC + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps + +# The directories searched by this compiler when creating a shared +# library +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path=$lt_fix_srcfile_path + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# ### END LIBTOOL CONFIG + +__EOF__ + + + case $host_os in + aix3*) + cat <<\EOF >> "$cfgfile" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || \ + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + +@%:@ Check whether --with-tags was given. +if test "${with_tags+set}" = set; then + withval=$with_tags; tagnames="$withval" +fi + + +if test -f "$ltmain" && test -n "$tagnames"; then + if test ! -f "${ofile}"; then + { $as_echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 +$as_echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} + fi + + if test -z "$LTCC"; then + eval "`$SHELL ${ofile} --config | grep '^LTCC='`" + if test -z "$LTCC"; then + { $as_echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 +$as_echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} + else + { $as_echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 +$as_echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} + fi + fi + if test -z "$LTCFLAGS"; then + eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" + fi + + # Extract list of available tagged configurations in $ofile. + # Note that this assumes the entire list is on one line. + available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` + + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for tagname in $tagnames; do + IFS="$lt_save_ifs" + # Check whether tagname contains only valid characters + case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in + "") ;; + *) { { $as_echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 +$as_echo "$as_me: error: invalid tag name: $tagname" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null + then + { { $as_echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 +$as_echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} + { (exit 1); exit 1; }; } + fi + + # Update the list of available tags. + if test -n "$tagname"; then + echo appending configuration tag \"$tagname\" to $ofile + + case $tagname in + CXX) + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + + +archive_cmds_need_lc_CXX=no +allow_undefined_flag_CXX= +always_export_symbols_CXX=no +archive_expsym_cmds_CXX= +export_dynamic_flag_spec_CXX= +hardcode_direct_CXX=no +hardcode_libdir_flag_spec_CXX= +hardcode_libdir_flag_spec_ld_CXX= +hardcode_libdir_separator_CXX= +hardcode_minus_L_CXX=no +hardcode_shlibpath_var_CXX=unsupported +hardcode_automatic_CXX=no +module_cmds_CXX= +module_expsym_cmds_CXX= +link_all_deplibs_CXX=unknown +old_archive_cmds_CXX=$old_archive_cmds +no_undefined_flag_CXX= +whole_archive_flag_spec_CXX= +enable_shared_with_static_runtimes_CXX=no + +# Dependencies to place before and after the object being linked: +predep_objects_CXX= +postdep_objects_CXX= +predeps_CXX= +postdeps_CXX= +compiler_lib_search_path_CXX= +compiler_lib_search_dirs_CXX= + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +objext_CXX=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(int, char *[]) { return(0); }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm -r conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_LD=$LD +lt_save_GCC=$GCC +GCC=$GXX +lt_save_with_gnu_ld=$with_gnu_ld +lt_save_path_LD=$lt_cv_path_LD +if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx +else + $as_unset lt_cv_prog_gnu_ld +fi +if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX +else + $as_unset lt_cv_path_LD +fi +test -z "${LDCXX+set}" || LD=$LDCXX +CC=${CXX-"c++"} +compiler=$CC +compiler_CXX=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# We don't want -fno-exception wen compiling C++ code, so set the +# no_builtin_flag separately +if test "$GXX" = yes; then + lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' +else + lt_prog_compiler_no_builtin_flag_CXX= +fi + +if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + +@%:@ Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if test "${lt_cv_path_LD+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +$as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +{ $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if test "${lt_cv_prog_gnu_ld+set}" = set; then + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ + grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_CXX= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +else + GXX=no + with_gnu_ld=no + wlarc= +fi + +# PORTME: fill in a description of your system's C++ link characteristics +{ $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } +ld_shlibs_CXX=yes +case $host_os in + aix3*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_CXX='' + hardcode_direct_CXX=yes + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + + if test "$GXX" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct_CXX=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_CXX=yes + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_libdir_separator_CXX= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_CXX=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_CXX='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + + archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_CXX="-z nodefs" + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_CXX=' ${wl}-bernotok' + allow_undefined_flag_CXX=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_CXX='$convenience' + archive_cmds_need_lc_CXX=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_CXX=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_CXX=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_CXX='-L$libdir' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=no + enable_shared_with_static_runtimes_CXX=yes + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_CXX=no + fi + ;; + darwin* | rhapsody*) + archive_cmds_need_lc_CXX=no + hardcode_direct_CXX=no + hardcode_automatic_CXX=yes + hardcode_shlibpath_var_CXX=unsupported + whole_archive_flag_spec_CXX='' + link_all_deplibs_CXX=yes + allow_undefined_flag_CXX="$_lt_dar_allow_undefined" + if test "$GXX" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + if test "$lt_cv_apple_cc_single_mod" != "yes"; then + archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" + archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" + fi + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' + module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_CXX=no + ;; + esac + fi + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + freebsd[12]*) + # C++ shared libraries reported to be fairly broken before switch to ELF + ld_shlibs_CXX=no + ;; + freebsd-elf*) + archive_cmds_need_lc_CXX=no + ;; + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + ld_shlibs_CXX=yes + ;; + gnu*) + ;; + hpux9*) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='${wl}-E' + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + case $host_cpu in + hppa*64*|ia64*) ;; + *) + export_dynamic_flag_spec_CXX='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + ;; + *) + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + interix[3-9]*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' + fi + fi + link_all_deplibs_CXX=yes + ;; + esac + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + ;; + linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc*) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + hardcode_libdir_flag_spec_CXX='-R$libdir' + whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + lynxos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + m88k*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + openbsd2*) + # C++ shared libraries are fairly broken + ld_shlibs_CXX=no + ;; + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + export_dynamic_flag_spec_CXX='${wl}-E' + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd='echo' + else + ld_shlibs_CXX=no + fi + ;; + osf3*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + allow_undefined_flag_CXX=' -expect_unresolved \*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ + $rm $lib.exp' + + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + psos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + archive_cmds_need_lc_CXX=yes + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_shlibpath_var_CXX=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' + ;; + esac + link_all_deplibs_CXX=yes + + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + no_undefined_flag_CXX=' ${wl}-z ${wl}defs' + if $CC --version | grep -v '^2\.7' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + fi + + hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag_CXX='${wl}-z,text' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + # So that behaviour is only enabled if SCOABSPATH is set to a + # non-empty value in the environment. Most likely only useful for + # creating official distributions of packages. + # This is a hack until libtool officially supports absolute path + # names for shared libraries. + no_undefined_flag_CXX='${wl}-z,text' + allow_undefined_flag_CXX='${wl}-z,nodefs' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + export_dynamic_flag_spec_CXX='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + vxworks*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; +esac +{ $as_echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } +test "$ld_shlibs_CXX" = no && can_build_shared=no + +GCC_CXX="$GXX" +LD_CXX="$LD" + +cat > conftest.$ac_ext <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + # The `*' in the case matches for architectures that use `case' in + # $output_verbose_cmd can trigger glob expansion during the loop + # eval without this substitution. + output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"` + + for p in `eval $output_verbose_link_cmd`; do + case $p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" \ + || test $p = "-R"; then + prev=$p + continue + else + prev= + fi + + if test "$pre_test_object_deps_done" = no; then + case $p in + -L* | -R*) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$compiler_lib_search_path_CXX"; then + compiler_lib_search_path_CXX="${prev}${p}" + else + compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$postdeps_CXX"; then + postdeps_CXX="${prev}${p}" + else + postdeps_CXX="${postdeps_CXX} ${prev}${p}" + fi + fi + ;; + + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$predep_objects_CXX"; then + predep_objects_CXX="$p" + else + predep_objects_CXX="$predep_objects_CXX $p" + fi + else + if test -z "$postdep_objects_CXX"; then + postdep_objects_CXX="$p" + else + postdep_objects_CXX="$postdep_objects_CXX $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling CXX test program" +fi + +$rm -f confest.$objext + +compiler_lib_search_dirs_CXX= +if test -n "$compiler_lib_search_path_CXX"; then + compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` +fi + +# PORTME: override above test on systems where it is broken +case $host_os in +interix[3-9]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + predep_objects_CXX= + postdep_objects_CXX= + postdeps_CXX= + ;; + +linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + # + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + if test "$solaris_use_stlport4" != yes; then + postdeps_CXX='-library=Cstd -library=Crun' + fi + ;; + esac + ;; + +solaris*) + case $cc_basename in + CC*) + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + if test "$solaris_use_stlport4" != yes; then + postdeps_CXX='-library=Cstd -library=Crun' + fi + ;; + esac + ;; +esac + +case " $postdeps_CXX " in +*" -lc "*) archive_cmds_need_lc_CXX=no ;; +esac + +lt_prog_compiler_wl_CXX= +lt_prog_compiler_pic_CXX= +lt_prog_compiler_static_CXX= + +{ $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } + + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + fi + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_CXX='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + lt_prog_compiler_pic_CXX= + ;; + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_CXX=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + else + case $host_os in + aix[4-9]*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + else + lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_CXX='-qnocommon' + lt_prog_compiler_wl_CXX='-Wl,' + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++*) + lt_prog_compiler_pic_CXX='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + lt_prog_compiler_pic_CXX='+Z' + fi + ;; + aCC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_CXX='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler + lt_prog_compiler_wl_CXX='--backend -Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + ;; + icpc* | ecpc*) + # Intel C++ + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fpic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + lt_prog_compiler_pic_CXX='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + lt_prog_compiler_wl_CXX='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + lt_prog_compiler_pic_CXX='-pic' + ;; + cxx*) + # Digital/Compaq C++ + lt_prog_compiler_wl_CXX='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + lt_prog_compiler_pic_CXX='-pic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + lcc*) + # Lucid + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + lt_prog_compiler_pic_CXX='-KPIC' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + esac + ;; + vxworks*) + ;; + *) + lt_prog_compiler_can_build_shared_CXX=no + ;; + esac + fi + +{ $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 +$as_echo "$lt_prog_compiler_pic_CXX" >&6; } + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_CXX"; then + +{ $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } +if test "${lt_cv_prog_compiler_pic_works_CXX+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works_CXX=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:__oline__: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works_CXX=yes + fi + fi + $rm conftest* + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then + case $lt_prog_compiler_pic_CXX in + "" | " "*) ;; + *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; + esac +else + lt_prog_compiler_pic_CXX= + lt_prog_compiler_can_build_shared_CXX=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_CXX= + ;; + *) + lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" +{ $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if test "${lt_cv_prog_compiler_static_works_CXX+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works_CXX=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works_CXX=yes + fi + else + lt_cv_prog_compiler_static_works_CXX=yes + fi + fi + $rm -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } + +if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then + : +else + lt_prog_compiler_static_CXX= +fi + + +{ $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:__oline__: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:$LINENO: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test "$hard_links" = no; then + { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +{ $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix[4-9]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + export_symbols_cmds_CXX="$ltdll_cmds" + ;; + cygwin* | mingw*) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + +{ $as_echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } +test "$ld_shlibs_CXX" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_CXX" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_CXX=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_CXX in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } + $rm conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_CXX + pic_flag=$lt_prog_compiler_pic_CXX + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_CXX + allow_undefined_flag_CXX= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_CXX=no + else + archive_cmds_need_lc_CXX=yes + fi + allow_undefined_flag_CXX=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 +$as_echo "$archive_cmds_need_lc_CXX" >&6; } + ;; + esac + fi + ;; +esac + +{ $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" + +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[4-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix[3-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" +fi + +sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" +fi + +sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +{ $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action_CXX= +if test -n "$hardcode_libdir_flag_spec_CXX" || \ + test -n "$runpath_var_CXX" || \ + test "X$hardcode_automatic_CXX" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_CXX" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no && + test "$hardcode_minus_L_CXX" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_CXX=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_CXX=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_CXX=unsupported +fi +{ $as_echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 +$as_echo "$hardcode_action_CXX" >&6; } + +if test "$hardcode_action_CXX" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_CXX \ + CC_CXX \ + LD_CXX \ + lt_prog_compiler_wl_CXX \ + lt_prog_compiler_pic_CXX \ + lt_prog_compiler_static_CXX \ + lt_prog_compiler_no_builtin_flag_CXX \ + export_dynamic_flag_spec_CXX \ + thread_safe_flag_spec_CXX \ + whole_archive_flag_spec_CXX \ + enable_shared_with_static_runtimes_CXX \ + old_archive_cmds_CXX \ + old_archive_from_new_cmds_CXX \ + predep_objects_CXX \ + postdep_objects_CXX \ + predeps_CXX \ + postdeps_CXX \ + compiler_lib_search_path_CXX \ + compiler_lib_search_dirs_CXX \ + archive_cmds_CXX \ + archive_expsym_cmds_CXX \ + postinstall_cmds_CXX \ + postuninstall_cmds_CXX \ + old_archive_from_expsyms_cmds_CXX \ + allow_undefined_flag_CXX \ + no_undefined_flag_CXX \ + export_symbols_cmds_CXX \ + hardcode_libdir_flag_spec_CXX \ + hardcode_libdir_flag_spec_ld_CXX \ + hardcode_libdir_separator_CXX \ + hardcode_automatic_CXX \ + module_cmds_CXX \ + module_expsym_cmds_CXX \ + lt_cv_prog_compiler_c_o_CXX \ + fix_srcfile_path_CXX \ + exclude_expsyms_CXX \ + include_expsyms_CXX; do + + case $var in + old_archive_cmds_CXX | \ + old_archive_from_new_cmds_CXX | \ + archive_cmds_CXX | \ + archive_expsym_cmds_CXX | \ + module_cmds_CXX | \ + module_expsym_cmds_CXX | \ + old_archive_from_expsyms_cmds_CXX | \ + export_symbols_cmds_CXX | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_CXX + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler_CXX + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_CXX + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_CXX + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_CXX +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_CXX + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_CXX +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_CXX +archive_expsym_cmds=$lt_archive_expsym_cmds_CXX +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_CXX +module_expsym_cmds=$lt_module_expsym_cmds_CXX + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_CXX + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_CXX + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_CXX + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_CXX + +# The directories searched by this compiler when creating a shared +# library +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_CXX + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_CXX + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_CXX + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_CXX + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_CXX + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_CXX + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_CXX + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_CXX + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path=$lt_fix_srcfile_path + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_CXX + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_CXX + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_CXX + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_CXX + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC=$lt_save_CC +LDCXX=$LD +LD=$lt_save_LD +GCC=$lt_save_GCC +with_gnu_ldcxx=$with_gnu_ld +with_gnu_ld=$lt_save_with_gnu_ld +lt_cv_path_LDCXX=$lt_cv_path_LD +lt_cv_path_LD=$lt_save_path_LD +lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld +lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld + + else + tagname="" + fi + ;; + + F77) + if test -n "$F77" && test "X$F77" != "Xno"; then + +ac_ext=f +ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' +ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_f77_compiler_gnu + + +archive_cmds_need_lc_F77=no +allow_undefined_flag_F77= +always_export_symbols_F77=no +archive_expsym_cmds_F77= +export_dynamic_flag_spec_F77= +hardcode_direct_F77=no +hardcode_libdir_flag_spec_F77= +hardcode_libdir_flag_spec_ld_F77= +hardcode_libdir_separator_F77= +hardcode_minus_L_F77=no +hardcode_automatic_F77=no +module_cmds_F77= +module_expsym_cmds_F77= +link_all_deplibs_F77=unknown +old_archive_cmds_F77=$old_archive_cmds +no_undefined_flag_F77= +whole_archive_flag_spec_F77= +enable_shared_with_static_runtimes_F77=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +objext_F77=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="\ + subroutine t + return + end +" + +# Code to be used in simple link tests +lt_simple_link_test_code="\ + program t + end +" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm -r conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${F77-"f77"} +compiler=$CC +compiler_F77=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +{ $as_echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } +{ $as_echo "$as_me:$LINENO: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } + +{ $as_echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case $host_os in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; +aix[4-9]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +{ $as_echo "$as_me:$LINENO: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } + +{ $as_echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +{ $as_echo "$as_me:$LINENO: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } + +GCC_F77="$G77" +LD_F77="$LD" + +lt_prog_compiler_wl_F77= +lt_prog_compiler_pic_F77= +lt_prog_compiler_static_F77= + +{ $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } + + if test "$GCC" = yes; then + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_static_F77='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_F77='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic_F77='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_F77='-fno-common' + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared_F77=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_F77=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_F77='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic_F77='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl_F77='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_F77='-Bstatic' + else + lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_F77='-qnocommon' + lt_prog_compiler_wl_F77='-Wl,' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_F77='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl_F77='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_F77='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static_F77='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl_F77='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static_F77='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-fpic' + lt_prog_compiler_static_F77='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl_F77='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static_F77='-non_shared' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + lt_prog_compiler_wl_F77='-Wl,' + ;; + *Sun\ F*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + lt_prog_compiler_wl_F77='' + ;; + esac + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl_F77='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static_F77='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static_F77='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl_F77='-Qoption ld ';; + *) + lt_prog_compiler_wl_F77='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl_F77='-Qoption ld ' + lt_prog_compiler_pic_F77='-PIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic_F77='-Kconform_pic' + lt_prog_compiler_static_F77='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_can_build_shared_F77=no + ;; + + uts4*) + lt_prog_compiler_pic_F77='-pic' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared_F77=no + ;; + esac + fi + +{ $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 +$as_echo "$lt_prog_compiler_pic_F77" >&6; } + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_F77"; then + +{ $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... " >&6; } +if test "${lt_cv_prog_compiler_pic_works_F77+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works_F77=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_F77" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:__oline__: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works_F77=yes + fi + fi + $rm conftest* + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_F77" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works_F77" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works_F77" = xyes; then + case $lt_prog_compiler_pic_F77 in + "" | " "*) ;; + *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;; + esac +else + lt_prog_compiler_pic_F77= + lt_prog_compiler_can_build_shared_F77=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_F77= + ;; + *) + lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\" +{ $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if test "${lt_cv_prog_compiler_static_works_F77+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works_F77=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works_F77=yes + fi + else + lt_cv_prog_compiler_static_works_F77=yes + fi + fi + $rm -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_F77" >&5 +$as_echo "$lt_cv_prog_compiler_static_works_F77" >&6; } + +if test x"$lt_cv_prog_compiler_static_works_F77" = xyes; then + : +else + lt_prog_compiler_static_F77= +fi + + +{ $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_F77=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:__oline__: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_F77=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_F77" >&6; } + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:$LINENO: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test "$hard_links" = no; then + { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +{ $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag_F77= + enable_shared_with_static_runtimes_F77=no + archive_cmds_F77= + archive_expsym_cmds_F77= + old_archive_From_new_cmds_F77= + old_archive_from_expsyms_cmds_F77= + export_dynamic_flag_spec_F77= + whole_archive_flag_spec_F77= + thread_safe_flag_spec_F77= + hardcode_libdir_flag_spec_F77= + hardcode_libdir_flag_spec_ld_F77= + hardcode_libdir_separator_F77= + hardcode_direct_F77=no + hardcode_minus_L_F77=no + hardcode_shlibpath_var_F77=unsupported + link_all_deplibs_F77=unknown + hardcode_automatic_F77=no + module_cmds_F77= + module_expsym_cmds_F77= + always_export_symbols_F77=no + export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms_F77= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms_F77='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs_F77=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_F77='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_F77= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs_F77=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs_F77=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_F77=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_F77=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_F77='-L$libdir' + allow_undefined_flag_F77=unsupported + always_export_symbols_F77=no + enable_shared_with_static_runtimes_F77=yes + export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_F77=no + fi + ;; + + interix[3-9]*) + hardcode_direct_F77=no + hardcode_shlibpath_var_F77=no + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + export_dynamic_flag_spec_F77='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | k*bsd*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec_F77='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + *) + tmp_sharedflag='-shared' ;; + esac + archive_cmds_F77='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + ld_shlibs_F77=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs_F77=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs_F77=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + esac + + if test "$ld_shlibs_F77" = no; then + runpath_var= + hardcode_libdir_flag_spec_F77= + export_dynamic_flag_spec_F77= + whole_archive_flag_spec_F77= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag_F77=unsupported + always_export_symbols_F77=yes + archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L_F77=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct_F77=unsupported + fi + ;; + + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_F77='' + hardcode_direct_F77=yes + hardcode_libdir_separator_F77=':' + link_all_deplibs_F77=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct_F77=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_F77=yes + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_libdir_separator_F77= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_F77=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_F77='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_F77="-z nodefs" + archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_F77=' ${wl}-bernotok' + allow_undefined_flag_F77=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_F77='$convenience' + archive_cmds_need_lc_F77=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + # see comment about different semantics on the GNU ld section + ld_shlibs_F77=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec_F77=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_F77=' ' + allow_undefined_flag_F77=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds_F77='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds_F77='lib -OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path_F77='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes_F77=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag_F77='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_F77=no + hardcode_direct_F77=no + hardcode_automatic_F77=yes + hardcode_shlibpath_var_F77=unsupported + whole_archive_flag_spec_F77='' + link_all_deplibs_F77=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds_F77="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds_F77="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds_F77="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds_F77="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' + module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_F77=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_shlibpath_var_F77=no + ;; + + freebsd1*) + ld_shlibs_F77=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_minus_L_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + hardcode_direct_F77=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + + hardcode_direct_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_libdir_flag_spec_ld_F77='+b $libdir' + hardcode_direct_F77=no + hardcode_shlibpath_var_F77=no + ;; + *) + hardcode_direct_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld_F77='-rpath $libdir' + fi + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + link_all_deplibs_F77=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + newsos6) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + hardcode_shlibpath_var_F77=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + export_dynamic_flag_spec_F77='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-R$libdir' + ;; + *) + archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs_F77=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + allow_undefined_flag_F77=unsupported + archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag_F77=' -expect_unresolved \*' + archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag_F77=' -expect_unresolved \*' + archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec_F77='-rpath $libdir' + fi + hardcode_libdir_separator_F77=: + ;; + + solaris*) + no_undefined_flag_F77=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_shlibpath_var_F77=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + whole_archive_flag_spec_F77='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs_F77=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_direct_F77=yes + hardcode_minus_L_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds_F77='$CC -r -o $output$reload_objs' + hardcode_direct_F77=no + ;; + motorola) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_F77=no + ;; + + sysv4.3*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + export_dynamic_flag_spec_F77='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs_F77=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag_F77='${wl}-z,text' + archive_cmds_need_lc_F77=no + hardcode_shlibpath_var_F77=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_F77='${wl}-z,text' + allow_undefined_flag_F77='${wl}-z,nodefs' + archive_cmds_need_lc_F77=no + hardcode_shlibpath_var_F77=no + hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator_F77=':' + link_all_deplibs_F77=yes + export_dynamic_flag_spec_F77='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_shlibpath_var_F77=no + ;; + + *) + ld_shlibs_F77=no + ;; + esac + fi + +{ $as_echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 +$as_echo "$ld_shlibs_F77" >&6; } +test "$ld_shlibs_F77" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_F77" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_F77=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_F77 in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } + $rm conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_F77 + pic_flag=$lt_prog_compiler_pic_F77 + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_F77 + allow_undefined_flag_F77= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_F77=no + else + archive_cmds_need_lc_F77=yes + fi + allow_undefined_flag_F77=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 +$as_echo "$archive_cmds_need_lc_F77" >&6; } + ;; + esac + fi + ;; +esac + +{ $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" + +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[4-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix[3-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" +fi + +sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" +fi + +sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +{ $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action_F77= +if test -n "$hardcode_libdir_flag_spec_F77" || \ + test -n "$runpath_var_F77" || \ + test "X$hardcode_automatic_F77" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_F77" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no && + test "$hardcode_minus_L_F77" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_F77=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_F77=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_F77=unsupported +fi +{ $as_echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 +$as_echo "$hardcode_action_F77" >&6; } + +if test "$hardcode_action_F77" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_F77 \ + CC_F77 \ + LD_F77 \ + lt_prog_compiler_wl_F77 \ + lt_prog_compiler_pic_F77 \ + lt_prog_compiler_static_F77 \ + lt_prog_compiler_no_builtin_flag_F77 \ + export_dynamic_flag_spec_F77 \ + thread_safe_flag_spec_F77 \ + whole_archive_flag_spec_F77 \ + enable_shared_with_static_runtimes_F77 \ + old_archive_cmds_F77 \ + old_archive_from_new_cmds_F77 \ + predep_objects_F77 \ + postdep_objects_F77 \ + predeps_F77 \ + postdeps_F77 \ + compiler_lib_search_path_F77 \ + compiler_lib_search_dirs_F77 \ + archive_cmds_F77 \ + archive_expsym_cmds_F77 \ + postinstall_cmds_F77 \ + postuninstall_cmds_F77 \ + old_archive_from_expsyms_cmds_F77 \ + allow_undefined_flag_F77 \ + no_undefined_flag_F77 \ + export_symbols_cmds_F77 \ + hardcode_libdir_flag_spec_F77 \ + hardcode_libdir_flag_spec_ld_F77 \ + hardcode_libdir_separator_F77 \ + hardcode_automatic_F77 \ + module_cmds_F77 \ + module_expsym_cmds_F77 \ + lt_cv_prog_compiler_c_o_F77 \ + fix_srcfile_path_F77 \ + exclude_expsyms_F77 \ + include_expsyms_F77; do + + case $var in + old_archive_cmds_F77 | \ + old_archive_from_new_cmds_F77 | \ + archive_cmds_F77 | \ + archive_expsym_cmds_F77 | \ + module_cmds_F77 | \ + module_expsym_cmds_F77 | \ + old_archive_from_expsyms_cmds_F77 | \ + export_symbols_cmds_F77 | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_F77 + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77 + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler_F77 + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_F77 + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_F77 + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_F77 + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_F77 +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_F77 + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77 + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77 + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77 + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77 + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_F77 +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77 + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77 + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_F77 +archive_expsym_cmds=$lt_archive_expsym_cmds_F77 +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_F77 +module_expsym_cmds=$lt_module_expsym_cmds_F77 + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_F77 + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_F77 + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_F77 + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_F77 + +# The directories searched by this compiler when creating a shared +# library +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_F77 + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_F77 + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_F77 + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_F77 + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_F77 + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77 + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77 + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77 + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_F77 + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_F77 + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_F77 + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_F77 + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_F77 + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path=$lt_fix_srcfile_path + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_F77 + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_F77 + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_F77 + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_F77 + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + else + tagname="" + fi + ;; + + GCJ) + if test -n "$GCJ" && test "X$GCJ" != "Xno"; then + + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +objext_GCJ=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm -r conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${GCJ-"gcj"} +compiler=$CC +compiler_GCJ=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +archive_cmds_need_lc_GCJ=no + +old_archive_cmds_GCJ=$old_archive_cmds + + +lt_prog_compiler_no_builtin_flag_GCJ= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' + + +{ $as_echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:__oline__: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $rm conftest* + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" +else + : +fi + +fi + +lt_prog_compiler_wl_GCJ= +lt_prog_compiler_pic_GCJ= +lt_prog_compiler_static_GCJ= + +{ $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } + + if test "$GCC" = yes; then + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_static_GCJ='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_GCJ='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_GCJ='-fno-common' + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared_GCJ=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_GCJ=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_GCJ='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic_GCJ='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl_GCJ='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_GCJ='-Bstatic' + else + lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_GCJ='-qnocommon' + lt_prog_compiler_wl_GCJ='-Wl,' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl_GCJ='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_GCJ='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl_GCJ='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-fpic' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl_GCJ='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + lt_prog_compiler_wl_GCJ='-Wl,' + ;; + *Sun\ F*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + lt_prog_compiler_wl_GCJ='' + ;; + esac + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl_GCJ='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl_GCJ='-Qoption ld ';; + *) + lt_prog_compiler_wl_GCJ='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl_GCJ='-Qoption ld ' + lt_prog_compiler_pic_GCJ='-PIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic_GCJ='-Kconform_pic' + lt_prog_compiler_static_GCJ='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_can_build_shared_GCJ=no + ;; + + uts4*) + lt_prog_compiler_pic_GCJ='-pic' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared_GCJ=no + ;; + esac + fi + +{ $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 +$as_echo "$lt_prog_compiler_pic_GCJ" >&6; } + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_GCJ"; then + +{ $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... " >&6; } +if test "${lt_cv_prog_compiler_pic_works_GCJ+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works_GCJ=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_GCJ" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:__oline__: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works_GCJ=yes + fi + fi + $rm conftest* + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_GCJ" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works_GCJ" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works_GCJ" = xyes; then + case $lt_prog_compiler_pic_GCJ in + "" | " "*) ;; + *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;; + esac +else + lt_prog_compiler_pic_GCJ= + lt_prog_compiler_can_build_shared_GCJ=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_GCJ= + ;; + *) + lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\" +{ $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if test "${lt_cv_prog_compiler_static_works_GCJ+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works_GCJ=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works_GCJ=yes + fi + else + lt_cv_prog_compiler_static_works_GCJ=yes + fi + fi + $rm -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_GCJ" >&5 +$as_echo "$lt_cv_prog_compiler_static_works_GCJ" >&6; } + +if test x"$lt_cv_prog_compiler_static_works_GCJ" = xyes; then + : +else + lt_prog_compiler_static_GCJ= +fi + + +{ $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_GCJ=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:__oline__: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:__oline__: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_GCJ=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_GCJ" >&6; } + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:$LINENO: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test "$hard_links" = no; then + { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +{ $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag_GCJ= + enable_shared_with_static_runtimes_GCJ=no + archive_cmds_GCJ= + archive_expsym_cmds_GCJ= + old_archive_From_new_cmds_GCJ= + old_archive_from_expsyms_cmds_GCJ= + export_dynamic_flag_spec_GCJ= + whole_archive_flag_spec_GCJ= + thread_safe_flag_spec_GCJ= + hardcode_libdir_flag_spec_GCJ= + hardcode_libdir_flag_spec_ld_GCJ= + hardcode_libdir_separator_GCJ= + hardcode_direct_GCJ=no + hardcode_minus_L_GCJ=no + hardcode_shlibpath_var_GCJ=unsupported + link_all_deplibs_GCJ=unknown + hardcode_automatic_GCJ=no + module_cmds_GCJ= + module_expsym_cmds_GCJ= + always_export_symbols_GCJ=no + export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms_GCJ= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms_GCJ='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs_GCJ=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_GCJ= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs_GCJ=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs_GCJ=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_GCJ=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_GCJ='-L$libdir' + allow_undefined_flag_GCJ=unsupported + always_export_symbols_GCJ=no + enable_shared_with_static_runtimes_GCJ=yes + export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + interix[3-9]*) + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + export_dynamic_flag_spec_GCJ='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_GCJ='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | k*bsd*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec_GCJ='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + *) + tmp_sharedflag='-shared' ;; + esac + archive_cmds_GCJ='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + ld_shlibs_GCJ=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs_GCJ=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs_GCJ=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + esac + + if test "$ld_shlibs_GCJ" = no; then + runpath_var= + hardcode_libdir_flag_spec_GCJ= + export_dynamic_flag_spec_GCJ= + whole_archive_flag_spec_GCJ= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag_GCJ=unsupported + always_export_symbols_GCJ=yes + archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L_GCJ=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct_GCJ=unsupported + fi + ;; + + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_GCJ='' + hardcode_direct_GCJ=yes + hardcode_libdir_separator_GCJ=':' + link_all_deplibs_GCJ=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct_GCJ=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_GCJ=yes + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_libdir_separator_GCJ= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_GCJ=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_GCJ='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_GCJ="-z nodefs" + archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_GCJ=' ${wl}-bernotok' + allow_undefined_flag_GCJ=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_GCJ='$convenience' + archive_cmds_need_lc_GCJ=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + # see comment about different semantics on the GNU ld section + ld_shlibs_GCJ=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec_GCJ=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_GCJ=' ' + allow_undefined_flag_GCJ=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds_GCJ='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds_GCJ='lib -OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes_GCJ=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_GCJ=no + hardcode_direct_GCJ=no + hardcode_automatic_GCJ=yes + hardcode_shlibpath_var_GCJ=unsupported + whole_archive_flag_spec_GCJ='' + link_all_deplibs_GCJ=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds_GCJ="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds_GCJ="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds_GCJ="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds_GCJ="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' + module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_GCJ=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_shlibpath_var_GCJ=no + ;; + + freebsd1*) + ld_shlibs_GCJ=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_direct_GCJ=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + + hardcode_direct_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no + ;; + *) + hardcode_direct_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir' + fi + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + link_all_deplibs_GCJ=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + newsos6) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_shlibpath_var_GCJ=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + export_dynamic_flag_spec_GCJ='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + ;; + *) + archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs_GCJ=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + allow_undefined_flag_GCJ=unsupported + archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag_GCJ=' -expect_unresolved \*' + archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag_GCJ=' -expect_unresolved \*' + archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec_GCJ='-rpath $libdir' + fi + hardcode_libdir_separator_GCJ=: + ;; + + solaris*) + no_undefined_flag_GCJ=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_shlibpath_var_GCJ=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs_GCJ=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds_GCJ='$CC -r -o $output$reload_objs' + hardcode_direct_GCJ=no + ;; + motorola) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_GCJ=no + ;; + + sysv4.3*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + export_dynamic_flag_spec_GCJ='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs_GCJ=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag_GCJ='${wl}-z,text' + archive_cmds_need_lc_GCJ=no + hardcode_shlibpath_var_GCJ=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_GCJ='${wl}-z,text' + allow_undefined_flag_GCJ='${wl}-z,nodefs' + archive_cmds_need_lc_GCJ=no + hardcode_shlibpath_var_GCJ=no + hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator_GCJ=':' + link_all_deplibs_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_shlibpath_var_GCJ=no + ;; + + *) + ld_shlibs_GCJ=no + ;; + esac + fi + +{ $as_echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 +$as_echo "$ld_shlibs_GCJ" >&6; } +test "$ld_shlibs_GCJ" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_GCJ" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_GCJ=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_GCJ in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } + $rm conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_GCJ + pic_flag=$lt_prog_compiler_pic_GCJ + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ + allow_undefined_flag_GCJ= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_GCJ=no + else + archive_cmds_need_lc_GCJ=yes + fi + allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 +$as_echo "$archive_cmds_need_lc_GCJ" >&6; } + ;; + esac + fi + ;; +esac + +{ $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" + +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[4-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix[3-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" +fi + +sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" +fi + +sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +{ $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action_GCJ= +if test -n "$hardcode_libdir_flag_spec_GCJ" || \ + test -n "$runpath_var_GCJ" || \ + test "X$hardcode_automatic_GCJ" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_GCJ" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && + test "$hardcode_minus_L_GCJ" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_GCJ=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_GCJ=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_GCJ=unsupported +fi +{ $as_echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 +$as_echo "$hardcode_action_GCJ" >&6; } + +if test "$hardcode_action_GCJ" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_GCJ \ + CC_GCJ \ + LD_GCJ \ + lt_prog_compiler_wl_GCJ \ + lt_prog_compiler_pic_GCJ \ + lt_prog_compiler_static_GCJ \ + lt_prog_compiler_no_builtin_flag_GCJ \ + export_dynamic_flag_spec_GCJ \ + thread_safe_flag_spec_GCJ \ + whole_archive_flag_spec_GCJ \ + enable_shared_with_static_runtimes_GCJ \ + old_archive_cmds_GCJ \ + old_archive_from_new_cmds_GCJ \ + predep_objects_GCJ \ + postdep_objects_GCJ \ + predeps_GCJ \ + postdeps_GCJ \ + compiler_lib_search_path_GCJ \ + compiler_lib_search_dirs_GCJ \ + archive_cmds_GCJ \ + archive_expsym_cmds_GCJ \ + postinstall_cmds_GCJ \ + postuninstall_cmds_GCJ \ + old_archive_from_expsyms_cmds_GCJ \ + allow_undefined_flag_GCJ \ + no_undefined_flag_GCJ \ + export_symbols_cmds_GCJ \ + hardcode_libdir_flag_spec_GCJ \ + hardcode_libdir_flag_spec_ld_GCJ \ + hardcode_libdir_separator_GCJ \ + hardcode_automatic_GCJ \ + module_cmds_GCJ \ + module_expsym_cmds_GCJ \ + lt_cv_prog_compiler_c_o_GCJ \ + fix_srcfile_path_GCJ \ + exclude_expsyms_GCJ \ + include_expsyms_GCJ; do + + case $var in + old_archive_cmds_GCJ | \ + old_archive_from_new_cmds_GCJ | \ + archive_cmds_GCJ | \ + archive_expsym_cmds_GCJ | \ + module_cmds_GCJ | \ + module_expsym_cmds_GCJ | \ + old_archive_from_expsyms_cmds_GCJ | \ + export_symbols_cmds_GCJ | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_GCJ + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler_GCJ + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_GCJ + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_GCJ + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_GCJ + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_GCJ +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_GCJ + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_GCJ +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_GCJ +archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_GCJ +module_expsym_cmds=$lt_module_expsym_cmds_GCJ + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_GCJ + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_GCJ + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_GCJ + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_GCJ + +# The directories searched by this compiler when creating a shared +# library +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_GCJ + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_GCJ + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_GCJ + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_GCJ + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_GCJ + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_GCJ + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_GCJ + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_GCJ + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path=$lt_fix_srcfile_path + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_GCJ + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_GCJ + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_GCJ + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_GCJ + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + else + tagname="" + fi + ;; + + RC) + + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +objext_RC=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm -r conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${RC-"windres"} +compiler=$CC +compiler_RC=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + +lt_cv_prog_compiler_c_o_RC=yes + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_RC \ + CC_RC \ + LD_RC \ + lt_prog_compiler_wl_RC \ + lt_prog_compiler_pic_RC \ + lt_prog_compiler_static_RC \ + lt_prog_compiler_no_builtin_flag_RC \ + export_dynamic_flag_spec_RC \ + thread_safe_flag_spec_RC \ + whole_archive_flag_spec_RC \ + enable_shared_with_static_runtimes_RC \ + old_archive_cmds_RC \ + old_archive_from_new_cmds_RC \ + predep_objects_RC \ + postdep_objects_RC \ + predeps_RC \ + postdeps_RC \ + compiler_lib_search_path_RC \ + compiler_lib_search_dirs_RC \ + archive_cmds_RC \ + archive_expsym_cmds_RC \ + postinstall_cmds_RC \ + postuninstall_cmds_RC \ + old_archive_from_expsyms_cmds_RC \ + allow_undefined_flag_RC \ + no_undefined_flag_RC \ + export_symbols_cmds_RC \ + hardcode_libdir_flag_spec_RC \ + hardcode_libdir_flag_spec_ld_RC \ + hardcode_libdir_separator_RC \ + hardcode_automatic_RC \ + module_cmds_RC \ + module_expsym_cmds_RC \ + lt_cv_prog_compiler_c_o_RC \ + fix_srcfile_path_RC \ + exclude_expsyms_RC \ + include_expsyms_RC; do + + case $var in + old_archive_cmds_RC | \ + old_archive_from_new_cmds_RC | \ + archive_cmds_RC | \ + archive_expsym_cmds_RC | \ + module_cmds_RC | \ + module_expsym_cmds_RC | \ + old_archive_from_expsyms_cmds_RC | \ + export_symbols_cmds_RC | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_RC + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler_RC + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_RC + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_RC + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_RC + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_RC +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_RC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_RC +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_RC +archive_expsym_cmds=$lt_archive_expsym_cmds_RC +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_RC +module_expsym_cmds=$lt_module_expsym_cmds_RC + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_RC + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_RC + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_RC + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_RC + +# The directories searched by this compiler when creating a shared +# library +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_RC + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_RC + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_RC + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_RC + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_RC + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_RC + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_RC + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_RC + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_RC + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_RC + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path=$lt_fix_srcfile_path + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_RC + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_RC + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_RC + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_RC + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + ;; + + *) + { { $as_echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 +$as_echo "$as_me: error: Unsupported tag name: $tagname" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + + # Append the new tag name to the list of available tags. + if test -n "$tagname" ; then + available_tags="$available_tags $tagname" + fi + fi + done + IFS="$lt_save_ifs" + + # Now substitute the updated list of available tags. + if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then + mv "${ofile}T" "$ofile" + chmod +x "$ofile" + else + rm -f "${ofile}T" + { { $as_echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 +$as_echo "$as_me: error: unable to update list of available tagged configurations." >&2;} + { (exit 1); exit 1; }; } + fi +fi + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + +# Prevent multiple expansion + + + + + + + + + + + + + + + + + + + + + +for ac_prog in flex lex +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_LEX+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$LEX"; then + ac_cv_prog_LEX="$LEX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_LEX="$ac_prog" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +LEX=$ac_cv_prog_LEX +if test -n "$LEX"; then + { $as_echo "$as_me:$LINENO: result: $LEX" >&5 +$as_echo "$LEX" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$LEX" && break +done +test -n "$LEX" || LEX=":" + +if test "x$LEX" != "x:"; then + cat >conftest.l <<_ACEOF +%% +a { ECHO; } +b { REJECT; } +c { yymore (); } +d { yyless (1); } +e { yyless (input () != 0); } +f { unput (yytext[0]); } +. { BEGIN INITIAL; } +%% +#ifdef YYTEXT_POINTER +extern char *yytext; +#endif +int +main (void) +{ + return ! yylex () + ! yywrap (); +} +_ACEOF +{ (ac_try="$LEX conftest.l" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$LEX conftest.l") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ $as_echo "$as_me:$LINENO: checking lex output file root" >&5 +$as_echo_n "checking lex output file root... " >&6; } +if test "${ac_cv_prog_lex_root+set}" = set; then + $as_echo_n "(cached) " >&6 +else + +if test -f lex.yy.c; then + ac_cv_prog_lex_root=lex.yy +elif test -f lexyy.c; then + ac_cv_prog_lex_root=lexyy +else + { { $as_echo "$as_me:$LINENO: error: cannot find output from $LEX; giving up" >&5 +$as_echo "$as_me: error: cannot find output from $LEX; giving up" >&2;} + { (exit 1); exit 1; }; } +fi +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_lex_root" >&5 +$as_echo "$ac_cv_prog_lex_root" >&6; } +LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root + +if test -z "${LEXLIB+set}"; then + { $as_echo "$as_me:$LINENO: checking lex library" >&5 +$as_echo_n "checking lex library... " >&6; } +if test "${ac_cv_lib_lex+set}" = set; then + $as_echo_n "(cached) " >&6 +else + + ac_save_LIBS=$LIBS + ac_cv_lib_lex='none needed' + for ac_lib in '' -lfl -ll; do + LIBS="$ac_lib $ac_save_LIBS" + cat >conftest.$ac_ext <<_ACEOF +`cat $LEX_OUTPUT_ROOT.c` +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_lib_lex=$ac_lib +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + test "$ac_cv_lib_lex" != 'none needed' && break + done + LIBS=$ac_save_LIBS + +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_lex" >&5 +$as_echo "$ac_cv_lib_lex" >&6; } + test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex +fi + + +{ $as_echo "$as_me:$LINENO: checking whether yytext is a pointer" >&5 +$as_echo_n "checking whether yytext is a pointer... " >&6; } +if test "${ac_cv_prog_lex_yytext_pointer+set}" = set; then + $as_echo_n "(cached) " >&6 +else + # POSIX says lex can declare yytext either as a pointer or an array; the +# default is implementation-dependent. Figure out which it is, since +# not all implementations provide the %pointer and %array declarations. +ac_cv_prog_lex_yytext_pointer=no +ac_save_LIBS=$LIBS +LIBS="$LEXLIB $ac_save_LIBS" +cat >conftest.$ac_ext <<_ACEOF +#define YYTEXT_POINTER 1 +`cat $LEX_OUTPUT_ROOT.c` +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_prog_lex_yytext_pointer=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_save_LIBS + +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_lex_yytext_pointer" >&5 +$as_echo "$ac_cv_prog_lex_yytext_pointer" >&6; } +if test $ac_cv_prog_lex_yytext_pointer = yes; then + +cat >>confdefs.h <<\_ACEOF +@%:@define YYTEXT_POINTER 1 +_ACEOF + +fi +rm -f conftest.l $LEX_OUTPUT_ROOT.c + +fi +if test "$LEX" = :; then + LEX=${am_missing_run}flex +fi +if test Z"$LEX" != Zflex; then +cat <&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_YACC+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$YACC"; then + ac_cv_prog_YACC="$YACC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_YACC="$ac_prog" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +YACC=$ac_cv_prog_YACC +if test -n "$YACC"; then + { $as_echo "$as_me:$LINENO: result: $YACC" >&5 +$as_echo "$YACC" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$YACC" && break +done +test -n "$YACC" || YACC="yacc" + +if test Z"$YACC" != "Zbison -y"; then +cat <&5 +$as_echo_n "checking for compiler switch to enable full C/C++ warnings... " >&6; }; + + +case "${CC}" in + +gcc) + warn_c_sw="-Wall -Wshadow -Wdeclaration-after-statement" + warn_cxx_sw="-Wall -Wshadow";; +*) + warn_cxx_sw="" + warn_c_sw="";; +esac + +if test -n "${warn_c_sw}"; +then + CFLAGS="${CFLAGS} ${warn_c_sw}"; + CXXFLAGS="${CXXFLAGS} ${warn_cxx_sw}"; + { $as_echo "$as_me:$LINENO: result: ${warn_c_sw}, ${warn_cxx_sw}" >&5 +$as_echo "${warn_c_sw}, ${warn_cxx_sw}" >&6; } +else + { $as_echo "$as_me:$LINENO: result: (cannot determine)" >&5 +$as_echo "(cannot determine)" >&6; } +fi; + + +{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if test "${ac_cv_header_stdc+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_header_stdc=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_header_stdc=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + +fi +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +@%:@define STDC_HEADERS 1 +_ACEOF + +fi + + + + +for ac_header in unistd.h stdint.h xlocale.h +do +as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +$as_echo_n "checking $ac_header usability... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +@%:@include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +$as_echo_n "checking $ac_header presence... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +@%:@include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + + ;; +esac +{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + +fi +as_val=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +{ $as_echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 +$as_echo_n "checking for an ANSI C-conforming const... " >&6; } +if test "${ac_cv_c_const+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +/* FIXME: Include the comments suggested by Paul. */ +#ifndef __cplusplus + /* Ultrix mips cc rejects this. */ + typedef int charset[2]; + const charset cs; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + if (s) return 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* AIX XL C 1.02.0.0 rejects this saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; }; + struct s *b; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_c_const=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_c_const=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 +$as_echo "$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +cat >>confdefs.h <<\_ACEOF +@%:@define const /**/ +_ACEOF + +fi + + + + + + +for ac_func in newlocale uselocale freelocale +do +as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +$as_echo_n "checking for $ac_func... " >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + eval "$as_ac_var=yes" +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +as_val=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +@%:@define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + +@%:@ Check whether --enable-cxx was given. +if test "${enable_cxx+set}" = set; then + enableval=$enable_cxx; docxx=no +else + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CXX+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { $as_echo "$as_me:$LINENO: result: $CXX" >&5 +$as_echo "$CXX" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { $as_echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +$as_echo "$as_me:$LINENO: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_compiler_gnu=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ $as_echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if test "${ac_cv_prog_cxx_g+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cxx_g=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + CXXFLAGS="" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cxx_g=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +depcc="$CXX" am_compiler_list= + +{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi + + +docxx=yes + + +fi + + + if test x$docxx = xyes; then + BUILDCXX_TRUE= + BUILDCXX_FALSE='#' +else + BUILDCXX_TRUE='#' + BUILDCXX_FALSE= +fi + + + +case "$target" in + *-*-cygwin* | *-*-mingw*) + gnuwin=yes;; +esac + + if test x$gnuwin = xyes; then + GNU_WIN_TRUE= + GNU_WIN_FALSE='#' +else + GNU_WIN_TRUE='#' + GNU_WIN_FALSE= +fi + + + +ac_config_files="$ac_config_files Makefile doc/Makefile samples/Makefile samples/c/Makefile samples/c++/Makefile libconfig.pc libconfig++.pc libconfig.spec" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + test "x$cache_file" != "x/dev/null" && + { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + cat confcache >$cache_file + else + { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIB@&t@OBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIB@&t@OBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +$as_echo "$as_me: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +$as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +$as_echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +$as_echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${BUILDCXX_TRUE}" && test -z "${BUILDCXX_FALSE}"; then + { { $as_echo "$as_me:$LINENO: error: conditional \"BUILDCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +$as_echo "$as_me: error: conditional \"BUILDCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${GNU_WIN_TRUE}" && test -z "${GNU_WIN_FALSE}"; then + { { $as_echo "$as_me:$LINENO: error: conditional \"GNU_WIN\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +$as_echo "$as_me: error: conditional \"GNU_WIN\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi + +: ${CONFIG_STATUS=./config.status} +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + +# Work around bugs in pre-3.0 UWIN ksh. +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# CDPATH. +$as_unset CDPATH + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; +esac +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 + +# Save the log message, to keep $[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by $as_me, which was +generated by GNU Autoconf 2.63. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTION]... [FILE]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_version="\\ +config.status +configured by $0, generated by GNU Autoconf 2.63, + with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" + +Copyright (C) 2008 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + CONFIG_FILES="$CONFIG_FILES '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + CONFIG_HEADERS="$CONFIG_HEADERS '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + { $as_echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { $as_echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../@%:@@%:@ /;s/...$/ @%:@@%:@/;p;x;p;x' <<_ASBOX +@%:@@%:@ Running $as_me. @%:@@%:@ +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "ac_config.h") CONFIG_HEADERS="$CONFIG_HEADERS ac_config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "samples/Makefile") CONFIG_FILES="$CONFIG_FILES samples/Makefile" ;; + "samples/c/Makefile") CONFIG_FILES="$CONFIG_FILES samples/c/Makefile" ;; + "samples/c++/Makefile") CONFIG_FILES="$CONFIG_FILES samples/c++/Makefile" ;; + "libconfig.pc") CONFIG_FILES="$CONFIG_FILES libconfig.pc" ;; + "libconfig++.pc") CONFIG_FILES="$CONFIG_FILES libconfig++.pc" ;; + "libconfig.spec") CONFIG_FILES="$CONFIG_FILES libconfig.spec" ;; + + *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +$as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= + trap 'exit_status=$? + { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status +' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || +{ + $as_echo "$as_me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=' ' +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } +ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\).*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\).*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ + || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5 +$as_echo "$as_me: error: could not setup config files machinery" >&2;} + { (exit 1); exit 1; }; } +_ACEOF + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/ +s/:*\${srcdir}:*/:/ +s/:*@srcdir@:*/:/ +s/^\([^=]*=[ ]*\):*/\1/ +s/:*$// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_t=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_t"; then + break + elif $ac_last_try; then + { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_HEADERS" >&5 +$as_echo "$as_me: error: could not make $CONFIG_HEADERS" >&2;} + { (exit 1); exit 1; }; } + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + { { $as_echo "$as_me:$LINENO: error: could not setup config headers machinery" >&5 +$as_echo "$as_me: error: could not setup config headers machinery" >&2;} + { (exit 1); exit 1; }; } +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5 +$as_echo "$as_me: error: invalid tag $ac_tag" >&2;} + { (exit 1); exit 1; }; };; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 +$as_echo "$as_me: error: cannot find input file: $ac_f" >&2;} + { (exit 1); exit 1; }; };; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + ac_file_inputs="$ac_file_inputs '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:$LINENO: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$tmp/stdin" \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} + { (exit 1); exit 1; }; } ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { as_dir="$ac_dir" + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +$as_echo "$as_me: error: cannot create directory $as_dir" >&2;} + { (exit 1); exit 1; }; }; } + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= + +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p +' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} + { (exit 1); exit 1; }; } + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&2;} + + rm -f "$tmp/stdin" + case $ac_file in + -) cat "$tmp/out" && rm -f "$tmp/out";; + *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; + esac \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} + { (exit 1); exit 1; }; } + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" + } >"$tmp/config.h" \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} + { (exit 1); exit 1; }; } + if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$tmp/config.h" "$ac_file" \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} + { (exit 1); exit 1; }; } + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ + || { { $as_echo "$as_me:$LINENO: error: could not create -" >&5 +$as_echo "$as_me: error: could not create -" >&2;} + { (exit 1); exit 1; }; } + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { as_dir=$dirpart/$fdir + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +$as_echo "$as_me: error: cannot create directory $as_dir" >&2;} + { (exit 1); exit 1; }; }; } + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done + ;; + + esac +done # for ac_tag + + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + diff --git a/coregrade/src/libconfig-1.3.1/autom4te.cache/requests b/coregrade/src/libconfig-1.3.1/autom4te.cache/requests new file mode 100644 index 0000000..76068ac --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/autom4te.cache/requests @@ -0,0 +1,67 @@ +# This file was generated. +# It contains the lists of macros which have been traced. +# It can be safely removed. + +@request = ( + bless( [ + '0', + 1, + [ + '/usr/share/autoconf' + ], + [ + '/usr/share/autoconf/autoconf/autoconf.m4f', + 'aclocal.m4', + 'configure.ac' + ], + { + '_LT_AC_TAGCONFIG' => 1, + 'AM_PROG_F77_C_O' => 1, + 'AC_INIT' => 1, + 'm4_pattern_forbid' => 1, + '_AM_COND_IF' => 1, + 'AC_CANONICAL_TARGET' => 1, + 'AC_SUBST' => 1, + 'AC_CONFIG_LIBOBJ_DIR' => 1, + 'AC_FC_SRCEXT' => 1, + 'AC_CANONICAL_HOST' => 1, + 'AC_PROG_LIBTOOL' => 1, + 'AM_INIT_AUTOMAKE' => 1, + 'AC_CONFIG_SUBDIRS' => 1, + 'AM_AUTOMAKE_VERSION' => 1, + 'LT_CONFIG_LTDL_DIR' => 1, + 'AC_REQUIRE_AUX_FILE' => 1, + 'AC_CONFIG_LINKS' => 1, + 'm4_sinclude' => 1, + 'LT_SUPPORTED_TAG' => 1, + 'AM_MAINTAINER_MODE' => 1, + 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, + '_m4_warn' => 1, + 'AM_PROG_CXX_C_O' => 1, + '_AM_COND_ENDIF' => 1, + 'AM_ENABLE_MULTILIB' => 1, + 'AC_CONFIG_FILES' => 1, + 'include' => 1, + 'LT_INIT' => 1, + 'AM_GNU_GETTEXT' => 1, + 'AC_LIBSOURCE' => 1, + 'AM_PROG_FC_C_O' => 1, + 'AC_CANONICAL_BUILD' => 1, + 'AC_FC_FREEFORM' => 1, + 'AH_OUTPUT' => 1, + '_AM_SUBST_NOTMAKE' => 1, + 'AC_CONFIG_AUX_DIR' => 1, + 'sinclude' => 1, + 'AM_PROG_CC_C_O' => 1, + 'm4_pattern_allow' => 1, + 'AC_CANONICAL_SYSTEM' => 1, + 'AM_CONDITIONAL' => 1, + 'AC_CONFIG_HEADERS' => 1, + 'AC_DEFINE_TRACE_LITERAL' => 1, + 'm4_include' => 1, + '_AM_COND_ELSE' => 1, + 'AC_SUBST_TRACE' => 1 + } + ], 'Autom4te::Request' ) + ); + diff --git a/coregrade/src/libconfig-1.3.1/autom4te.cache/traces.0 b/coregrade/src/libconfig-1.3.1/autom4te.cache/traces.0 new file mode 100644 index 0000000..7864c28 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/autom4te.cache/traces.0 @@ -0,0 +1,731 @@ +m4trace:configure.ac:2: -1- AC_INIT([libconfig.c]) +m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?A[CHUM]_]) +m4trace:configure.ac:2: -1- m4_pattern_forbid([_AC_]) +m4trace:configure.ac:2: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) +m4trace:configure.ac:2: -1- m4_pattern_allow([^AS_FLAGS$]) +m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?m4_]) +m4trace:configure.ac:2: -1- m4_pattern_forbid([^dnl$]) +m4trace:configure.ac:2: -1- m4_pattern_forbid([^_?AS_]) +m4trace:configure.ac:2: -1- AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}]) +m4trace:configure.ac:2: -1- AC_SUBST_TRACE([SHELL]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^SHELL$]) +m4trace:configure.ac:2: -1- AC_SUBST([PATH_SEPARATOR]) +m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PATH_SEPARATOR]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^PATH_SEPARATOR$]) +m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) +m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_NAME]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) +m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_TARNAME]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) +m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_VERSION]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) +m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_STRING]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:2: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) +m4trace:configure.ac:2: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:2: -1- AC_SUBST([exec_prefix], [NONE]) +m4trace:configure.ac:2: -1- AC_SUBST_TRACE([exec_prefix]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^exec_prefix$]) +m4trace:configure.ac:2: -1- AC_SUBST([prefix], [NONE]) +m4trace:configure.ac:2: -1- AC_SUBST_TRACE([prefix]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^prefix$]) +m4trace:configure.ac:2: -1- AC_SUBST([program_transform_name], [s,x,x,]) +m4trace:configure.ac:2: -1- AC_SUBST_TRACE([program_transform_name]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^program_transform_name$]) +m4trace:configure.ac:2: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) +m4trace:configure.ac:2: -1- AC_SUBST_TRACE([bindir]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^bindir$]) +m4trace:configure.ac:2: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) +m4trace:configure.ac:2: -1- AC_SUBST_TRACE([sbindir]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^sbindir$]) +m4trace:configure.ac:2: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) +m4trace:configure.ac:2: -1- AC_SUBST_TRACE([libexecdir]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^libexecdir$]) +m4trace:configure.ac:2: -1- AC_SUBST([datarootdir], ['${prefix}/share']) +m4trace:configure.ac:2: -1- AC_SUBST_TRACE([datarootdir]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^datarootdir$]) +m4trace:configure.ac:2: -1- AC_SUBST([datadir], ['${datarootdir}']) +m4trace:configure.ac:2: -1- AC_SUBST_TRACE([datadir]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^datadir$]) +m4trace:configure.ac:2: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) +m4trace:configure.ac:2: -1- AC_SUBST_TRACE([sysconfdir]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^sysconfdir$]) +m4trace:configure.ac:2: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) +m4trace:configure.ac:2: -1- AC_SUBST_TRACE([sharedstatedir]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^sharedstatedir$]) +m4trace:configure.ac:2: -1- AC_SUBST([localstatedir], ['${prefix}/var']) +m4trace:configure.ac:2: -1- AC_SUBST_TRACE([localstatedir]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^localstatedir$]) +m4trace:configure.ac:2: -1- AC_SUBST([includedir], ['${prefix}/include']) +m4trace:configure.ac:2: -1- AC_SUBST_TRACE([includedir]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^includedir$]) +m4trace:configure.ac:2: -1- AC_SUBST([oldincludedir], ['/usr/include']) +m4trace:configure.ac:2: -1- AC_SUBST_TRACE([oldincludedir]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^oldincludedir$]) +m4trace:configure.ac:2: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME], + ['${datarootdir}/doc/${PACKAGE_TARNAME}'], + ['${datarootdir}/doc/${PACKAGE}'])]) +m4trace:configure.ac:2: -1- AC_SUBST_TRACE([docdir]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^docdir$]) +m4trace:configure.ac:2: -1- AC_SUBST([infodir], ['${datarootdir}/info']) +m4trace:configure.ac:2: -1- AC_SUBST_TRACE([infodir]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^infodir$]) +m4trace:configure.ac:2: -1- AC_SUBST([htmldir], ['${docdir}']) +m4trace:configure.ac:2: -1- AC_SUBST_TRACE([htmldir]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^htmldir$]) +m4trace:configure.ac:2: -1- AC_SUBST([dvidir], ['${docdir}']) +m4trace:configure.ac:2: -1- AC_SUBST_TRACE([dvidir]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^dvidir$]) +m4trace:configure.ac:2: -1- AC_SUBST([pdfdir], ['${docdir}']) +m4trace:configure.ac:2: -1- AC_SUBST_TRACE([pdfdir]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^pdfdir$]) +m4trace:configure.ac:2: -1- AC_SUBST([psdir], ['${docdir}']) +m4trace:configure.ac:2: -1- AC_SUBST_TRACE([psdir]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^psdir$]) +m4trace:configure.ac:2: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) +m4trace:configure.ac:2: -1- AC_SUBST_TRACE([libdir]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^libdir$]) +m4trace:configure.ac:2: -1- AC_SUBST([localedir], ['${datarootdir}/locale']) +m4trace:configure.ac:2: -1- AC_SUBST_TRACE([localedir]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^localedir$]) +m4trace:configure.ac:2: -1- AC_SUBST([mandir], ['${datarootdir}/man']) +m4trace:configure.ac:2: -1- AC_SUBST_TRACE([mandir]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^mandir$]) +m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ +#undef PACKAGE_NAME]) +m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME]) +m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ +#undef PACKAGE_VERSION]) +m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING]) +m4trace:configure.ac:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:2: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT]) +m4trace:configure.ac:2: -1- AC_SUBST([DEFS]) +m4trace:configure.ac:2: -1- AC_SUBST_TRACE([DEFS]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^DEFS$]) +m4trace:configure.ac:2: -1- AC_SUBST([ECHO_C]) +m4trace:configure.ac:2: -1- AC_SUBST_TRACE([ECHO_C]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_C$]) +m4trace:configure.ac:2: -1- AC_SUBST([ECHO_N]) +m4trace:configure.ac:2: -1- AC_SUBST_TRACE([ECHO_N]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_N$]) +m4trace:configure.ac:2: -1- AC_SUBST([ECHO_T]) +m4trace:configure.ac:2: -1- AC_SUBST_TRACE([ECHO_T]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^ECHO_T$]) +m4trace:configure.ac:2: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:2: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:2: -1- AC_SUBST([build_alias]) +m4trace:configure.ac:2: -1- AC_SUBST_TRACE([build_alias]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^build_alias$]) +m4trace:configure.ac:2: -1- AC_SUBST([host_alias]) +m4trace:configure.ac:2: -1- AC_SUBST_TRACE([host_alias]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^host_alias$]) +m4trace:configure.ac:2: -1- AC_SUBST([target_alias]) +m4trace:configure.ac:2: -1- AC_SUBST_TRACE([target_alias]) +m4trace:configure.ac:2: -1- m4_pattern_allow([^target_alias$]) +m4trace:configure.ac:4: -1- AC_CANONICAL_TARGET +m4trace:configure.ac:4: -1- AC_CANONICAL_HOST +m4trace:configure.ac:4: -1- AC_CANONICAL_BUILD +m4trace:configure.ac:4: -1- AC_REQUIRE_AUX_FILE([config.sub]) +m4trace:configure.ac:4: -1- AC_REQUIRE_AUX_FILE([config.guess]) +m4trace:configure.ac:4: -1- AC_SUBST([build], [$ac_cv_build]) +m4trace:configure.ac:4: -1- AC_SUBST_TRACE([build]) +m4trace:configure.ac:4: -1- m4_pattern_allow([^build$]) +m4trace:configure.ac:4: -1- AC_SUBST([build_cpu], [$[1]]) +m4trace:configure.ac:4: -1- AC_SUBST_TRACE([build_cpu]) +m4trace:configure.ac:4: -1- m4_pattern_allow([^build_cpu$]) +m4trace:configure.ac:4: -1- AC_SUBST([build_vendor], [$[2]]) +m4trace:configure.ac:4: -1- AC_SUBST_TRACE([build_vendor]) +m4trace:configure.ac:4: -1- m4_pattern_allow([^build_vendor$]) +m4trace:configure.ac:4: -1- AC_SUBST([build_os]) +m4trace:configure.ac:4: -1- AC_SUBST_TRACE([build_os]) +m4trace:configure.ac:4: -1- m4_pattern_allow([^build_os$]) +m4trace:configure.ac:4: -1- AC_SUBST([host], [$ac_cv_host]) +m4trace:configure.ac:4: -1- AC_SUBST_TRACE([host]) +m4trace:configure.ac:4: -1- m4_pattern_allow([^host$]) +m4trace:configure.ac:4: -1- AC_SUBST([host_cpu], [$[1]]) +m4trace:configure.ac:4: -1- AC_SUBST_TRACE([host_cpu]) +m4trace:configure.ac:4: -1- m4_pattern_allow([^host_cpu$]) +m4trace:configure.ac:4: -1- AC_SUBST([host_vendor], [$[2]]) +m4trace:configure.ac:4: -1- AC_SUBST_TRACE([host_vendor]) +m4trace:configure.ac:4: -1- m4_pattern_allow([^host_vendor$]) +m4trace:configure.ac:4: -1- AC_SUBST([host_os]) +m4trace:configure.ac:4: -1- AC_SUBST_TRACE([host_os]) +m4trace:configure.ac:4: -1- m4_pattern_allow([^host_os$]) +m4trace:configure.ac:4: -1- AC_SUBST([target], [$ac_cv_target]) +m4trace:configure.ac:4: -1- AC_SUBST_TRACE([target]) +m4trace:configure.ac:4: -1- m4_pattern_allow([^target$]) +m4trace:configure.ac:4: -1- AC_SUBST([target_cpu], [$[1]]) +m4trace:configure.ac:4: -1- AC_SUBST_TRACE([target_cpu]) +m4trace:configure.ac:4: -1- m4_pattern_allow([^target_cpu$]) +m4trace:configure.ac:4: -1- AC_SUBST([target_vendor], [$[2]]) +m4trace:configure.ac:4: -1- AC_SUBST_TRACE([target_vendor]) +m4trace:configure.ac:4: -1- m4_pattern_allow([^target_vendor$]) +m4trace:configure.ac:4: -1- AC_SUBST([target_os]) +m4trace:configure.ac:4: -1- AC_SUBST_TRACE([target_os]) +m4trace:configure.ac:4: -1- m4_pattern_allow([^target_os$]) +m4trace:configure.ac:5: -1- AM_INIT_AUTOMAKE([libconfig], [1.3.1]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$]) +m4trace:configure.ac:5: -1- AM_AUTOMAKE_VERSION([1.10.1]) +m4trace:configure.ac:5: -1- AC_REQUIRE_AUX_FILE([install-sh]) +m4trace:configure.ac:5: -1- AC_SUBST([INSTALL_PROGRAM]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([INSTALL_PROGRAM]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) +m4trace:configure.ac:5: -1- AC_SUBST([INSTALL_SCRIPT]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([INSTALL_SCRIPT]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) +m4trace:configure.ac:5: -1- AC_SUBST([INSTALL_DATA]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([INSTALL_DATA]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^INSTALL_DATA$]) +m4trace:configure.ac:5: -1- AC_SUBST([am__isrc], [' -I$(srcdir)']) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([am__isrc]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^am__isrc$]) +m4trace:configure.ac:5: -1- _AM_SUBST_NOTMAKE([am__isrc]) +m4trace:configure.ac:5: -1- AC_SUBST([CYGPATH_W]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([CYGPATH_W]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^CYGPATH_W$]) +m4trace:configure.ac:5: -1- AC_SUBST([PACKAGE], [libconfig]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([PACKAGE]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE$]) +m4trace:configure.ac:5: -1- AC_SUBST([VERSION], [1.3.1]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([VERSION]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^VERSION$]) +m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^PACKAGE$]) +m4trace:configure.ac:5: -1- AH_OUTPUT([PACKAGE], [/* Name of package */ +#undef PACKAGE]) +m4trace:configure.ac:5: -1- AC_DEFINE_TRACE_LITERAL([VERSION]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^VERSION$]) +m4trace:configure.ac:5: -1- AH_OUTPUT([VERSION], [/* Version number of package */ +#undef VERSION]) +m4trace:configure.ac:5: -1- AC_REQUIRE_AUX_FILE([missing]) +m4trace:configure.ac:5: -1- AC_SUBST([ACLOCAL]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([ACLOCAL]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^ACLOCAL$]) +m4trace:configure.ac:5: -1- AC_SUBST([AUTOCONF]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([AUTOCONF]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^AUTOCONF$]) +m4trace:configure.ac:5: -1- AC_SUBST([AUTOMAKE]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([AUTOMAKE]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^AUTOMAKE$]) +m4trace:configure.ac:5: -1- AC_SUBST([AUTOHEADER]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([AUTOHEADER]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^AUTOHEADER$]) +m4trace:configure.ac:5: -1- AC_SUBST([MAKEINFO]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([MAKEINFO]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^MAKEINFO$]) +m4trace:configure.ac:5: -1- AC_SUBST([install_sh]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([install_sh]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^install_sh$]) +m4trace:configure.ac:5: -1- AC_SUBST([STRIP]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([STRIP]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^STRIP$]) +m4trace:configure.ac:5: -1- AC_SUBST([INSTALL_STRIP_PROGRAM]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([INSTALL_STRIP_PROGRAM]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$]) +m4trace:configure.ac:5: -1- AC_REQUIRE_AUX_FILE([install-sh]) +m4trace:configure.ac:5: -1- AC_SUBST([MKDIR_P]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([MKDIR_P]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^MKDIR_P$]) +m4trace:configure.ac:5: -1- AC_SUBST([mkdir_p], ["$MKDIR_P"]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([mkdir_p]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^mkdir_p$]) +m4trace:configure.ac:5: -1- AC_SUBST([AWK]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([AWK]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^AWK$]) +m4trace:configure.ac:5: -1- AC_SUBST([SET_MAKE]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([SET_MAKE]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^SET_MAKE$]) +m4trace:configure.ac:5: -1- AC_SUBST([am__leading_dot]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([am__leading_dot]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^am__leading_dot$]) +m4trace:configure.ac:5: -1- AC_SUBST([AMTAR]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([AMTAR]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^AMTAR$]) +m4trace:configure.ac:5: -1- AC_SUBST([am__tar]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([am__tar]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^am__tar$]) +m4trace:configure.ac:5: -1- AC_SUBST([am__untar]) +m4trace:configure.ac:5: -1- AC_SUBST_TRACE([am__untar]) +m4trace:configure.ac:5: -1- m4_pattern_allow([^am__untar$]) +m4trace:configure.ac:7: -1- _m4_warn([obsolete], [The macro `AM_CONFIG_HEADER' is obsolete. +You should run autoupdate.], [aclocal.m4:7019: AM_CONFIG_HEADER is expanded from... +configure.ac:7: the top level]) +m4trace:configure.ac:7: -1- AC_CONFIG_HEADERS([ac_config.h]) +m4trace:configure.ac:8: -1- AC_DEFINE_TRACE_LITERAL([TARGET]) +m4trace:configure.ac:8: -1- m4_pattern_allow([^TARGET$]) +m4trace:configure.ac:8: -1- AH_OUTPUT([TARGET], [/* Configured target name. */ +#undef TARGET]) +m4trace:configure.ac:10: -1- AH_OUTPUT([_GNU_SOURCE], [/* */ +#undef _GNU_SOURCE]) +m4trace:configure.ac:11: -1- AC_DEFINE_TRACE_LITERAL([_GNU_SOURCE]) +m4trace:configure.ac:11: -1- m4_pattern_allow([^_GNU_SOURCE$]) +m4trace:configure.ac:15: -1- AC_SUBST([CC]) +m4trace:configure.ac:15: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:15: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:15: -1- AC_SUBST([CFLAGS]) +m4trace:configure.ac:15: -1- AC_SUBST_TRACE([CFLAGS]) +m4trace:configure.ac:15: -1- m4_pattern_allow([^CFLAGS$]) +m4trace:configure.ac:15: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.ac:15: -1- AC_SUBST_TRACE([LDFLAGS]) +m4trace:configure.ac:15: -1- m4_pattern_allow([^LDFLAGS$]) +m4trace:configure.ac:15: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:15: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:15: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:15: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:15: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:15: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:15: -1- AC_SUBST([CC]) +m4trace:configure.ac:15: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:15: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:15: -1- AC_SUBST([CC]) +m4trace:configure.ac:15: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:15: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:15: -1- AC_SUBST([CC]) +m4trace:configure.ac:15: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:15: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:15: -1- AC_SUBST([CC]) +m4trace:configure.ac:15: -1- AC_SUBST_TRACE([CC]) +m4trace:configure.ac:15: -1- m4_pattern_allow([^CC$]) +m4trace:configure.ac:15: -1- AC_SUBST([ac_ct_CC]) +m4trace:configure.ac:15: -1- AC_SUBST_TRACE([ac_ct_CC]) +m4trace:configure.ac:15: -1- m4_pattern_allow([^ac_ct_CC$]) +m4trace:configure.ac:15: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext]) +m4trace:configure.ac:15: -1- AC_SUBST_TRACE([EXEEXT]) +m4trace:configure.ac:15: -1- m4_pattern_allow([^EXEEXT$]) +m4trace:configure.ac:15: -1- AC_SUBST([OBJEXT], [$ac_cv_objext]) +m4trace:configure.ac:15: -1- AC_SUBST_TRACE([OBJEXT]) +m4trace:configure.ac:15: -1- m4_pattern_allow([^OBJEXT$]) +m4trace:configure.ac:15: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"]) +m4trace:configure.ac:15: -1- AC_SUBST_TRACE([DEPDIR]) +m4trace:configure.ac:15: -1- m4_pattern_allow([^DEPDIR$]) +m4trace:configure.ac:15: -1- AC_SUBST([am__include]) +m4trace:configure.ac:15: -1- AC_SUBST_TRACE([am__include]) +m4trace:configure.ac:15: -1- m4_pattern_allow([^am__include$]) +m4trace:configure.ac:15: -1- AC_SUBST([am__quote]) +m4trace:configure.ac:15: -1- AC_SUBST_TRACE([am__quote]) +m4trace:configure.ac:15: -1- m4_pattern_allow([^am__quote$]) +m4trace:configure.ac:15: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +m4trace:configure.ac:15: -1- AC_SUBST([AMDEP_TRUE]) +m4trace:configure.ac:15: -1- AC_SUBST_TRACE([AMDEP_TRUE]) +m4trace:configure.ac:15: -1- m4_pattern_allow([^AMDEP_TRUE$]) +m4trace:configure.ac:15: -1- AC_SUBST([AMDEP_FALSE]) +m4trace:configure.ac:15: -1- AC_SUBST_TRACE([AMDEP_FALSE]) +m4trace:configure.ac:15: -1- m4_pattern_allow([^AMDEP_FALSE$]) +m4trace:configure.ac:15: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE]) +m4trace:configure.ac:15: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE]) +m4trace:configure.ac:15: -1- AC_SUBST([AMDEPBACKSLASH]) +m4trace:configure.ac:15: -1- AC_SUBST_TRACE([AMDEPBACKSLASH]) +m4trace:configure.ac:15: -1- m4_pattern_allow([^AMDEPBACKSLASH$]) +m4trace:configure.ac:15: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH]) +m4trace:configure.ac:15: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type]) +m4trace:configure.ac:15: -1- AC_SUBST_TRACE([CCDEPMODE]) +m4trace:configure.ac:15: -1- m4_pattern_allow([^CCDEPMODE$]) +m4trace:configure.ac:15: -1- AM_CONDITIONAL([am__fastdepCC], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) +m4trace:configure.ac:15: -1- AC_SUBST([am__fastdepCC_TRUE]) +m4trace:configure.ac:15: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE]) +m4trace:configure.ac:15: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) +m4trace:configure.ac:15: -1- AC_SUBST([am__fastdepCC_FALSE]) +m4trace:configure.ac:15: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE]) +m4trace:configure.ac:15: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) +m4trace:configure.ac:15: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) +m4trace:configure.ac:15: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) +m4trace:configure.ac:16: -1- AC_SUBST([RANLIB]) +m4trace:configure.ac:16: -1- AC_SUBST_TRACE([RANLIB]) +m4trace:configure.ac:16: -1- m4_pattern_allow([^RANLIB$]) +m4trace:configure.ac:18: -1- AC_PROG_LIBTOOL +m4trace:configure.ac:18: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from... +../../lib/autoconf/general.m4:1424: AC_ARG_ENABLE is expanded from... +aclocal.m4:2045: AC_ENABLE_SHARED is expanded from... +aclocal.m4:94: AC_LIBTOOL_SETUP is expanded from... +aclocal.m4:74: _AC_PROG_LIBTOOL is expanded from... +aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... +configure.ac:18: the top level]) +m4trace:configure.ac:18: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from... +../../lib/autoconf/general.m4:1424: AC_ARG_ENABLE is expanded from... +aclocal.m4:2084: AC_ENABLE_STATIC is expanded from... +aclocal.m4:94: AC_LIBTOOL_SETUP is expanded from... +aclocal.m4:74: _AC_PROG_LIBTOOL is expanded from... +aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... +configure.ac:18: the top level]) +m4trace:configure.ac:18: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from... +../../lib/autoconf/general.m4:1424: AC_ARG_ENABLE is expanded from... +aclocal.m4:2123: AC_ENABLE_FAST_INSTALL is expanded from... +aclocal.m4:94: AC_LIBTOOL_SETUP is expanded from... +aclocal.m4:74: _AC_PROG_LIBTOOL is expanded from... +aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... +configure.ac:18: the top level]) +m4trace:configure.ac:18: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from... +../../lib/autoconf/general.m4:1443: AC_ARG_WITH is expanded from... +aclocal.m4:2264: AC_PROG_LD is expanded from... +aclocal.m4:94: AC_LIBTOOL_SETUP is expanded from... +aclocal.m4:74: _AC_PROG_LIBTOOL is expanded from... +aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... +configure.ac:18: the top level]) +m4trace:configure.ac:18: -1- AC_SUBST([SED]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([SED]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^SED$]) +m4trace:configure.ac:18: -1- AC_SUBST([GREP]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([GREP]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^GREP$]) +m4trace:configure.ac:18: -1- AC_SUBST([EGREP]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([EGREP]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^EGREP$]) +m4trace:configure.ac:18: -1- AC_SUBST([LN_S], [$as_ln_s]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([LN_S]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^LN_S$]) +m4trace:configure.ac:18: -1- AC_SUBST([ECHO]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([ECHO]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^ECHO$]) +m4trace:configure.ac:18: -1- AC_SUBST([AR]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([AR]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^AR$]) +m4trace:configure.ac:18: -1- AC_SUBST([RANLIB]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([RANLIB]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^RANLIB$]) +m4trace:configure.ac:18: -1- AC_SUBST([STRIP]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([STRIP]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^STRIP$]) +m4trace:configure.ac:18: -1- AC_SUBST([DSYMUTIL]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([DSYMUTIL]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^DSYMUTIL$]) +m4trace:configure.ac:18: -1- AC_SUBST([NMEDIT]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([NMEDIT]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^NMEDIT$]) +m4trace:configure.ac:18: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from... +../../lib/autoconf/general.m4:1424: AC_ARG_ENABLE is expanded from... +aclocal.m4:94: AC_LIBTOOL_SETUP is expanded from... +aclocal.m4:74: _AC_PROG_LIBTOOL is expanded from... +aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... +configure.ac:18: the top level]) +m4trace:configure.ac:18: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from... +../../lib/autoconf/general.m4:1443: AC_ARG_WITH is expanded from... +aclocal.m4:94: AC_LIBTOOL_SETUP is expanded from... +aclocal.m4:74: _AC_PROG_LIBTOOL is expanded from... +aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... +configure.ac:18: the top level]) +m4trace:configure.ac:18: -1- _m4_warn([obsolete], [The macro `AC_TRY_LINK' is obsolete. +You should run autoupdate.], [../../lib/autoconf/general.m4:2527: AC_TRY_LINK is expanded from... +../../lib/m4sugar/m4sh.m4:505: AS_IF is expanded from... +../../lib/autoconf/general.m4:1974: AC_CACHE_VAL is expanded from... +../../lib/autoconf/general.m4:1994: AC_CACHE_CHECK is expanded from... +aclocal.m4:565: _LT_AC_LOCK is expanded from... +aclocal.m4:1185: AC_LIBTOOL_SYS_HARD_LINK_LOCKS is expanded from... +aclocal.m4:2797: _LT_AC_LANG_C_CONFIG is expanded from... +aclocal.m4:2796: AC_LIBTOOL_LANG_C_CONFIG is expanded from... +aclocal.m4:94: AC_LIBTOOL_SETUP is expanded from... +aclocal.m4:74: _AC_PROG_LIBTOOL is expanded from... +aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... +configure.ac:18: the top level]) +m4trace:configure.ac:18: -1- AC_SUBST([DLLTOOL]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([DLLTOOL]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^DLLTOOL$]) +m4trace:configure.ac:18: -1- AC_SUBST([AS]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([AS]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^AS$]) +m4trace:configure.ac:18: -1- AC_SUBST([OBJDUMP]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([OBJDUMP]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^OBJDUMP$]) +m4trace:configure.ac:18: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H]) +m4trace:configure.ac:18: -1- AC_SUBST([CPP]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([CPP]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:18: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:18: -1- AC_SUBST([CPP]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([CPP]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^CPP$]) +m4trace:configure.ac:18: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^STDC_HEADERS$]) +m4trace:configure.ac:18: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS]) +m4trace:configure.ac:18: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H]) +m4trace:configure.ac:18: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H]) +m4trace:configure.ac:18: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H]) +m4trace:configure.ac:18: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H]) +m4trace:configure.ac:18: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H]) +m4trace:configure.ac:18: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H]) +m4trace:configure.ac:18: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H]) +m4trace:configure.ac:18: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H]) +m4trace:configure.ac:18: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H]) +m4trace:configure.ac:18: -1- _LT_AC_TAGCONFIG +m4trace:configure.ac:18: -1- _m4_warn([obsolete], [The macro `AC_HELP_STRING' is obsolete. +You should run autoupdate.], [../../lib/autoconf/general.m4:209: AC_HELP_STRING is expanded from... +../../lib/autoconf/general.m4:1443: AC_ARG_WITH is expanded from... +aclocal.m4:1922: _LT_AC_TAGCONFIG is expanded from... +aclocal.m4:94: AC_LIBTOOL_SETUP is expanded from... +aclocal.m4:74: _AC_PROG_LIBTOOL is expanded from... +aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... +configure.ac:18: the top level]) +m4trace:configure.ac:18: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me:$LINENO: error: tag name \"$tagname\" already exists], [../../lib/m4sugar/m4sh.m4:794: AS_ECHO is expanded from... +aclocal.m4:1922: _LT_AC_TAGCONFIG is expanded from... +aclocal.m4:94: AC_LIBTOOL_SETUP is expanded from... +aclocal.m4:74: _AC_PROG_LIBTOOL is expanded from... +aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... +configure.ac:18: the top level]) +m4trace:configure.ac:18: -1- _m4_warn([obsolete], [back quotes and double quotes must not be escaped in: $as_me: error: tag name \"$tagname\" already exists], [../../lib/m4sugar/m4sh.m4:794: AS_ECHO is expanded from... +aclocal.m4:1922: _LT_AC_TAGCONFIG is expanded from... +aclocal.m4:94: AC_LIBTOOL_SETUP is expanded from... +aclocal.m4:74: _AC_PROG_LIBTOOL is expanded from... +aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... +configure.ac:18: the top level]) +m4trace:configure.ac:18: -1- AC_SUBST([CXX]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([CXX]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^CXX$]) +m4trace:configure.ac:18: -1- AC_SUBST([CXXFLAGS]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([CXXFLAGS]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^CXXFLAGS$]) +m4trace:configure.ac:18: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([LDFLAGS]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^LDFLAGS$]) +m4trace:configure.ac:18: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:18: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:18: -1- AC_SUBST([CXX]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([CXX]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^CXX$]) +m4trace:configure.ac:18: -1- AC_SUBST([ac_ct_CXX]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([ac_ct_CXX]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^ac_ct_CXX$]) +m4trace:configure.ac:18: -1- AC_SUBST([CXXDEPMODE], [depmode=$am_cv_CXX_dependencies_compiler_type]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([CXXDEPMODE]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^CXXDEPMODE$]) +m4trace:configure.ac:18: -1- AM_CONDITIONAL([am__fastdepCXX], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3]) +m4trace:configure.ac:18: -1- AC_SUBST([am__fastdepCXX_TRUE]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([am__fastdepCXX_TRUE]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^am__fastdepCXX_TRUE$]) +m4trace:configure.ac:18: -1- AC_SUBST([am__fastdepCXX_FALSE]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([am__fastdepCXX_FALSE]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^am__fastdepCXX_FALSE$]) +m4trace:configure.ac:18: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_TRUE]) +m4trace:configure.ac:18: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_FALSE]) +m4trace:configure.ac:18: -1- AC_SUBST([CXXCPP]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([CXXCPP]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^CXXCPP$]) +m4trace:configure.ac:18: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:18: -1- AC_SUBST([CXXCPP]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([CXXCPP]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^CXXCPP$]) +m4trace:configure.ac:18: -1- AC_SUBST([F77]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([F77]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^F77$]) +m4trace:configure.ac:18: -1- AC_SUBST([FFLAGS]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([FFLAGS]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^FFLAGS$]) +m4trace:configure.ac:18: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([LDFLAGS]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^LDFLAGS$]) +m4trace:configure.ac:18: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:18: -1- AC_SUBST([F77]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([F77]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^F77$]) +m4trace:configure.ac:18: -1- AC_SUBST([ac_ct_F77]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([ac_ct_F77]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^ac_ct_F77$]) +m4trace:configure.ac:18: -1- _m4_warn([obsolete], [The macro `AC_LANG_SAVE' is obsolete. +You should run autoupdate.], [../../lib/autoconf/lang.m4:148: AC_LANG_SAVE is expanded from... +aclocal.m4:4183: _LT_AC_LANG_GCJ_CONFIG is expanded from... +aclocal.m4:4182: AC_LIBTOOL_LANG_GCJ_CONFIG is expanded from... +aclocal.m4:1922: _LT_AC_TAGCONFIG is expanded from... +aclocal.m4:94: AC_LIBTOOL_SETUP is expanded from... +aclocal.m4:74: _AC_PROG_LIBTOOL is expanded from... +aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... +configure.ac:18: the top level]) +m4trace:configure.ac:18: -1- _m4_warn([obsolete], [The macro `AC_LANG_RESTORE' is obsolete. +You should run autoupdate.], [../../lib/autoconf/lang.m4:157: AC_LANG_RESTORE is expanded from... +aclocal.m4:4183: _LT_AC_LANG_GCJ_CONFIG is expanded from... +aclocal.m4:4182: AC_LIBTOOL_LANG_GCJ_CONFIG is expanded from... +aclocal.m4:1922: _LT_AC_TAGCONFIG is expanded from... +aclocal.m4:94: AC_LIBTOOL_SETUP is expanded from... +aclocal.m4:74: _AC_PROG_LIBTOOL is expanded from... +aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... +configure.ac:18: the top level]) +m4trace:configure.ac:18: -1- _m4_warn([obsolete], [The macro `AC_LANG_SAVE' is obsolete. +You should run autoupdate.], [../../lib/autoconf/lang.m4:148: AC_LANG_SAVE is expanded from... +aclocal.m4:4239: _LT_AC_LANG_RC_CONFIG is expanded from... +aclocal.m4:4238: AC_LIBTOOL_LANG_RC_CONFIG is expanded from... +aclocal.m4:1922: _LT_AC_TAGCONFIG is expanded from... +aclocal.m4:94: AC_LIBTOOL_SETUP is expanded from... +aclocal.m4:74: _AC_PROG_LIBTOOL is expanded from... +aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... +configure.ac:18: the top level]) +m4trace:configure.ac:18: -1- _m4_warn([obsolete], [The macro `AC_LANG_RESTORE' is obsolete. +You should run autoupdate.], [../../lib/autoconf/lang.m4:157: AC_LANG_RESTORE is expanded from... +aclocal.m4:4239: _LT_AC_LANG_RC_CONFIG is expanded from... +aclocal.m4:4238: AC_LIBTOOL_LANG_RC_CONFIG is expanded from... +aclocal.m4:1922: _LT_AC_TAGCONFIG is expanded from... +aclocal.m4:94: AC_LIBTOOL_SETUP is expanded from... +aclocal.m4:74: _AC_PROG_LIBTOOL is expanded from... +aclocal.m4:39: AC_PROG_LIBTOOL is expanded from... +configure.ac:18: the top level]) +m4trace:configure.ac:18: -1- AC_SUBST([LIBTOOL]) +m4trace:configure.ac:18: -1- AC_SUBST_TRACE([LIBTOOL]) +m4trace:configure.ac:18: -1- m4_pattern_allow([^LIBTOOL$]) +m4trace:configure.ac:20: -1- AC_SUBST([LEX]) +m4trace:configure.ac:20: -1- AC_SUBST_TRACE([LEX]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^LEX$]) +m4trace:configure.ac:20: -1- AC_SUBST([LEX_OUTPUT_ROOT], [$ac_cv_prog_lex_root]) +m4trace:configure.ac:20: -1- AC_SUBST_TRACE([LEX_OUTPUT_ROOT]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^LEX_OUTPUT_ROOT$]) +m4trace:configure.ac:20: -1- AC_SUBST([LEXLIB]) +m4trace:configure.ac:20: -1- AC_SUBST_TRACE([LEXLIB]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^LEXLIB$]) +m4trace:configure.ac:20: -1- AC_DEFINE_TRACE_LITERAL([YYTEXT_POINTER]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^YYTEXT_POINTER$]) +m4trace:configure.ac:20: -1- AH_OUTPUT([YYTEXT_POINTER], [/* Define to 1 if `lex\' declares `yytext\' as a `char *\' by default, not a + `char[]\'. */ +#undef YYTEXT_POINTER]) +m4trace:configure.ac:31: -1- AC_SUBST([YACC]) +m4trace:configure.ac:31: -1- AC_SUBST_TRACE([YACC]) +m4trace:configure.ac:31: -1- m4_pattern_allow([^YACC$]) +m4trace:configure.ac:31: -1- AC_SUBST([YACC]) +m4trace:configure.ac:31: -1- AC_SUBST_TRACE([YACC]) +m4trace:configure.ac:31: -1- m4_pattern_allow([^YACC$]) +m4trace:configure.ac:31: -1- AC_SUBST([YFLAGS]) +m4trace:configure.ac:31: -1- AC_SUBST_TRACE([YFLAGS]) +m4trace:configure.ac:31: -1- m4_pattern_allow([^YFLAGS$]) +m4trace:configure.ac:68: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) +m4trace:configure.ac:68: -1- m4_pattern_allow([^STDC_HEADERS$]) +m4trace:configure.ac:68: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS]) +m4trace:configure.ac:69: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H]) +m4trace:configure.ac:69: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H]) +m4trace:configure.ac:69: -1- AH_OUTPUT([HAVE_XLOCALE_H], [/* Define to 1 if you have the header file. */ +#undef HAVE_XLOCALE_H]) +m4trace:configure.ac:72: -1- AC_DEFINE_TRACE_LITERAL([const]) +m4trace:configure.ac:72: -1- m4_pattern_allow([^const$]) +m4trace:configure.ac:72: -1- AH_OUTPUT([const], [/* Define to empty if `const\' does not conform to ANSI C. */ +#undef const]) +m4trace:configure.ac:76: -1- AH_OUTPUT([HAVE_NEWLOCALE], [/* Define to 1 if you have the `newlocale\' function. */ +#undef HAVE_NEWLOCALE]) +m4trace:configure.ac:76: -1- AH_OUTPUT([HAVE_USELOCALE], [/* Define to 1 if you have the `uselocale\' function. */ +#undef HAVE_USELOCALE]) +m4trace:configure.ac:76: -1- AH_OUTPUT([HAVE_FREELOCALE], [/* Define to 1 if you have the `freelocale\' function. */ +#undef HAVE_FREELOCALE]) +m4trace:configure.ac:80: -1- AC_SUBST([CXX]) +m4trace:configure.ac:80: -1- AC_SUBST_TRACE([CXX]) +m4trace:configure.ac:80: -1- m4_pattern_allow([^CXX$]) +m4trace:configure.ac:80: -1- AC_SUBST([CXXFLAGS]) +m4trace:configure.ac:80: -1- AC_SUBST_TRACE([CXXFLAGS]) +m4trace:configure.ac:80: -1- m4_pattern_allow([^CXXFLAGS$]) +m4trace:configure.ac:80: -1- AC_SUBST([LDFLAGS]) +m4trace:configure.ac:80: -1- AC_SUBST_TRACE([LDFLAGS]) +m4trace:configure.ac:80: -1- m4_pattern_allow([^LDFLAGS$]) +m4trace:configure.ac:80: -1- AC_SUBST([LIBS]) +m4trace:configure.ac:80: -1- AC_SUBST_TRACE([LIBS]) +m4trace:configure.ac:80: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:80: -1- AC_SUBST([CPPFLAGS]) +m4trace:configure.ac:80: -1- AC_SUBST_TRACE([CPPFLAGS]) +m4trace:configure.ac:80: -1- m4_pattern_allow([^CPPFLAGS$]) +m4trace:configure.ac:80: -1- AC_SUBST([CXX]) +m4trace:configure.ac:80: -1- AC_SUBST_TRACE([CXX]) +m4trace:configure.ac:80: -1- m4_pattern_allow([^CXX$]) +m4trace:configure.ac:80: -1- AC_SUBST([ac_ct_CXX]) +m4trace:configure.ac:80: -1- AC_SUBST_TRACE([ac_ct_CXX]) +m4trace:configure.ac:80: -1- m4_pattern_allow([^ac_ct_CXX$]) +m4trace:configure.ac:80: -1- AC_SUBST([CXXDEPMODE], [depmode=$am_cv_CXX_dependencies_compiler_type]) +m4trace:configure.ac:80: -1- AC_SUBST_TRACE([CXXDEPMODE]) +m4trace:configure.ac:80: -1- m4_pattern_allow([^CXXDEPMODE$]) +m4trace:configure.ac:80: -1- AM_CONDITIONAL([am__fastdepCXX], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3]) +m4trace:configure.ac:80: -1- AC_SUBST([am__fastdepCXX_TRUE]) +m4trace:configure.ac:80: -1- AC_SUBST_TRACE([am__fastdepCXX_TRUE]) +m4trace:configure.ac:80: -1- m4_pattern_allow([^am__fastdepCXX_TRUE$]) +m4trace:configure.ac:80: -1- AC_SUBST([am__fastdepCXX_FALSE]) +m4trace:configure.ac:80: -1- AC_SUBST_TRACE([am__fastdepCXX_FALSE]) +m4trace:configure.ac:80: -1- m4_pattern_allow([^am__fastdepCXX_FALSE$]) +m4trace:configure.ac:80: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_TRUE]) +m4trace:configure.ac:80: -1- _AM_SUBST_NOTMAKE([am__fastdepCXX_FALSE]) +m4trace:configure.ac:89: -1- AM_CONDITIONAL([BUILDCXX], [test x$docxx = xyes]) +m4trace:configure.ac:89: -1- AC_SUBST([BUILDCXX_TRUE]) +m4trace:configure.ac:89: -1- AC_SUBST_TRACE([BUILDCXX_TRUE]) +m4trace:configure.ac:89: -1- m4_pattern_allow([^BUILDCXX_TRUE$]) +m4trace:configure.ac:89: -1- AC_SUBST([BUILDCXX_FALSE]) +m4trace:configure.ac:89: -1- AC_SUBST_TRACE([BUILDCXX_FALSE]) +m4trace:configure.ac:89: -1- m4_pattern_allow([^BUILDCXX_FALSE$]) +m4trace:configure.ac:89: -1- _AM_SUBST_NOTMAKE([BUILDCXX_TRUE]) +m4trace:configure.ac:89: -1- _AM_SUBST_NOTMAKE([BUILDCXX_FALSE]) +m4trace:configure.ac:98: -1- AM_CONDITIONAL([GNU_WIN], [test x$gnuwin = xyes]) +m4trace:configure.ac:98: -1- AC_SUBST([GNU_WIN_TRUE]) +m4trace:configure.ac:98: -1- AC_SUBST_TRACE([GNU_WIN_TRUE]) +m4trace:configure.ac:98: -1- m4_pattern_allow([^GNU_WIN_TRUE$]) +m4trace:configure.ac:98: -1- AC_SUBST([GNU_WIN_FALSE]) +m4trace:configure.ac:98: -1- AC_SUBST_TRACE([GNU_WIN_FALSE]) +m4trace:configure.ac:98: -1- m4_pattern_allow([^GNU_WIN_FALSE$]) +m4trace:configure.ac:98: -1- _AM_SUBST_NOTMAKE([GNU_WIN_TRUE]) +m4trace:configure.ac:98: -1- _AM_SUBST_NOTMAKE([GNU_WIN_FALSE]) +m4trace:configure.ac:102: -1- AC_CONFIG_FILES([Makefile + doc/Makefile + samples/Makefile + samples/c/Makefile + samples/c++/Makefile + libconfig.pc + libconfig++.pc + libconfig.spec + ]) +m4trace:configure.ac:102: -1- _m4_warn([obsolete], [AC_OUTPUT should be used without arguments. +You should run autoupdate.], []) +m4trace:configure.ac:102: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) +m4trace:configure.ac:102: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) +m4trace:configure.ac:102: -1- m4_pattern_allow([^LIB@&t@OBJS$]) +m4trace:configure.ac:102: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) +m4trace:configure.ac:102: -1- AC_SUBST_TRACE([LTLIBOBJS]) +m4trace:configure.ac:102: -1- m4_pattern_allow([^LTLIBOBJS$]) +m4trace:configure.ac:102: -1- AC_SUBST_TRACE([top_builddir]) +m4trace:configure.ac:102: -1- AC_SUBST_TRACE([top_build_prefix]) +m4trace:configure.ac:102: -1- AC_SUBST_TRACE([srcdir]) +m4trace:configure.ac:102: -1- AC_SUBST_TRACE([abs_srcdir]) +m4trace:configure.ac:102: -1- AC_SUBST_TRACE([top_srcdir]) +m4trace:configure.ac:102: -1- AC_SUBST_TRACE([abs_top_srcdir]) +m4trace:configure.ac:102: -1- AC_SUBST_TRACE([builddir]) +m4trace:configure.ac:102: -1- AC_SUBST_TRACE([abs_builddir]) +m4trace:configure.ac:102: -1- AC_SUBST_TRACE([abs_top_builddir]) +m4trace:configure.ac:102: -1- AC_SUBST_TRACE([INSTALL]) +m4trace:configure.ac:102: -1- AC_SUBST_TRACE([MKDIR_P]) diff --git a/coregrade/src/libconfig-1.3.1/compile b/coregrade/src/libconfig-1.3.1/compile new file mode 100755 index 0000000..80b645b --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/compile @@ -0,0 +1,140 @@ +#! /bin/sh +# Wrapper for compilers which do not understand `-c -o'. + +scriptversion=2004-09-10.20 + +# Copyright (C) 1999, 2000, 2003, 2004 Free Software Foundation, Inc. +# Written by Tom Tromey . +# +# 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 +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +case $1 in + '') + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: compile [--help] [--version] PROGRAM [ARGS] + +Wrapper for compilers which do not understand `-c -o'. +Remove `-o dest.o' from ARGS, run PROGRAM with the remaining +arguments, and rename the output as expected. + +If you are trying to build a whole package this is not the +right script to run: please start by reading the file `INSTALL'. + +Report bugs to . +EOF + exit 0 + ;; + -v | --v*) + echo "compile $scriptversion" + exit 0 + ;; +esac + +ofile= +cfile= +eat= + +for arg +do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as `compile cc -o foo foo.c'. + # So we strip `-o arg' only if arg is an object. + eat=1 + case $2 in + *.o | *.obj) + ofile=$2 + ;; + *) + set x "$@" -o "$2" + shift + ;; + esac + ;; + *.c) + cfile=$1 + set x "$@" "$1" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift +done + +if test -z "$ofile" || test -z "$cfile"; then + # If no `-o' option was seen then we might have been invoked from a + # pattern rule where we don't need one. That is ok -- this is a + # normal compilation that the losing compiler can handle. If no + # `.c' file was seen then we are probably linking. That is also + # ok. + exec "$@" +fi + +# Name of file we expect compiler to create. +cofile=`echo "$cfile" | sed -e 's|^.*/||' -e 's/\.c$/.o/'` + +# Create the lock directory. +# Note: use `[/.-]' here to ensure that we don't use the same name +# that we are using for the .o file. Also, base the name on the expected +# object file name, since that is what matters with a parallel build. +lockdir=`echo "$cofile" | sed -e 's|[/.-]|_|g'`.d +while true; do + if mkdir "$lockdir" >/dev/null 2>&1; then + break + fi + sleep 1 +done +# FIXME: race condition here if user kills between mkdir and trap. +trap "rmdir '$lockdir'; exit 1" 1 2 15 + +# Run the compile. +"$@" +ret=$? + +if test -f "$cofile"; then + mv "$cofile" "$ofile" +fi + +rmdir "$lockdir" +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/coregrade/src/libconfig-1.3.1/config.guess b/coregrade/src/libconfig-1.3.1/config.guess new file mode 100755 index 0000000..951383e --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/config.guess @@ -0,0 +1,1516 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, +# Inc. + +timestamp='2007-05-17' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Originally written by Per Bothner . +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# The plan is that this can be called by configure scripts if you +# don't specify an explicit build system type. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep __ELF__ >/dev/null + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm:riscos:*:*|arm:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:SunOS:5.*:* | ix86xen:SunOS:5.*:*) + echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[45]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep __LP64__ >/dev/null + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + case ${UNAME_MACHINE} in + pc98) + echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + *:Interix*:[3456]*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + EM64T | authenticamd) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + arm*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit ;; + crisv32:Linux:*:*) + echo crisv32-axis-linux-gnu + exit ;; + frv:Linux:*:*) + echo frv-unknown-linux-gnu + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + mips:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips + #undef mipsel + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mipsel + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips + #else + CPU= + #endif + #endif +EOF + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^CPU/{ + s: ::g + p + }'`" + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; + mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef mips64 + #undef mips64el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=mips64el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=mips64 + #else + CPU= + #endif + #endif +EOF + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^CPU/{ + s: ::g + p + }'`" + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; + or32:Linux:*:*) + echo or32-unknown-linux-gnu + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-gnu + exit ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit ;; + xtensa:Linux:*:*) + echo xtensa-unknown-linux-gnu + exit ;; + i*86:Linux:*:*) + # The BFD linker knows what the default object file format is, so + # first see if it will tell us. cd to the root directory to prevent + # problems with other programs or directories called `ld' in the path. + # Set LC_ALL=C to ensure ld outputs messages in English. + ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ + | sed -ne '/supported targets:/!d + s/[ ][ ]*/ /g + s/.*supported targets: *// + s/ .*// + p'` + case "$ld_supported_targets" in + elf32-i386) + TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" + ;; + a.out-i386-linux) + echo "${UNAME_MACHINE}-pc-linux-gnuaout" + exit ;; + coff-i386) + echo "${UNAME_MACHINE}-pc-linux-gnucoff" + exit ;; + "") + # Either a pre-BFD a.out linker (linux-gnuoldld) or + # one that does not give us useful --help. + echo "${UNAME_MACHINE}-pc-linux-gnuoldld" + exit ;; + esac + # Determine whether the default compiler is a.out or elf + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + #ifdef __ELF__ + # ifdef __GLIBC__ + # if __GLIBC__ >= 2 + LIBC=gnu + # else + LIBC=gnulibc1 + # endif + # else + LIBC=gnulibc1 + # endif + #else + #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) + LIBC=gnu + #else + LIBC=gnuaout + #endif + #endif + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' + /^LIBC/{ + s: ::g + p + }'`" + test x"${LIBC}" != x && { + echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + exit + } + test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i386. + echo i386-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NSE-?:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix\n"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + c34*) + echo c34-convex-bsd + exit ;; + c38*) + echo c38-convex-bsd + exit ;; + c4*) + echo c4-convex-bsd + exit ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/coregrade/src/libconfig-1.3.1/config.sub b/coregrade/src/libconfig-1.3.1/config.sub new file mode 100755 index 0000000..c060f44 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/config.sub @@ -0,0 +1,1626 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, +# Inc. + +timestamp='2007-04-29' + +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Please send patches to . Submit a context +# diff and a properly formatted ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ + uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray) + os= + basic_machine=$1 + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | bfin \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fido | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | mcore | mep \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64vr | mips64vrel \ + | mips64orion | mips64orionel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | mt \ + | msp430 \ + | nios | nios2 \ + | ns16k | ns32k \ + | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | score \ + | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | v850 | v850e \ + | we32k \ + | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ + | z8k) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nios-* | nios2-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tron-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ + | xstormy16-* | xtensa-* \ + | ymp-* \ + | z8k-*) + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16c) + basic_machine=cr16c-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-unknown + os=-coff + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -zvmoe) + os=-zvmoe + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mep-*) + os=-elf + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/coregrade/src/libconfig-1.3.1/configure b/coregrade/src/libconfig-1.3.1/configure new file mode 100755 index 0000000..c734efc --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/configure @@ -0,0 +1,23192 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.62. +# +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + +# Work around bugs in pre-3.0 UWIN ksh. +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# CDPATH. +$as_unset CDPATH + + +if test "x$CONFIG_SHELL" = x; then + if (eval ":") 2>/dev/null; then + as_have_required=yes +else + as_have_required=no +fi + + if test $as_have_required = yes && (eval ": +(as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=\$LINENO + as_lineno_2=\$LINENO + test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && + test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } +") 2> /dev/null; then + : +else + as_candidate_shells= + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + case $as_dir in + /*) + for as_base in sh bash ksh sh5; do + as_candidate_shells="$as_candidate_shells $as_dir/$as_base" + done;; + esac +done +IFS=$as_save_IFS + + + for as_shell in $as_candidate_shells $SHELL; do + # Try only shells that exist, to save several forks. + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { ("$as_shell") 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +_ASEOF +}; then + CONFIG_SHELL=$as_shell + as_have_required=yes + if { "$as_shell" 2> /dev/null <<\_ASEOF +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + +: +(as_func_return () { + (exit $1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = "$1" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test $exitcode = 0) || { (exit 1); exit 1; } + +( + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } + +_ASEOF +}; then + break +fi + +fi + + done + + if test "x$CONFIG_SHELL" != x; then + for as_var in BASH_ENV ENV + do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var + done + export CONFIG_SHELL + exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} +fi + + + if test $as_have_required = no; then + echo This script requires a shell more modern than all the + echo shells that I found on your system. Please install a + echo modern shell, or manually run the script under such a + echo shell if you do have one. + { (exit 1); exit 1; } +fi + + +fi + +fi + + + +(eval "as_func_return () { + (exit \$1) +} +as_func_success () { + as_func_return 0 +} +as_func_failure () { + as_func_return 1 +} +as_func_ret_success () { + return 0 +} +as_func_ret_failure () { + return 1 +} + +exitcode=0 +if as_func_success; then + : +else + exitcode=1 + echo as_func_success failed. +fi + +if as_func_failure; then + exitcode=1 + echo as_func_failure succeeded. +fi + +if as_func_ret_success; then + : +else + exitcode=1 + echo as_func_ret_success failed. +fi + +if as_func_ret_failure; then + exitcode=1 + echo as_func_ret_failure succeeded. +fi + +if ( set x; as_func_ret_success y && test x = \"\$1\" ); then + : +else + exitcode=1 + echo positional parameters were not saved. +fi + +test \$exitcode = 0") || { + echo No shell found that supports shell functions. + echo Please tell bug-autoconf@gnu.org about your system, + echo including any error possibly output before this message. + echo This can help us improve future autoconf versions. + echo Configuration will now proceed without shell functions. +} + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; +esac +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + + + +# Check that we are running under the correct shell. +SHELL=${CONFIG_SHELL-/bin/sh} + +case X$ECHO in +X*--fallback-echo) + # Remove one level of quotation (which was required for Make). + ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','` + ;; +esac + +echo=${ECHO-echo} +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then + # Yippee, $echo works! + : +else + # Restart under the correct shell. + exec $SHELL "$0" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat </dev/null 2>&1 && unset CDPATH + +if test -z "$ECHO"; then +if test "X${echo_test_string+set}" != Xset; then +# find a string as large as possible, as long as the shell can cope with it + for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do + # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... + if (echo_test_string=`eval $cmd`) 2>/dev/null && + echo_test_string=`eval $cmd` && + (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null + then + break + fi + done +fi + +if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + : +else + # The Solaris, AIX, and Digital Unix default echo programs unquote + # backslashes. This makes it impossible to quote backslashes using + # echo "$something" | sed 's/\\/\\\\/g' + # + # So, first we look for a working echo in the user's PATH. + + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for dir in $PATH /usr/ucb; do + IFS="$lt_save_ifs" + if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && + test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$dir/echo" + break + fi + done + IFS="$lt_save_ifs" + + if test "X$echo" = Xecho; then + # We didn't find a better echo, so look for alternatives. + if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # This shell has a builtin print -r that does the trick. + echo='print -r' + elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) && + test "X$CONFIG_SHELL" != X/bin/ksh; then + # If we have ksh, try running configure again with it. + ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} + export ORIGINAL_CONFIG_SHELL + CONFIG_SHELL=/bin/ksh + export CONFIG_SHELL + exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} + else + # Try using printf. + echo='printf %s\n' + if test "X`($echo '\t') 2>/dev/null`" = 'X\t' && + echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + # Cool, printf works + : + elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL + export CONFIG_SHELL + SHELL="$CONFIG_SHELL" + export SHELL + echo="$CONFIG_SHELL $0 --fallback-echo" + elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && + test "X$echo_testing_string" = 'X\t' && + echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && + test "X$echo_testing_string" = "X$echo_test_string"; then + echo="$CONFIG_SHELL $0 --fallback-echo" + else + # maybe with a smaller string... + prev=: + + for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do + if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null + then + break + fi + prev="$cmd" + done + + if test "$prev" != 'sed 50q "$0"'; then + echo_test_string=`eval $prev` + export echo_test_string + exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} + else + # Oops. We lost completely, so just stick with echo. + echo=echo + fi + fi + fi + fi +fi +fi + +# Copy echo and quote the copy suitably for passing to libtool from +# the Makefile, instead of quoting the original, which is used later. +ECHO=$echo +if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then + ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" +fi + + + + +tagnames=${tagnames+${tagnames},}CXX + +tagnames=${tagnames+${tagnames},}F77 + +exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= + +ac_unique_file="libconfig.c" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='SHELL +PATH_SEPARATOR +PACKAGE_NAME +PACKAGE_TARNAME +PACKAGE_VERSION +PACKAGE_STRING +PACKAGE_BUGREPORT +exec_prefix +prefix +program_transform_name +bindir +sbindir +libexecdir +datarootdir +datadir +sysconfdir +sharedstatedir +localstatedir +includedir +oldincludedir +docdir +infodir +htmldir +dvidir +pdfdir +psdir +libdir +localedir +mandir +DEFS +ECHO_C +ECHO_N +ECHO_T +LIBS +build_alias +host_alias +target_alias +build +build_cpu +build_vendor +build_os +host +host_cpu +host_vendor +host_os +target +target_cpu +target_vendor +target_os +INSTALL_PROGRAM +INSTALL_SCRIPT +INSTALL_DATA +am__isrc +CYGPATH_W +PACKAGE +VERSION +ACLOCAL +AUTOCONF +AUTOMAKE +AUTOHEADER +MAKEINFO +install_sh +STRIP +INSTALL_STRIP_PROGRAM +MKDIR_P +mkdir_p +AWK +SET_MAKE +am__leading_dot +AMTAR +am__tar +am__untar +CC +CFLAGS +LDFLAGS +CPPFLAGS +ac_ct_CC +EXEEXT +OBJEXT +DEPDIR +am__include +am__quote +AMDEP_TRUE +AMDEP_FALSE +AMDEPBACKSLASH +CCDEPMODE +am__fastdepCC_TRUE +am__fastdepCC_FALSE +RANLIB +SED +GREP +EGREP +LN_S +ECHO +AR +DSYMUTIL +NMEDIT +DLLTOOL +AS +OBJDUMP +CPP +CXX +CXXFLAGS +ac_ct_CXX +CXXDEPMODE +am__fastdepCXX_TRUE +am__fastdepCXX_FALSE +CXXCPP +F77 +FFLAGS +ac_ct_F77 +LIBTOOL +LEX +LEX_OUTPUT_ROOT +LEXLIB +YACC +YFLAGS +BUILDCXX_TRUE +BUILDCXX_FALSE +GNU_WIN_TRUE +GNU_WIN_FALSE +LIBOBJS +LTLIBOBJS' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_dependency_tracking +enable_shared +enable_static +enable_fast_install +with_gnu_ld +enable_libtool_lock +with_pic +with_tags +enable_cxx +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +CXX +CXXFLAGS +CCC +CXXCPP +F77 +FFLAGS +YACC +YFLAGS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 + { (exit 1); exit 1; }; } + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + { $as_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 + { (exit 1); exit 1; }; } + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 + { (exit 1); exit 1; }; } + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + { $as_echo "$as_me: error: invalid package name: $ac_useropt" >&2 + { (exit 1); exit 1; }; } + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { $as_echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + { $as_echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) { $as_echo "$as_me: error: Unrecognized options: $ac_unrecognized_opts" >&2 + { (exit 1); exit 1; }; } ;; + *) $as_echo "$as_me: WARNING: Unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + { $as_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; } +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + { $as_echo "$as_me: error: Working directory cannot be determined" >&2 + { (exit 1); exit 1; }; } +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + { $as_echo "$as_me: error: pwd does not report name of working directory" >&2 + { (exit 1); exit 1; }; } + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + { $as_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 + { (exit 1); exit 1; }; } +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2 + { (exit 1); exit 1; }; } + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures this package to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] + --target=TARGET configure for building compilers for TARGET [HOST] +_ACEOF +fi + +if test -n "$ac_init_help"; then + + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors + --enable-shared[=PKGS] build shared libraries [default=yes] + --enable-static[=PKGS] build static libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) + --disable-cxx Disable building of the C++ library + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-pic try to use only PIC/non-PIC objects [default=use + both] + --with-tags[=TAGS] include additional configurations [automatic] + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + CXX C++ compiler command + CXXFLAGS C++ compiler flags + CXXCPP C++ preprocessor + F77 Fortran 77 compiler command + FFLAGS Fortran 77 compiler flags + YACC The `Yet Another C Compiler' implementation to use. Defaults to + the first program found out of: `bison -y', `byacc', `yacc'. + YFLAGS The list of arguments that will be passed by default to $YACC. + This script will default YFLAGS to the empty string to avoid a + default value of `-d' given by some make applications. + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +configure +generated by GNU Autoconf 2.62 + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by $as_me, which was +generated by GNU Autoconf 2.62. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" +done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; + 2) + ac_configure_args1="$ac_configure_args1 '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + ac_configure_args="$ac_configure_args '$ac_arg'" + ;; + esac + done +done +$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } +$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; } + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + cat <<\_ASBOX +## ---------------- ## +## Cache variables. ## +## ---------------- ## +_ASBOX + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +$as_echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + cat <<\_ASBOX +## ----------------- ## +## Output variables. ## +## ----------------- ## +_ASBOX + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + cat <<\_ASBOX +## ------------------- ## +## File substitutions. ## +## ------------------- ## +_ASBOX + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + cat <<\_ASBOX +## ----------- ## +## confdefs.h. ## +## ----------- ## +_ASBOX + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + ac_site_file1=$CONFIG_SITE +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test -r "$ac_site_file"; then + { $as_echo "$as_me:$LINENO: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special + # files actually), so we avoid doing that. + if test -f "$cache_file"; then + { $as_echo "$as_me:$LINENO: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:$LINENO: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:$LINENO: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:$LINENO: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:$LINENO: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + { { $as_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 +$as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} + { (exit 1); exit 1; }; } +fi + + + + + + + + + + + + + + + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +ac_aux_dir= +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { $as_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 +$as_echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} + { (exit 1); exit 1; }; } +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + { { $as_echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 +$as_echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} + { (exit 1); exit 1; }; } + +{ $as_echo "$as_me:$LINENO: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if test "${ac_cv_build+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + { { $as_echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 +$as_echo "$as_me: error: cannot guess build type; you must specify one" >&2;} + { (exit 1); exit 1; }; } +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 +$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} + { (exit 1); exit 1; }; } + +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 +$as_echo "$as_me: error: invalid value of canonical build" >&2;} + { (exit 1); exit 1; }; };; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:$LINENO: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if test "${ac_cv_host+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 +$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} + { (exit 1); exit 1; }; } +fi + +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 +$as_echo "$as_me: error: invalid value of canonical host" >&2;} + { (exit 1); exit 1; }; };; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:$LINENO: checking target system type" >&5 +$as_echo_n "checking target system type... " >&6; } +if test "${ac_cv_target+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test "x$target_alias" = x; then + ac_cv_target=$ac_cv_host +else + ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || + { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&5 +$as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $target_alias failed" >&2;} + { (exit 1); exit 1; }; } +fi + +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_target" >&5 +$as_echo "$ac_cv_target" >&6; } +case $ac_cv_target in +*-*-*) ;; +*) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical target" >&5 +$as_echo "$as_me: error: invalid value of canonical target" >&2;} + { (exit 1); exit 1; }; };; +esac +target=$ac_cv_target +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_target +shift +target_cpu=$1 +target_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +target_os=$* +IFS=$ac_save_IFS +case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac + + +# The aliases save the names the user supplied, while $host etc. +# will get canonicalized. +test -n "$target_alias" && + test "$program_prefix$program_suffix$program_transform_name" = \ + NONENONEs,x,x, && + program_prefix=${target_alias}- +am__api_version='1.10' + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + +done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:$LINENO: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ $as_echo "$as_me:$LINENO: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } +# Just in case +sleep 1 +echo timestamp > conftest.file +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt $srcdir/configure conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t $srcdir/configure conftest.file` + fi + rm -f conftest.file + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + { { $as_echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&5 +$as_echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken +alias in your environment" >&2;} + { (exit 1); exit 1; }; } + fi + + test "$2" = conftest.file + ) +then + # Ok. + : +else + { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files! +Check your system clock" >&5 +$as_echo "$as_me: error: newly created file is older than distributed files! +Check your system clock" >&2;} + { (exit 1); exit 1; }; } +fi +{ $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was `s,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + { $as_echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} +fi + +{ $as_echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if test "${ac_cv_path_mkdir+set}" = set; then + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done +done +IFS=$as_save_IFS + +fi + + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + test -d ./--version && rmdir ./--version + MKDIR_P="$ac_install_sh -d" + fi +fi +{ $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } + +mkdir_p="$MKDIR_P" +case $mkdir_p in + [\\/$]* | ?:[\\/]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_AWK+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:$LINENO: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ $as_echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + { { $as_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 +$as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} + { (exit 1); exit 1; }; } + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE=libconfig + VERSION=1.3.1 + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} + +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_STRIP+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:$LINENO: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +# Always define AMTAR for backward compatibility. + +AMTAR=${AMTAR-"${am_missing_run}tar"} + +am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' + + + + + + +ac_config_headers="$ac_config_headers ac_config.h" + + +cat >>confdefs.h <<_ACEOF +#define TARGET "${target}" +_ACEOF + + + + +cat >>confdefs.h <<\_ACEOF +#define _GNU_SOURCE 1 +_ACEOF + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CC+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:$LINENO: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CC+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:$LINENO: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: no acceptable C compiler found in \$PATH +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + +# Provide some information about the compiler. +$as_echo "$as_me:$LINENO: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { (ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi + +{ $as_echo "$as_me:$LINENO: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +if test -z "$ac_file"; then + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: C compiler cannot create executables +See \`config.log' for more details." >&2;} + { (exit 77); exit 77; }; } +fi + +ac_exeext=$ac_cv_exeext + +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +# FIXME: These cross compiler hacks should be removed for Autoconf 3.0 +# If not cross compiling, check that we can run a simple program. +if test "$cross_compiling" != yes; then + if { ac_try='./$ac_file' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } + fi + fi +fi +{ $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +{ $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +{ $as_echo "$as_me:$LINENO: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest$ac_cv_exeext +{ $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +{ $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if test "${ac_cv_objext+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: cannot compute suffix of object files: cannot compile +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if test "${ac_cv_c_compiler_gnu+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_compiler_gnu=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if test "${ac_cv_prog_cc_g+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + CFLAGS="" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_g=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if test "${ac_cv_prog_cc_c89+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cc_c89=$ac_arg +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:$LINENO: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:$LINENO: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo done +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +{ $as_echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5 +$as_echo_n "checking for style of include used by $am_make... " >&6; } +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# We grep out `Entering directory' and `Leaving directory' +# messages which can occur if `w' ends up in MAKEFLAGS. +# In particular we don't look at `^make:' because GNU make might +# be invoked under some other name (usually "gmake"), in which +# case it prints its new name instead of `make'. +if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then + am__include=include + am__quote= + _am_result=GNU +fi +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then + am__include=.include + am__quote="\"" + _am_result=BSD + fi +fi + + +{ $as_echo "$as_me:$LINENO: result: $_am_result" >&5 +$as_echo "$_am_result" >&6; } +rm -f confinc confmf + +# Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + +depcc="$CC" am_compiler_list= + +{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_RANLIB+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + + + +# Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_shared=yes +fi + + +# Check whether --enable-static was given. +if test "${enable_static+set}" = set; then + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_static=yes +fi + + +# Check whether --enable-fast-install was given. +if test "${enable_fast_install+set}" = set; then + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_fast_install=yes +fi + + +{ $as_echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if test "${lt_cv_path_SED+set}" = set; then + $as_echo_n "(cached) " >&6 +else + # Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$lt_ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$lt_ac_prog$ac_exec_ext"; }; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done + +fi + +SED=$lt_cv_path_SED + +{ $as_echo "$as_me:$LINENO: result: $SED" >&5 +$as_echo "$SED" >&6; } + +{ $as_echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if test "${ac_cv_path_GREP+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done +done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + { { $as_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +$as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:$LINENO: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if test "${ac_cv_path_EGREP+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + ac_count=`expr $ac_count + 1` + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done +done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + { { $as_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 +$as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} + { (exit 1); exit 1; }; } + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if test "${lt_cv_path_LD+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +$as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +{ $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if test "${lt_cv_prog_gnu_ld+set}" = set; then + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + +{ $as_echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5 +$as_echo_n "checking for $LD option to reload object files... " >&6; } +if test "${lt_cv_ld_reload_flag+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_reload_flag='-r' +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5 +$as_echo "$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + darwin*) + if test "$GCC" = yes; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + +{ $as_echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5 +$as_echo_n "checking for BSD-compatible nm... " >&6; } +if test "${lt_cv_path_NM+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm +fi +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5 +$as_echo "$lt_cv_path_NM" >&6; } +NM="$lt_cv_path_NM" + +{ $as_echo "$as_me:$LINENO: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi + +{ $as_echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5 +$as_echo_n "checking how to recognize dependent libraries... " >&6; } +if test "${lt_cv_deplibs_check_method+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[4-9]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + if ( file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - PA-RISC [0-9].[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9].[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +nto-qnx*) + lt_cv_deplibs_check_method=unknown + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 +$as_echo "$lt_cv_deplibs_check_method" >&6; } +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then + enableval=$enable_libtool_lock; +fi + +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '#line 4581 "configure"' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +s390*-*linux*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + { $as_echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5 +$as_echo_n "checking whether the C compiler needs -belf... " >&6; } +if test "${lt_cv_cc_needs_belf+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + lt_cv_cc_needs_belf=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + lt_cv_cc_needs_belf=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5 +$as_echo "$lt_cv_cc_needs_belf" >&6; } + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-cygwin* | *-*-mingw* | *-*-pw32*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_DLLTOOL+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:$LINENO: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_DLLTOOL+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:$LINENO: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. +set dummy ${ac_tool_prefix}as; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_AS+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$AS"; then + ac_cv_prog_AS="$AS" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AS="${ac_tool_prefix}as" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +AS=$ac_cv_prog_AS +if test -n "$AS"; then + { $as_echo "$as_me:$LINENO: result: $AS" >&5 +$as_echo "$AS" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AS"; then + ac_ct_AS=$AS + # Extract the first word of "as", so it can be a program name with args. +set dummy as; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_AS+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AS"; then + ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_AS="as" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_AS=$ac_cv_prog_ac_ct_AS +if test -n "$ac_ct_AS"; then + { $as_echo "$as_me:$LINENO: result: $ac_ct_AS" >&5 +$as_echo "$ac_ct_AS" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_AS" = x; then + AS="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + AS=$ac_ct_AS + fi +else + AS="$ac_cv_prog_AS" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_OBJDUMP+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:$LINENO: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:$LINENO: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + + ;; + +esac + +need_locks="$enable_libtool_lock" + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + : +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi + +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + # Broken: success on invalid input. +continue +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi + +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:$LINENO: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + : +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi + +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + # Broken: success on invalid input. +continue +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi + +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if test "${ac_cv_header_stdc+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_header_stdc=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_header_stdc=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + +fi +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + + + + + + + + + +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do +as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default + +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + eval "$as_ac_Header=yes" +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_Header=no" +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if test `eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + +for ac_header in dlfcn.h +do +as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +$as_echo_n "checking $ac_header usability... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +$as_echo_n "checking $ac_header presence... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + + ;; +esac +{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + +fi +if test `eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CXX+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { $as_echo "$as_me:$LINENO: result: $CXX" >&5 +$as_echo "$CXX" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { $as_echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +$as_echo "$as_me:$LINENO: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_compiler_gnu=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ $as_echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if test "${ac_cv_prog_cxx_g+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cxx_g=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + CXXFLAGS="" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cxx_g=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +depcc="$CXX" am_compiler_list= + +{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi + + + + +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +{ $as_echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5 +$as_echo_n "checking how to run the C++ preprocessor... " >&6; } +if test -z "$CXXCPP"; then + if test "${ac_cv_prog_CXXCPP+set}" = set; then + $as_echo_n "(cached) " >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then + : +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi + +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then + # Broken: success on invalid input. +continue +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi + +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +{ $as_echo "$as_me:$LINENO: result: $CXXCPP" >&5 +$as_echo "$CXXCPP" >&6; } +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then + : +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Broken: fails on valid input. +continue +fi + +rm -f conftest.err conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then + # Broken: success on invalid input. +continue +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + # Passes both tests. +ac_preproc_ok=: +break +fi + +rm -f conftest.err conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err conftest.$ac_ext +if $ac_preproc_ok; then + : +else + { { $as_echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&5 +$as_echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details." >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +fi + + +ac_ext=f +ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' +ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_f77_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_F77+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$F77"; then + ac_cv_prog_F77="$F77" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_F77="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +F77=$ac_cv_prog_F77 +if test -n "$F77"; then + { $as_echo "$as_me:$LINENO: result: $F77" >&5 +$as_echo "$F77" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$F77" && break + done +fi +if test -z "$F77"; then + ac_ct_F77=$F77 + for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_F77+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_F77"; then + ac_cv_prog_ac_ct_F77="$ac_ct_F77" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_F77="$ac_prog" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_F77=$ac_cv_prog_ac_ct_F77 +if test -n "$ac_ct_F77"; then + { $as_echo "$as_me:$LINENO: result: $ac_ct_F77" >&5 +$as_echo "$ac_ct_F77" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_F77" && break +done + + if test "x$ac_ct_F77" = x; then + F77="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + F77=$ac_ct_F77 + fi +fi + + +# Provide some information about the compiler. +$as_echo "$as_me:$LINENO: checking for Fortran 77 compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +rm -f a.out + +# If we don't use `.F' as extension, the preprocessor is not run on the +# input file. (Note that this only needs to work for GNU compilers.) +ac_save_ext=$ac_ext +ac_ext=F +{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5 +$as_echo_n "checking whether we are using the GNU Fortran 77 compiler... " >&6; } +if test "${ac_cv_f77_compiler_gnu+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF + program main +#ifndef __GNUC__ + choke me +#endif + + end +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_compiler_gnu=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_f77_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5 +$as_echo "$ac_cv_f77_compiler_gnu" >&6; } +ac_ext=$ac_save_ext +ac_test_FFLAGS=${FFLAGS+set} +ac_save_FFLAGS=$FFLAGS +FFLAGS= +{ $as_echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5 +$as_echo_n "checking whether $F77 accepts -g... " >&6; } +if test "${ac_cv_prog_f77_g+set}" = set; then + $as_echo_n "(cached) " >&6 +else + FFLAGS=-g +cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_f77_g=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_prog_f77_g=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5 +$as_echo "$ac_cv_prog_f77_g" >&6; } +if test "$ac_test_FFLAGS" = set; then + FFLAGS=$ac_save_FFLAGS +elif test $ac_cv_prog_f77_g = yes; then + if test "x$ac_cv_f77_compiler_gnu" = xyes; then + FFLAGS="-g -O2" + else + FFLAGS="-g" + fi +else + if test "x$ac_cv_f77_compiler_gnu" = xyes; then + FFLAGS="-O2" + else + FFLAGS= + fi +fi + +if test $ac_compiler_gnu = yes; then + G77=yes +else + G77= +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers! +# find the maximum length of command line arguments +{ $as_echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5 +$as_echo_n "checking the maximum length of command line arguments... " >&6; } +if test "${lt_cv_sys_max_cmd_len+set}" = set; then + $as_echo_n "(cached) " >&6 +else + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \ + = "XX$teststring") >/dev/null 2>&1 && + new_result=`expr "X$teststring" : ".*" 2>&1` && + lt_cv_sys_max_cmd_len=$new_result && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + teststring= + # Add a significant safety factor because C++ compilers can tack on massive + # amounts of additional arguments before passing them to the linker. + # It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac + +fi + +if test -n $lt_cv_sys_max_cmd_len ; then + { $as_echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 +$as_echo "$lt_cv_sys_max_cmd_len" >&6; } +else + { $as_echo "$as_me:$LINENO: result: none" >&5 +$as_echo "none" >&6; } +fi + + + + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ $as_echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5 +$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then + $as_echo_n "(cached) " >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Transform an extracted symbol line into a proper C declaration +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32*) + symcode='[ABCDGISTW]' + ;; +hpux*) # Its linker distinguishes data from code symbols + if test "$host_cpu" = ia64; then + symcode='[ABCDEGRST]' + fi + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + ;; +linux* | k*bsd*-gnu) + if test "$host_cpu" = ia64; then + symcode='[ABCDGIRSTW]' + lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'" + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`echo 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +# Try without a prefix undercore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { (eval echo "$as_me:$LINENO: \"$NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist\"") >&5 + (eval $NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $nlist) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if grep ' nm_test_var$' "$nlist" >/dev/null; then + if grep ' nm_test_func$' "$nlist" >/dev/null; then + cat < conftest.$ac_ext +#ifdef __cplusplus +extern "C" { +#endif + +EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext' + + cat <> conftest.$ac_ext +#if defined (__STDC__) && __STDC__ +# define lt_ptr_t void * +#else +# define lt_ptr_t char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +const struct { + const char *name; + lt_ptr_t address; +} +lt_preloaded_symbols[] = +{ +EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext + cat <<\EOF >> conftest.$ac_ext + {0, (lt_ptr_t) 0} +}; + +#ifdef __cplusplus +} +#endif +EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_save_LIBS="$LIBS" + lt_save_CFLAGS="$CFLAGS" + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS="$lt_save_LIBS" + CFLAGS="$lt_save_CFLAGS" + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { $as_echo "$as_me:$LINENO: result: failed" >&5 +$as_echo "failed" >&6; } +else + { $as_echo "$as_me:$LINENO: result: ok" >&5 +$as_echo "ok" >&6; } +fi + +{ $as_echo "$as_me:$LINENO: checking for objdir" >&5 +$as_echo_n "checking for objdir... " >&6; } +if test "${lt_cv_objdir+set}" = set; then + $as_echo_n "(cached) " >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5 +$as_echo "$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='sed -e 1s/^X//' +sed_quote_subst='s/\([\\"\\`$\\\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([\\"\\`\\\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +# Constants: +rm="rm -f" + +# Global variables: +default_ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a +ltmain="$ac_aux_dir/ltmain.sh" +ofile="$default_ofile" +with_gnu_ld="$lt_cv_prog_gnu_ld" + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +set dummy ${ac_tool_prefix}ar; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_AR+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_AR="${ac_tool_prefix}ar" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:$LINENO: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AR"; then + ac_ct_AR=$AR + # Extract the first word of "ar", so it can be a program name with args. +set dummy ar; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_AR+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_AR="ar" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:$LINENO: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +else + AR="$ac_cv_prog_AR" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_RANLIB+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:$LINENO: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_STRIP+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:$LINENO: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$AR" && AR=ar +test -z "$AR_FLAGS" && AR_FLAGS=cru +test -z "$AS" && AS=as +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$DLLTOOL" && DLLTOOL=dlltool +test -z "$LD" && LD=ld +test -z "$LN_S" && LN_S="ln -s" +test -z "$MAGIC_CMD" && MAGIC_CMD=file +test -z "$NM" && NM=nm +test -z "$SED" && SED=sed +test -z "$OBJDUMP" && OBJDUMP=objdump +test -z "$RANLIB" && RANLIB=: +test -z "$STRIP" && STRIP=: +test -z "$ac_objext" && ac_objext=o + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# Only perform the check for file, if the check method requires it +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { $as_echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5 +$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/${ac_tool_prefix}file; then + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { $as_echo "$as_me:$LINENO: checking for file" >&5 +$as_echo_n "checking for file... " >&6; } +if test "${lt_cv_path_MAGIC_CMD+set}" = set; then + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/file; then + lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + + + case $host_os in + rhapsody* | darwin*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_DSYMUTIL+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + { $as_echo "$as_me:$LINENO: result: $DSYMUTIL" >&5 +$as_echo "$DSYMUTIL" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + { $as_echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5 +$as_echo "$ac_ct_DSYMUTIL" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DSYMUTIL" = x; then + DSYMUTIL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + DSYMUTIL=$ac_ct_DSYMUTIL + fi +else + DSYMUTIL="$ac_cv_prog_DSYMUTIL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_NMEDIT+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + { $as_echo "$as_me:$LINENO: result: $NMEDIT" >&5 +$as_echo "$NMEDIT" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + { $as_echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5 +$as_echo "$ac_ct_NMEDIT" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_NMEDIT" = x; then + NMEDIT=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + NMEDIT=$ac_ct_NMEDIT + fi +else + NMEDIT="$ac_cv_prog_NMEDIT" +fi + + + { $as_echo "$as_me:$LINENO: checking for -single_module linker flag" >&5 +$as_echo_n "checking for -single_module linker flag... " >&6; } +if test "${lt_cv_apple_cc_single_mod+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + echo "int foo(void){return 1;}" > conftest.c + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib ${wl}-single_module conftest.c + if test -f libconftest.dylib; then + lt_cv_apple_cc_single_mod=yes + rm -rf libconftest.dylib* + fi + rm conftest.c + fi +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5 +$as_echo "$lt_cv_apple_cc_single_mod" >&6; } + { $as_echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5 +$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } +if test "${lt_cv_ld_exported_symbols_list+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + lt_cv_ld_exported_symbols_list=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + lt_cv_ld_exported_symbols_list=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5 +$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } + case $host_os in + rhapsody* | darwin1.[0123]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[91]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[012]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms="~$NMEDIT -s \$output_objdir/\${libname}-symbols.expsym \${lib}" + fi + if test "$DSYMUTIL" != ":"; then + _lt_dsymutil="~$DSYMUTIL \$lib || :" + else + _lt_dsymutil= + fi + ;; + esac + + +enable_dlopen=no +enable_win32_dll=yes + +# Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then + enableval=$enable_libtool_lock; +fi + +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + + +# Check whether --with-pic was given. +if test "${with_pic+set}" = set; then + withval=$with_pic; pic_mode="$withval" +else + pic_mode=default +fi + +test -z "$pic_mode" && pic_mode=default + +# Use C for the default configuration in the libtool script +tagname= +lt_save_CC="$CC" +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm -r conftest* + + + +lt_prog_compiler_no_builtin_flag= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag=' -fno-builtin' + + +{ $as_echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:7973: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:7977: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $rm conftest* + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + +lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + +{ $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } + + if test "$GCC" = yes; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic='-qnocommon' + lt_prog_compiler_wl='-Wl,' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + *Sun\ F*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + esac + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +{ $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 +$as_echo "$lt_prog_compiler_pic" >&6; } + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + +{ $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if test "${lt_cv_prog_compiler_pic_works+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:8263: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:8267: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $rm conftest* + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works" = xyes; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if test "${lt_cv_prog_compiler_static_works+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $rm -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5 +$as_echo "$lt_cv_prog_compiler_static_works" >&6; } + +if test x"$lt_cv_prog_compiler_static_works" = xyes; then + : +else + lt_prog_compiler_static= +fi + + +{ $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test "${lt_cv_prog_compiler_c_o+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:8367: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:8371: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:$LINENO: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test "$hard_links" = no; then + { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +{ $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag= + enable_shared_with_static_runtimes=no + archive_cmds= + archive_expsym_cmds= + old_archive_From_new_cmds= + old_archive_from_expsyms_cmds= + export_dynamic_flag_spec= + whole_archive_flag_spec= + thread_safe_flag_spec= + hardcode_libdir_flag_spec= + hardcode_libdir_flag_spec_ld= + hardcode_libdir_separator= + hardcode_direct=no + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + link_all_deplibs=unknown + hardcode_automatic=no + module_cmds= + module_expsym_cmds= + always_export_symbols=no + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | k*bsd*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + *) + tmp_sharedflag='-shared' ;; + esac + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + ld_shlibs=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = no; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' ${wl}-bernotok' + allow_undefined_flag=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + archive_cmds_need_lc=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + # see comment about different semantics on the GNU ld section + ld_shlibs=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + whole_archive_flag_spec='' + link_all_deplibs=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' + module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + freebsd1*) + ld_shlibs=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + + hardcode_direct=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_libdir_flag_spec_ld='+b $libdir' + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld='-rpath $libdir' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + link_all_deplibs=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag='${wl}-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='${wl}-z,text' + allow_undefined_flag='${wl}-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + fi + +{ $as_echo "$as_me:$LINENO: result: $ld_shlibs" >&5 +$as_echo "$ld_shlibs" >&6; } +test "$ld_shlibs" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } + $rm conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc=no + else + archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 +$as_echo "$archive_cmds_need_lc" >&6; } + ;; + esac + fi + ;; +esac + +{ $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" + +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$lt_search_path_spec" | grep ';' >/dev/null ; then + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e 's/;/ /g'` + else + lt_search_path_spec=`echo "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`echo $lt_tmp_lt_search_path_spec | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } +}'` + sys_lib_search_path_spec=`echo $lt_search_path_spec` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[4-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix[3-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" +fi + +sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" +fi + +sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +{ $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || \ + test -n "$runpath_var" || \ + test "X$hardcode_automatic" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, )" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ $as_echo "$as_me:$LINENO: result: $hardcode_action" >&5 +$as_echo "$hardcode_action" >&6; } + +if test "$hardcode_action" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + +striplib= +old_striplib= +{ $as_echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5 +$as_echo_n "checking whether stripping libraries is possible... " >&6; } +if test -n "$STRIP" && $STRIP -V 2>&1 | grep "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + { $as_echo "$as_me:$LINENO: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + ;; + *) + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } + ;; + esac +fi + +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_lib_dl_dlopen=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_dl_dlopen=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + { $as_echo "$as_me:$LINENO: checking for shl_load" >&5 +$as_echo_n "checking for shl_load... " >&6; } +if test "${ac_cv_func_shl_load+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define shl_load to an innocuous variant, in case declares shl_load. + For example, HP-UX 11i declares gettimeofday. */ +#define shl_load innocuous_shl_load + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char shl_load (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef shl_load + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_shl_load || defined __stub___shl_load +choke me +#endif + +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_func_shl_load=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_shl_load=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 +$as_echo "$ac_cv_func_shl_load" >&6; } +if test $ac_cv_func_shl_load = yes; then + lt_cv_dlopen="shl_load" +else + { $as_echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 +$as_echo_n "checking for shl_load in -ldld... " >&6; } +if test "${ac_cv_lib_dld_shl_load+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_lib_dld_shl_load=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_dld_shl_load=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 +$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +if test $ac_cv_lib_dld_shl_load = yes; then + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" +else + { $as_echo "$as_me:$LINENO: checking for dlopen" >&5 +$as_echo_n "checking for dlopen... " >&6; } +if test "${ac_cv_func_dlopen+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define dlopen to an innocuous variant, in case declares dlopen. + For example, HP-UX 11i declares gettimeofday. */ +#define dlopen innocuous_dlopen + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char dlopen (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef dlopen + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_dlopen || defined __stub___dlopen +choke me +#endif + +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_func_dlopen=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_func_dlopen=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 +$as_echo "$ac_cv_func_dlopen" >&6; } +if test $ac_cv_func_dlopen = yes; then + lt_cv_dlopen="dlopen" +else + { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if test "${ac_cv_lib_dl_dlopen+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_lib_dl_dlopen=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_dl_dlopen=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test $ac_cv_lib_dl_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + { $as_echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 +$as_echo_n "checking for dlopen in -lsvld... " >&6; } +if test "${ac_cv_lib_svld_dlopen+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_lib_svld_dlopen=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_svld_dlopen=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 +$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +if test $ac_cv_lib_svld_dlopen = yes; then + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + { $as_echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 +$as_echo_n "checking for dld_link in -ldld... " >&6; } +if test "${ac_cv_lib_dld_dld_link+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (); +int +main () +{ +return dld_link (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_lib_dld_dld_link=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_lib_dld_dld_link=no +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 +$as_echo "$ac_cv_lib_dld_dld_link" >&6; } +if test $ac_cv_lib_dld_dld_link = yes; then + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + { $as_echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5 +$as_echo_n "checking whether a program can dlopen itself... " >&6; } +if test "${lt_cv_dlopen_self+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5 +$as_echo "$lt_cv_dlopen_self" >&6; } + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { $as_echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5 +$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +if test "${lt_cv_dlopen_self_static+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext < +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +#ifdef __cplusplus +extern "C" void exit (int); +#endif + +void fnord() { int i=42;} +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + /* dlclose (self); */ + } + else + puts (dlerror ()); + + exit (status); +} +EOF + if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5 +$as_echo "$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + +# Report which library types will actually be built +{ $as_echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } +{ $as_echo "$as_me:$LINENO: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } + +{ $as_echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case $host_os in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + +aix[4-9]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +{ $as_echo "$as_me:$LINENO: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } + +{ $as_echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +{ $as_echo "$as_me:$LINENO: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler \ + CC \ + LD \ + lt_prog_compiler_wl \ + lt_prog_compiler_pic \ + lt_prog_compiler_static \ + lt_prog_compiler_no_builtin_flag \ + export_dynamic_flag_spec \ + thread_safe_flag_spec \ + whole_archive_flag_spec \ + enable_shared_with_static_runtimes \ + old_archive_cmds \ + old_archive_from_new_cmds \ + predep_objects \ + postdep_objects \ + predeps \ + postdeps \ + compiler_lib_search_path \ + compiler_lib_search_dirs \ + archive_cmds \ + archive_expsym_cmds \ + postinstall_cmds \ + postuninstall_cmds \ + old_archive_from_expsyms_cmds \ + allow_undefined_flag \ + no_undefined_flag \ + export_symbols_cmds \ + hardcode_libdir_flag_spec \ + hardcode_libdir_flag_spec_ld \ + hardcode_libdir_separator \ + hardcode_automatic \ + module_cmds \ + module_expsym_cmds \ + lt_cv_prog_compiler_c_o \ + fix_srcfile_path \ + exclude_expsyms \ + include_expsyms; do + + case $var in + old_archive_cmds | \ + old_archive_from_new_cmds | \ + archive_cmds | \ + archive_expsym_cmds | \ + module_cmds | \ + module_expsym_cmds | \ + old_archive_from_expsyms_cmds | \ + export_symbols_cmds | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="${ofile}T" + trap "$rm \"$cfgfile\"; exit 1" 1 2 15 + $rm -f "$cfgfile" + { $as_echo "$as_me:$LINENO: creating $ofile" >&5 +$as_echo "$as_me: creating $ofile" >&6;} + + cat <<__EOF__ >> "$cfgfile" +#! $SHELL + +# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP) +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 +# Free Software Foundation, Inc. +# +# This file is part of GNU Libtool: +# Originally by Gordon Matzigkeit , 1996 +# +# 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 +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="$SED -e 1s/^X//" + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# The names of the tagged configurations supported by this script. +available_tags= + +# ### BEGIN LIBTOOL CONFIG + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU C compiler? +with_gcc=$GCC + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps + +# The directories searched by this compiler when creating a shared +# library +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path=$lt_fix_srcfile_path + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# ### END LIBTOOL CONFIG + +__EOF__ + + + case $host_os in + aix3*) + cat <<\EOF >> "$cfgfile" + +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +EOF + ;; + esac + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" || (rm -f "$cfgfile"; exit 1) + + mv -f "$cfgfile" "$ofile" || \ + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + +# Check whether --with-tags was given. +if test "${with_tags+set}" = set; then + withval=$with_tags; tagnames="$withval" +fi + + +if test -f "$ltmain" && test -n "$tagnames"; then + if test ! -f "${ofile}"; then + { $as_echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5 +$as_echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;} + fi + + if test -z "$LTCC"; then + eval "`$SHELL ${ofile} --config | grep '^LTCC='`" + if test -z "$LTCC"; then + { $as_echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5 +$as_echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;} + else + { $as_echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5 +$as_echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;} + fi + fi + if test -z "$LTCFLAGS"; then + eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`" + fi + + # Extract list of available tagged configurations in $ofile. + # Note that this assumes the entire list is on one line. + available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'` + + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for tagname in $tagnames; do + IFS="$lt_save_ifs" + # Check whether tagname contains only valid characters + case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in + "") ;; + *) { { $as_echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5 +$as_echo "$as_me: error: invalid tag name: $tagname" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null + then + { { $as_echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5 +$as_echo "$as_me: error: tag name \"$tagname\" already exists" >&2;} + { (exit 1); exit 1; }; } + fi + + # Update the list of available tags. + if test -n "$tagname"; then + echo appending configuration tag \"$tagname\" to $ofile + + case $tagname in + CXX) + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + + + + +archive_cmds_need_lc_CXX=no +allow_undefined_flag_CXX= +always_export_symbols_CXX=no +archive_expsym_cmds_CXX= +export_dynamic_flag_spec_CXX= +hardcode_direct_CXX=no +hardcode_libdir_flag_spec_CXX= +hardcode_libdir_flag_spec_ld_CXX= +hardcode_libdir_separator_CXX= +hardcode_minus_L_CXX=no +hardcode_shlibpath_var_CXX=unsupported +hardcode_automatic_CXX=no +module_cmds_CXX= +module_expsym_cmds_CXX= +link_all_deplibs_CXX=unknown +old_archive_cmds_CXX=$old_archive_cmds +no_undefined_flag_CXX= +whole_archive_flag_spec_CXX= +enable_shared_with_static_runtimes_CXX=no + +# Dependencies to place before and after the object being linked: +predep_objects_CXX= +postdep_objects_CXX= +predeps_CXX= +postdeps_CXX= +compiler_lib_search_path_CXX= +compiler_lib_search_dirs_CXX= + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +objext_CXX=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(int, char *[]) { return(0); }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm -r conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_LD=$LD +lt_save_GCC=$GCC +GCC=$GXX +lt_save_with_gnu_ld=$with_gnu_ld +lt_save_path_LD=$lt_cv_path_LD +if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx +else + $as_unset lt_cv_prog_gnu_ld +fi +if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX +else + $as_unset lt_cv_path_LD +fi +test -z "${LDCXX+set}" || LD=$LDCXX +CC=${CXX-"c++"} +compiler=$CC +compiler_CXX=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# We don't want -fno-exception wen compiling C++ code, so set the +# no_builtin_flag separately +if test "$GXX" = yes; then + lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' +else + lt_prog_compiler_no_builtin_flag_CXX= +fi + +if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:$LINENO: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`echo $ac_prog| $SED 's%\\\\%/%g'` + while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do + ac_prog=`echo $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if test "${lt_cv_path_LD+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 +$as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} + { (exit 1); exit 1; }; } +{ $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if test "${lt_cv_prog_gnu_ld+set}" = set; then + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | \ + grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_CXX= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + +else + GXX=no + with_gnu_ld=no + wlarc= +fi + +# PORTME: fill in a description of your system's C++ link characteristics +{ $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } +ld_shlibs_CXX=yes +case $host_os in + aix3*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_CXX='' + hardcode_direct_CXX=yes + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + + if test "$GXX" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct_CXX=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_CXX=yes + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_libdir_separator_CXX= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_CXX=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_CXX='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + + archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_CXX="-z nodefs" + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_CXX=' ${wl}-bernotok' + allow_undefined_flag_CXX=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_CXX='$convenience' + archive_cmds_need_lc_CXX=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_CXX=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_CXX=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_CXX='-L$libdir' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=no + enable_shared_with_static_runtimes_CXX=yes + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_CXX=no + fi + ;; + darwin* | rhapsody*) + archive_cmds_need_lc_CXX=no + hardcode_direct_CXX=no + hardcode_automatic_CXX=yes + hardcode_shlibpath_var_CXX=unsupported + whole_archive_flag_spec_CXX='' + link_all_deplibs_CXX=yes + allow_undefined_flag_CXX="$_lt_dar_allow_undefined" + if test "$GXX" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + if test "$lt_cv_apple_cc_single_mod" != "yes"; then + archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" + archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" + fi + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' + module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_CXX=no + ;; + esac + fi + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + freebsd[12]*) + # C++ shared libraries reported to be fairly broken before switch to ELF + ld_shlibs_CXX=no + ;; + freebsd-elf*) + archive_cmds_need_lc_CXX=no + ;; + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + ld_shlibs_CXX=yes + ;; + gnu*) + ;; + hpux9*) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='${wl}-E' + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + archive_cmds_CXX='$rm $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + case $host_cpu in + hppa*64*|ia64*) ;; + *) + export_dynamic_flag_spec_CXX='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + ;; + *) + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | grep "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + interix[3-9]*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib' + fi + fi + link_all_deplibs_CXX=yes + ;; + esac + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + ;; + linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | grep "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc*) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + hardcode_libdir_flag_spec_CXX='-R$libdir' + whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + lynxos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + m88k*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + openbsd2*) + # C++ shared libraries are fairly broken + ld_shlibs_CXX=no + ;; + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + export_dynamic_flag_spec_CXX='${wl}-E' + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd='echo' + else + ld_shlibs_CXX=no + fi + ;; + osf3*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + allow_undefined_flag_CXX=' -expect_unresolved \*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname -Wl,-input -Wl,$lib.exp `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~ + $rm $lib.exp' + + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "ld" | grep -v "ld:"`; templist=`echo $templist | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + psos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + archive_cmds_need_lc_CXX=yes + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_shlibpath_var_CXX=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' + ;; + esac + link_all_deplibs_CXX=yes + + output_verbose_link_cmd='echo' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + no_undefined_flag_CXX=' ${wl}-z ${wl}defs' + if $CC --version | grep -v '^2\.7' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -shared $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$rm $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd="$CC -G $CFLAGS -v conftest.$objext 2>&1 | grep \"\-L\"" + fi + + hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag_CXX='${wl}-z,text' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + # So that behaviour is only enabled if SCOABSPATH is set to a + # non-empty value in the environment. Most likely only useful for + # creating official distributions of packages. + # This is a hack until libtool officially supports absolute path + # names for shared libraries. + no_undefined_flag_CXX='${wl}-z,text' + allow_undefined_flag_CXX='${wl}-z,nodefs' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + export_dynamic_flag_spec_CXX='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + vxworks*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; +esac +{ $as_echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } +test "$ld_shlibs_CXX" = no && can_build_shared=no + +GCC_CXX="$GXX" +LD_CXX="$LD" + +cat > conftest.$ac_ext <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + # The `*' in the case matches for architectures that use `case' in + # $output_verbose_cmd can trigger glob expansion during the loop + # eval without this substitution. + output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"` + + for p in `eval $output_verbose_link_cmd`; do + case $p in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" \ + || test $p = "-R"; then + prev=$p + continue + else + prev= + fi + + if test "$pre_test_object_deps_done" = no; then + case $p in + -L* | -R*) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$compiler_lib_search_path_CXX"; then + compiler_lib_search_path_CXX="${prev}${p}" + else + compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$postdeps_CXX"; then + postdeps_CXX="${prev}${p}" + else + postdeps_CXX="${postdeps_CXX} ${prev}${p}" + fi + fi + ;; + + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$predep_objects_CXX"; then + predep_objects_CXX="$p" + else + predep_objects_CXX="$predep_objects_CXX $p" + fi + else + if test -z "$postdep_objects_CXX"; then + postdep_objects_CXX="$p" + else + postdep_objects_CXX="$postdep_objects_CXX $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling CXX test program" +fi + +$rm -f confest.$objext + +compiler_lib_search_dirs_CXX= +if test -n "$compiler_lib_search_path_CXX"; then + compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` +fi + +# PORTME: override above test on systems where it is broken +case $host_os in +interix[3-9]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + predep_objects_CXX= + postdep_objects_CXX= + postdeps_CXX= + ;; + +linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + # + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + if test "$solaris_use_stlport4" != yes; then + postdeps_CXX='-library=Cstd -library=Crun' + fi + ;; + esac + ;; + +solaris*) + case $cc_basename in + CC*) + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + if test "$solaris_use_stlport4" != yes; then + postdeps_CXX='-library=Cstd -library=Crun' + fi + ;; + esac + ;; +esac + +case " $postdeps_CXX " in +*" -lc "*) archive_cmds_need_lc_CXX=no ;; +esac + +lt_prog_compiler_wl_CXX= +lt_prog_compiler_pic_CXX= +lt_prog_compiler_static_CXX= + +{ $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } + + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + fi + ;; + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' + ;; + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_CXX='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + lt_prog_compiler_pic_CXX= + ;; + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_CXX=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + else + case $host_os in + aix[4-9]*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + else + lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_CXX='-qnocommon' + lt_prog_compiler_wl_CXX='-Wl,' + ;; + esac + ;; + dgux*) + case $cc_basename in + ec++*) + lt_prog_compiler_pic_CXX='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + lt_prog_compiler_pic_CXX='+Z' + fi + ;; + aCC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_CXX='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler + lt_prog_compiler_wl_CXX='--backend -Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + ;; + icpc* | ecpc*) + # Intel C++ + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fpic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + lt_prog_compiler_pic_CXX='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + lt_prog_compiler_wl_CXX='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + lt_prog_compiler_pic_CXX='-pic' + ;; + cxx*) + # Digital/Compaq C++ + lt_prog_compiler_wl_CXX='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC*) + # Sun C++ 4.2, 5.x and Centerline C++ + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + lt_prog_compiler_pic_CXX='-pic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + lcc*) + # Lucid + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + lt_prog_compiler_pic_CXX='-KPIC' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + esac + ;; + vxworks*) + ;; + *) + lt_prog_compiler_can_build_shared_CXX=no + ;; + esac + fi + +{ $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5 +$as_echo "$lt_prog_compiler_pic_CXX" >&6; } + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_CXX"; then + +{ $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } +if test "${lt_cv_prog_compiler_pic_works_CXX+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works_CXX=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:13276: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:13280: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works_CXX=yes + fi + fi + $rm conftest* + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then + case $lt_prog_compiler_pic_CXX in + "" | " "*) ;; + *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; + esac +else + lt_prog_compiler_pic_CXX= + lt_prog_compiler_can_build_shared_CXX=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_CXX= + ;; + *) + lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" +{ $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if test "${lt_cv_prog_compiler_static_works_CXX+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works_CXX=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works_CXX=yes + fi + else + lt_cv_prog_compiler_static_works_CXX=yes + fi + fi + $rm -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } + +if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then + : +else + lt_prog_compiler_static_CXX= +fi + + +{ $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:13380: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:13384: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:$LINENO: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test "$hard_links" = no; then + { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +{ $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + case $host_os in + aix[4-9]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + export_symbols_cmds_CXX="$ltdll_cmds" + ;; + cygwin* | mingw*) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;/^.*[ ]__nm__/s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + +{ $as_echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } +test "$ld_shlibs_CXX" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_CXX" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_CXX=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_CXX in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } + $rm conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_CXX + pic_flag=$lt_prog_compiler_pic_CXX + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_CXX + allow_undefined_flag_CXX= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_CXX=no + else + archive_cmds_need_lc_CXX=yes + fi + allow_undefined_flag_CXX=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5 +$as_echo "$archive_cmds_need_lc_CXX" >&6; } + ;; + esac + fi + ;; +esac + +{ $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" + +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[4-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix[3-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" +fi + +sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" +fi + +sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +{ $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action_CXX= +if test -n "$hardcode_libdir_flag_spec_CXX" || \ + test -n "$runpath_var_CXX" || \ + test "X$hardcode_automatic_CXX" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_CXX" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no && + test "$hardcode_minus_L_CXX" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_CXX=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_CXX=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_CXX=unsupported +fi +{ $as_echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5 +$as_echo "$hardcode_action_CXX" >&6; } + +if test "$hardcode_action_CXX" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_CXX \ + CC_CXX \ + LD_CXX \ + lt_prog_compiler_wl_CXX \ + lt_prog_compiler_pic_CXX \ + lt_prog_compiler_static_CXX \ + lt_prog_compiler_no_builtin_flag_CXX \ + export_dynamic_flag_spec_CXX \ + thread_safe_flag_spec_CXX \ + whole_archive_flag_spec_CXX \ + enable_shared_with_static_runtimes_CXX \ + old_archive_cmds_CXX \ + old_archive_from_new_cmds_CXX \ + predep_objects_CXX \ + postdep_objects_CXX \ + predeps_CXX \ + postdeps_CXX \ + compiler_lib_search_path_CXX \ + compiler_lib_search_dirs_CXX \ + archive_cmds_CXX \ + archive_expsym_cmds_CXX \ + postinstall_cmds_CXX \ + postuninstall_cmds_CXX \ + old_archive_from_expsyms_cmds_CXX \ + allow_undefined_flag_CXX \ + no_undefined_flag_CXX \ + export_symbols_cmds_CXX \ + hardcode_libdir_flag_spec_CXX \ + hardcode_libdir_flag_spec_ld_CXX \ + hardcode_libdir_separator_CXX \ + hardcode_automatic_CXX \ + module_cmds_CXX \ + module_expsym_cmds_CXX \ + lt_cv_prog_compiler_c_o_CXX \ + fix_srcfile_path_CXX \ + exclude_expsyms_CXX \ + include_expsyms_CXX; do + + case $var in + old_archive_cmds_CXX | \ + old_archive_from_new_cmds_CXX | \ + archive_cmds_CXX | \ + archive_expsym_cmds_CXX | \ + module_cmds_CXX | \ + module_expsym_cmds_CXX | \ + old_archive_from_expsyms_cmds_CXX | \ + export_symbols_cmds_CXX | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_CXX + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler_CXX + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_CXX + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_CXX + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_CXX +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_CXX + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_CXX +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_CXX +archive_expsym_cmds=$lt_archive_expsym_cmds_CXX +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_CXX +module_expsym_cmds=$lt_module_expsym_cmds_CXX + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_CXX + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_CXX + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_CXX + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_CXX + +# The directories searched by this compiler when creating a shared +# library +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_CXX + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_CXX + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_CXX + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_CXX + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_CXX + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_CXX + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_CXX + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_CXX + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path=$lt_fix_srcfile_path + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_CXX + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_CXX + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_CXX + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_CXX + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC=$lt_save_CC +LDCXX=$LD +LD=$lt_save_LD +GCC=$lt_save_GCC +with_gnu_ldcxx=$with_gnu_ld +with_gnu_ld=$lt_save_with_gnu_ld +lt_cv_path_LDCXX=$lt_cv_path_LD +lt_cv_path_LD=$lt_save_path_LD +lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld +lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld + + else + tagname="" + fi + ;; + + F77) + if test -n "$F77" && test "X$F77" != "Xno"; then + +ac_ext=f +ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5' +ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_f77_compiler_gnu + + +archive_cmds_need_lc_F77=no +allow_undefined_flag_F77= +always_export_symbols_F77=no +archive_expsym_cmds_F77= +export_dynamic_flag_spec_F77= +hardcode_direct_F77=no +hardcode_libdir_flag_spec_F77= +hardcode_libdir_flag_spec_ld_F77= +hardcode_libdir_separator_F77= +hardcode_minus_L_F77=no +hardcode_automatic_F77=no +module_cmds_F77= +module_expsym_cmds_F77= +link_all_deplibs_F77=unknown +old_archive_cmds_F77=$old_archive_cmds +no_undefined_flag_F77= +whole_archive_flag_spec_F77= +enable_shared_with_static_runtimes_F77=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +objext_F77=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="\ + subroutine t + return + end +" + +# Code to be used in simple link tests +lt_simple_link_test_code="\ + program t + end +" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm -r conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${F77-"f77"} +compiler=$CC +compiler_F77=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +{ $as_echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } +{ $as_echo "$as_me:$LINENO: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } + +{ $as_echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } +test "$can_build_shared" = "no" && enable_shared=no + +# On AIX, shared libraries and static libraries use the same namespace, and +# are all built from PIC. +case $host_os in +aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; +aix[4-9]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; +esac +{ $as_echo "$as_me:$LINENO: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } + +{ $as_echo "$as_me:$LINENO: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } +# Make sure either enable_shared or enable_static is yes. +test "$enable_shared" = yes || enable_static=yes +{ $as_echo "$as_me:$LINENO: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } + +GCC_F77="$G77" +LD_F77="$LD" + +lt_prog_compiler_wl_F77= +lt_prog_compiler_pic_F77= +lt_prog_compiler_static_F77= + +{ $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } + + if test "$GCC" = yes; then + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_static_F77='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_F77='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_F77='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic_F77='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_F77='-fno-common' + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared_F77=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_F77=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_F77='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic_F77='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl_F77='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_F77='-Bstatic' + else + lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_F77='-qnocommon' + lt_prog_compiler_wl_F77='-Wl,' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_F77='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl_F77='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_F77='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static_F77='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl_F77='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static_F77='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-fpic' + lt_prog_compiler_static_F77='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl_F77='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static_F77='-non_shared' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + lt_prog_compiler_wl_F77='-Wl,' + ;; + *Sun\ F*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + lt_prog_compiler_wl_F77='' + ;; + esac + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl_F77='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static_F77='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static_F77='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl_F77='-Qoption ld ';; + *) + lt_prog_compiler_wl_F77='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl_F77='-Qoption ld ' + lt_prog_compiler_pic_F77='-PIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic_F77='-Kconform_pic' + lt_prog_compiler_static_F77='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_pic_F77='-KPIC' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl_F77='-Wl,' + lt_prog_compiler_can_build_shared_F77=no + ;; + + uts4*) + lt_prog_compiler_pic_F77='-pic' + lt_prog_compiler_static_F77='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared_F77=no + ;; + esac + fi + +{ $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5 +$as_echo "$lt_prog_compiler_pic_F77" >&6; } + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_F77"; then + +{ $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... " >&6; } +if test "${lt_cv_prog_compiler_pic_works_F77+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works_F77=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_F77" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:14963: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:14967: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works_F77=yes + fi + fi + $rm conftest* + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_F77" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works_F77" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works_F77" = xyes; then + case $lt_prog_compiler_pic_F77 in + "" | " "*) ;; + *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;; + esac +else + lt_prog_compiler_pic_F77= + lt_prog_compiler_can_build_shared_F77=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_F77= + ;; + *) + lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\" +{ $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if test "${lt_cv_prog_compiler_static_works_F77+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works_F77=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works_F77=yes + fi + else + lt_cv_prog_compiler_static_works_F77=yes + fi + fi + $rm -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_F77" >&5 +$as_echo "$lt_cv_prog_compiler_static_works_F77" >&6; } + +if test x"$lt_cv_prog_compiler_static_works_F77" = xyes; then + : +else + lt_prog_compiler_static_F77= +fi + + +{ $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_F77=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:15067: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:15071: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_F77=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_F77" >&6; } + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:$LINENO: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test "$hard_links" = no; then + { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +{ $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag_F77= + enable_shared_with_static_runtimes_F77=no + archive_cmds_F77= + archive_expsym_cmds_F77= + old_archive_From_new_cmds_F77= + old_archive_from_expsyms_cmds_F77= + export_dynamic_flag_spec_F77= + whole_archive_flag_spec_F77= + thread_safe_flag_spec_F77= + hardcode_libdir_flag_spec_F77= + hardcode_libdir_flag_spec_ld_F77= + hardcode_libdir_separator_F77= + hardcode_direct_F77=no + hardcode_minus_L_F77=no + hardcode_shlibpath_var_F77=unsupported + link_all_deplibs_F77=unknown + hardcode_automatic_F77=no + module_cmds_F77= + module_expsym_cmds_F77= + always_export_symbols_F77=no + export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms_F77= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms_F77='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs_F77=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_F77='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_F77='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_F77= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs_F77=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs_F77=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_F77=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_F77=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_F77='-L$libdir' + allow_undefined_flag_F77=unsupported + always_export_symbols_F77=no + enable_shared_with_static_runtimes_F77=yes + export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_F77='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_F77=no + fi + ;; + + interix[3-9]*) + hardcode_direct_F77=no + hardcode_shlibpath_var_F77=no + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + export_dynamic_flag_spec_F77='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_F77='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_F77='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | k*bsd*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec_F77='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + *) + tmp_sharedflag='-shared' ;; + esac + archive_cmds_F77='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + ld_shlibs_F77=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs_F77=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs_F77=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_F77=no + fi + ;; + esac + + if test "$ld_shlibs_F77" = no; then + runpath_var= + hardcode_libdir_flag_spec_F77= + export_dynamic_flag_spec_F77= + whole_archive_flag_spec_F77= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag_F77=unsupported + always_export_symbols_F77=yes + archive_expsym_cmds_F77='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L_F77=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct_F77=unsupported + fi + ;; + + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_F77='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_F77='' + hardcode_direct_F77=yes + hardcode_libdir_separator_F77=':' + link_all_deplibs_F77=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct_F77=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_F77=yes + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_libdir_separator_F77= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_F77=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_F77='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_F77='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_F77="-z nodefs" + archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF + program main + + end +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_f77_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_F77=' ${wl}-bernotok' + allow_undefined_flag_F77=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_F77='$convenience' + archive_cmds_need_lc_F77=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds_F77="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds_F77='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + # see comment about different semantics on the GNU ld section + ld_shlibs_F77=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec_F77=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_F77=' ' + allow_undefined_flag_F77=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds_F77='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds_F77='lib -OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path_F77='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes_F77=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag_F77='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_F77=no + hardcode_direct_F77=no + hardcode_automatic_F77=yes + hardcode_shlibpath_var_F77=unsupported + whole_archive_flag_spec_F77='' + link_all_deplibs_F77=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds_F77="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds_F77="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds_F77="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds_F77="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' + module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_F77=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_shlibpath_var_F77=no + ;; + + freebsd1*) + ld_shlibs_F77=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_minus_L_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds_F77='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + hardcode_direct_F77=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + + hardcode_direct_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_F77=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_libdir_flag_spec_ld_F77='+b $libdir' + hardcode_direct_F77=no + hardcode_shlibpath_var_F77=no + ;; + *) + hardcode_direct_F77=yes + export_dynamic_flag_spec_F77='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_F77=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld_F77='-rpath $libdir' + fi + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + link_all_deplibs_F77=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + newsos6) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + hardcode_shlibpath_var_F77=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct_F77=yes + hardcode_shlibpath_var_F77=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + export_dynamic_flag_spec_F77='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-R$libdir' + ;; + *) + archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs_F77=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_minus_L_F77=yes + allow_undefined_flag_F77=unsupported + archive_cmds_F77='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag_F77=' -expect_unresolved \*' + archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_F77=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag_F77=' -expect_unresolved \*' + archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec_F77='-rpath $libdir' + fi + hardcode_libdir_separator_F77=: + ;; + + solaris*) + no_undefined_flag_F77=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec_F77='-R$libdir' + hardcode_shlibpath_var_F77=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + whole_archive_flag_spec_F77='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs_F77=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_direct_F77=yes + hardcode_minus_L_F77=yes + hardcode_shlibpath_var_F77=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds_F77='$CC -r -o $output$reload_objs' + hardcode_direct_F77=no + ;; + motorola) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_F77=no + ;; + + sysv4.3*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + export_dynamic_flag_spec_F77='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_F77=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs_F77=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag_F77='${wl}-z,text' + archive_cmds_need_lc_F77=no + hardcode_shlibpath_var_F77=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_F77='${wl}-z,text' + allow_undefined_flag_F77='${wl}-z,nodefs' + archive_cmds_need_lc_F77=no + hardcode_shlibpath_var_F77=no + hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator_F77=':' + link_all_deplibs_F77=yes + export_dynamic_flag_spec_F77='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_F77='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_F77='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_F77='-L$libdir' + hardcode_shlibpath_var_F77=no + ;; + + *) + ld_shlibs_F77=no + ;; + esac + fi + +{ $as_echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5 +$as_echo "$ld_shlibs_F77" >&6; } +test "$ld_shlibs_F77" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_F77" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_F77=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_F77 in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } + $rm conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_F77 + pic_flag=$lt_prog_compiler_pic_F77 + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_F77 + allow_undefined_flag_F77= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_F77=no + else + archive_cmds_need_lc_F77=yes + fi + allow_undefined_flag_F77=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5 +$as_echo "$archive_cmds_need_lc_F77" >&6; } + ;; + esac + fi + ;; +esac + +{ $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" + +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[4-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix[3-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" +fi + +sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" +fi + +sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +{ $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action_F77= +if test -n "$hardcode_libdir_flag_spec_F77" || \ + test -n "$runpath_var_F77" || \ + test "X$hardcode_automatic_F77" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_F77" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no && + test "$hardcode_minus_L_F77" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_F77=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_F77=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_F77=unsupported +fi +{ $as_echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5 +$as_echo "$hardcode_action_F77" >&6; } + +if test "$hardcode_action_F77" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_F77 \ + CC_F77 \ + LD_F77 \ + lt_prog_compiler_wl_F77 \ + lt_prog_compiler_pic_F77 \ + lt_prog_compiler_static_F77 \ + lt_prog_compiler_no_builtin_flag_F77 \ + export_dynamic_flag_spec_F77 \ + thread_safe_flag_spec_F77 \ + whole_archive_flag_spec_F77 \ + enable_shared_with_static_runtimes_F77 \ + old_archive_cmds_F77 \ + old_archive_from_new_cmds_F77 \ + predep_objects_F77 \ + postdep_objects_F77 \ + predeps_F77 \ + postdeps_F77 \ + compiler_lib_search_path_F77 \ + compiler_lib_search_dirs_F77 \ + archive_cmds_F77 \ + archive_expsym_cmds_F77 \ + postinstall_cmds_F77 \ + postuninstall_cmds_F77 \ + old_archive_from_expsyms_cmds_F77 \ + allow_undefined_flag_F77 \ + no_undefined_flag_F77 \ + export_symbols_cmds_F77 \ + hardcode_libdir_flag_spec_F77 \ + hardcode_libdir_flag_spec_ld_F77 \ + hardcode_libdir_separator_F77 \ + hardcode_automatic_F77 \ + module_cmds_F77 \ + module_expsym_cmds_F77 \ + lt_cv_prog_compiler_c_o_F77 \ + fix_srcfile_path_F77 \ + exclude_expsyms_F77 \ + include_expsyms_F77; do + + case $var in + old_archive_cmds_F77 | \ + old_archive_from_new_cmds_F77 | \ + archive_cmds_F77 | \ + archive_expsym_cmds_F77 | \ + module_cmds_F77 | \ + module_expsym_cmds_F77 | \ + old_archive_from_expsyms_cmds_F77 | \ + export_symbols_cmds_F77 | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_F77 + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77 + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler_F77 + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_F77 + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_F77 + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_F77 + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_F77 +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77 + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_F77 + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77 + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77 + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77 + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77 + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_F77 +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77 + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77 + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_F77 +archive_expsym_cmds=$lt_archive_expsym_cmds_F77 +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_F77 +module_expsym_cmds=$lt_module_expsym_cmds_F77 + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_F77 + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_F77 + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_F77 + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_F77 + +# The directories searched by this compiler when creating a shared +# library +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_F77 + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_F77 + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_F77 + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_F77 + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_F77 + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_F77 + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_F77 + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77 + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_F77 + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_F77 + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_F77 + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_F77 + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_F77 + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path=$lt_fix_srcfile_path + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_F77 + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_F77 + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_F77 + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_F77 + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + else + tagname="" + fi + ;; + + GCJ) + if test -n "$GCJ" && test "X$GCJ" != "Xno"; then + + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +objext_GCJ=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm -r conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${GCJ-"gcj"} +compiler=$CC +compiler_GCJ=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +archive_cmds_need_lc_GCJ=no + +old_archive_cmds_GCJ=$old_archive_cmds + + +lt_prog_compiler_no_builtin_flag_GCJ= + +if test "$GCC" = yes; then + lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin' + + +{ $as_echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:17282: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:17286: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $rm conftest* + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions" +else + : +fi + +fi + +lt_prog_compiler_wl_GCJ= +lt_prog_compiler_pic_GCJ= +lt_prog_compiler_static_GCJ= + +{ $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } + + if test "$GCC" = yes; then + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_static_GCJ='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_GCJ='-Bstatic' + fi + ;; + + amigaos*) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_GCJ='-m68020 -resident32 -malways-restore-a4' + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_GCJ='-fno-common' + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared_GCJ=no + enable_shared=no + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_GCJ=-Kconform_pic + fi + ;; + + hpux*) + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_GCJ='-fPIC' + ;; + esac + ;; + + *) + lt_prog_compiler_pic_GCJ='-fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl_GCJ='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_GCJ='-Bstatic' + else + lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp' + fi + ;; + darwin*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + case $cc_basename in + xlc*) + lt_prog_compiler_pic_GCJ='-qnocommon' + lt_prog_compiler_wl_GCJ='-Wl,' + ;; + esac + ;; + + mingw* | cygwin* | pw32* | os2*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl_GCJ='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_GCJ='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl_GCJ='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + newsos6) + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + linux* | k*bsd*-gnu) + case $cc_basename in + icc* | ecc*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-static' + ;; + pgcc* | pgf77* | pgf90* | pgf95*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-fpic' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl_GCJ='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + lt_prog_compiler_wl_GCJ='-Wl,' + ;; + *Sun\ F*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + lt_prog_compiler_wl_GCJ='' + ;; + esac + ;; + esac + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl_GCJ='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static_GCJ='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + case $cc_basename in + f77* | f90* | f95*) + lt_prog_compiler_wl_GCJ='-Qoption ld ';; + *) + lt_prog_compiler_wl_GCJ='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl_GCJ='-Qoption ld ' + lt_prog_compiler_pic_GCJ='-PIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic_GCJ='-Kconform_pic' + lt_prog_compiler_static_GCJ='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_pic_GCJ='-KPIC' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl_GCJ='-Wl,' + lt_prog_compiler_can_build_shared_GCJ=no + ;; + + uts4*) + lt_prog_compiler_pic_GCJ='-pic' + lt_prog_compiler_static_GCJ='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared_GCJ=no + ;; + esac + fi + +{ $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5 +$as_echo "$lt_prog_compiler_pic_GCJ" >&6; } + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_GCJ"; then + +{ $as_echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... " >&6; } +if test "${lt_cv_prog_compiler_pic_works_GCJ+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works_GCJ=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_GCJ" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:17572: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:17576: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works_GCJ=yes + fi + fi + $rm conftest* + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works_GCJ" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works_GCJ" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works_GCJ" = xyes; then + case $lt_prog_compiler_pic_GCJ in + "" | " "*) ;; + *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;; + esac +else + lt_prog_compiler_pic_GCJ= + lt_prog_compiler_can_build_shared_GCJ=no +fi + +fi +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_GCJ= + ;; + *) + lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ" + ;; +esac + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\" +{ $as_echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if test "${lt_cv_prog_compiler_static_works_GCJ+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works_GCJ=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $echo "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works_GCJ=yes + fi + else + lt_cv_prog_compiler_static_works_GCJ=yes + fi + fi + $rm -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works_GCJ" >&5 +$as_echo "$lt_cv_prog_compiler_static_works_GCJ" >&6; } + +if test x"$lt_cv_prog_compiler_static_works_GCJ" = xyes; then + : +else + lt_prog_compiler_static_GCJ= +fi + + +{ $as_echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_GCJ=no + $rm -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:17676: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:17680: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $echo "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_GCJ=yes + fi + fi + chmod u+w . 2>&5 + $rm conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $rm out/ii_files/* && rmdir out/ii_files + $rm out/* && rmdir out + cd .. + rmdir conftest + $rm conftest* + +fi +{ $as_echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_GCJ" >&6; } + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:$LINENO: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $rm conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:$LINENO: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test "$hard_links" = no; then + { $as_echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + +{ $as_echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag_GCJ= + enable_shared_with_static_runtimes_GCJ=no + archive_cmds_GCJ= + archive_expsym_cmds_GCJ= + old_archive_From_new_cmds_GCJ= + old_archive_from_expsyms_cmds_GCJ= + export_dynamic_flag_spec_GCJ= + whole_archive_flag_spec_GCJ= + thread_safe_flag_spec_GCJ= + hardcode_libdir_flag_spec_GCJ= + hardcode_libdir_flag_spec_ld_GCJ= + hardcode_libdir_separator_GCJ= + hardcode_direct_GCJ=no + hardcode_minus_L_GCJ=no + hardcode_shlibpath_var_GCJ=unsupported + link_all_deplibs_GCJ=unknown + hardcode_automatic_GCJ=no + module_cmds_GCJ= + module_expsym_cmds_GCJ= + always_export_symbols_GCJ=no + export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms_GCJ= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms_GCJ='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + # Just being paranoid about ensuring that cc_basename is set. + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + + case $host_os in + cygwin* | mingw* | pw32*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs_GCJ=yes + if test "$with_gnu_ld" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_GCJ='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_GCJ='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | grep 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_GCJ= + fi + supports_anon_versioning=no + case `$LD -v 2>/dev/null` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs_GCJ=no + cat <&2 + +*** Warning: the GNU linker, at least up to release 2.9.1, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to modify your PATH +*** so that a non-GNU linker is found, and then restart. + +EOF + fi + ;; + + amigaos*) + archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + + # Samuel A. Falvo II reports + # that the semantics of dynamic libraries on AmigaOS, at least up + # to version 4, is to share data among multiple programs linked + # with the same dynamic library. Since this doesn't match the + # behavior of shared libraries on other platforms, we can't use + # them. + ld_shlibs_GCJ=no + ;; + + beos*) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_GCJ=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + cygwin* | mingw* | pw32*) + # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_GCJ='-L$libdir' + allow_undefined_flag_GCJ=unsupported + always_export_symbols_GCJ=no + enable_shared_with_static_runtimes_GCJ=yes + export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + + if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_GCJ='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + interix[3-9]*) + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + export_dynamic_flag_spec_GCJ='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_GCJ='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_GCJ='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | k*bsd*-gnu) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + tmp_addflag= + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers + whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec_GCJ='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + *) + tmp_sharedflag='-shared' ;; + esac + archive_cmds_GCJ='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test $supports_anon_versioning = yes; then + archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + $echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + else + ld_shlibs_GCJ=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then + ld_shlibs_GCJ=no + cat <&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +EOF + elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs_GCJ=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`' + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + *) + if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs_GCJ=no + fi + ;; + esac + + if test "$ld_shlibs_GCJ" = no; then + runpath_var= + hardcode_libdir_flag_spec_GCJ= + export_dynamic_flag_spec_GCJ= + whole_archive_flag_spec_GCJ= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag_GCJ=unsupported + always_export_symbols_GCJ=yes + archive_expsym_cmds_GCJ='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L_GCJ=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct_GCJ=unsupported + fi + ;; + + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + if $NM -V 2>&1 | grep 'GNU' > /dev/null; then + export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_GCJ='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_GCJ='' + hardcode_direct_GCJ=yes + hardcode_libdir_separator_GCJ=':' + link_all_deplibs_GCJ=yes + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && \ + strings "$collect2name" | grep resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct_GCJ=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_GCJ=yes + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_libdir_separator_GCJ= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols_GCJ=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_GCJ='-berok' + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_GCJ='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_GCJ="-z nodefs" + archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an empty executable. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + +lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\(.*\)$/\1/ + p + } + }' +aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +# Check for a 64-bit object if we didn't find anything. +if test -z "$aix_libpath"; then + aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +fi +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi + + hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_GCJ=' ${wl}-bernotok' + allow_undefined_flag_GCJ=' ${wl}-berok' + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_GCJ='$convenience' + archive_cmds_need_lc_GCJ=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds_GCJ="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + archive_cmds_GCJ='$rm $output_objdir/a2ixlibrary.data~$echo "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$echo "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$echo "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$echo "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + # see comment about different semantics on the GNU ld section + ld_shlibs_GCJ=no + ;; + + bsdi[45]*) + export_dynamic_flag_spec_GCJ=-rdynamic + ;; + + cygwin* | mingw* | pw32*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_GCJ=' ' + allow_undefined_flag_GCJ=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_From_new_cmds_GCJ='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds_GCJ='lib -OUT:$oldlib$oldobjs$old_deplibs' + fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`' + enable_shared_with_static_runtimes_GCJ=yes + ;; + + darwin* | rhapsody*) + case $host_os in + rhapsody* | darwin1.[012]) + allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress' + ;; + *) # Darwin 1.3 on + if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then + allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + else + case ${MACOSX_DEPLOYMENT_TARGET} in + 10.[012]) + allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' + ;; + 10.*) + allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup' + ;; + esac + fi + ;; + esac + archive_cmds_need_lc_GCJ=no + hardcode_direct_GCJ=no + hardcode_automatic_GCJ=yes + hardcode_shlibpath_var_GCJ=unsupported + whole_archive_flag_spec_GCJ='' + link_all_deplibs_GCJ=yes + if test "$GCC" = yes ; then + output_verbose_link_cmd='echo' + archive_cmds_GCJ="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds_GCJ="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds_GCJ="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds_GCJ="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + else + case $cc_basename in + xlc*) + output_verbose_link_cmd='echo' + archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $xlcverstring' + module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' + # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds + archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $xlcverstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' + ;; + *) + ld_shlibs_GCJ=no + ;; + esac + fi + ;; + + dgux*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_shlibpath_var_GCJ=no + ;; + + freebsd1*) + ld_shlibs_GCJ=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds_GCJ='$rm $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_direct_GCJ=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + + hardcode_direct_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes -a "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_libdir_flag_spec_ld_GCJ='+b $libdir' + hardcode_direct_GCJ=no + hardcode_shlibpath_var_GCJ=no + ;; + *) + hardcode_direct_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L_GCJ=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir' + fi + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + link_all_deplibs_GCJ=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + newsos6) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + hardcode_shlibpath_var_GCJ=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct_GCJ=yes + hardcode_shlibpath_var_GCJ=no + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + export_dynamic_flag_spec_GCJ='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-R$libdir' + ;; + *) + archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs_GCJ=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_minus_L_GCJ=yes + allow_undefined_flag_GCJ=unsupported + archive_cmds_GCJ='$echo "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$echo "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$echo DATA >> $output_objdir/$libname.def~$echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~$echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_From_new_cmds_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag_GCJ=' -expect_unresolved \*' + archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + fi + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_GCJ=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag_GCJ=' -expect_unresolved \*' + archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~ + $LD -shared${allow_undefined_flag} -input $lib.exp $linker_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib~$rm $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec_GCJ='-rpath $libdir' + fi + hardcode_libdir_separator_GCJ=: + ;; + + solaris*) + no_undefined_flag_GCJ=' -z text' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp' + else + wlarc='' + archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$rm $lib.exp' + fi + hardcode_libdir_flag_spec_GCJ='-R$libdir' + hardcode_shlibpath_var_GCJ=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs_GCJ=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_direct_GCJ=yes + hardcode_minus_L_GCJ=yes + hardcode_shlibpath_var_GCJ=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds_GCJ='$CC -r -o $output$reload_objs' + hardcode_direct_GCJ=no + ;; + motorola) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var_GCJ=no + ;; + + sysv4.3*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + export_dynamic_flag_spec_GCJ='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var_GCJ=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs_GCJ=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag_GCJ='${wl}-z,text' + archive_cmds_need_lc_GCJ=no + hardcode_shlibpath_var_GCJ=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_GCJ='${wl}-z,text' + allow_undefined_flag_GCJ='${wl}-z,nodefs' + archive_cmds_need_lc_GCJ=no + hardcode_shlibpath_var_GCJ=no + hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`' + hardcode_libdir_separator_GCJ=':' + link_all_deplibs_GCJ=yes + export_dynamic_flag_spec_GCJ='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds_GCJ='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds_GCJ='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec_GCJ='-L$libdir' + hardcode_shlibpath_var_GCJ=no + ;; + + *) + ld_shlibs_GCJ=no + ;; + esac + fi + +{ $as_echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5 +$as_echo "$ld_shlibs_GCJ" >&6; } +test "$ld_shlibs_GCJ" = no && can_build_shared=no + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_GCJ" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_GCJ=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_GCJ in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } + $rm conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_GCJ + pic_flag=$lt_prog_compiler_pic_GCJ + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ + allow_undefined_flag_GCJ= + if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5 + (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + then + archive_cmds_need_lc_GCJ=no + else + archive_cmds_need_lc_GCJ=yes + fi + allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $rm conftest* + { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5 +$as_echo "$archive_cmds_need_lc_GCJ" >&6; } + ;; + esac + fi + ;; +esac + +{ $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" + +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[4-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | grep yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$echo "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $rm /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32*) + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i;echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $rm \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" + ;; + mingw*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` + if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH printed by + # mingw gcc, but we are running on Cygwin. Gcc prints its search + # path with ; separators, and with drive letters. We can handle the + # drive letters (cygwin fileutils understands them), so leave them, + # especially as we might pass files found there to a mingw objdump, + # which wouldn't understand a cygwinified path. Ahh. + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`echo "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + ;; + + *) + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + ;; + esac + dynamic_linker='Win32 ld.exe' + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${versuffix}$shared_ext ${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555. + postinstall_cmds='chmod 555 $lib' + ;; + +interix[3-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +nto-qnx*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + export_dynamic_flag_spec='${wl}-Blargedynsym' + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + shlibpath_overrides_runpath=no + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + shlibpath_overrides_runpath=yes + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:$LINENO: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_sys_lib_search_path_spec="$sys_lib_search_path_spec" +fi + +sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + $as_echo_n "(cached) " >&6 +else + lt_cv_sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec" +fi + +sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +{ $as_echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action_GCJ= +if test -n "$hardcode_libdir_flag_spec_GCJ" || \ + test -n "$runpath_var_GCJ" || \ + test "X$hardcode_automatic_GCJ" = "Xyes" ; then + + # We can hardcode non-existant directories. + if test "$hardcode_direct_GCJ" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no && + test "$hardcode_minus_L_GCJ" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_GCJ=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_GCJ=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_GCJ=unsupported +fi +{ $as_echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5 +$as_echo "$hardcode_action_GCJ" >&6; } + +if test "$hardcode_action_GCJ" = relink; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_GCJ \ + CC_GCJ \ + LD_GCJ \ + lt_prog_compiler_wl_GCJ \ + lt_prog_compiler_pic_GCJ \ + lt_prog_compiler_static_GCJ \ + lt_prog_compiler_no_builtin_flag_GCJ \ + export_dynamic_flag_spec_GCJ \ + thread_safe_flag_spec_GCJ \ + whole_archive_flag_spec_GCJ \ + enable_shared_with_static_runtimes_GCJ \ + old_archive_cmds_GCJ \ + old_archive_from_new_cmds_GCJ \ + predep_objects_GCJ \ + postdep_objects_GCJ \ + predeps_GCJ \ + postdeps_GCJ \ + compiler_lib_search_path_GCJ \ + compiler_lib_search_dirs_GCJ \ + archive_cmds_GCJ \ + archive_expsym_cmds_GCJ \ + postinstall_cmds_GCJ \ + postuninstall_cmds_GCJ \ + old_archive_from_expsyms_cmds_GCJ \ + allow_undefined_flag_GCJ \ + no_undefined_flag_GCJ \ + export_symbols_cmds_GCJ \ + hardcode_libdir_flag_spec_GCJ \ + hardcode_libdir_flag_spec_ld_GCJ \ + hardcode_libdir_separator_GCJ \ + hardcode_automatic_GCJ \ + module_cmds_GCJ \ + module_expsym_cmds_GCJ \ + lt_cv_prog_compiler_c_o_GCJ \ + fix_srcfile_path_GCJ \ + exclude_expsyms_GCJ \ + include_expsyms_GCJ; do + + case $var in + old_archive_cmds_GCJ | \ + old_archive_from_new_cmds_GCJ | \ + archive_cmds_GCJ | \ + archive_expsym_cmds_GCJ | \ + module_cmds_GCJ | \ + module_expsym_cmds_GCJ | \ + old_archive_from_expsyms_cmds_GCJ | \ + export_symbols_cmds_GCJ | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_GCJ + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler_GCJ + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_GCJ + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_GCJ + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_GCJ + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_GCJ +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_GCJ + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_GCJ +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_GCJ +archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_GCJ +module_expsym_cmds=$lt_module_expsym_cmds_GCJ + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_GCJ + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_GCJ + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_GCJ + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_GCJ + +# The directories searched by this compiler when creating a shared +# library +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_GCJ + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_GCJ + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_GCJ + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_GCJ + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_GCJ + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_GCJ + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_GCJ + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_GCJ + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_GCJ + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_GCJ + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path=$lt_fix_srcfile_path + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_GCJ + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_GCJ + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_GCJ + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_GCJ + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + else + tagname="" + fi + ;; + + RC) + + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +objext_RC=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$rm conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$rm -r conftest* + + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +CC=${RC-"windres"} +compiler=$CC +compiler_RC=$CC +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` + +lt_cv_prog_compiler_c_o_RC=yes + +# The else clause should only fire when bootstrapping the +# libtool distribution, otherwise you forgot to ship ltmain.sh +# with your package, and you will get complaints that there are +# no rules to generate ltmain.sh. +if test -f "$ltmain"; then + # See if we are running on zsh, and set the options which allow our commands through + # without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + # Now quote all the things that may contain metacharacters while being + # careful not to overquote the AC_SUBSTed values. We take copies of the + # variables and quote the copies for generation of the libtool script. + for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \ + SED SHELL STRIP \ + libname_spec library_names_spec soname_spec extract_expsyms_cmds \ + old_striplib striplib file_magic_cmd finish_cmds finish_eval \ + deplibs_check_method reload_flag reload_cmds need_locks \ + lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \ + lt_cv_sys_global_symbol_to_c_name_address \ + sys_lib_search_path_spec sys_lib_dlsearch_path_spec \ + old_postinstall_cmds old_postuninstall_cmds \ + compiler_RC \ + CC_RC \ + LD_RC \ + lt_prog_compiler_wl_RC \ + lt_prog_compiler_pic_RC \ + lt_prog_compiler_static_RC \ + lt_prog_compiler_no_builtin_flag_RC \ + export_dynamic_flag_spec_RC \ + thread_safe_flag_spec_RC \ + whole_archive_flag_spec_RC \ + enable_shared_with_static_runtimes_RC \ + old_archive_cmds_RC \ + old_archive_from_new_cmds_RC \ + predep_objects_RC \ + postdep_objects_RC \ + predeps_RC \ + postdeps_RC \ + compiler_lib_search_path_RC \ + compiler_lib_search_dirs_RC \ + archive_cmds_RC \ + archive_expsym_cmds_RC \ + postinstall_cmds_RC \ + postuninstall_cmds_RC \ + old_archive_from_expsyms_cmds_RC \ + allow_undefined_flag_RC \ + no_undefined_flag_RC \ + export_symbols_cmds_RC \ + hardcode_libdir_flag_spec_RC \ + hardcode_libdir_flag_spec_ld_RC \ + hardcode_libdir_separator_RC \ + hardcode_automatic_RC \ + module_cmds_RC \ + module_expsym_cmds_RC \ + lt_cv_prog_compiler_c_o_RC \ + fix_srcfile_path_RC \ + exclude_expsyms_RC \ + include_expsyms_RC; do + + case $var in + old_archive_cmds_RC | \ + old_archive_from_new_cmds_RC | \ + archive_cmds_RC | \ + archive_expsym_cmds_RC | \ + module_cmds_RC | \ + module_expsym_cmds_RC | \ + old_archive_from_expsyms_cmds_RC | \ + export_symbols_cmds_RC | \ + extract_expsyms_cmds | reload_cmds | finish_cmds | \ + postinstall_cmds | postuninstall_cmds | \ + old_postinstall_cmds | old_postuninstall_cmds | \ + sys_lib_search_path_spec | sys_lib_dlsearch_path_spec) + # Double-quote double-evaled strings. + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\"" + ;; + *) + eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\"" + ;; + esac + done + + case $lt_echo in + *'\$0 --fallback-echo"') + lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'` + ;; + esac + +cfgfile="$ofile" + + cat <<__EOF__ >> "$cfgfile" +# ### BEGIN LIBTOOL TAG CONFIG: $tagname + +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_RC + +# Whether or not to disallow shared libs when runtime libs are static +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# An echo program that does not interpret backslashes. +echo=$lt_echo + +# The archiver. +AR=$lt_AR +AR_FLAGS=$lt_AR_FLAGS + +# A C compiler. +LTCC=$lt_LTCC + +# LTCC compiler flags. +LTCFLAGS=$lt_LTCFLAGS + +# A language-specific compiler. +CC=$lt_compiler_RC + +# Is the compiler the GNU C compiler? +with_gcc=$GCC_RC + +# An ERE matcher. +EGREP=$lt_EGREP + +# The linker used to build libraries. +LD=$lt_LD_RC + +# Whether we need hard or soft links. +LN_S=$lt_LN_S + +# A BSD-compatible nm program. +NM=$lt_NM + +# A symbol stripping program +STRIP=$lt_STRIP + +# Used to examine libraries when file_magic_cmd begins "file" +MAGIC_CMD=$MAGIC_CMD + +# Used on cygwin: DLL creation program. +DLLTOOL="$DLLTOOL" + +# Used on cygwin: object dumper. +OBJDUMP="$OBJDUMP" + +# Used on cygwin: assembler. +AS="$AS" + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_RC + +# Object file suffix (normally "o"). +objext="$ac_objext" + +# Old archive suffix (normally "a"). +libext="$libext" + +# Shared library suffix (normally ".so"). +shrext_cmds='$shrext_cmds' + +# Executable file suffix (normally ""). +exeext="$exeext" + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_RC +pic_mode=$pic_mode + +# What is the maximum length of a command? +max_cmd_len=$lt_cv_sys_max_cmd_len + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Do we need the lib prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_RC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC + +# Compiler flag to generate thread-safe objects. +thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC + +# Library versioning type. +version_type=$version_type + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME. +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Commands used to build and install an old-style archive. +RANLIB=$lt_RANLIB +old_archive_cmds=$lt_old_archive_cmds_RC +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC + +# Commands used to build and install a shared archive. +archive_cmds=$lt_archive_cmds_RC +archive_expsym_cmds=$lt_archive_expsym_cmds_RC +postinstall_cmds=$lt_postinstall_cmds +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to build a loadable module (assumed same as above if empty) +module_cmds=$lt_module_cmds_RC +module_expsym_cmds=$lt_module_expsym_cmds_RC + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + +# Dependencies to place before the objects being linked to create a +# shared library. +predep_objects=$lt_predep_objects_RC + +# Dependencies to place after the objects being linked to create a +# shared library. +postdep_objects=$lt_postdep_objects_RC + +# Dependencies to place before the objects being linked to create a +# shared library. +predeps=$lt_predeps_RC + +# Dependencies to place after the objects being linked to create a +# shared library. +postdeps=$lt_postdeps_RC + +# The directories searched by this compiler when creating a shared +# library +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_RC + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_RC + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method == file_magic. +file_magic_cmd=$lt_file_magic_cmd + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_RC + +# Flag that forces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_RC + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# Same as above, but a single script fragment to be evaled but not shown. +finish_eval=$lt_finish_eval + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# This is the shared library runtime path variable. +runpath_var=$runpath_var + +# This is the shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_RC + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_RC + +# If ld is used when linking, flag to hardcode \$libdir into +# a binary during linking. This must work even if \$libdir does +# not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_RC + +# Whether we need a single -rpath flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC + +# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the +# resulting binary. +hardcode_direct=$hardcode_direct_RC + +# Set to yes if using the -LDIR flag during linking hardcodes DIR into the +# resulting binary. +hardcode_minus_L=$hardcode_minus_L_RC + +# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into +# the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_RC + +# Set to yes if building a shared library automatically hardcodes DIR into the library +# and all subsequent libraries and executables linked against it. +hardcode_automatic=$hardcode_automatic_RC + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at relink time. +variables_saved_for_relink="$variables_saved_for_relink" + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_RC + +# Compile-time system search path for libraries +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Fix the shell variable \$srcfile for the compiler. +fix_srcfile_path=$lt_fix_srcfile_path + +# Set to yes if exported symbols are required. +always_export_symbols=$always_export_symbols_RC + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_RC + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_RC + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_RC + +# ### END LIBTOOL TAG CONFIG: $tagname + +__EOF__ + + +else + # If there is no Makefile yet, we rely on a make rule to execute + # `config.status --recheck' to rerun these tests and create the + # libtool script then. + ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'` + if test -f "$ltmain_in"; then + test -f Makefile && make "$ltmain" + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + ;; + + *) + { { $as_echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5 +$as_echo "$as_me: error: Unsupported tag name: $tagname" >&2;} + { (exit 1); exit 1; }; } + ;; + esac + + # Append the new tag name to the list of available tags. + if test -n "$tagname" ; then + available_tags="$available_tags $tagname" + fi + fi + done + IFS="$lt_save_ifs" + + # Now substitute the updated list of available tags. + if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then + mv "${ofile}T" "$ofile" + chmod +x "$ofile" + else + rm -f "${ofile}T" + { { $as_echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5 +$as_echo "$as_me: error: unable to update list of available tagged configurations." >&2;} + { (exit 1); exit 1; }; } + fi +fi + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + +# Prevent multiple expansion + + + + + + + + + + + + + + + + + + + + + +for ac_prog in flex lex +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_LEX+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$LEX"; then + ac_cv_prog_LEX="$LEX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_LEX="$ac_prog" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +LEX=$ac_cv_prog_LEX +if test -n "$LEX"; then + { $as_echo "$as_me:$LINENO: result: $LEX" >&5 +$as_echo "$LEX" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$LEX" && break +done +test -n "$LEX" || LEX=":" + +if test "x$LEX" != "x:"; then + cat >conftest.l <<_ACEOF +%% +a { ECHO; } +b { REJECT; } +c { yymore (); } +d { yyless (1); } +e { yyless (input () != 0); } +f { unput (yytext[0]); } +. { BEGIN INITIAL; } +%% +#ifdef YYTEXT_POINTER +extern char *yytext; +#endif +int +main (void) +{ + return ! yylex () + ! yywrap (); +} +_ACEOF +{ (ac_try="$LEX conftest.l" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$LEX conftest.l") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ $as_echo "$as_me:$LINENO: checking lex output file root" >&5 +$as_echo_n "checking lex output file root... " >&6; } +if test "${ac_cv_prog_lex_root+set}" = set; then + $as_echo_n "(cached) " >&6 +else + +if test -f lex.yy.c; then + ac_cv_prog_lex_root=lex.yy +elif test -f lexyy.c; then + ac_cv_prog_lex_root=lexyy +else + { { $as_echo "$as_me:$LINENO: error: cannot find output from $LEX; giving up" >&5 +$as_echo "$as_me: error: cannot find output from $LEX; giving up" >&2;} + { (exit 1); exit 1; }; } +fi +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_lex_root" >&5 +$as_echo "$ac_cv_prog_lex_root" >&6; } +LEX_OUTPUT_ROOT=$ac_cv_prog_lex_root + +if test -z "${LEXLIB+set}"; then + { $as_echo "$as_me:$LINENO: checking lex library" >&5 +$as_echo_n "checking lex library... " >&6; } +if test "${ac_cv_lib_lex+set}" = set; then + $as_echo_n "(cached) " >&6 +else + + ac_save_LIBS=$LIBS + ac_cv_lib_lex='none needed' + for ac_lib in '' -lfl -ll; do + LIBS="$ac_lib $ac_save_LIBS" + cat >conftest.$ac_ext <<_ACEOF +`cat $LEX_OUTPUT_ROOT.c` +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_lib_lex=$ac_lib +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext + test "$ac_cv_lib_lex" != 'none needed' && break + done + LIBS=$ac_save_LIBS + +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_lex" >&5 +$as_echo "$ac_cv_lib_lex" >&6; } + test "$ac_cv_lib_lex" != 'none needed' && LEXLIB=$ac_cv_lib_lex +fi + + +{ $as_echo "$as_me:$LINENO: checking whether yytext is a pointer" >&5 +$as_echo_n "checking whether yytext is a pointer... " >&6; } +if test "${ac_cv_prog_lex_yytext_pointer+set}" = set; then + $as_echo_n "(cached) " >&6 +else + # POSIX says lex can declare yytext either as a pointer or an array; the +# default is implementation-dependent. Figure out which it is, since +# not all implementations provide the %pointer and %array declarations. +ac_cv_prog_lex_yytext_pointer=no +ac_save_LIBS=$LIBS +LIBS="$LEXLIB $ac_save_LIBS" +cat >conftest.$ac_ext <<_ACEOF +#define YYTEXT_POINTER 1 +`cat $LEX_OUTPUT_ROOT.c` +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + ac_cv_prog_lex_yytext_pointer=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_save_LIBS + +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_lex_yytext_pointer" >&5 +$as_echo "$ac_cv_prog_lex_yytext_pointer" >&6; } +if test $ac_cv_prog_lex_yytext_pointer = yes; then + +cat >>confdefs.h <<\_ACEOF +#define YYTEXT_POINTER 1 +_ACEOF + +fi +rm -f conftest.l $LEX_OUTPUT_ROOT.c + +fi +if test "$LEX" = :; then + LEX=${am_missing_run}flex +fi +if test Z"$LEX" != Zflex; then +cat <&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_YACC+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$YACC"; then + ac_cv_prog_YACC="$YACC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_YACC="$ac_prog" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +YACC=$ac_cv_prog_YACC +if test -n "$YACC"; then + { $as_echo "$as_me:$LINENO: result: $YACC" >&5 +$as_echo "$YACC" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$YACC" && break +done +test -n "$YACC" || YACC="yacc" + +if test Z"$YACC" != "Zbison -y"; then +cat <&5 +$as_echo_n "checking for compiler switch to enable full C/C++ warnings... " >&6; }; + + +case "${CC}" in + +gcc) + warn_c_sw="-Wall -Wshadow -Wdeclaration-after-statement" + warn_cxx_sw="-Wall -Wshadow";; +*) + warn_cxx_sw="" + warn_c_sw="";; +esac + +if test -n "${warn_c_sw}"; +then + CFLAGS="${CFLAGS} ${warn_c_sw}"; + CXXFLAGS="${CXXFLAGS} ${warn_cxx_sw}"; + { $as_echo "$as_me:$LINENO: result: ${warn_c_sw}, ${warn_cxx_sw}" >&5 +$as_echo "${warn_c_sw}, ${warn_cxx_sw}" >&6; } +else + { $as_echo "$as_me:$LINENO: result: (cannot determine)" >&5 +$as_echo "(cannot determine)" >&6; } +fi; + + +{ $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if test "${ac_cv_header_stdc+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_header_stdc=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_header_stdc=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +rm -f conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { ac_try='./conftest$ac_exeext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + : +else + $as_echo "$as_me: program exited with status $ac_status" >&5 +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +( exit $ac_status ) +ac_cv_header_stdc=no +fi +rm -rf conftest.dSYM +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext +fi + + +fi +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\_ACEOF +#define STDC_HEADERS 1 +_ACEOF + +fi + + + + +for ac_header in unistd.h stdint.h xlocale.h +do +as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5 +$as_echo_n "checking $ac_header usability... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_header_compiler=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5 +$as_echo_n "checking $ac_header presence... " >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then + ac_header_preproc=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + + ;; +esac +{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 +$as_echo_n "checking for $ac_header... " >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + +fi +if test `eval 'as_val=${'$as_ac_Header'} + $as_echo "$as_val"'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +{ $as_echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 +$as_echo_n "checking for an ANSI C-conforming const... " >&6; } +if test "${ac_cv_c_const+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +/* FIXME: Include the comments suggested by Paul. */ +#ifndef __cplusplus + /* Ultrix mips cc rejects this. */ + typedef int charset[2]; + const charset cs; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + if (s) return 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* AIX XL C 1.02.0.0 rejects this saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; }; + struct s *b; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_c_const=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_c_const=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 +$as_echo "$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +cat >>confdefs.h <<\_ACEOF +#define const /**/ +_ACEOF + +fi + + + + + + +for ac_func in newlocale uselocale freelocale +do +as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +$as_echo_n "checking for $ac_func... " >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + eval "$as_ac_var=yes" +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +if test `eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + +# Check whether --enable-cxx was given. +if test "${enable_cxx+set}" = set; then + enableval=$enable_cxx; docxx=no +else + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_CXX+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { $as_echo "$as_me:$LINENO: result: $CXX" >&5 +$as_echo "$CXX" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + $as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { $as_echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } +else + { $as_echo "$as_me:$LINENO: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&5 +$as_echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools +whose name does not start with the host triplet. If you think this +configuration is useful to you, please write to autoconf@gnu.org." >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +$as_echo "$as_me:$LINENO: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler --version >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -v >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compiler -V >&5") 2>&5 + ac_status=$? + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + +{ $as_echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if test "${ac_cv_cxx_compiler_gnu+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_compiler_gnu=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_compiler_gnu=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ $as_echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if test "${ac_cv_prog_cxx_g+set}" = set; then + $as_echo_n "(cached) " >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cxx_g=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + CXXFLAGS="" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + : +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_prog_cxx_g=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +depcc="$CXX" am_compiler_list= + +{ $as_echo "$as_me:$LINENO: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + case $depmode in + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + none) break ;; + esac + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. + if depmode=$depmode \ + source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftest.${OBJEXT-o} sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi + + +docxx=yes + + +fi + + + if test x$docxx = xyes; then + BUILDCXX_TRUE= + BUILDCXX_FALSE='#' +else + BUILDCXX_TRUE='#' + BUILDCXX_FALSE= +fi + + + +case "$target" in + *-*-cygwin* | *-*-mingw*) + gnuwin=yes;; +esac + + if test x$gnuwin = xyes; then + GNU_WIN_TRUE= + GNU_WIN_FALSE='#' +else + GNU_WIN_TRUE='#' + GNU_WIN_FALSE= +fi + + + +ac_config_files="$ac_config_files Makefile doc/Makefile samples/Makefile samples/c/Makefile samples/c++/Makefile libconfig.pc libconfig++.pc libconfig.spec" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5 +$as_echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) $as_unset $ac_var ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + test "x$cache_file" != "x/dev/null" && + { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + cat confcache >$cache_file + else + { $as_echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" + ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +$as_echo "$as_me: error: conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +$as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +$as_echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +$as_echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${BUILDCXX_TRUE}" && test -z "${BUILDCXX_FALSE}"; then + { { $as_echo "$as_me:$LINENO: error: conditional \"BUILDCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +$as_echo "$as_me: error: conditional \"BUILDCXX\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi +if test -z "${GNU_WIN_TRUE}" && test -z "${GNU_WIN_FALSE}"; then + { { $as_echo "$as_me:$LINENO: error: conditional \"GNU_WIN\" was never defined. +Usually this means the macro was only invoked conditionally." >&5 +$as_echo "$as_me: error: conditional \"GNU_WIN\" was never defined. +Usually this means the macro was only invoked conditionally." >&2;} + { (exit 1); exit 1; }; } +fi + +: ${CONFIG_STATUS=./config.status} +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false +SHELL=\${CONFIG_SHELL-$SHELL} +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +## --------------------- ## +## M4sh Initialization. ## +## --------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in + *posix*) set -o posix ;; +esac + +fi + + + + +# PATH needs CR +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +if (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + +# Support unset when possible. +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + as_unset=unset +else + as_unset=false +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +case $0 in + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + { (exit 1); exit 1; } +fi + +# Work around bugs in pre-3.0 UWIN ksh. +for as_var in ENV MAIL MAILPATH +do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# Required to use basename. +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + + +# Name of the executable. +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# CDPATH. +$as_unset CDPATH + + + + as_lineno_1=$LINENO + as_lineno_2=$LINENO + test "x$as_lineno_1" != "x$as_lineno_2" && + test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { + + # Create $as_me.lineno as a copy of $as_myself, but with $LINENO + # uniformly replaced by the line number. The first 'sed' inserts a + # line-number line after each line using $LINENO; the second 'sed' + # does the real work. The second script uses 'N' to pair each + # line-number line with the line containing $LINENO, and appends + # trailing '-' during substitution so that $LINENO is not a special + # case at line end. + # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the + # scripts with optimization help from Paolo Bonzini. Blame Lee + # E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2 + { (exit 1); exit 1; }; } + + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in +-n*) + case `echo 'x\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + *) ECHO_C='\c';; + esac;; +*) + ECHO_N='-n';; +esac +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -p'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -p' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -p' + fi +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p=: +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +if test -x / >/dev/null 2>&1; then + as_test_x='test -x' +else + if ls -dL / >/dev/null 2>&1; then + as_ls_L_option=L + else + as_ls_L_option= + fi + as_test_x=' + eval sh -c '\'' + if test -d "$1"; then + test -d "$1/."; + else + case $1 in + -*)set "./$1";; + esac; + case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in + ???[sx]*):;;*)false;;esac;fi + '\'' sh + ' +fi +as_executable_p=$as_test_x + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 + +# Save the log message, to keep $[0] and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by $as_me, which was +generated by GNU Autoconf 2.62. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_version="\\ +config.status +configured by $0, generated by GNU Autoconf 2.62, + with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" + +Copyright (C) 2008 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + CONFIG_FILES="$CONFIG_FILES '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + CONFIG_HEADERS="$CONFIG_HEADERS '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + { $as_echo "$as_me: error: ambiguous option: $1 +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) { $as_echo "$as_me: error: unrecognized option: $1 +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "ac_config.h") CONFIG_HEADERS="$CONFIG_HEADERS ac_config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "samples/Makefile") CONFIG_FILES="$CONFIG_FILES samples/Makefile" ;; + "samples/c/Makefile") CONFIG_FILES="$CONFIG_FILES samples/c/Makefile" ;; + "samples/c++/Makefile") CONFIG_FILES="$CONFIG_FILES samples/c++/Makefile" ;; + "libconfig.pc") CONFIG_FILES="$CONFIG_FILES libconfig.pc" ;; + "libconfig++.pc") CONFIG_FILES="$CONFIG_FILES libconfig++.pc" ;; + "libconfig.spec") CONFIG_FILES="$CONFIG_FILES libconfig.spec" ;; + + *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 +$as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= + trap 'exit_status=$? + { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status +' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || +{ + $as_echo "$as_me: cannot create a temporary directory in ." >&2 + { (exit 1); exit 1; } +} + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=' ' +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } +ac_delim_num=`echo "$ac_subst_vars" | grep -c '$'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` = $ac_delim_num; then + break + elif $ac_last_try; then + { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 +$as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\).*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\).*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \ + || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5 +$as_echo "$as_me: error: could not setup config files machinery" >&2;} + { (exit 1); exit 1; }; } +_ACEOF + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/ +s/:*\${srcdir}:*/:/ +s/:*@srcdir@:*/:/ +s/^\([^=]*=[ ]*\):*/\1/ +s/:*$// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_t=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_t"; then + break + elif $ac_last_try; then + { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_HEADERS" >&5 +$as_echo "$as_me: error: could not make $CONFIG_HEADERS" >&2;} + { (exit 1); exit 1; }; } + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + prefix = substr(line, 1, index(line, defundef) - 1) + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", line, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + { { $as_echo "$as_me:$LINENO: error: could not setup config headers machinery" >&5 +$as_echo "$as_me: error: could not setup config headers machinery" >&2;} + { (exit 1); exit 1; }; } +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) { { $as_echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5 +$as_echo "$as_me: error: Invalid tag $ac_tag." >&2;} + { (exit 1); exit 1; }; };; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + { { $as_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 +$as_echo "$as_me: error: cannot find input file: $ac_f" >&2;} + { (exit 1); exit 1; }; };; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + ac_file_inputs="$ac_file_inputs '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:$LINENO: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$tmp/stdin" \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} + { (exit 1); exit 1; }; } ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { as_dir="$ac_dir" + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +$as_echo "$as_me: error: cannot create directory $as_dir" >&2;} + { (exit 1); exit 1; }; }; } + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= + +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p +' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} + { (exit 1); exit 1; }; } + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&2;} + + rm -f "$tmp/stdin" + case $ac_file in + -) cat "$tmp/out" && rm -f "$tmp/out";; + *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; + esac \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} + { (exit 1); exit 1; }; } + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" + } >"$tmp/config.h" \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} + { (exit 1); exit 1; }; } + if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:$LINENO: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$tmp/config.h" "$ac_file" \ + || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 +$as_echo "$as_me: error: could not create $ac_file" >&2;} + { (exit 1); exit 1; }; } + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \ + || { { $as_echo "$as_me:$LINENO: error: could not create -" >&5 +$as_echo "$as_me: error: could not create -" >&2;} + { (exit 1); exit 1; }; } + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { $as_echo "$as_me:$LINENO: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { as_dir=$dirpart/$fdir + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || { { $as_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 +$as_echo "$as_me: error: cannot create directory $as_dir" >&2;} + { (exit 1); exit 1; }; }; } + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done +done + ;; + + esac +done # for ac_tag + + +{ (exit 0); exit 0; } +_ACEOF +chmod +x $CONFIG_STATUS +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;} + { (exit 1); exit 1; }; } + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || { (exit 1); exit 1; } +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:$LINENO: WARNING: Unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: Unrecognized options: $ac_unrecognized_opts" >&2;} +fi + diff --git a/coregrade/src/libconfig-1.3.1/configure.ac b/coregrade/src/libconfig-1.3.1/configure.ac new file mode 100644 index 0000000..45989ad --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/configure.ac @@ -0,0 +1,111 @@ +dnl Process this file with autoconf to produce a configure script. +AC_INIT(libconfig.c) + +AC_CANONICAL_TARGET +AM_INIT_AUTOMAKE(libconfig, 1.3.1) + +AM_CONFIG_HEADER(ac_config.h) +AC_DEFINE_UNQUOTED(TARGET, "${target}", [Configured target name.]) + +AH_TEMPLATE(_GNU_SOURCE) +AC_DEFINE(_GNU_SOURCE) + +dnl Checks for programs. +dnl AC_PROG_INSTALL +AC_PROG_CC +AC_PROG_RANLIB +AC_LIBTOOL_WIN32_DLL +AC_PROG_LIBTOOL + +AM_PROG_LEX +if test Z"$LEX" != Zflex; then +cat < Fri, 4 Apr 2008 09:36:42 +0200 + +libconfigduo2 (1.2.1-1) unstable; urgency=low + + * Release 1.2.1 + + -- Klaus Schneider Thu, 31 Jan 2008 11:25:21 +0100 + +libconfigduo2 (1.1.1-1) unstable; urgency=low + + * Initial release + + -- Klaus Schneider Mon, 25 Jun 2007 16:21:56 +0200 diff --git a/coregrade/src/libconfig-1.3.1/debian/compat b/coregrade/src/libconfig-1.3.1/debian/compat new file mode 100644 index 0000000..7ed6ff8 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/debian/compat @@ -0,0 +1 @@ +5 diff --git a/coregrade/src/libconfig-1.3.1/debian/control b/coregrade/src/libconfig-1.3.1/debian/control new file mode 100644 index 0000000..ac09090 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/debian/control @@ -0,0 +1,38 @@ +Source: libconfigduo2 +Priority: extra +Maintainer: Klaus Schneider +Build-Depends: debhelper (>= 5), autotools-dev, texinfo +Standards-Version: 3.7.2 +Section: libs + +Package: libconfigduo2-dev +Section: libdevel +Architecture: any +Depends: libconfigduo2 (= ${Source-Version}) +Description: A library for processing configuration files, developement files + +Package: libconfigduo2 +Section: libs +Architecture: any +Depends: ${shlibs:Depends} +Conflicts: libconfigduo, libconfig +Description: A library for processing configuration files + Libconfig is a library for reading, manipulating, and writing structured + configuration files. The library features a fully reentrant parser and + includes bindings for both the C and C++ programming languages. + . + There are several open-source configuration file libraries available as of + this writing. This library was written because each of those libraries falls + short in one or more ways. The main features of libconfig that set it apart + from the other libraries are: + . + * A fully reentrant parser. Independent configurations can be parsed in + concurrent threads at the same time. + * Both C and C++ bindings, as well as hooks to allow for the creation of + wrappers in other languages. + * A simple, structured configuration file format that is more readable and + compact than XML and more flexible than the obsolete but prevalent + Windows INI file format. + * A low-footprint implementation (just 38K for the C library and 66K + for the C++ library) that is suitable for memory-constrained systems. + * Proper documentation. diff --git a/coregrade/src/libconfig-1.3.1/debian/copyright b/coregrade/src/libconfig-1.3.1/debian/copyright new file mode 100644 index 0000000..b445f4f --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/debian/copyright @@ -0,0 +1,31 @@ +This package was debianized by Klaus Schneider on +Mon, 25 Jun 2007 16:21:56 +0200. + +It was downloaded from http://www.hyperrealm.com/libconfig/libconfig.html + +Upstream Author: Mark A. Lindner + +Copyright: (c) 2005-2007 Mark A. Linder + +License: + + This package is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + This package is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this package; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +On Debian systems, the complete text of the GNU Lesser General +Public License can be found in `/usr/share/common-licenses/LGPL'. + + +The Debian packaging is (C) 2007, Klaus Schneider and +is licensed under the GPL, see `/usr/share/common-licenses/GPL'. diff --git a/coregrade/src/libconfig-1.3.1/debian/libconfigduo2-dev.docs b/coregrade/src/libconfig-1.3.1/debian/libconfigduo2-dev.docs new file mode 100644 index 0000000..136b6ca --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/debian/libconfigduo2-dev.docs @@ -0,0 +1,4 @@ +doc/libconfig.pdf +NEWS +README +TODO diff --git a/coregrade/src/libconfig-1.3.1/debian/libconfigduo2-dev.install b/coregrade/src/libconfig-1.3.1/debian/libconfigduo2-dev.install new file mode 100644 index 0000000..7adc5b9 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/debian/libconfigduo2-dev.install @@ -0,0 +1,6 @@ +usr/include/* +usr/lib/lib*.a +usr/lib/lib*.so +usr/lib/*.la +usr/lib/pkgconfig/* +usr/share/info/* diff --git a/coregrade/src/libconfig-1.3.1/debian/libconfigduo2.install b/coregrade/src/libconfig-1.3.1/debian/libconfigduo2.install new file mode 100644 index 0000000..d0dbfd1 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/debian/libconfigduo2.install @@ -0,0 +1 @@ +usr/lib/lib*.so.* diff --git a/coregrade/src/libconfig-1.3.1/debian/libconfigduo2.postinst b/coregrade/src/libconfig-1.3.1/debian/libconfigduo2.postinst new file mode 100644 index 0000000..f9cddef --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/debian/libconfigduo2.postinst @@ -0,0 +1,4 @@ +#!/bin/sh +if [ "$1" == "configure" ]; then + ldconfig +fi diff --git a/coregrade/src/libconfig-1.3.1/debian/rules b/coregrade/src/libconfig-1.3.1/debian/rules new file mode 100755 index 0000000..f29caee --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/debian/rules @@ -0,0 +1,109 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# Sample debian/rules that uses debhelper. +# This file was originally written by Joey Hess and Craig Small. +# As a special exception, when this file is copied by dh-make into a +# dh-make output file, you may use that output file without restriction. +# This special exception was added by Craig Small in version 0.37 of dh-make. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + + +# These are used for cross-compiling and for saving the configure script +# from having to guess our platform (since we know it already) +DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) + + +CFLAGS = -Wall -g + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 +else + CFLAGS += -O2 +endif + +# shared library versions, option 1 +version=2.0.5 +major=2 +# option 2, assuming the library is created as src/.libs/libfoo.so.2.0.5 or so +#version=`ls src/.libs/lib*.so.* | \ +# awk '{if (match($$0,/[0-9]+\.[0-9]+\.[0-9]+$$/)) print substr($$0,RSTART)}'` +#major=`ls src/.libs/lib*.so.* | \ +# awk '{if (match($$0,/\.so\.[0-9]+$$/)) print substr($$0,RSTART+4)}'` + +config.status: configure + dh_testdir + ./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) \ + --prefix=/usr --mandir=\$${prefix}/share/man \ + --infodir=\$${prefix}/share/info \ + CFLAGS="$(CFLAGS)" LDFLAGS="-Wl,-z,defs" + + +build: build-stamp +build-stamp: config.status + dh_testdir + $(MAKE) + $(MAKE) pdf + touch $@ + +clean: + dh_testdir + dh_testroot + rm -f build-stamp + -$(MAKE) distclean +ifneq "$(wildcard /usr/share/misc/config.sub)" "" + cp -f /usr/share/misc/config.sub config.sub +endif +ifneq "$(wildcard /usr/share/misc/config.guess)" "" + cp -f /usr/share/misc/config.guess config.guess +endif + + + dh_clean + +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + $(MAKE) DESTDIR=$(CURDIR)/debian/tmp install + +# Build architecture-independent files here. +binary-indep: build install +# We have nothing to do by default. + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + dh_installchangelogs ChangeLog + dh_installdocs + dh_installexamples + dh_install --sourcedir=$(CURDIR)/debian/tmp +# dh_installmenu +# dh_installdebconf +# dh_installlogrotate +# dh_installemacsen +# dh_installpam +# dh_installmime +# dh_installinit +# dh_installcron +# dh_installinfo + dh_installman + dh_link + dh_strip + dh_compress + dh_fixperms +# dh_perl +# dh_python +# dh_makeshlibs + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install diff --git a/coregrade/src/libconfig-1.3.1/debian/shlibs b/coregrade/src/libconfig-1.3.1/debian/shlibs new file mode 100644 index 0000000..5dcde30 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/debian/shlibs @@ -0,0 +1,2 @@ +libconfig 2 libconfigduo2 +libconfig++ 2 libconfigduo2 diff --git a/coregrade/src/libconfig-1.3.1/depcomp b/coregrade/src/libconfig-1.3.1/depcomp new file mode 100755 index 0000000..11e2d3b --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/depcomp @@ -0,0 +1,522 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2004-05-31.23 + +# Copyright (C) 1999, 2000, 2003, 2004 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 +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by `PROGRAMS ARGS'. + object Object file output by `PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputing dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit 0 + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit 0 + ;; +esac + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. + "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory +## that the space means something, we add a space to the output as +## well. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' +' ' ' >> $depfile + echo >> $depfile + + # The second pass generates a dummy entry for each header file. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> $depfile + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts `$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'` + tmpdepfile="$stripped.u" + if test "$libtool" = yes; then + "$@" -Wc,-M + else + "$@" -M + fi + stat=$? + + if test -f "$tmpdepfile"; then : + else + stripped=`echo "$stripped" | sed 's,^.*/,,'` + tmpdepfile="$stripped.u" + fi + + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + + if test -f "$tmpdepfile"; then + outname="$stripped.o" + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile" + sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +icc) + # Intel's C compiler understands `-MD -MF file'. However on + # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # ICC 7.0 will fill foo.d with something like + # foo.o: sub/foo.c + # foo.o: sub/foo.h + # which is wrong. We want: + # sub/foo.o: sub/foo.c + # sub/foo.o: sub/foo.h + # sub/foo.c: + # sub/foo.h: + # ICC 7.1 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using \ : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | + sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + + if test "$libtool" = yes; then + # Dependencies are output in .lo.d with libtool 1.4. + # With libtool 1.5 they are output both in $dir.libs/$base.o.d + # and in $dir.libs/$base.o.d and $dir$base.o.d. We process the + # latter, because the former will be cleaned when $dir.libs is + # erased. + tmpdepfile1="$dir.libs/$base.lo.d" + tmpdepfile2="$dir$base.o.d" + tmpdepfile3="$dir.libs/$base.d" + "$@" -Wc,-MD + else + tmpdepfile1="$dir$base.o.d" + tmpdepfile2="$dir$base.d" + tmpdepfile3="$dir$base.d" + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + if test -f "$tmpdepfile1"; then + tmpdepfile="$tmpdepfile1" + elif test -f "$tmpdepfile2"; then + tmpdepfile="$tmpdepfile2" + else + tmpdepfile="$tmpdepfile3" + fi + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for `:' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. + "$@" $dashmflag | + sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +' < "$tmpdepfile" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no + for arg in "$@"; do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix="`echo $object | sed 's/^.*\././'`" + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test $1 != '--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E | + sed -n '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o, + # because we must use -o when running libtool. + "$@" || exit $? + IFS=" " + for arg + do + case "$arg" in + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/coregrade/src/libconfig-1.3.1/doc/LGPL.texi b/coregrade/src/libconfig-1.3.1/doc/LGPL.texi new file mode 100644 index 0000000..e371ac0 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/doc/LGPL.texi @@ -0,0 +1,590 @@ +@c \input texinfo.tex @c -*-texinfo-*- +@c +@c %**start of header + +@c All text is ignored before the setfilename. +@setfilename LGPL.info + +@center GNU LESSER GENERAL PUBLIC LICENSE +@center Version 2.1, February 1999 + +@sp 1 + +Copyright @copyright{} 1991, 1999 Free Software Foundation, Inc., +59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts +as the successor of the GNU Library Public License, version 2, hence the +version number 2.1.] + +@sp 1 +@center Preamble +@sp 1 + +The licenses for most software are designed to take away your freedom to +share and change it. By contrast, the GNU General Public Licenses are +intended to guarantee your freedom to share and change free software--to +make sure the software is free for all its users. + +This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the Free +Software Foundation and other authors who decide to use it. You can use +it too, but we suggest you first think carefully about whether this +license or the ordinary General Public License is the better strategy to +use in any particular case, based on the explanations below. + +When we speak of free software, we are referring to freedom of use, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish); that you receive source code or can get it if +you want it; that you can change the software and use pieces of it in +new free programs; and that you are informed that you can do these +things. + +To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + +For example, if you distribute copies of the library, whether gratis or +for a fee, you must give the recipients all the rights that we gave you. +You must make sure that they, too, receive or can get the source code. +If you link other code with the library, you must provide complete +object files to the recipients, so that they can relink them with the +library after making changes to the library and recompiling it. And you +must show them these terms so they know their rights. + +We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + +To protect each distributor, we want to make it very clear that there is +no warranty for the free library. Also, if the library is modified by +someone else and passed on, the recipients should know that what they +have is not the original version, so that the original author's +reputation will not be affected by problems that might be introduced by +others. + +Finally, software patents pose a constant threat to the existence of any +free program. We wish to make sure that a company cannot effectively +restrict the users of a free program by obtaining a restrictive license +from a patent holder. Therefore, we insist that any patent license +obtained for a version of the library must be consistent with the full +freedom of use specified in this license. + +Most GNU software, including some libraries, is covered by the ordinary +GNU General Public License. This license, the GNU Lesser General Public +License, applies to certain designated libraries, and is quite different +from the ordinary General Public License. We use this license for +certain libraries in order to permit linking those libraries into +non-free programs. + +When a program is linked with a library, whether statically or using a +shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the entire +combination fits its criteria of freedom. The Lesser General Public +License permits more lax criteria for linking other code with the +library. + +We call this license the ``Lesser'' General Public License because it does +Less to protect the user's freedom than the ordinary General Public +License. It also provides other free software developers Less of an +advantage over competing non-free programs. These disadvantages are the +reason we use the ordinary General Public License for many libraries. +However, the Lesser license provides advantages in certain special +circumstances. + +For example, on rare occasions, there may be a special need to encourage +the widest possible use of a certain library, so that it becomes a +de-facto standard. To achieve this, non-free programs must be allowed +to use the library. A more frequent case is that a free library does +the same job as widely used non-free libraries. In this case, there is +little to gain by limiting the free library to free software only, so we +use the Lesser General Public License. + +In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of free +software. For example, permission to use the GNU C Library in non-free +programs enables many more people to use the whole GNU operating system, +as well as its variant, the GNU/Linux operating system. + +Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is linked +with the Library has the freedom and the wherewithal to run that program +using a modified version of the Library. + +The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +``work based on the library'' and a ``work that uses the library''. The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + +@page + +@center GNU LESSER GENERAL PUBLIC LICENSE +@center TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +@enumerate 0 + +@sp 1 +@item +This License Agreement applies to any software library or other program +which contains a notice placed by the copyright holder or other +authorized party saying it may be distributed under the terms of this +Lesser General Public License (also called ``this License''). Each +licensee is addressed as ``you''. + +A ``library'' means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + +The ``Library'', below, refers to any such software library or work which +has been distributed under these terms. A ``work based on the Library'' +means either the Library or any derivative work under copyright law: +that is to say, a work containing the Library or a portion of it, either +verbatim or with modifications and/or translated straightforwardly into +another language. (Hereinafter, translation is included without +limitation in the term ``modification''.) + +``Source code'' for a work means the preferred form of the work for making +modifications to it. For a library, complete source code means all the +source code for all modules it contains, plus any associated interface +definition files, plus the scripts used to control compilation and +installation of the library. + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of running +a program using the Library is not restricted, and output from such a +program is covered only if its contents constitute a work based on the +Library (independent of the use of the Library in a tool for writing +it). Whether that is true depends on what the Library does and what the +program that uses the Library does. + +@sp 1 +@item +You may copy and distribute verbatim copies of the Library's complete +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the notices +that refer to this License and to the absence of any warranty; and +distribute a copy of this License along with the Library. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + +@sp 1 +@item +You may modify your copy or copies of the Library or any portion of it, +thus forming a work based on the Library, and copy and distribute such +modifications or work under the terms of Section 1 above, provided that +you also meet all of these conditions: + +@enumerate a + +@item +The modified work must itself be a software library. + +@sp 1 +@item +You must cause the files modified to carry prominent notices stating +that you changed the files and the date of any change. + +@sp 1 +@item +You must cause the whole of the work to be licensed at no charge to all +third parties under the terms of this License. + +@sp 1 +@item +If a facility in the modified Library refers to a function or a table of +data to be supplied by an application program that uses the facility, +other than as an argument passed when the facility is invoked, then you +must make a good faith effort to ensure that, in the event an +application does not supply such function or table, the facility still +operates, and performs whatever part of its purpose remains meaningful. + +(For example, a function in a library to compute square roots has a +purpose that is entirely well-defined independent of the application. +Therefore, Subsection 2d requires that any application-supplied function +or table used by this function must be optional: if the application does +not supply it, the square root function must still compute square +roots.) + +@end enumerate + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, and +can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based on +the Library, the distribution of the whole must be on the terms of this +License, whose permissions for other licensees extend to the entire +whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of a +storage or distribution medium does not bring the other work under the +scope of this License. + +@sp 1 +@item +You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so that +they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + +Once this change is made in a given copy, it is irreversible for that +copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + +This option is useful when you wish to copy part of the code of the +Library into a program that is not a library. + +@sp 1 +@item +You may copy and distribute the Library (or a portion or derivative of +it, under Section 2) in object code or executable form under the terms +of Sections 1 and 2 above provided that you accompany it with the +complete corresponding machine-readable source code, which must be +distributed under the terms of Sections 1 and 2 above on a medium +customarily used for software interchange. + +If distribution of object code is made by offering access to copy from a +designated place, then offering equivalent access to copy the source +code from the same place satisfies the requirement to distribute the +source code, even though third parties are not compelled to copy the +source along with the object code. + +@sp 1 +@item +A program that contains no derivative of any portion of the Library, but +is designed to work with the Library by being compiled or linked with +it, is called a ``work that uses the Library''. Such a work, in +isolation, is not a derivative work of the Library, and therefore falls +outside the scope of this License. + +However, linking a ``work that uses the Library'' with the Library creates +an executable that is a derivative of the Library (because it contains +portions of the Library), rather than a ``work that uses the library''. +The executable is therefore covered by this License. Section 6 states +terms for distribution of such executables. + +When a ``work that uses the Library'' uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be linked +without the Library, or if the work is itself a library. The threshold +for this to be true is not precisely defined by law. + +If such an object file uses only numerical parameters, data structure +layouts and accessors, and small macros and small inline functions (ten +lines or less in length), then the use of the object file is +unrestricted, regardless of whether it is legally a derivative work. +(Executables containing this object code plus portions of the Library +will still fall under Section 6.) + +Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, whether +or not they are linked directly with the Library itself. + +@sp 1 +@item +As an exception to the Sections above, you may also combine or link a +``work that uses the Library'' with the Library to produce a work +containing portions of the Library, and distribute that work under terms +of your choice, provided that the terms permit modification of the work +for the customer's own use and reverse engineering for debugging such +modifications. + +You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + +@enumerate a + +@sp 1 +@item +Accompany the work with the complete corresponding machine-readable +source code for the Library including whatever changes were used in the +work (which must be distributed under Sections 1 and 2 above); and, if +the work is an executable linked with the Library, with the complete +machine-readable ``work that uses the Library'', as object code and/or +source code, so that the user can modify the Library and then relink to +produce a modified executable containing the modified Library. (It is +understood that the user who changes the contents of definitions files +in the Library will not necessarily be able to recompile the application +to use the modified definitions.) + +@sp 1 +@item +Use a suitable shared library mechanism for linking with the Library. A +suitable mechanism is one that (1) uses at run time a copy of the +library already present on the user's computer system, rather than +copying library functions into the executable, and (2) will operate +properly with a modified version of the library, if the user installs +one, as long as the modified version is interface-compatible with the +version that the work was made with. + +@sp 1 +@item +Accompany the work with a written offer, valid for at least three years, +to give the same user the materials specified in Subsection 6a, above, +for a charge no more than the cost of performing this distribution. + +@sp 1 +@item +If distribution of the work is made by offering access to copy from a +designated place, offer equivalent access to copy the above specified +materials from the same place. + +@sp 1 +@item +Verify that the user has already received a copy of these materials or +that you have already sent this user a copy. + +@end enumerate + +For an executable, the required form of the ``work that uses the Library'' +must include any data and utility programs needed for reproducing the +executable from it. However, as a special exception, the materials to +be distributed need not include anything that is normally distributed +(in either source or binary form) with the major components (compiler, +kernel, and so on) of the operating system on which the executable runs, +unless that component itself accompanies the executable. + +It may happen that this requirement contradicts the license restrictions +of other proprietary libraries that do not normally accompany the +operating system. Such a contradiction means you cannot use both them +and the Library together in an executable that you distribute. + +@sp 1 +@item +You may place library facilities that are a work based on the Library +side-by-side in a single library together with other library facilities +not covered by this License, and distribute such a combined library, +provided that the separate distribution of the work based on the Library +and of the other library facilities is otherwise permitted, and provided +that you do these two things: + +@enumerate a + +@sp 1 +@item +Accompany the combined library with a copy of the same work based on the +Library, uncombined with any other library facilities. This must be +distributed under the terms of the Sections above. + +@sp 1 +@item +Give prominent notice with the combined library of the fact that part of +it is a work based on the Library, and explaining where to find the +accompanying uncombined form of the same work. + +@end enumerate + +@sp 1 +@item +You may not copy, modify, sublicense, link with, or distribute the +Library except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense, link with, or distribute the +Library is void, and will automatically terminate your rights under this +License. However, parties who have received copies, or rights, from you +under this License will not have their licenses terminated so long as +such parties remain in full compliance. + +@sp 1 +@item +You are not required to accept this License, since you have not signed +it. However, nothing else grants you permission to modify or distribute +the Library or its derivative works. These actions are prohibited by +law if you do not accept this License. Therefore, by modifying or +distributing the Library (or any work based on the Library), you +indicate your acceptance of this License to do so, and all its terms and +conditions for copying, distributing or modifying the Library or works +based on it. + +@sp 1 +@item +Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + +@sp 1 +@item +If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent license +would not permit royalty-free redistribution of the Library by all those +who receive copies directly or indirectly through you, then the only way +you could satisfy both it and this License would be to refrain entirely +from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply, and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is implemented +by public license practices. Many people have made generous +contributions to the wide range of software distributed through that +system in reliance on consistent application of that system; it is up to +the author/donor to decide if he or she is willing to distribute +software through any other system and a licensee cannot impose that +choice. + +This section is intended to make thoroughly clear what is believed to be +a consequence of the rest of this License. + +@sp 1 +@item +If the distribution and/or use of the Library is restricted in certain +countries either by patents or by copyrighted interfaces, the original +copyright holder who places the Library under this License may add an +explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + +@sp 1 +@item +The Free Software Foundation may publish revised and/or new versions of +the Lesser General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in +detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and ``any +later version'', you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a license +version number, you may choose any version ever published by the Free +Software Foundation. + +@sp 1 +@item +If you wish to incorporate parts of the Library into other free programs +whose distribution conditions are incompatible with these, write to the +author to ask for permission. For software which is copyrighted by the +Free Software Foundation, write to the Free Software Foundation; we +sometimes make exceptions for this. Our decision will be guided by the +two goals of preserving the free status of all derivatives of our free +software and of promoting the sharing and reuse of software generally. + +@sp 1 +@center NO WARRANTY +@sp 1 + +@item +BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR +THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE LIBRARY ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER +EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE +ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH +YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL +NECESSARY SERVICING, REPAIR OR CORRECTION. + +@sp 1 +@item +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR +DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL +DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY +(INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED +INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF +THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR +OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +@end enumerate + +@sp 1 +@center END OF TERMS AND CONDITIONS +@sp 1 +@page +@center How to Apply These Terms to Your New Libraries + +If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of +the ordinary General Public License). + +To apply these terms, attach the following notices to the library. It +is safest to attach them to the start of each source file to most +effectively convey the exclusion of warranty; and each file should have +at least the ``copyright'' line and a pointer to where the full notice is +found. + +@format +@t{ + +Copyright (C) + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +} +@end format + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a ``copyright disclaimer'' for the library, if +necessary. Here is a sample; alter the names: + +@format +@t{ +Yoyodyne, Inc., hereby disclaims all copyright interest in the +library `Frob' (a library for tweaking knobs) written by James Random Hacker. + +, 1 April 1990 +Ty Coon, President of Vice +} +@end format + +That's all there is to it! + +@c @bye diff --git a/coregrade/src/libconfig-1.3.1/doc/Makefile.am b/coregrade/src/libconfig-1.3.1/doc/Makefile.am new file mode 100644 index 0000000..0a4383e --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/doc/Makefile.am @@ -0,0 +1,7 @@ + + +info_TEXINFOS = libconfig.texi +libconfig_TEXINFOS = LGPL.texi + +html: + $(MAKEINFO) --html --no-split $(info_TEXINFOS) diff --git a/coregrade/src/libconfig-1.3.1/doc/Makefile.in b/coregrade/src/libconfig-1.3.1/doc/Makefile.in new file mode 100644 index 0000000..108f5b4 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/doc/Makefile.in @@ -0,0 +1,587 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = doc +DIST_COMMON = $(libconfig_TEXINFOS) $(srcdir)/Makefile.am \ + $(srcdir)/Makefile.in texinfo.tex +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/ac_config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +INFO_DEPS = $(srcdir)/libconfig.info +am__TEXINFO_TEX_DIR = $(srcdir) +DVIS = libconfig.dvi +PDFS = libconfig.pdf +PSS = libconfig.ps +HTMLS = libconfig.html +TEXINFOS = libconfig.texi +TEXI2DVI = texi2dvi +TEXI2PDF = $(TEXI2DVI) --pdf --batch +MAKEINFOHTML = $(MAKEINFO) --html +AM_MAKEINFOHTMLFLAGS = $(AM_MAKEINFOFLAGS) +DVIPS = dvips +am__installdirs = "$(DESTDIR)$(infodir)" +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = `echo $$p | sed -e 's|^.*/||'`; +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LEX = @LEX@ +LEXLIB = @LEXLIB@ +LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +YACC = @YACC@ +YFLAGS = @YFLAGS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +info_TEXINFOS = libconfig.texi +libconfig_TEXINFOS = LGPL.texi +all: all-am + +.SUFFIXES: +.SUFFIXES: .dvi .html .info .pdf .ps .texi +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu doc/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +.texi.info: + restore=: && backupdir="$(am__leading_dot)am$$$$" && \ + am__cwd=`pwd` && cd $(srcdir) && \ + rm -rf $$backupdir && mkdir $$backupdir && \ + if ($(MAKEINFO) --version) >/dev/null 2>&1; then \ + for f in $@ $@-[0-9] $@-[0-9][0-9] $(@:.info=).i[0-9] $(@:.info=).i[0-9][0-9]; do \ + if test -f $$f; then mv $$f $$backupdir; restore=mv; else :; fi; \ + done; \ + else :; fi && \ + cd "$$am__cwd"; \ + if $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ + -o $@ $<; \ + then \ + rc=0; \ + cd $(srcdir); \ + else \ + rc=$$?; \ + cd $(srcdir) && \ + $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \ + fi; \ + rm -rf $$backupdir; exit $$rc + +.texi.dvi: + TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ + MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ + $(TEXI2DVI) $< + +.texi.pdf: + TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ + MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \ + $(TEXI2PDF) $< + +.texi.html: + rm -rf $(@:.html=.htp) + if $(MAKEINFOHTML) $(AM_MAKEINFOHTMLFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) \ + -o $(@:.html=.htp) $<; \ + then \ + rm -rf $@; \ + if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \ + mv $(@:.html=) $@; else mv $(@:.html=.htp) $@; fi; \ + else \ + if test ! -d $(@:.html=.htp) && test -d $(@:.html=); then \ + rm -rf $(@:.html=); else rm -Rf $(@:.html=.htp) $@; fi; \ + exit 1; \ + fi +$(srcdir)/libconfig.info: libconfig.texi $(libconfig_TEXINFOS) +libconfig.dvi: libconfig.texi $(libconfig_TEXINFOS) +libconfig.pdf: libconfig.texi $(libconfig_TEXINFOS) +libconfig.html: libconfig.texi $(libconfig_TEXINFOS) +.dvi.ps: + TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \ + $(DVIPS) -o $@ $< + +uninstall-dvi-am: + @$(NORMAL_UNINSTALL) + @list='$(DVIS)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \ + rm -f "$(DESTDIR)$(dvidir)/$$f"; \ + done + +uninstall-html-am: + @$(NORMAL_UNINSTALL) + @list='$(HTMLS)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -rf '$(DESTDIR)$(htmldir)/$$f'"; \ + rm -rf "$(DESTDIR)$(htmldir)/$$f"; \ + done + +uninstall-info-am: + @$(PRE_UNINSTALL) + @if test -d '$(DESTDIR)$(infodir)' && \ + (install-info --version && \ + install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \ + list='$(INFO_DEPS)'; \ + for file in $$list; do \ + relfile=`echo "$$file" | sed 's|^.*/||'`; \ + echo " install-info --info-dir='$(DESTDIR)$(infodir)' --remove '$(DESTDIR)$(infodir)/$$relfile'"; \ + install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \ + done; \ + else :; fi + @$(NORMAL_UNINSTALL) + @list='$(INFO_DEPS)'; \ + for file in $$list; do \ + relfile=`echo "$$file" | sed 's|^.*/||'`; \ + relfile_i=`echo "$$relfile" | sed 's|\.info$$||;s|$$|.i|'`; \ + (if test -d "$(DESTDIR)$(infodir)" && cd "$(DESTDIR)$(infodir)"; then \ + echo " cd '$(DESTDIR)$(infodir)' && rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]"; \ + rm -f $$relfile $$relfile-[0-9] $$relfile-[0-9][0-9] $$relfile_i[0-9] $$relfile_i[0-9][0-9]; \ + else :; fi); \ + done + +uninstall-pdf-am: + @$(NORMAL_UNINSTALL) + @list='$(PDFS)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \ + rm -f "$(DESTDIR)$(pdfdir)/$$f"; \ + done + +uninstall-ps-am: + @$(NORMAL_UNINSTALL) + @list='$(PSS)'; for p in $$list; do \ + f=$(am__strip_dir) \ + echo " rm -f '$(DESTDIR)$(psdir)/$$f'"; \ + rm -f "$(DESTDIR)$(psdir)/$$f"; \ + done + +dist-info: $(INFO_DEPS) + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + list='$(INFO_DEPS)'; \ + for base in $$list; do \ + case $$base in \ + $(srcdir)/*) base=`echo "$$base" | sed "s|^$$srcdirstrip/||"`;; \ + esac; \ + if test -f $$base; then d=.; else d=$(srcdir); fi; \ + base_i=`echo "$$base" | sed 's|\.info$$||;s|$$|.i|'`; \ + for file in $$d/$$base $$d/$$base-[0-9] $$d/$$base-[0-9][0-9] $$d/$$base_i[0-9] $$d/$$base_i[0-9][0-9]; do \ + if test -f $$file; then \ + relfile=`expr "$$file" : "$$d/\(.*\)"`; \ + test -f $(distdir)/$$relfile || \ + cp -p $$file $(distdir)/$$relfile; \ + else :; fi; \ + done; \ + done + +mostlyclean-aminfo: + -rm -rf libconfig.aux libconfig.cp libconfig.cps libconfig.fn libconfig.fns \ + libconfig.ky libconfig.kys libconfig.log libconfig.pg \ + libconfig.pgs libconfig.tmp libconfig.toc libconfig.tp \ + libconfig.tps libconfig.vr libconfig.vrs libconfig.dvi \ + libconfig.pdf libconfig.ps libconfig.html + +maintainer-clean-aminfo: + @list='$(INFO_DEPS)'; for i in $$list; do \ + i_i=`echo "$$i" | sed 's|\.info$$||;s|$$|.i|'`; \ + echo " rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]"; \ + rm -f $$i $$i-[0-9] $$i-[0-9][0-9] $$i_i[0-9] $$i_i[0-9][0-9]; \ + done +tags: TAGS +TAGS: + +ctags: CTAGS +CTAGS: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-info +check-am: all-am +check: check-am +all-am: Makefile $(INFO_DEPS) +installdirs: + for dir in "$(DESTDIR)$(infodir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: $(DVIS) + +html-am: $(HTMLS) + +info: info-am + +info-am: $(INFO_DEPS) + +install-data-am: install-info-am + +install-dvi: install-dvi-am + +install-dvi-am: $(DVIS) + @$(NORMAL_INSTALL) + test -z "$(dvidir)" || $(MKDIR_P) "$(DESTDIR)$(dvidir)" + @list='$(DVIS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(dvidir)/$$f'"; \ + $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(dvidir)/$$f"; \ + done +install-exec-am: + +install-html: install-html-am + +install-html-am: $(HTMLS) + @$(NORMAL_INSTALL) + test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)" + @list='$(HTMLS)'; for p in $$list; do \ + if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + if test -d "$$d$$p"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(htmldir)/$$f'"; \ + $(MKDIR_P) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \ + echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \ + $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f"; \ + else \ + echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(htmldir)/$$f'"; \ + $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(htmldir)/$$f"; \ + fi; \ + done +install-info: install-info-am + +install-info-am: $(INFO_DEPS) + @$(NORMAL_INSTALL) + test -z "$(infodir)" || $(MKDIR_P) "$(DESTDIR)$(infodir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ + list='$(INFO_DEPS)'; \ + for file in $$list; do \ + case $$file in \ + $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ + esac; \ + if test -f $$file; then d=.; else d=$(srcdir); fi; \ + file_i=`echo "$$file" | sed 's|\.info$$||;s|$$|.i|'`; \ + for ifile in $$d/$$file $$d/$$file-[0-9] $$d/$$file-[0-9][0-9] \ + $$d/$$file_i[0-9] $$d/$$file_i[0-9][0-9] ; do \ + if test -f $$ifile; then \ + relfile=`echo "$$ifile" | sed 's|^.*/||'`; \ + echo " $(INSTALL_DATA) '$$ifile' '$(DESTDIR)$(infodir)/$$relfile'"; \ + $(INSTALL_DATA) "$$ifile" "$(DESTDIR)$(infodir)/$$relfile"; \ + else : ; fi; \ + done; \ + done + @$(POST_INSTALL) + @if (install-info --version && \ + install-info --version 2>&1 | sed 1q | grep -i -v debian) >/dev/null 2>&1; then \ + list='$(INFO_DEPS)'; \ + for file in $$list; do \ + relfile=`echo "$$file" | sed 's|^.*/||'`; \ + echo " install-info --info-dir='$(DESTDIR)$(infodir)' '$(DESTDIR)$(infodir)/$$relfile'";\ + install-info --info-dir="$(DESTDIR)$(infodir)" "$(DESTDIR)$(infodir)/$$relfile" || :;\ + done; \ + else : ; fi +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: $(PDFS) + @$(NORMAL_INSTALL) + test -z "$(pdfdir)" || $(MKDIR_P) "$(DESTDIR)$(pdfdir)" + @list='$(PDFS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(pdfdir)/$$f'"; \ + $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(pdfdir)/$$f"; \ + done +install-ps: install-ps-am + +install-ps-am: $(PSS) + @$(NORMAL_INSTALL) + test -z "$(psdir)" || $(MKDIR_P) "$(DESTDIR)$(psdir)" + @list='$(PSS)'; for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + f=$(am__strip_dir) \ + echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(psdir)/$$f'"; \ + $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(psdir)/$$f"; \ + done +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-aminfo \ + maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-aminfo mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: $(PDFS) + +ps: ps-am + +ps-am: $(PSS) + +uninstall-am: uninstall-dvi-am uninstall-html-am uninstall-info-am \ + uninstall-pdf-am uninstall-ps-am + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + dist-info distclean distclean-generic distclean-libtool \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-aminfo \ + maintainer-clean-generic mostlyclean mostlyclean-aminfo \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + uninstall uninstall-am uninstall-dvi-am uninstall-html-am \ + uninstall-info-am uninstall-pdf-am uninstall-ps-am + + +html: + $(MAKEINFO) --html --no-split $(info_TEXINFOS) +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/coregrade/src/libconfig-1.3.1/doc/libconfig.info b/coregrade/src/libconfig-1.3.1/doc/libconfig.info new file mode 100644 index 0000000..313c245 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/doc/libconfig.info @@ -0,0 +1,2147 @@ +This is libconfig.info, produced by makeinfo version 4.11 from +libconfig.texi. + +INFO-DIR-SECTION Software libraries +START-INFO-DIR-ENTRY +* libconfig: (libconfig). A Library For Processing Structured Configuration Files +END-INFO-DIR-ENTRY + + +File: libconfig.info, Node: Top, Next: Introduction, Up: (dir) + +libconfig +********* + +* Menu: + +* Introduction:: +* Configuration Files:: +* The C API:: +* The C++ API:: +* Configuration File Grammar:: +* License:: +* Function Index:: +* Type Index:: +* Concept Index:: + + +File: libconfig.info, Node: Introduction, Next: Configuration Files, Prev: Top, Up: Top + +* Menu: + +* Why Another Configuration File Library?:: +* Using the Library from a C Program:: +* Using the Library from a C++ Program:: +* Multithreading Issues:: +* Internationalization Issues:: +* Compiling Using pkg-config:: + +1 Introduction +************** + +Libconfig is a library for reading, manipulating, and writing +structured configuration files. The library features a fully reentrant +parser and includes bindings for both the C and C++ programming +languages. + + The library runs on modern POSIX-compilant systems, such as Linux, +Solaris, and Mac OS X (Darwin), as well as on Microsoft Windows 2000/XP +and later (with either Microsoft Visual Studio 2005 or later, or the +GNU toolchain via the MinGW environment). + + +File: libconfig.info, Node: Why Another Configuration File Library?, Next: Using the Library from a C Program, Up: Introduction + +1.1 Why Another Configuration File Library? +=========================================== + +There are several open-source configuration file libraries available as +of this writing. This library was written because each of those +libraries falls short in one or more ways. The main features of +libconfig that set it apart from the other libraries are: + + * A fully reentrant parser. Independent configurations can be parsed + in concurrent threads at the same time. + + * Both C and C++ bindings, as well as hooks to allow for the + creation of wrappers in other languages. + + * A simple, structured configuration file format that is more + readable and compact than XML and more flexible than the obsolete + but prevalent Windows "INI" file format. + + * A low-footprint implementation (just 38K for the C library and 66K + for the C++ library) that is suitable for memory-constrained + systems. + + * Proper documentation. + + + +File: libconfig.info, Node: Using the Library from a C Program, Next: Using the Library from a C++ Program, Prev: Why Another Configuration File Library?, Up: Introduction + +1.2 Using the Library from a C Program +====================================== + +To use the library from C code, include the following preprocessor +directive in your source files: + + + #include + + + To link with the library, specify `-lconfig' as an argument to the +linker. + + +File: libconfig.info, Node: Using the Library from a C++ Program, Next: Multithreading Issues, Prev: Using the Library from a C Program, Up: Introduction + +1.3 Using the Library from a C++ Program +======================================== + +To use the library from C++, include the following preprocessor +directive in your source files: + + + #include + + + Or, alternatively: + + + #include + + + The C++ API classes are defined in the namespace `libconfig', hence +the following statement may optionally be used: + + + using namespace libconfig; + + + To link with the library, specify `-lconfig++' as an argument to the +linker. + + +File: libconfig.info, Node: Multithreading Issues, Next: Internationalization Issues, Prev: Using the Library from a C++ Program, Up: Introduction + +1.4 Multithreading Issues +========================= + +Libconfig is fully "reentrant"; the functions in the library do not +make use of global variables and do not maintain state between +successive calls. Therefore two independent configurations may be safely +manipulated concurrently by two distinct threads. + + Libconfig is not "thread-safe". The library is not aware of the +presence of threads and knows nothing about the host system's threading +model. Therefore, if an instance of a configuration is to be accessed +from multiple threads, it must be suitably protected by synchronization +mechanisms like read-write locks or mutexes; the standard rules for +safe multithreaded access to shared data must be observed. + + Libconfig is not "async-safe". Calls should not be made into the +library from signal handlers, because some of the C library routines +that it uses may not be async-safe. + + Libconfig is not guaranteed to be "cancel-safe". Since it is not +aware of the host system's threading model, the library does not +contain any thread cancellation points. In most cases this will not be +an issue for multithreaded programs. However, be aware that some of the +routines in the library (namely those that read/write configurations +from/to files or streams) perform I/O using C library routines which +may potentially block; whether these C library routines are cancel-safe +or not depends on the host system. + + +File: libconfig.info, Node: Internationalization Issues, Next: Compiling Using pkg-config, Prev: Multithreading Issues, Up: Introduction + +1.5 Internationalization Issues +=============================== + +Libconfig does not natively support Unicode configuration files, but +string values may contain Unicode text encoded in UTF-8; such strings +will be treated as ordinary 8-bit ASCII text by the library. It is the +responsibility of the calling program to perform the necessary +conversions to/from wide (wchar_t) strings using the wide string +conversion functions such as mbsrtowcs() and wcsrtombs() or the iconv() +function of the libiconv library. + + The textual representation of a floating point value varies by +locale. However, the libconfig grammar specifies that floating point +values are represented using a period (`.') as the radix symbol; this +is consistent with the grammar of most programming languages. When a +configuration is read in or written out, libconfig temporarily changes +the LC_NUMERIC category of the locale of the calling thread to the "C" +locale to ensure consistent handling of floating point values +regardless of the locale(s) in use by the calling program. + + Note that the MinGW environment does not (as of this writing) provide +functions for changing the locale of the calling thread. Therefore, +when using libconfig in this environment, the calling program is +responsible for changing the LC_NUMERIC category of the locale to the +"C" locale before reading or writing a configuration. + + +File: libconfig.info, Node: Compiling Using pkg-config, Prev: Internationalization Issues, Up: Introduction + +1.6 Compiling Using pkg-config +============================== + +On UNIX systems you can use the pkg-config utility (version 0.20 or +later) to automatically select the appropriate compiler and linker +switches for libconfig. Ensure that the environment variable +`PKG_CONFIG_PATH' contains the absolute path to the `lib/pkgconfig' +subdirectory of the libconfig installation. Then, you can link C +programs with libconfig as follows: + + gcc `pkg-config --cflags libconfig` myprogram.c -o myprogram \ + `pkg-config --libs libconfig` + + + And similarly, for C++ programs: + + g++ `pkg-config --cflags libconfig++` myprogram.cpp -o myprogram \ + `pkg-config --libs libconfig++` + + + Note the backticks in the above examples. + + +File: libconfig.info, Node: Configuration Files, Next: The C API, Prev: Introduction, Up: Top + +* Menu: + +* Settings:: +* Groups:: +* Arrays:: +* Lists:: +* Integer Values:: +* 64-bit Integer Values:: +* Floating Point Values:: +* Boolean Values:: +* String Values:: +* Comments:: + +2 Configuration Files +********************* + +Libconfig supports structured, hierarchical configurations. These +configurations can be read from and written to files and manipulated in +memory. + + A "configuration" consists of a group of "settings", which associate +names with values. A "value" can be one of the following: + + * A "scalar value": integer, 64-bit integer, floating-point number, + boolean, or string + + * An "array", which is a sequence of scalar values, all of which + must have the same type + + * A "group", which is a collection of settings + + * A "list", which is a sequence of values of any type, including + other lists + + Consider the following configuration file for a hypothetical GUI +application, which illustrates all of the elements of the configuration +file grammar. + + + # Example application configuration file + + version = "1.0"; + + application: + { + window: + { + title = "My Application"; + size = { w = 640; h = 480; }; + pos = { x = 350; y = 250; }; + }; + + list = ( ( "abc", 123, true ), 1.234, ( /* an empty list */) ); + + books = ( { title = "Treasure Island"; + author = "Robert Louis Stevenson"; + price = 29.95; + qty = 5; }, + { title = "Snow Crash"; + author = "Neal Stephenson"; + price = 9.99; + qty = 8; } ); + + misc: + { + pi = 3.141592654; + bigint = 9223372036854775807L; + columns = [ "Last Name", "First Name", "MI" ]; + bitmask = 0x1FC3; + }; + }; + + + Settings can be uniquely identified within the configuration by a +"path". The path is a dot-separated sequence of names, beginning at a +top-level group and ending at the setting itself. Each name in the path +is the name of a setting; if the setting has no name because it is an +element in a list or array, an integer index in square brackets can be +used as the name. + + For example, in our hypothetical configuration file, the path to the +`x' setting is `application.window.pos.x'; the path to the `version' +setting is simply `version'; and the path to the `title' setting of the +second book in the `books' list is `application.books.[1].title'. + + The datatype of a value is determined from the format of the value +itself. If the value is enclosed in double quotes, it is treated as a +string. If it looks like an integer or floating point number, it is +treated as such. If it is one of the values `TRUE', `true', `FALSE', or +`false' (or any other mixed-case version of those tokens, e.g., `True' +or `FaLsE'), it is treated as a boolean. If it consists of a +comma-separated list of values enclosed in square brackets, it is +treated as an array. And if it consists of a comma-separated list of +values enclosed in parentheses, it is treated as a list. Any value +which does not meet any of these conditions is considered invalid and +results in a parse error. + + All names are case-sensitive. They may consist only of alphanumeric +characters, dashes (`-'), underscores (`_'), and asterisks (`*'), and +must begin with a letter or asterisk. No other characters are allowed. + + In C and C++, integer, 64-bit integer, floating point, and string +values are mapped to the types `long', `long long', `double', and +`const char *', respectively. The boolean type is mapped to `int' in C +and `bool' in C++. + + The following sections describe the elements of the configuration +file grammar in additional detail. + + +File: libconfig.info, Node: Settings, Next: Groups, Up: Configuration Files + +2.1 Settings +============ + +A setting has the form: + + name = value ; + + or: + + name : value ; + + The trailing semicolon is required. Whitespace is not significant. + + The value may be a scalar value, an array, a group, or a list. + + +File: libconfig.info, Node: Groups, Next: Arrays, Prev: Settings, Up: Configuration Files + +2.2 Groups +========== + +A group has the form: + + { settings ... } + + Groups can contain any number of settings, but each setting must have +a unique name within the group. + + +File: libconfig.info, Node: Arrays, Next: Lists, Prev: Groups, Up: Configuration Files + +2.3 Arrays +========== + +An array has the form: + + [ value, value ... ] + + An array may have zero or more elements, but the elements must all be +scalar values of the same type. + + +File: libconfig.info, Node: Lists, Next: Integer Values, Prev: Arrays, Up: Configuration Files + +2.4 Lists +========= + +A list has the form: + + ( value, value ... ) + + A list may have zero or more elements, each of which can be a scalar +value, an array, a group, or another list. + + +File: libconfig.info, Node: Integer Values, Next: 64-bit Integer Values, Prev: Lists, Up: Configuration Files + +2.5 Integer Values +================== + +Integers can be represented in one of two ways: as a series of one or +more decimal digits (`0' - `9'), with an optional leading sign +character (`+' or `-'); or as a hexadecimal value consisting of the +characters `0x' followed by a series of one or more hexadecimal digits +(`0' - `9', `A' - `F', `a' - `f'). + + +File: libconfig.info, Node: 64-bit Integer Values, Next: Floating Point Values, Prev: Integer Values, Up: Configuration Files + +2.6 64-bit Integer Values +========================= + +Long long (64-bit) integers are represented identically to integers, +except that an 'L' character is appended to indicate a 64-bit value. +For example, `0L' indicates a 64-bit integer value 0. + + +File: libconfig.info, Node: Floating Point Values, Next: Boolean Values, Prev: 64-bit Integer Values, Up: Configuration Files + +2.7 Floating Point Values +========================= + +Floating point values consist of a series of one or more digits, one +decimal point, an optional leading sign character (`+' or `-'), and an +optional exponent. An exponent consists of the letter `E' or `e', an +optional sign character, and a series of one or more digits. + + +File: libconfig.info, Node: Boolean Values, Next: String Values, Prev: Floating Point Values, Up: Configuration Files + +2.8 Boolean Values +================== + +Boolean values may have one of the following values: `true', `false', +or any mixed-case variation thereof. + + +File: libconfig.info, Node: String Values, Next: Comments, Prev: Boolean Values, Up: Configuration Files + +2.9 String Values +================= + +String values consist of arbitrary text delimited by double quotes. +Literal double quotes can be escaped by preceding them with a +backslash: `\"'. The escape sequences `\\', `\f', `\n', `\r', and `\t' +are also recognized, and have the usual meaning. No other escape +sequences are currently supported. + + Adjacent strings are automatically concatenated, as in C/C++ source +code. This is useful for formatting very long strings as sequences of +shorter strings. For example, the following constructs are equivalent: + + * `"The quick brown fox jumped over the lazy dog."' + + * `"The quick brown fox"' + `" jumped over the lazy dog."' + + * `"The quick" /* comment */ " brown fox " // another comment' + `"jumped over the lazy dog."' + + + +File: libconfig.info, Node: Comments, Prev: String Values, Up: Configuration Files + +2.10 Comments +============= + +Three types of comments are allowed within a configuration: + + * Script-style comments. All text beginning with a `#' character to + the end of the line is ignored. + + * C-style comments. All text, including line breaks, between a + starting `/*' sequence and an ending `*/' sequence is ignored. + + * C++-style comments. All text beginning with a `//' sequence to the + end of the line is ignored. + + + As expected, comment delimiters appearing within quoted strings are +treated as literal text. + + Comments are ignored when the configuration is read in, so they are +not treated as part of the configuration. Therefore if the +configuration is written back out to a stream, any comments that were +present in the original configuration will be lost. + + +File: libconfig.info, Node: The C API, Next: The C++ API, Prev: Configuration Files, Up: Top + +3 The C API +*********** + +This chapter describes the C library API. The type config_t represents +a configuration, and the type config_setting_t represents a +configuration setting. + + The boolean values `CONFIG_TRUE' and `CONFIG_FALSE' are macros +defined as `(1)' and `(0)', respectively. + + -- Function: void config_init (config_t * CONFIG) + -- Function: void config_destroy (config_t * CONFIG) + These functions initialize and destroy the configuration object + CONFIG. + + `config_init()' initializes CONFIG as a new, empty configuration. + + `config_destroy()' destroys the configuration CONFIG, deallocating + all memory associated with the configuration, but not including + the config_t structure itself. + + + -- Function: int config_read (config_t * CONFIG, FILE * STREAM) + This function reads and parses a configuration from the given + STREAM into the configuration object CONFIG. It returns + `CONFIG_TRUE' on success, or `CONFIG_FALSE' on failure; the + `config_error_text()' and `config_error_line()' functions, + described below, can be used to obtain information about the error. + + + -- Function: int config_read_file (config_t * CONFIG, + const char * FILENAME) + This function reads and parses a configuration from the file named + FILENAME into the configuration object CONFIG. It returns + `CONFIG_TRUE' on success, or `CONFIG_FALSE' on failure; the + `config_error_text()' and `config_error_line()' functions, + described below, can be used to obtain information about the error. + + + -- Function: void config_write (const config_t * CONFIG, FILE * STREAM) + This function writes the configuration CONFIG to the given STREAM. + + + -- Function: int config_write_file (config_t * CONFIG, + const char * FILENAME) + This function writes the configuration CONFIG to the file named + FILENAME. It returns `CONFIG_TRUE' on success, or `CONFIG_FALSE' + on failure. + + + -- Function: const char * config_error_text (const config_t * CONFIG) + -- Function: int config_error_line (const config_t * CONFIG) + These functions, which are implemented as macros, return the text + and line number of the parse error, if one occurred during a call + to `config_read()' or `config_read_file()'. Storage for the string + returned by `config_error_text()' is managed by the library and + released automatically when the configuration is destroyed; the + string must not be freed by the caller. + + + -- Function: void config_set_auto_convert (config_t *CONFIG, int FLAG) + -- Function: int config_get_auto_convert (const config_t *CONFIG) + `config_set_auto_convert()' enables number auto-conversion for the + configuration CONFIG if FLAG is non-zero, and disables it + otherwise. When this feature is enabled, an attempt to retrieve a + floating point setting's value into an integer (or vice versa), or + store an integer to a floating point setting's value (or vice + versa) will cause the library to silently perform the necessary + conversion (possibly leading to loss of data), rather than + reporting failure. By default this feature is disabled. + + `config_get_auto_convert()' returns `CONFIG_TRUE' if number + auto-conversion is currently enabled for CONFIG; otherwise it + returns `CONFIG_FALSE'. + + + -- Function: long config_lookup_int (const config_t * CONFIG, + const char * PATH) + -- Function: long long config_lookup_int64 (const config_t * CONFIG, + const char * PATH) + -- Function: double config_lookup_float (const config_t * CONFIG, + const char * PATH) + -- Function: int config_lookup_bool (const config_t * CONFIG, + const char * PATH) + -- Function: const char * config_lookup_string + (const config_t * CONFIG, const char * PATH) + These functions locate the setting in the configuration CONFIG + specified by the path PATH. They return the value of the setting + on success, or a 0 or `NULL' value if the setting was not found or + if the type of the value did not match the type requested. + + Storage for the string returned by `config_lookup_string()' is + managed by the library and released automatically when the setting + is destroyed or when the setting's value is changed; the string + must not be freed by the caller. + + + -- Function: config_setting_t * config_lookup + (const config_t * CONFIG, const char * PATH) + This function locates the setting in the configuration CONFIG + specified by the path PATH. It returns a pointer to the + `config_setting_t' structure on success, or `NULL' if the setting + was not found. + + + -- Function: long config_setting_get_int + (const config_setting_t * SETTING) + -- Function: long long config_setting_get_int64 + (const config_setting_t * SETTING) + -- Function: double config_setting_get_float + (const config_setting_t * SETTING) + -- Function: int config_setting_get_bool + (const config_setting_t * SETTING) + -- Function: const char * config_setting_get_string + (const config_setting_t * SETTING) + These functions return the value of the given SETTING. If the type + of the setting does not match the type requested, a 0 or `NULL' + value is returned. Storage for the string returned by + `config_setting_get_string()' is managed by the library and + released automatically when the setting is destroyed or when the + setting's value is changed; the string must not be freed by the + caller. + + + -- Function: int config_setting_set_int (config_setting_t * SETTING, + long VALUE) + -- Function: int config_setting_set_int64 (config_setting_t * SETTING, + long long VALUE) + -- Function: int config_setting_set_float (config_setting_t * SETTING, + double VALUE) + -- Function: int config_setting_set_bool (config_setting_t * SETTING, + int VALUE) + -- Function: int config_setting_set_string + (config_setting_t * SETTING, const char * VALUE) + These functions set the value of the given SETTING to VALUE. On + success, they return `CONFIG_TRUE'. If the setting does not match + the type of the value, they return `CONFIG_FALSE'. + `config_setting_set_string()' makes a copy of the passed string + VALUE, so it may be subsequently freed or modified by the caller + without affecting the value of the setting. + + + -- Function: short config_setting_get_format + (config_setting_t * SETTING) + -- Function: int config_setting_set_format + (config_setting_t * SETTING, short FORMAT) + These functions get and set the external format for the setting + SETTING. + + The FORMAT must be one of the constants `CONFIG_FORMAT_DEFAULT' or + `CONFIG_FORMAT_HEX'. All settings support the + `CONFIG_FORMAT_DEFAULT' format. The `CONFIG_FORMAT_HEX' format + specifies hexadecimal formatting for integer values, and hence + only applies to settings of type `CONFIG_TYPE_INT' and + `CONFIG_TYPE_INT64'. If FORMAT is invalid for the given setting, + it is ignored. + + `config_setting_set_format()' returns `CONFIG_TRUE' on success and + `CONFIG_FALSE' on failure. + + + -- Function: config_setting_t * config_setting_get_member + (config_setting_t * SETTING, const char * NAME) + This function fetches the child setting named NAME from the group + SETTING. It returns the requested setting on success, or `NULL' if + the setting was not found or if SETTING is not a group. + + + -- Function: config_setting_t * config_setting_get_elem + (const config_setting_t * SETTING, unsigned int IDX) + This function fetches the element at the given index IDX in the + setting SETTING, which must be an array, list, or group. It + returns the requested setting on success, or `NULL' if IDX is out + of range or if SETTING is not an array, list, or group. + + + -- Function: long config_setting_get_int_elem + (const config_setting_t * SETTING, int IDX) + -- Function: long long config_setting_get_int64_elem + (const config_setting_t * SETTING, int IDX) + -- Function: double config_setting_get_float_elem + (const config_setting_t * SETTING, int IDX) + -- Function: int config_setting_get_bool_elem + (const config_setting_t * SETTING, int IDX) + -- Function: const char * config_setting_get_string_elem + (const config_setting_t * SETTING, int IDX) + These functions return the value at the specified index IDX in the + setting SETTING. If the setting is not an array or list, or if the + type of the element does not match the type requested, or if IDX + is out of range, they return 0 or `NULL'. Storage for the string + returned by `config_setting_get_string_elem()' is managed by the + library and released automatically when the setting is destroyed + or when its value is changed; the string must not be freed by the + caller. + + -- Function: config_setting_t * config_setting_set_int_elem + (config_setting_t * SETTING, int IDX, long VALUE) + -- Function: config_setting_t * config_setting_set_int64_elem + (config_setting_t * SETTING, int IDX, long long VALUE) + -- Function: config_setting_t * config_setting_set_float_elem + (config_setting_t * SETTING, int IDX, double VALUE) + -- Function: config_setting_t * config_setting_set_bool_elem + (config_setting_t * SETTING, int IDX, int VALUE) + -- Function: config_setting_t * config_setting_set_string_elem + (config_setting_t * SETTING, int IDX, const char * VALUE) + These functions set the value at the specified index IDX in the + setting SETTING to VALUE. If IDX is negative, a new element is + added to the end of the array or list. On success, these functions + return a pointer to the setting representing the element. If the + setting is not an array or list, or if the setting is an array and + the type of the array does not match the type of the value, or if + IDX is out of range, they return `NULL'. + `config_setting_set_string_elem()' makes a copy of the passed + string VALUE, so it may be subsequently freed or modified by the + caller without affecting the value of the setting. + + -- Function: config_setting_t * config_setting_add + (config_setting_t * PARENT, const char * NAME, int TYPE) + This function adds a new child setting or element to the setting + PARENT, which must be a group, array, or list. If PARENT is an + array or list, the NAME parameter is ignored and may be `NULL'. + + The function returns the new setting on success, or `NULL' if + PARENT is not a group, array, or list; or if there is already a + child setting of PARENT named NAME; or if TYPE is invalid. + + -- Function: int config_setting_remove (config_setting_t * PARENT, + const char * NAME) + This function removes and destroys the setting named NAME from the + parent setting PARENT, which must be a group. Any child settings + of the setting are recursively destroyed as well. + + The function returns `CONFIG_TRUE' on success. If PARENT is not a + group, or if it has no setting with the given name, it returns + `CONFIG_FALSE'. + + + -- Function: int config_setting_remove_elem + (config_setting_t * PARENT, unsigned int IDX) + This function removes the child setting at the given index IDX from + the setting PARENT, which must be a group, list, or array. Any + child settings of the removed setting are recursively destroyed as + well. + + The function returns `CONFIG_TRUE' on success. If PARENT is not a + group, list, or array, or if IDX is out of range, it returns + `CONFIG_FALSE'. + + + -- Function: config_setting_t * config_root_setting + (const config_t * CONFIG) + This function returns the root setting for the configuration + CONFIG. The root setting is a group. + + + -- Function: const char * config_setting_name + (const config_setting_t * SETTING) + This function returns the name of the given SETTING, or `NULL' if + the setting has no name. Storage for the returned string is + managed by the library and released automatically when the setting + is destroyed; the string must not be freed by the caller. + + + -- Function: config_setting_t * config_setting_parent + (const config_setting_t * SETTING) + This function returns the parent setting of the given SETTING, or + `NULL' if SETTING is the root setting. + + + -- Function: int config_setting_is_root + (const config_setting_t * SETTING) + This function returns `CONFIG_TRUE' if the given SETTING is the + root setting, and `CONFIG_FALSE' otherwise. + + + -- Function: int config_setting_index + (const config_setting_t * SETTING) + This function returns the index of the given SETTING within its + parent setting. If SETTING is the root setting, this function + returns -1. + + + -- Function: int config_setting_length + (const config_setting_t * SETTING) + This function returns the number of settings in a group, or the + number of elements in a list or array. For other types of + settings, it returns 0. + + + -- Function: int config_setting_type (const config_setting_t * SETTING) + This function returns the type of the given SETTING. The return + value is one of the constants `CONFIG_TYPE_INT', + `CONFIG_TYPE_INT64', `CONFIG_TYPE_FLOAT', `CONFIG_TYPE_STRING', + `CONFIG_TYPE_BOOL', `CONFIG_TYPE_ARRAY', `CONFIG_TYPE_LIST', or + `CONFIG_TYPE_GROUP'. + + + -- Function: int config_setting_is_group + (const config_setting_t * SETTING) + -- Function: int config_setting_is_array + (const config_setting_t * SETTING) + -- Function: int config_setting_is_list + (const config_setting_t * SETTING) + These convenience functions, which are implemented as macros, test + if the setting SETTING is of a given type. They return + `CONFIG_TRUE' or `CONFIG_FALSE'. + + + -- Function: int config_setting_is_aggregate + (const config_setting_t * SETTING) + -- Function: int config_setting_is_scalar + (const config_setting_t * SETTING) + -- Function: int config_setting_is_number + (const config_setting_t * SETTING) + These convenience functions, which are implemented as macros, test + if the setting SETTING is of an aggregate type (a group, array, or + list), of a scalar type (integer, 64-bit integer, floating point, + boolean, or string), and of a number (integer, 64-bit integer, or + floating point), respectively. They return `CONFIG_TRUE' or + `CONFIG_FALSE'. + + + -- Function: unsigned int config_setting_source_line + (const config_setting_t * SETTING) + This function returns the line number of the configuration file or + stream at which the setting SETTING was parsed. This information + is useful for reporting application-level errors. If the setting + was not read from a file or stream, or if the line number is + otherwise unavailable, the function returns 0. + + + -- Function: void config_setting_set_hook (config_setting_t * SETTING, + void * HOOK) + -- Function: void * config_setting_get_hook + (const config_setting_t * SETTING) + These functions make it possible to attach arbitrary data to each + setting structure, for instance a "wrapper" or "peer" object + written in another programming language. The destructor function, + if one has been supplied via a call to `config_set_destructor()', + will be called by the library to dispose of this data when the + setting itself is destroyed. There is no default destructor. + + + -- Function: void config_set_destructor (config_t * CONFIG, + void (* DESTRUCTOR)(void *)) + This function assigns the destructor function DESTRUCTOR for the + configuration CONFIG. This function accepts a single `void *' + argument and has no return value. See `config_setting_set_hook()' + above for more information. + + + +File: libconfig.info, Node: The C++ API, Next: Configuration File Grammar, Prev: The C API, Up: Top + +4 The C++ API +************* + +This chapter describes the C++ library API. The class `Config' +represents a configuration, and the class `Setting' represents a +configuration setting. Note that by design, neither of these classes +provides a public copy constructor or assignment operator. Therefore, +instances of these classes may only be passed between functions via +references or pointers. + + The library defines a group of exceptions, all of which extend the +common base exception `ConfigException'. + + A `SettingTypeException' is thrown when the type of a setting's +value does not match the type requested. + + A `SettingNotFoundException' is thrown when a setting is not found. + + A `SettingNameException' is thrown when an attempt is made to add a +new setting with a non-unique or invalid name. + + A `ParseException' is thrown when a parse error occurs while reading +a configuration from a stream. + + A `FileIOException' is thrown when an I/O error occurs while +reading/writing a configuration from/to a file. + + `SettingTypeException', `SettingNotFoundException', and +`SettingNameException' all extend the common base exception +`SettingException', which provides the following method: + + -- Method on SettingException: const char * getPath () + Returns the path to the setting associated with the exception, or + `NULL' if there is no applicable path. + + + The remainder of this chapter describes the methods for manipulating +configurations and configuration settings. + + -- Method on Config: Config () + -- Method on Config: ~Config () + These methods create and destroy `Config' objects. + + + -- Method on Config: void read (FILE * STREAM) + -- Method on Config: void write (FILE * STREAM) + The `read()' method reads and parses a configuration from the given + STREAM. A `ParseException' is thrown if a parse error occurs. + + The `write()' method writes the configuration to the given STREAM. + + + -- Method on Config: void readFile (const char * FILENAME) + -- Method on Config: void writeFile (const char * FILENAME) + The `readFile()' method reads and parses a configuration from the + file named FILENAME. A `ParseException' is thrown if a parse error + occurs. A `FileIOException' is thrown if the file cannot be read. + + The `writeFile()' method writes the configuration to the file + named FILENAME. A `FileIOException' is thrown if the file cannot + be written. + + + -- Method on ParseException: const char * getError () + -- Method on ParseException: int getLine () + If a call to `readFile()' or `read()' resulted in a + `ParseException', these methods can be called on the exception + object to obtain the text and line number of the parse error. + Storage for the string returned by `getError()' is managed by the + library; the string must not be freed by the caller. + + + -- Method on Config: void setAutoConvert (bool FLAG) + -- Method on Config: bool getAutoConvert () + `setAutoConvert()' enables number auto-conversion for the + configuration if FLAG is `true', and disables it otherwise. When + this feature is enabled, an attempt to assign a floating point + setting to an integer (or vice versa), or assign an integer to a + floating point setting (or vice versa) will cause the library to + silently perform the necessary conversion (possibly leading to + loss of data), rather than throwing a `SettingTypeException'. By + default this feature is disabled. + + `getAutoConvert()' returns `true' if number auto-conversion is + currently enabled for the configuration; otherwise it returns + `false'. + + + -- Method on Config: Setting & getRoot () + This method returns the root setting for the configuration, which + is a group. + + + -- Method on Config: Setting & lookup (const std::string &PATH) + -- Method on Config: Setting & lookup (const char * PATH) + These methods locate the setting specified by the path PATH. If + the requested setting is not found, a `SettingNotFoundException' is + thrown. + + + -- Method on Config: bool exists (const std::string &PATH) + -- Method on Config: bool exists (const char *PATH) + These methods test if a setting with the given PATH exists in the + configuration. They return `true' if the setting exists, and FALSE + otherwise. These methods do not throw exceptions. + + + -- Method on Config: bool lookupValue (const char *PATH, bool &VALUE) + -- Method on Config: bool lookupValue (const std::string &PATH, + bool &VALUE) + -- Method on Config: bool lookupValue (const char *PATH, int &VALUE) + -- Method on Config: bool lookupValue (const std::string &PATH, + int &VALUE) + -- Method on Config: bool lookupValue (const char *PATH, + unsigned int &VALUE) + -- Method on Config: bool lookupValue (const std::string &PATH, + unsigned int &VALUE) + -- Method on Config: bool lookupValue (const char *PATH, long &VALUE) + -- Method on Config: bool lookupValue (const std::string &PATH, + long &VALUE) + -- Method on Config: bool lookupValue (const char *PATH, + long long &VALUE) + -- Method on Config: bool lookupValue (const std::string &PATH, + long long &VALUE) + -- Method on Config: bool lookupValue (const char *PATH, + unsigned long &VALUE) + -- Method on Config: bool lookupValue (const std::string &PATH, + unsigned long &VALUE) + -- Method on Config: bool lookupValue (const char *PATH, float &VALUE) + -- Method on Config: bool lookupValue (const std::string &PATH, + float &VALUE) + -- Method on Config: bool lookupValue (const char *PATH, double &VALUE) + -- Method on Config: bool lookupValue (const std::string &PATH, + double &VALUE) + -- Method on Config: bool lookupValue (const char *PATH, + const char *&VALUE) + -- Method on Config: bool lookupValue (const std::string &PATH, + const char *&VALUE) + -- Method on Config: bool lookupValue (const char *PATH, + std::string &VALUE) + -- Method on Config: bool lookupValue (const std::string &PATH, + std::string &VALUE) + These are convenience methods for looking up the value of a setting + with the given PATH. If the setting is found and is of an + appropriate type, the value is stored in VALUE and the method + returns `true'. Otherwise, VALUE is left unmodified and the method + returns FALSE. These methods do not throw exceptions. + + Storage for const char * values is managed by the library and + released automatically when the setting is destroyed or when its + value is changed; the string must not be freed by the caller. For + safety and convenience, always assigning string values to a + `std::string' is suggested. + + Since these methods have boolean return values and do not throw + exceptions, they can be used within boolean logic expressions. The + following example presents a concise way to look up three values + at once and perform error handling if any of them are not found or + are of the wrong type: + + + int var1; + double var2; + const char *var3; + + if(config.lookupValue("values.var1", var1) + && config.lookupValue("values.var2", var2) + && config.lookupValue("values.var3", var3)) + { + // use var1, var2, var3 + } + else + { + // error handling here + } + + This approach also takes advantage of the short-circuit evaluation + rules of C++, i.e., if the first lookup fails (returning `false'), + the remaining lookups are skipped entirely. + + + -- Method on Setting: operator bool() + -- Method on Setting: operator int() + -- Method on Setting: operator unsigned int() + -- Method on Setting: operator long() + -- Method on Setting: operator unsigned long() + -- Method on Setting: operator long long() + -- Method on Setting: operator unsigned long long() + -- Method on Setting: operator float() + -- Method on Setting: operator double() + -- Method on Setting: operator const char *() + -- Method on Setting: operator std::string() + These cast operators allow a `Setting' object to be assigned to a + variable of type bool if it is of type `TypeBoolean'; int, + unsigned int, long, or unsigned long if it is of type `TypeInt'; + `long long' or `unsigned long long' if it is of type `TypeInt64', + float or double if it is of type `TypeFloat'; or const char * or + std::string if it is of type `TypeString'. + + Storage for const char * return values is managed by the library + and released automatically when the setting is destroyed or when + its value is changed; the string must not be freed by the caller. + For safety and convenience, always assigning string return values + to a `std::string' is suggested. + + The following examples demonstrate this usage: + + long width = config.lookup("application.window.size.w"); + + bool splashScreen = config.lookup("application.splash_screen"); + + std::string title = config.lookup("application.window.title"); + + Note that certain conversions can lead to loss of precision or + clipping of values, e.g., assigning a negative value to an unsigned + int (in which case the value will be treated as 0), or a + double-precision value to a float. The library does not treat + these lossy conversions as errors. + + Perhaps surprisingly, the following code in particular will cause a + compiler error: + + std::string title; + . + . + . + title = config.lookup("application.window.title"); + + This is because the assignment operator of `std::string' is being + invoked with a `Setting &' as an argument. The compiler is unable + to make an implicit conversion because both the `const char *' and + the `std::string' cast operators of `Setting' are equally + appropriate. This is not a bug in libconfig; providing only the + `const char *' cast operator would resolve this particular + ambiguity, but would cause assignments to `std::string' like the + one in the previous example to produce a compiler error. (To + understand why, see section 11.4.1 of The C++ Programming + Language.) + + The solution to this problem is to use an explicit conversion that + avoids the construction of an intermediate `std::string' object, + as follows: + + std::string title; + . + . + . + title = (const char *)config.lookup("application.window.title"); + + If the assignment is invalid due to a type mismatch, a + `SettingTypeException' is thrown. + + + -- Method on Setting: Setting & operator= (bool VALUE) + -- Method on Setting: Setting & operator= (int VALUE) + -- Method on Setting: Setting & operator= (long VALUE) + -- Method on Setting: Setting & operator= (const long long &VALUE) + -- Method on Setting: Setting & operator= (float VALUE) + -- Method on Setting: Setting & operator= (const double &VALUE) + -- Method on Setting: Setting & operator= (const char *VALUE) + -- Method on Setting: Setting & operator= (const std::string &VALUE) + These assignment operators allow values of type bool, int, long, + long long, float, double, const char *, and std::string to be + assigned to a setting. In the case of strings, the library makes a + copy of the passed string VALUE, so it may be subsequently freed + or modified by the caller without affecting the value of the + setting. + + If the assignment is invalid due to a type mismatch, a + `SettingTypeException' is thrown. + + + -- Method on Setting: Setting & operator[] (int IDX) + -- Method on Setting: Setting & operator[] (const std::string &NAME) + -- Method on Setting: Setting & operator[] (const char *NAME) + A `Setting' object may be subscripted with an integer index IDX if + it is an array or list, or with either a string NAME or an integer + index IDX if it is a group. For example, the following code would + produce the string `Last Name' when applied to the example + configuration in *note Configuration Files::. + + Setting& setting = config.lookup("application.misc"); + const char *s = setting["columns"][0]; + + If the setting is not an array, list, or group, a + `SettingTypeException' is thrown. If the subscript (IDX or NAME) + does not refer to a valid element, a `SettingNotFoundException' is + thrown. + + Iterating over a group's child settings with an integer index will + return the settings in the same order that they appear in the + configuration. + + + -- Method on Setting: bool lookupValue (const char *NAME, bool &VALUE) + -- Method on Setting: bool lookupValue (const std::string &NAME, + bool &VALUE) + -- Method on Setting: bool lookupValue (const char *NAME, int &VALUE) + -- Method on Setting: bool lookupValue (const std::string &NAME, + int &VALUE) + -- Method on Setting: bool lookupValue (const char *NAME, + unsigned int &VALUE) + -- Method on Setting: bool lookupValue (const std::string &NAME, + unsigned int &VALUE) + -- Method on Setting: bool lookupValue (const char *NAME, + long long &VALUE) + -- Method on Setting: bool lookupValue (const std::string &NAME, + long long &VALUE) + -- Method on Setting: bool lookupValue (const char *NAME, + unsigned long long &VALUE) + -- Method on Setting: bool lookupValue (const std::string &NAME, + unsigned long long &VALUE) + -- Method on Setting: bool lookupValue (const char *NAME, long &VALUE) + -- Method on Setting: bool lookupValue (const std::string &NAME, + long &VALUE) + -- Method on Setting: bool lookupValue (const char *NAME, + unsigned long &VALUE) + -- Method on Setting: bool lookupValue (const std::string &NAME, + unsigned long &VALUE) + -- Method on Setting: bool lookupValue (const char *NAME, float &VALUE) + -- Method on Setting: bool lookupValue (const std::string &NAME, + float &VALUE) + -- Method on Setting: bool lookupValue (const char *NAME, + double &VALUE) + -- Method on Setting: bool lookupValue (const std::string &NAME, + double &VALUE) + -- Method on Setting: bool lookupValue (const char *NAME, + const char *&VALUE) + -- Method on Setting: bool lookupValue (const std::string &NAME, + const char *&VALUE) + -- Method on Setting: bool lookupValue (const char *NAME, + std::string &VALUE) + -- Method on Setting: bool lookupValue (const std::string &NAME, + std::string &VALUE) + These are convenience methods for looking up the value of a child + setting with the given NAME. If the setting is found and is of an + appropriate type, the value is stored in VALUE and the method + returns `true'. Otherwise, VALUE is left unmodified and the method + returns FALSE. These methods do not throw exceptions. + + Storage for const char * values is managed by the library and + released automatically when the setting is destroyed or when its + value is changed; the string must not be freed by the caller. For + safety and convenience, always assigning string values to a + `std::string' is suggested. + + Since these methods have boolean return values and do not throw + exceptions, they can be used within boolean logic expressions. The + following example presents a concise way to look up three values + at once and perform error handling if any of them are not found or + are of the wrong type: + + + int var1; + double var2; + const char *var3; + + if(setting.lookupValue("var1", var1) + && setting.lookupValue("var2", var2) + && setting.lookupValue("var3", var3)) + { + // use var1, var2, var3 + } + else + { + // error handling here + } + + This approach also takes advantage of the short-circuit evaluation + rules of C++, e.g., if the first lookup fails (returning `false'), + the remaining lookups are skipped entirely. + + + -- Method on Setting: Setting & add (const std::string &NAME, + Setting::Type TYPE) + -- Method on Setting: Setting & add (const char *NAME, + Setting::Type TYPE) + These methods add a new child setting with the given NAME and TYPE + to the setting, which must be a group. They return a reference to + the new setting. If the setting already has a child setting with + the given name, or if the name is invalid, a + `SettingNameException' is thrown. If the setting is not a group, a + `SettingTypeException' is thrown. + + Once a setting has been created, neither its name nor type can be + changed. + + + -- Method on Setting: Setting & add (Setting::Type TYPE) + This method adds a new element to the setting, which must be of + type `TypeArray' or `TypeList'. If the setting is an array which + currently has zero elements, the TYPE parameter (which must be + `TypeInt', `TypeInt64', `TypeFloat', `TypeBool', or `TypeString') + determines the type for the array; otherwise it must match the + type of the existing elements in the array. + + The method returns the new setting on success. If TYPE is a scalar + type, the new setting will have a default value of 0, 0.0, + `false', or `NULL', depending on the type. + + The method throws a `SettingTypeException' if the setting is not + an array or list, or if TYPE is invalid. + + + -- Method on Setting: void remove (const std::string &NAME) + -- Method on Setting: void remove (const char *NAME) + These methods remove the child setting with the given NAME from + the setting, which must be a group. Any child settings of the + removed setting are recursively destroyed as well. + + If the setting is not a group, a `SettingTypeException' is thrown. + If the setting does not have a child setting with the given name, + a `SettingNotFoundException' is thrown. + + + -- Method on Setting: void remove (unsigned int IDX) + This method removes the child setting at the given index IDX from + the setting, which must be a group, list, or array. Any child + settings of the removed setting are recursively destroyed as well. + + If the setting is not a group, list, or array, a + `SettingTypeException' is thrown. If IDX is out of range, a + `SettingNotFoundException' is thrown. + + + -- Method on Setting: const char * getName () + This method returns the name of the setting, or `NULL' if the + setting has no name. Storage for the returned string is managed by + the library and released automatically when the setting is + destroyed; the string must not be freed by the caller. For safety + and convenience, consider assigning the return value to a + `std::string'. + + + -- Method on Setting: std::string getPath () + This method returns the complete dot-separated path to the + setting. Settings which do not have a name (list and array + elements) are represented by their index in square brackets. + + + -- Method on Setting: Setting & getParent () + This method returns the parent setting of the setting. If the + setting is the root setting, a `SettingNotFoundException' is + thrown. + + + -- Method on Setting: bool isRoot () + This method returns true if the setting is the root setting, and + false otherwise. + + + -- Method on Setting: int getIndex () + This method returns the index of the setting within its parent + setting. When applied to the root setting, this method returns -1. + + + -- Method on Setting: Setting::Type getType () + This method returns the type of the setting. The `Setting::Type' + enumeration consists of the following constants: `TypeInt', + `TypeInt64', `TypeFloat', `TypeString', `TypeBoolean', + `TypeArray', `TypeList', or `TypeGroup'. + + + -- Method on Setting: Setting::Format getFormat () + -- Method on Setting: void setFormat (Setting::Format FORMAT) + These methods get and set the external format for the setting. + + The SETTING::FORMAT enumeration consists of the following + constants: `FormatDefault', `FormatHex'. All settings support the + `FormatDefault' format. The `FormatHex' format specifies + hexadecimal formatting for integer values, and hence only applies + to settings of type `TypeInt' and `TypeInt64'. If FORMAT is + invalid for the given setting, it is ignored. + + + -- Method on Setting: bool exists (const std::string &NAME) + -- Method on Setting: bool exists (const char *NAME) + These methods test if the setting has a child setting with the + given NAME. They return `true' if the setting exists, and FALSE + otherwise. These methods do not throw exceptions. + + + -- Method on Setting: int getLength () + This method returns the number of settings in a group, or the + number of elements in a list or array. For other types of + settings, it returns 0. + + + -- Method on Setting: bool isGroup () + -- Method on Setting: bool isArray () + -- Method on Setting: bool isList () + These convenience methods test if a setting is of a given type. + + + -- Method on Setting: bool isAggregate () + -- Method on Setting: bool isScalar () + -- Method on Setting: bool isNumber () + These convenience methods test if a setting is of an aggregate + type (a group, array, or list), of a scalar type (integer, 64-bit + integer, floating point, boolean, or string), and of a number + (integer or floating point), respectively. + + + -- Method on Setting: unsigned int getSourceLine () + This method returns the line number of the configuration file or + stream at which the setting was parsed. This information is useful + for reporting application-level errors. If the setting was not + read from a file or stream, or if the line number is otherwise + unavailable, the method returns 0. + + + +File: libconfig.info, Node: Configuration File Grammar, Next: License, Prev: The C++ API, Up: Top + +5 Configuration File Grammar +**************************** + +Below is the BNF grammar for configuration files. Comments are not part +of the grammar, and hence are not included here. + + + configuration = setting-list | empty + + empty = + + setting-list = setting | setting-list setting + + setting = name (":" | "=") value ";" + + value = scalar-value | array | list | group + + value-list = value | value-list "," value + + scalar-value = boolean | integer | integer64 | hex | hex64 | float + | string + + scalar-value-list = scalar-value | scalar-value-list "," scalar-value + + array = "[" (scalar-value-list | empty) "]" + + list = "(" (value-list | empty) ")" + + group = "{" (setting-list | empty) "}" + + + + Terminals are defined below as regular expressions: + +`boolean' `([Tt][Rr][Uu][Ee])|([Ff][Aa][Ll][Ss][Ee])' +`string' `\"([^\"\\]|\\.)*\"' +`name' `[A-Za-z\*][-A-Za-z0-9_\*]*' +`integer' `[-+]?[0-9]+' +`integer64' `[-+]?[0-9]+L(L)?' +`hex' `0[Xx][0-9A-Fa-f]+' +`hex64' `0[Xx][0-9A-Fa-f]+L(L)?' +`float' `([-+]?([0-9]*)?\.[0-9]*([eE][-+]?[0-9]+)?)|([-+]([0-9]+)(\.[0-9]*)?[eE][-+]?[0-9]+)' + + +File: libconfig.info, Node: License, Next: Function Index, Prev: Configuration File Grammar, Up: Top + +Appendix A License +****************** + + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + + Copyright (C) 1991, 1999 Free Software Foundation, Inc., 59 Temple +Place, Suite 330, Boston, MA 02111-1307 USA + + Everyone is permitted to copy and distribute verbatim copies of this +license document, but changing it is not allowed. + + [This is the first released version of the Lesser GPL. It also +counts as the successor of the GNU Library Public License, version 2, +hence the version number 2.1.] + + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software-to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages-typically libraries-of the Free +Software Foundation and other authors who decide to use it. You can use +it too, but we suggest you first think carefully about whether this +license or the ordinary General Public License is the better strategy to +use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do these +things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know that +what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and is +quite different from the ordinary General Public License. We use this +license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the entire +combination fits its criteria of freedom. The Lesser General Public +License permits more lax criteria for linking other code with the +library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General Public +License. It also provides other free software developers Less of an +advantage over competing non-free programs. These disadvantages are the +reason we use the ordinary General Public License for many libraries. +However, the Lesser license provides advantages in certain special +circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it +becomes a de-facto standard. To achieve this, non-free programs must +be allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of free +software. For example, permission to use the GNU C Library in non-free +programs enables many more people to use the whole GNU operating system, +as well as its variant, the GNU/Linux operating system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is linked +with the Library has the freedom and the wherewithal to run that program +using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + + 0. This License Agreement applies to any software library or other + program which contains a notice placed by the copyright holder or + other authorized party saying it may be distributed under the + terms of this Lesser General Public License (also called "this + License"). Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data + prepared so as to be conveniently linked with application programs + (which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work + which has been distributed under these terms. A "work based on + the Library" means either the Library or any derivative work under + copyright law: that is to say, a work containing the Library or a + portion of it, either verbatim or with modifications and/or + translated straightforwardly into another language. (Hereinafter, + translation is included without limitation in the term + "modification".) + + "Source code" for a work means the preferred form of the work for + making modifications to it. For a library, complete source code + means all the source code for all modules it contains, plus any + associated interface definition files, plus the scripts used to + control compilation and installation of the library. + + Activities other than copying, distribution and modification are + not covered by this License; they are outside its scope. The act + of running a program using the Library is not restricted, and + output from such a program is covered only if its contents + constitute a work based on the Library (independent of the use of + the Library in a tool for writing it). Whether that is true + depends on what the Library does and what the program that uses + the Library does. + + + 1. You may copy and distribute verbatim copies of the Library's + complete source code as you receive it, in any medium, provided + that you conspicuously and appropriately publish on each copy an + appropriate copyright notice and disclaimer of warranty; keep + intact all the notices that refer to this License and to the + absence of any warranty; and distribute a copy of this License + along with the Library. + + You may charge a fee for the physical act of transferring a copy, + and you may at your option offer warranty protection in exchange + for a fee. + + + 2. You may modify your copy or copies of the Library or any portion + of it, thus forming a work based on the Library, and copy and + distribute such modifications or work under the terms of Section 1 + above, provided that you also meet all of these conditions: + + a. The modified work must itself be a software library. + + + b. You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + + c. You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + + d. If a facility in the modified Library refers to a function or + a table of data to be supplied by an application program that + uses the facility, other than as an argument passed when the + facility is invoked, then you must make a good faith effort + to ensure that, in the event an application does not supply + such function or table, the facility still operates, and + performs whatever part of its purpose remains meaningful. + + (For example, a function in a library to compute square roots + has a purpose that is entirely well-defined independent of + the application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function + must be optional: if the application does not supply it, the + square root function must still compute square roots.) + + + These requirements apply to the modified work as a whole. If + identifiable sections of that work are not derived from the + Library, and can be reasonably considered independent and separate + works in themselves, then this License, and its terms, do not + apply to those sections when you distribute them as separate + works. But when you distribute the same sections as part of a + whole which is a work based on the Library, the distribution of + the whole must be on the terms of this License, whose permissions + for other licensees extend to the entire whole, and thus to each + and every part regardless of who wrote it. + + Thus, it is not the intent of this section to claim rights or + contest your rights to work written entirely by you; rather, the + intent is to exercise the right to control the distribution of + derivative or collective works based on the Library. + + In addition, mere aggregation of another work not based on the + Library with the Library (or with a work based on the Library) on + a volume of a storage or distribution medium does not bring the + other work under the scope of this License. + + + 3. You may opt to apply the terms of the ordinary GNU General Public + License instead of this License to a given copy of the Library. + To do this, you must alter all the notices that refer to this + License, so that they refer to the ordinary GNU General Public + License, version 2, instead of to this License. (If a newer + version than version 2 of the ordinary GNU General Public License + has appeared, then you can specify that version instead if you + wish.) Do not make any other change in these notices. + + Once this change is made in a given copy, it is irreversible for + that copy, so the ordinary GNU General Public License applies to + all subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of the + Library into a program that is not a library. + + + 4. You may copy and distribute the Library (or a portion or + derivative of it, under Section 2) in object code or executable + form under the terms of Sections 1 and 2 above provided that you + accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software + interchange. + + If distribution of object code is made by offering access to copy + from a designated place, then offering equivalent access to copy + the source code from the same place satisfies the requirement to + distribute the source code, even though third parties are not + compelled to copy the source along with the object code. + + + 5. A program that contains no derivative of any portion of the + Library, but is designed to work with the Library by being + compiled or linked with it, is called a "work that uses the + Library". Such a work, in isolation, is not a derivative work of + the Library, and therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library + creates an executable that is a derivative of the Library (because + it contains portions of the Library), rather than a "work that + uses the library". The executable is therefore covered by this + License. Section 6 states terms for distribution of such + executables. + + When a "work that uses the Library" uses material from a header + file that is part of the Library, the object code for the work may + be a derivative work of the Library even though the source code is + not. Whether this is true is especially significant if the work + can be linked without the Library, or if the work is itself a + library. The threshold for this to be true is not precisely + defined by law. + + If such an object file uses only numerical parameters, data + structure layouts and accessors, and small macros and small inline + functions (ten lines or less in length), then the use of the + object file is unrestricted, regardless of whether it is legally a + derivative work. (Executables containing this object code plus + portions of the Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may + distribute the object code for the work under the terms of Section + 6. Any executables containing that work also fall under Section + 6, whether or not they are linked directly with the Library itself. + + + 6. As an exception to the Sections above, you may also combine or + link a "work that uses the Library" with the Library to produce a + work containing portions of the Library, and distribute that work + under terms of your choice, provided that the terms permit + modification of the work for the customer's own use and reverse + engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the + Library is used in it and that the Library and its use are covered + by this License. You must supply a copy of this License. If the + work during execution displays copyright notices, you must include + the copyright notice for the Library among them, as well as a + reference directing the user to the copy of this License. Also, + you must do one of these things: + + + a. Accompany the work with the complete corresponding + machine-readable source code for the Library including + whatever changes were used in the work (which must be + distributed under Sections 1 and 2 above); and, if the work + is an executable linked with the Library, with the complete + machine-readable "work that uses the Library", as object code + and/or source code, so that the user can modify the Library + and then relink to produce a modified executable containing + the modified Library. (It is understood that the user who + changes the contents of definitions files in the Library will + not necessarily be able to recompile the application to use + the modified definitions.) + + + b. Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run + time a copy of the library already present on the user's + computer system, rather than copying library functions into + the executable, and (2) will operate properly with a modified + version of the library, if the user installs one, as long as + the modified version is interface-compatible with the version + that the work was made with. + + + c. Accompany the work with a written offer, valid for at least + three years, to give the same user the materials specified in + Subsection 6a, above, for a charge no more than the cost of + performing this distribution. + + + d. If distribution of the work is made by offering access to + copy from a designated place, offer equivalent access to copy + the above specified materials from the same place. + + + e. Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + + For an executable, the required form of the "work that uses the + Library" must include any data and utility programs needed for + reproducing the executable from it. However, as a special + exception, the materials to be distributed need not include + anything that is normally distributed (in either source or binary + form) with the major components (compiler, kernel, and so on) of + the operating system on which the executable runs, unless that + component itself accompanies the executable. + + It may happen that this requirement contradicts the license + restrictions of other proprietary libraries that do not normally + accompany the operating system. Such a contradiction means you + cannot use both them and the Library together in an executable + that you distribute. + + + 7. You may place library facilities that are a work based on the + Library side-by-side in a single library together with other + library facilities not covered by this License, and distribute + such a combined library, provided that the separate distribution + of the work based on the Library and of the other library + facilities is otherwise permitted, and provided that you do these + two things: + + + a. Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + + b. Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and + explaining where to find the accompanying uncombined form of + the same work. + + + + 8. You may not copy, modify, sublicense, link with, or distribute the + Library except as expressly provided under this License. Any + attempt otherwise to copy, modify, sublicense, link with, or + distribute the Library is void, and will automatically terminate + your rights under this License. However, parties who have + received copies, or rights, from you under this License will not + have their licenses terminated so long as such parties remain in + full compliance. + + + 9. You are not required to accept this License, since you have not + signed it. However, nothing else grants you permission to modify + or distribute the Library or its derivative works. These actions + are prohibited by law if you do not accept this License. + Therefore, by modifying or distributing the Library (or any work + based on the Library), you indicate your acceptance of this + License to do so, and all its terms and conditions for copying, + distributing or modifying the Library or works based on it. + + + 10. Each time you redistribute the Library (or any work based on the + Library), the recipient automatically receives a license from the + original licensor to copy, distribute, link with or modify the + Library subject to these terms and conditions. You may not impose + any further restrictions on the recipients' exercise of the rights + granted herein. You are not responsible for enforcing compliance + by third parties with this License. + + + 11. If, as a consequence of a court judgment or allegation of patent + infringement or for any other reason (not limited to patent + issues), conditions are imposed on you (whether by court order, + agreement or otherwise) that contradict the conditions of this + License, they do not excuse you from the conditions of this + License. If you cannot distribute so as to satisfy simultaneously + your obligations under this License and any other pertinent + obligations, then as a consequence you may not distribute the + Library at all. For example, if a patent license would not permit + royalty-free redistribution of the Library by all those who + receive copies directly or indirectly through you, then the only + way you could satisfy both it and this License would be to refrain + entirely from distribution of the Library. + + If any portion of this section is held invalid or unenforceable + under any particular circumstance, the balance of the section is + intended to apply, and the section as a whole is intended to apply + in other circumstances. + + It is not the purpose of this section to induce you to infringe any + patents or other property right claims or to contest validity of + any such claims; this section has the sole purpose of protecting + the integrity of the free software distribution system which is + implemented by public license practices. Many people have made + generous contributions to the wide range of software distributed + through that system in reliance on consistent application of that + system; it is up to the author/donor to decide if he or she is + willing to distribute software through any other system and a + licensee cannot impose that choice. + + This section is intended to make thoroughly clear what is believed + to be a consequence of the rest of this License. + + + 12. If the distribution and/or use of the Library is restricted in + certain countries either by patents or by copyrighted interfaces, + the original copyright holder who places the Library under this + License may add an explicit geographical distribution limitation + excluding those countries, so that distribution is permitted only + in or among countries not thus excluded. In such case, this + License incorporates the limitation as if written in the body of + this License. + + + 13. The Free Software Foundation may publish revised and/or new + versions of the Lesser General Public License from time to time. + Such new versions will be similar in spirit to the present + version, but may differ in detail to address new problems or + concerns. + + Each version is given a distinguishing version number. If the + Library specifies a version number of this License which applies + to it and "any later version", you have the option of following + the terms and conditions either of that version or of any later + version published by the Free Software Foundation. If the Library + does not specify a license version number, you may choose any + version ever published by the Free Software Foundation. + + + 14. If you wish to incorporate parts of the Library into other free + programs whose distribution conditions are incompatible with + these, write to the author to ask for permission. For software + which is copyrighted by the Free Software Foundation, write to the + Free Software Foundation; we sometimes make exceptions for this. + Our decision will be guided by the two goals of preserving the + free status of all derivatives of our free software and of + promoting the sharing and reuse of software generally. + + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO + WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE + LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT + HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT + WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT + NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND + FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE + QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE + LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY + SERVICING, REPAIR OR CORRECTION. + + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN + WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY + MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE + LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, + INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR + INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF + DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU + OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY + OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of +the ordinary General Public License). + + To apply these terms, attach the following notices to the library. +It is safest to attach them to the start of each source file to most +effectively convey the exclusion of warranty; and each file should have +at least the "copyright" line and a pointer to where the full notice is +found. + + + +Copyright (C) + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + Also add information on how to contact you by electronic and paper +mail. + + You should also get your employer (if you work as a programmer) or +your school, if any, to sign a "copyright disclaimer" for the library, +if necessary. Here is a sample; alter the names: + + +Yoyodyne, Inc., hereby disclaims all copyright interest in the +library `Frob' (a library for tweaking knobs) written by James Random Hacker. + +, 1 April 1990 +Ty Coon, President of Vice + + That's all there is to it! + + +File: libconfig.info, Node: Function Index, Next: Type Index, Prev: License, Up: Top + +Function Index +************** + +[index] +* Menu: + +* add on Setting: The C++ API. (line 378) +* Config on Config: The C++ API. (line 43) +* config_destroy: The C API. (line 15) +* config_error_line: The C API. (line 55) +* config_error_text: The C API. (line 54) +* config_get_auto_convert: The C API. (line 65) +* config_init: The C API. (line 14) +* config_lookup: The C API. (line 102) +* config_lookup_bool: The C API. (line 87) +* config_lookup_float: The C API. (line 85) +* config_lookup_int: The C API. (line 81) +* config_lookup_int64: The C API. (line 83) +* config_lookup_string: The C API. (line 89) +* config_read: The C API. (line 26) +* config_read_file: The C API. (line 35) +* config_root_setting: The C API. (line 254) +* config_set_auto_convert: The C API. (line 64) +* config_set_destructor: The C API. (line 348) +* config_setting_add: The C API. (line 221) +* config_setting_get_bool: The C API. (line 116) +* config_setting_get_bool_elem: The C API. (line 187) +* config_setting_get_elem: The C API. (line 173) +* config_setting_get_float: The C API. (line 114) +* config_setting_get_float_elem: The C API. (line 185) +* config_setting_get_format: The C API. (line 147) +* config_setting_get_hook: The C API. (line 338) +* config_setting_get_int: The C API. (line 110) +* config_setting_get_int64: The C API. (line 112) +* config_setting_get_int64_elem: The C API. (line 183) +* config_setting_get_int_elem: The C API. (line 181) +* config_setting_get_member: The C API. (line 166) +* config_setting_get_string: The C API. (line 118) +* config_setting_get_string_elem: The C API. (line 189) +* config_setting_index: The C API. (line 280) +* config_setting_is_aggregate: The C API. (line 313) +* config_setting_is_array: The C API. (line 304) +* config_setting_is_group: The C API. (line 302) +* config_setting_is_list: The C API. (line 306) +* config_setting_is_number: The C API. (line 317) +* config_setting_is_root: The C API. (line 274) +* config_setting_is_scalar: The C API. (line 315) +* config_setting_length: The C API. (line 287) +* config_setting_name: The C API. (line 260) +* config_setting_parent: The C API. (line 268) +* config_setting_remove: The C API. (line 231) +* config_setting_remove_elem: The C API. (line 242) +* config_setting_set_bool: The C API. (line 135) +* config_setting_set_bool_elem: The C API. (line 206) +* config_setting_set_float: The C API. (line 133) +* config_setting_set_float_elem: The C API. (line 204) +* config_setting_set_format: The C API. (line 149) +* config_setting_set_hook: The C API. (line 336) +* config_setting_set_int: The C API. (line 129) +* config_setting_set_int64: The C API. (line 131) +* config_setting_set_int64_elem: The C API. (line 202) +* config_setting_set_int_elem: The C API. (line 200) +* config_setting_set_string: The C API. (line 137) +* config_setting_set_string_elem: The C API. (line 208) +* config_setting_source_line: The C API. (line 327) +* config_setting_type: The C API. (line 293) +* config_write: The C API. (line 43) +* config_write_file: The C API. (line 48) +* exists on Config: The C++ API. (line 104) +* exists on Setting: The C++ API. (line 479) +* getAutoConvert on Config: The C++ API. (line 77) +* getError on ParseException: The C++ API. (line 67) +* getFormat on Setting: The C++ API. (line 467) +* getIndex on Setting: The C++ API. (line 455) +* getLength on Setting: The C++ API. (line 486) +* getLine on ParseException: The C++ API. (line 68) +* getName on Setting: The C++ API. (line 429) +* getParent on Setting: The C++ API. (line 444) +* getPath on Setting: The C++ API. (line 438) +* getPath on SettingException: The C++ API. (line 35) +* getRoot on Config: The C++ API. (line 92) +* getSourceLine on Setting: The C++ API. (line 507) +* getType on Setting: The C++ API. (line 460) +* isAggregate on Setting: The C++ API. (line 498) +* isArray on Setting: The C++ API. (line 493) +* isGroup on Setting: The C++ API. (line 492) +* isList on Setting: The C++ API. (line 494) +* isNumber on Setting: The C++ API. (line 500) +* isRoot on Setting: The C++ API. (line 450) +* isScalar on Setting: The C++ API. (line 499) +* lookup on Config: The C++ API. (line 97) +* lookupValue on Config: The C++ API. (line 111) +* lookupValue on Setting: The C++ API. (line 298) +* operator bool() on Setting: The C++ API. (line 185) +* operator const char *() on Setting: The C++ API. (line 194) +* operator double() on Setting: The C++ API. (line 193) +* operator float() on Setting: The C++ API. (line 192) +* operator int() on Setting: The C++ API. (line 186) +* operator long long() on Setting: The C++ API. (line 190) +* operator long() on Setting: The C++ API. (line 188) +* operator std::string() on Setting: The C++ API. (line 195) +* operator unsigned int() on Setting: The C++ API. (line 187) +* operator unsigned long long() on Setting: The C++ API. (line 191) +* operator unsigned long() on Setting: The C++ API. (line 189) +* operator= on Setting: The C++ API. (line 257) +* operator[] on Setting: The C++ API. (line 276) +* read on Config: The C++ API. (line 48) +* readFile on Config: The C++ API. (line 56) +* remove on Setting: The C++ API. (line 408) +* setAutoConvert on Config: The C++ API. (line 76) +* setFormat on Setting: The C++ API. (line 468) +* write on Config: The C++ API. (line 49) +* writeFile on Config: The C++ API. (line 57) +* ~Config on Config: The C++ API. (line 44) + + +File: libconfig.info, Node: Type Index, Next: Concept Index, Prev: Function Index, Up: Top + +Type Index +********** + +[index] +* Menu: + +* Config: The C++ API. (line 6) +* config_setting_t: The C API. (line 6) +* config_t: The C API. (line 6) +* ConfigException: The C++ API. (line 13) +* FileIOException: The C++ API. (line 27) +* ParseException: The C++ API. (line 24) +* Setting: The C++ API. (line 6) +* Setting::Format: The C++ API. (line 470) +* Setting::Type: The C++ API. (line 460) +* SettingException: The C++ API. (line 30) +* SettingFormat: The C API. (line 152) +* SettingNameException: The C++ API. (line 21) +* SettingNotFoundException: The C++ API. (line 19) +* SettingTypeException: The C++ API. (line 16) + + +File: libconfig.info, Node: Concept Index, Prev: Type Index, Up: Top + +Concept Index +************* + +[index] +* Menu: + +* aggregate value: The C API. (line 317) +* array: Configuration Files. (line 23) +* comment: Comments. (line 6) +* configuration: Configuration Files. (line 23) +* format: The C API. (line 152) +* group: Configuration Files. (line 23) +* list: Configuration Files. (line 23) +* locale: Internationalization Issues. + (line 14) +* path: Configuration Files. (line 76) +* scalar value: Configuration Files. (line 23) +* setting: Configuration Files. (line 23) +* Unicode: Internationalization Issues. + (line 6) +* UTF-8: Internationalization Issues. + (line 6) +* value: Configuration Files. (line 23) + + + +Tag Table: +Node: Top245 +Node: Introduction511 +Node: Why Another Configuration File Library?1323 +Node: Using the Library from a C Program2399 +Node: Using the Library from a C++ Program2867 +Node: Multithreading Issues3532 +Node: Internationalization Issues5099 +Node: Compiling Using pkg-config6622 +Node: Configuration Files7472 +Node: Settings11301 +Node: Groups11619 +Node: Arrays11893 +Node: Lists12165 +Node: Integer Values12451 +Node: 64-bit Integer Values12915 +Node: Floating Point Values13294 +Node: Boolean Values13751 +Node: String Values14023 +Node: Comments14912 +Node: The C API15792 +Node: The C++ API31858 +Node: Configuration File Grammar53777 +Node: License55074 +Node: Function Index83168 +Node: Type Index91197 +Node: Concept Index92362 + +End Tag Table diff --git a/coregrade/src/libconfig-1.3.1/doc/libconfig.texi b/coregrade/src/libconfig-1.3.1/doc/libconfig.texi new file mode 100644 index 0000000..69f2121 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/doc/libconfig.texi @@ -0,0 +1,1578 @@ +\input texinfo.tex @c -*-texinfo-*- +@c +@c %**start of header + +@c All text is ignored before the setfilename. +@setfilename libconfig.info +@settitle libconfig + +@set edition 1.3.1 +@set update-date 7 September 2008 +@set subtitle-text A Library For Processing Structured Configuration Files +@set author-text Mark A.@: Lindner + +@comment %**end of header + +@dircategory Software libraries +@direntry +* libconfig: (libconfig). A Library For Processing Structured Configuration Files +@end direntry + + +@tex +\global\emergencystretch = .3\hsize +@end tex + +@setchapternewpage odd + +@titlepage + +@title libconfig +@subtitle @value{subtitle-text} +@subtitle Version @value{edition} +@subtitle @value{update-date} + +@author @value{author-text} + +@page +@vskip 0pt plus 1filll +Copyright @copyright{} 2005-2008 Mark A Lindner + +Permission is granted to make and distribute verbatim copies of +this manual provided the copyright notice and this permission notice +are preserved on all copies. + +Permission is granted to copy and distribute modified versions of this +manual under the conditions for verbatim copying, provided that the entire +resulting derived work is distributed under the terms of a permission +notice identical to this one. + +@end titlepage + +@c Give the HTML output a title page that somewhat resembles the printed one +@ifhtml +@html +
+
@value{subtitle-text}
+Version @value{edition}
+@value{update-date}
+



+@value{author-text} +
+

+@end html +@end ifhtml + +@contents + +@ifnottex +@node Top +@comment node-name, next, previous, up +@top libconfig +@end ifnottex + +@menu +* Introduction:: +* Configuration Files:: +* The C API:: +* The C++ API:: +* Configuration File Grammar:: +* License:: +* Function Index:: +* Type Index:: +* Concept Index:: +@end menu + +@node Introduction, Configuration Files, Top, Top +@comment node-name, next, previous, up +@menu +* Why Another Configuration File Library?:: +* Using the Library from a C Program:: +* Using the Library from a C++ Program:: +* Multithreading Issues:: +* Internationalization Issues:: +* Compiling Using pkg-config:: +@end menu +@chapter Introduction + +@i{Libconfig} is a library for reading, manipulating, and writing +structured configuration files. The library features a fully +reentrant parser and includes bindings for both the C and C++ +programming languages. + +The library runs on modern POSIX-compilant systems, such as Linux, +Solaris, and Mac OS X (Darwin), as well as on Microsoft Windows +2000/XP and later (with either Microsoft Visual Studio 2005 or later, +or the GNU toolchain via the MinGW environment). + +@node Why Another Configuration File Library?, Using the Library from a C Program, , Introduction +@comment node-name, next, previous, up +@section Why Another Configuration File Library? + +There are several open-source configuration file libraries available +as of this writing. This library was written because each of those +libraries falls short in one or more ways. The main features of +@i{libconfig} that set it apart from the other libraries are: + +@itemize @bullet + +@item A fully reentrant parser. Independent configurations can be parsed in concurrent threads at the same time. + +@item Both C @i{and} C++ bindings, as well as hooks to allow for the creation of wrappers in other languages. + +@item A simple, structured configuration file format that is more +readable and compact than XML and more flexible than the obsolete but +prevalent Windows ``INI'' file format. + +@item A low-footprint implementation (just 38K for the C library and 66K for the C++ library) that is suitable for memory-constrained systems. + +@item Proper documentation. + +@end itemize + +@node Using the Library from a C Program, Using the Library from a C++ Program, Why Another Configuration File Library?, Introduction +@comment node-name, next, previous, up +@section Using the Library from a C Program + +To use the library from C code, include the following preprocessor +directive in your source files: + +@sp 1 +@example +#include +@end example +@sp 1 + +To link with the library, specify @samp{-lconfig} as an argument to the +linker. + +@node Using the Library from a C++ Program, Multithreading Issues, Using the Library from a C Program, Introduction +@comment node-name, next, previous, up +@section Using the Library from a C++ Program + +To use the library from C++, include the following preprocessor +directive in your source files: + +@sp 1 +@example +#include +@end example +@sp 1 + +Or, alternatively: + +@sp 1 +@example +#include +@end example +@sp 1 +@page +The C++ API classes are defined in the namespace @samp{libconfig}, hence the +following statement may optionally be used: + +@sp 1 +@example +using namespace libconfig; +@end example +@sp 1 + +To link with the library, specify @samp{-lconfig++} as an argument to +the linker. + +@node Multithreading Issues, Internationalization Issues, Using the Library from a C++ Program, Introduction +@comment node-name, next, previous, up +@section Multithreading Issues + +@i{Libconfig} is fully @dfn{reentrant}; the functions in the library +do not make use of global variables and do not maintain state between +successive calls. Therefore two independent configurations may be safely +manipulated concurrently by two distinct threads. + +@i{Libconfig} is not @dfn{thread-safe}. The library is not aware of +the presence of threads and knows nothing about the host system's +threading model. Therefore, if an instance of a configuration is to be +accessed from multiple threads, it must be suitably protected by +synchronization mechanisms like read-write locks or mutexes; the +standard rules for safe multithreaded access to shared data must be +observed. + +@i{Libconfig} is not @dfn{async-safe}. Calls should not be made into +the library from signal handlers, because some of the C library +routines that it uses may not be async-safe. + +@i{Libconfig} is not guaranteed to be @dfn{cancel-safe}. Since it is +not aware of the host system's threading model, the library does not +contain any thread cancellation points. In most cases this will not be +an issue for multithreaded programs. However, be aware that some of +the routines in the library (namely those that read/write +configurations from/to files or streams) perform I/O using C library +routines which may potentially block; whether these C library routines +are cancel-safe or not depends on the host system. + +@node Internationalization Issues, Compiling Using pkg-config, Multithreading Issues, Introduction +@comment node-name, next, previous, up +@section Internationalization Issues + +@cindex Unicode +@cindex UTF-8 +@i{Libconfig} does not natively support Unicode configuration files, +but string values may contain Unicode text encoded in UTF-8; such +strings will be treated as ordinary 8-bit ASCII text by the +library. It is the responsibility of the calling program to perform +the necessary conversions to/from wide (@t{wchar_t}) strings using the +wide string conversion functions such as @t{mbsrtowcs()} and +@t{wcsrtombs()} or the @t{iconv()} function of the @i{libiconv} +library. + +@cindex locale +The textual representation of a floating point value varies by +locale. However, the @i{libconfig} grammar specifies that +floating point values are represented using a period (`.') as the +radix symbol; this is consistent with the grammar of most programming +languages. When a configuration is read in or written out, +@i{libconfig} temporarily changes the @t{LC_NUMERIC} category of the +locale of the calling thread to the "C" locale to ensure consistent +handling of floating point values regardless of the locale(s) in use +by the calling program. + +Note that the MinGW environment does not (as of this writing) provide +functions for changing the locale of the calling thread. Therefore, +when using @i{libconfig} in this environment, the calling program is +responsible for changing the @t{LC_NUMERIC} category of the locale to +the "C" locale before reading or writing a configuration. + +@node Compiling Using pkg-config, , Internationalization Issues, Introduction +@comment node-name, next, previous, up +@section Compiling Using pkg-config + +On UNIX systems you can use the @i{pkg-config} utility (version 0.20 +or later) to automatically select the appropriate compiler and linker +switches for @i{libconfig}. Ensure that the environment variable +@samp{PKG_CONFIG_PATH} contains the absolute path to the +@file{lib/pkgconfig} subdirectory of the libconfig installation. Then, +you can link C programs with @i{libconfig} as follows: + +@example +gcc `pkg-config --cflags libconfig` myprogram.c -o myprogram \ + `pkg-config --libs libconfig` +@end example +@sp 1 + +And similarly, for C++ programs: + +@example +g++ `pkg-config --cflags libconfig++` myprogram.cpp -o myprogram \ + `pkg-config --libs libconfig++` +@end example + +@sp 1 +Note the backticks in the above examples. + +@node Configuration Files, The C API, Introduction, Top +@comment node-name, next, previous, up +@menu +* Settings:: +* Groups:: +* Arrays:: +* Lists:: +* Integer Values:: +* 64-bit Integer Values:: +* Floating Point Values:: +* Boolean Values:: +* String Values:: +* Comments:: +@end menu +@chapter Configuration Files + +@i{Libconfig} supports structured, hierarchical configurations. These +configurations can be read from and written to files and manipulated +in memory. + +@cindex setting +@cindex value +@cindex scalar value +@cindex array +@cindex group +@cindex list +@cindex configuration +A @dfn{configuration} consists of a group of @dfn{settings}, which +associate names with values. A @dfn{value} can be one of the +following: + +@itemize @bullet +@item A @dfn{scalar value}: integer, 64-bit integer, floating-point number, boolean, +or string +@item An @dfn{array}, which is a sequence of scalar values, all of which must have the same type +@item A @dfn{group}, which is a collection of settings +@item A @dfn{list}, which is a sequence of values of any type, including other lists +@end itemize + +Consider the following configuration file for a hypothetical GUI +application, which illustrates all of the elements of the configuration +file grammar. + +@sp 1 +@cartouche +@smallexample +# Example application configuration file + +version = "1.0"; + +application: +@{ + window: + @{ + title = "My Application"; + size = @{ w = 640; h = 480; @}; + pos = @{ x = 350; y = 250; @}; + @}; + + list = ( ( "abc", 123, true ), 1.234, ( /* an empty list */) ); + + books = ( @{ title = "Treasure Island"; + author = "Robert Louis Stevenson"; + price = 29.95; + qty = 5; @}, + @{ title = "Snow Crash"; + author = "Neal Stephenson"; + price = 9.99; + qty = 8; @} ); + + misc: + @{ + pi = 3.141592654; + bigint = 9223372036854775807L; + columns = [ "Last Name", "First Name", "MI" ]; + bitmask = 0x1FC3; + @}; +@}; +@end smallexample +@end cartouche +@sp 1 + +@cindex path +Settings can be uniquely identified within the configuration by a +@dfn{path}. The path is a dot-separated sequence of names, beginning +at a top-level group and ending at the setting itself. Each name in +the path is the name of a setting; if the setting has no name because +it is an element in a list or array, an integer index in square +brackets can be used as the name. + +For example, in our hypothetical configuration file, the path to the +@code{x} setting is @code{application.window.pos.x}; the path to the +@code{version} setting is simply @code{version}; and the path to the +@code{title} setting of the second book in the @code{books} list is +@code{application.books.[1].title}. + +The datatype of a value is determined from the format of the value +itself. If the value is enclosed in double quotes, it is treated as a +string. If it looks like an integer or floating point number, it is +treated as such. If it is one of the values @code{TRUE}, @code{true}, +@code{FALSE}, or @code{false} (or any other mixed-case version of +those tokens, e.g., @code{True} or @code{FaLsE}), it is treated as a +boolean. If it consists of a comma-separated list of values enclosed +in square brackets, it is treated as an array. And if it consists of a +comma-separated list of values enclosed in parentheses, it is treated +as a list. Any value which does not meet any of these conditions is +considered invalid and results in a parse error. + +All names are case-sensitive. They may consist only of alphanumeric +characters, dashes (@samp{-}), underscores (@samp{_}), and asterisks +(@samp{*}), and must begin with a letter or asterisk. No other +characters are allowed. + +In C and C++, integer, 64-bit integer, floating point, and string +values are mapped to the types @code{long}, @code{long long}, +@code{double}, and @code{const char *}, respectively. The boolean type +is mapped to @code{int} in C and @code{bool} in C++. + +The following sections describe the elements of the configuration file +grammar in additional detail. + +@node Settings, Groups, , Configuration Files +@comment node-name, next, previous, up +@section Settings + +A setting has the form: + +@i{name} @b{=} @i{value} @b{;} + +or: + +@i{name} @b{:} @i{value} @b{;} + +The trailing semicolon is required. Whitespace is not significant. + +The value may be a scalar value, an array, a group, or a list. + +@node Groups, Arrays, Settings, Configuration Files +@comment node-name, next, previous, up +@section Groups + +A group has the form: + +@b{@{} + @i{settings ...} +@b{@}} + +Groups can contain any number of settings, but each setting must have +a unique name within the group. + +@node Arrays, Lists, Groups, Configuration Files +@comment node-name, next, previous, up +@section Arrays + +An array has the form: + +@b{[} @i{value}@b{,} @i{value ...} @b{]} + +An array may have zero or more elements, but the elements must all be +scalar values of the same type. + +@node Lists, Integer Values, Arrays, Configuration Files +@comment node-name, next, previous, up +@section Lists + +A list has the form: + +@b{(} @i{value}@b{,} @i{value ...} @b{)} + +A list may have zero or more elements, each of which can be a scalar +value, an array, a group, or another list. + +@node Integer Values, 64-bit Integer Values, Lists, Configuration Files +@comment node-name, next, previous, up +@section Integer Values + +Integers can be represented in one of two ways: as a series of one or +more decimal digits (@samp{0} - @samp{9}), with an optional leading +sign character (@samp{+} or @samp{-}); or as a hexadecimal value +consisting of the characters @samp{0x} followed by a series of one or +more hexadecimal digits (@samp{0} - @samp{9}, @samp{A} - @samp{F}, +@samp{a} - @samp{f}). + +@node 64-bit Integer Values, Floating Point Values, Integer Values, Configuration Files +@comment node-name, next, previous, up +@section 64-bit Integer Values + +Long long (64-bit) integers are represented identically to integers, +except that an 'L' character is appended to indicate a 64-bit +value. For example, @samp{0L} indicates a 64-bit integer value 0. + +@node Floating Point Values, Boolean Values, 64-bit Integer Values, Configuration Files +@comment node-name, next, previous, up +@section Floating Point Values + +Floating point values consist of a series of one or more digits, one +decimal point, an optional leading sign character (@samp{+} or +@samp{-}), and an optional exponent. An exponent consists of the +letter @samp{E} or @samp{e}, an optional sign character, and a series +of one or more digits. + +@node Boolean Values, String Values, Floating Point Values, Configuration Files +@comment node-name, next, previous, up +@section Boolean Values + +Boolean values may have one of the following values: @samp{true}, +@samp{false}, or any mixed-case variation thereof. + +@node String Values, Comments, Boolean Values, Configuration Files +@comment node-name, next, previous, up +@section String Values + +String values consist of arbitrary text delimited by double +quotes. Literal double quotes can be escaped by preceding them with a +backslash: @samp{\"}. The escape sequences @samp{\\}, @samp{\f}, +@samp{\n}, @samp{\r}, and @samp{\t} are also recognized, and have the +usual meaning. No other escape sequences are currently supported. + +Adjacent strings are automatically concatenated, as in C/C++ source +code. This is useful for formatting very long strings as sequences of +shorter strings. For example, the following constructs are equivalent: + +@itemize @bullet +@item +@code{"The quick brown fox jumped over the lazy dog."} + +@item +@code{"The quick brown fox"} @* +@code{" jumped over the lazy dog."} + +@item +@code{"The quick" /* comment */ " brown fox " // another comment} @* +@code{"jumped over the lazy dog."} + +@end itemize +@page +@node Comments, , String Values, Configuration Files +@comment node-name, next, previous, up +@section Comments + +@cindex comment +Three types of comments are allowed within a configuration: + +@itemize @bullet + +@item Script-style comments. All text beginning with a @samp{#} character +to the end of the line is ignored. + +@item C-style comments. All text, including line breaks, between a starting +@samp{/*} sequence and an ending @samp{*/} sequence is ignored. + +@item C++-style comments. All text beginning with a @samp{//} sequence to the +end of the line is ignored. + +@end itemize + +As expected, comment delimiters appearing within quoted strings are +treated as literal text. + +Comments are ignored when the configuration is read in, so they are +not treated as part of the configuration. Therefore if the +configuration is written back out to a stream, any comments that were +present in the original configuration will be lost. + +@node The C API, The C++ API, Configuration Files, Top +@comment node-name, next, previous, up +@chapter The C API + +@tindex config_t +@tindex config_setting_t +This chapter describes the C library API. The type @i{config_t} +represents a configuration, and the type @i{config_setting_t} represents +a configuration setting. + +The boolean values @code{CONFIG_TRUE} and @code{CONFIG_FALSE} are +macros defined as @code{(1)} and @code{(0)}, respectively. + +@deftypefun void config_init (@w{config_t * @var{config}}) +@deftypefunx void config_destroy (@w{config_t * @var{config}}) + +These functions initialize and destroy the configuration object @var{config}. + +@code{config_init()} initializes @var{config} as a new, empty +configuration. + +@code{config_destroy()} destroys the configuration @var{config}, +deallocating all memory associated with the configuration, but not +including the @i{config_t} structure itself. + +@end deftypefun + +@deftypefun int config_read (@w{config_t * @var{config}}, @w{FILE * @var{stream}}) + +This function reads and parses a configuration from the given +@var{stream} into the configuration object @var{config}. It returns +@code{CONFIG_TRUE} on success, or @code{CONFIG_FALSE} on failure; the +@code{config_error_text()} and @code{config_error_line()} +functions, described below, can be used to obtain information about the +error. + +@end deftypefun + +@deftypefun int config_read_file (@w{config_t * @var{config}}, @w{const char * @var{filename}}) + +This function reads and parses a configuration from the file named +@var{filename} into the configuration object @var{config}. It returns +@code{CONFIG_TRUE} on success, or @code{CONFIG_FALSE} on failure; the +@code{config_error_text()} and @code{config_error_line()} functions, +described below, can be used to obtain information about the error. + +@end deftypefun + +@deftypefun void config_write (@w{const config_t * @var{config}}, @w{FILE * @var{stream}}) + +This function writes the configuration @var{config} to the given +@var{stream}. + +@end deftypefun + +@deftypefun int config_write_file (@w{config_t * @var{config}}, @w{const char * @var{filename}}) + +This function writes the configuration @var{config} to the file named +@var{filename}. It returns @code{CONFIG_TRUE} on success, or +@code{CONFIG_FALSE} on failure. + +@end deftypefun + +@deftypefun {const char *} config_error_text (@w{const config_t * @var{config}}) +@deftypefunx int config_error_line (@w{const config_t * @var{config}}) + +These functions, which are implemented as macros, return the text and +line number of the parse error, if one occurred during a call to +@code{config_read()} or @code{config_read_file()}. Storage for the +string returned by @code{config_error_text()} is managed by the +library and released automatically when the configuration is +destroyed; the string must not be freed by the caller. + +@end deftypefun + +@deftypefun void config_set_auto_convert (@w{config_t *@var{config}}, @w{int @var{flag}}) +@deftypefunx int config_get_auto_convert (@w{const config_t *@var{config}}) + +@code{config_set_auto_convert()} enables number auto-conversion for +the configuration @var{config} if @var{flag} is non-zero, and disables +it otherwise. When this feature is enabled, an attempt to retrieve a +floating point setting's value into an integer (or vice versa), or +store an integer to a floating point setting's value (or vice versa) +will cause the library to silently perform the necessary conversion +(possibly leading to loss of data), rather than reporting failure. By +default this feature is disabled. + +@code{config_get_auto_convert()} returns @code{CONFIG_TRUE} if number +auto-conversion is currently enabled for @var{config}; otherwise it +returns @code{CONFIG_FALSE}. + +@end deftypefun + +@deftypefun long config_lookup_int (@w{const config_t * @var{config}}, @w{const char * @var{path}}) +@deftypefunx {long long} config_lookup_int64 (@w{const config_t * @var{config}}, @w{const char * @var{path}}) +@deftypefunx double config_lookup_float (@w{const config_t * @var{config}}, @w{const char * @var{path}}) +@deftypefunx int config_lookup_bool (@w{const config_t * @var{config}}, @w{const char * @var{path}}) +@deftypefunx {const char *} config_lookup_string (@w{const config_t * @var{config}}, @w{const char * @var{path}}) + +These functions locate the setting in the configuration @var{config} +specified by the path @var{path}. They return the value of the setting +on success, or a 0 or @code{NULL} value if the setting was not found or +if the type of the value did not match the type requested. + +Storage for the string returned by @code{config_lookup_string()} is +managed by the library and released automatically when the setting is +destroyed or when the setting's value is changed; the string must not +be freed by the caller. + +@end deftypefun + +@deftypefun {config_setting_t *} config_lookup (@w{const config_t * @var{config}}, @w{const char * @var{path}}) + +This function locates the setting in the configuration @var{config} +specified by the path @var{path}. It returns a pointer to the +@code{config_setting_t} structure on success, or @code{NULL} if the +setting was not found. + +@end deftypefun + +@deftypefun long config_setting_get_int (@w{const config_setting_t * @var{setting}}) +@deftypefunx {long long} config_setting_get_int64 (@w{const config_setting_t * @var{setting}}) +@deftypefunx double config_setting_get_float (@w{const config_setting_t * @var{setting}}) +@deftypefunx int config_setting_get_bool (@w{const config_setting_t * @var{setting}}) +@deftypefunx {const char *} config_setting_get_string (@w{const config_setting_t * @var{setting}}) + +These functions return the value of the given @var{setting}. If the +type of the setting does not match the type requested, a 0 or +@code{NULL} value is returned. Storage for the string returned by +@code{config_setting_get_string()} is managed by the library and +released automatically when the setting is destroyed or when the +setting's value is changed; the string must not be freed by the +caller. + +@end deftypefun +@page +@deftypefun int config_setting_set_int (@w{config_setting_t * @var{setting}}, @w{long @var{value}}) +@deftypefunx int config_setting_set_int64 (@w{config_setting_t * @var{setting}}, @w{long long @var{value}}) +@deftypefunx int config_setting_set_float (@w{config_setting_t * @var{setting}}, @w{double @var{value}}) +@deftypefunx int config_setting_set_bool (@w{config_setting_t * @var{setting}}, @w{int @var{value}}) +@deftypefunx int config_setting_set_string (@w{config_setting_t * @var{setting}}, @w{const char * @var{value}}) + +These functions set the value of the given @var{setting} to +@var{value}. On success, they return @code{CONFIG_TRUE}. If +the setting does not match the type of the value, they return +@code{CONFIG_FALSE}. @code{config_setting_set_string()} makes a copy +of the passed string @var{value}, so it may be subsequently freed or +modified by the caller without affecting the value of the setting. + +@end deftypefun + +@deftypefun short config_setting_get_format (@w{config_setting_t * @var{setting}}) +@deftypefunx int config_setting_set_format (@w{config_setting_t * @var{setting}}, @w{short @var{format}}) + +These functions get and set the external format for the setting @var{setting}. + +@tindex SettingFormat +@cindex format + +The @var{format} must be one of the constants +@code{CONFIG_FORMAT_DEFAULT} or @code{CONFIG_FORMAT_HEX}. All settings +support the @code{CONFIG_FORMAT_DEFAULT} format. The +@code{CONFIG_FORMAT_HEX} format specifies hexadecimal formatting for +integer values, and hence only applies to settings of type +@code{CONFIG_TYPE_INT} and @code{CONFIG_TYPE_INT64}. If @var{format} +is invalid for the given setting, it is ignored. + +@code{config_setting_set_format()} returns @code{CONFIG_TRUE} on +success and @code{CONFIG_FALSE} on failure. + +@end deftypefun + + +@deftypefun {config_setting_t *} config_setting_get_member (@w{config_setting_t * @var{setting}}, @w{const char * @var{name}}) + +This function fetches the child setting named @var{name} from the group +@var{setting}. It returns the requested setting on success, or +@code{NULL} if the setting was not found or if @var{setting} is not a +group. + +@end deftypefun + +@deftypefun {config_setting_t *} config_setting_get_elem (@w{const config_setting_t * @var{setting}}, @w{unsigned int @var{idx}}) + +This function fetches the element at the given index @var{idx} in the +setting @var{setting}, which must be an array, list, or group. It returns the +requested setting on success, or @code{NULL} if @var{idx} is out of +range or if @var{setting} is not an array, list, or group. + +@end deftypefun +@page +@deftypefun long config_setting_get_int_elem (@w{const config_setting_t * @var{setting}}, @w{int @var{idx}}) +@deftypefunx {long long} config_setting_get_int64_elem (@w{const config_setting_t * @var{setting}}, @w{int @var{idx}}) +@deftypefunx double config_setting_get_float_elem (@w{const config_setting_t * @var{setting}}, @w{int @var{idx}}) +@deftypefunx int config_setting_get_bool_elem (@w{const config_setting_t * @var{setting}}, @w{int @var{idx}}) +@deftypefunx {const char *} config_setting_get_string_elem (@w{const config_setting_t * @var{setting}}, @w{int @var{idx}}) + +These functions return the value at the specified index @var{idx} in the +setting @var{setting}. If the setting is not an array or list, or if +the type of the element does not match the type requested, or if +@var{idx} is out of range, they return 0 or @code{NULL}. Storage for +the string returned by @code{config_setting_get_string_elem()} is +managed by the library and released automatically when the setting is +destroyed or when its value is changed; the string must not be freed +by the caller. +@end deftypefun + +@deftypefun {config_setting_t *} config_setting_set_int_elem (@w{config_setting_t * @var{setting}}, @w{int @var{idx}}, @w{long @var{value}}) +@deftypefunx {config_setting_t *} config_setting_set_int64_elem (@w{config_setting_t * @var{setting}}, @w{int @var{idx}}, @w{long long @var{value}}) +@deftypefunx {config_setting_t *} config_setting_set_float_elem (@w{config_setting_t * @var{setting}}, @w{int @var{idx}}, @w{double @var{value}}) +@deftypefunx {config_setting_t *} config_setting_set_bool_elem (@w{config_setting_t * @var{setting}}, @w{int @var{idx}}, @w{int @var{value}}) +@deftypefunx {config_setting_t *} config_setting_set_string_elem (@w{config_setting_t * @var{setting}}, @w{int @var{idx}}, @w{const char * @var{value}}) + +These functions set the value at the specified index @var{idx} in the +setting @var{setting} to @var{value}. If @var{idx} is negative, a +new element is added to the end of the array or list. On success, +these functions return a pointer to the setting representing the +element. If the setting is not an array or list, or if the setting is +an array and the type of the array does not match the type of the +value, or if @var{idx} is out of range, they return +@code{NULL}. @code{config_setting_set_string_elem()} makes a copy of +the passed string @var{value}, so it may be subsequently freed or +modified by the caller without affecting the value of the setting. +@end deftypefun + +@deftypefun {config_setting_t *} config_setting_add (@w{config_setting_t * @var{parent}}, @w{const char * @var{name}}, @w{int @var{type}}) + +This function adds a new child setting or element to the setting +@var{parent}, which must be a group, array, or list. If @var{parent} +is an array or list, the @var{name} parameter is ignored and may be +@code{NULL}. + +The function returns the new setting on success, or @code{NULL} if +@var{parent} is not a group, array, or list; or if there is already a +child setting of @var{parent} named @var{name}; or if @var{type} is +invalid. +@end deftypefun + +@deftypefun int config_setting_remove (@w{config_setting_t * @var{parent}}, @w{const char * @var{name}}) + +This function removes and destroys the setting named @var{name} from +the parent setting @var{parent}, which must be a group. Any child +settings of the setting are recursively destroyed as well. + +The function returns @code{CONFIG_TRUE} on success. If @var{parent} is +not a group, or if it has no setting with the given name, it returns +@code{CONFIG_FALSE}. + +@end deftypefun + +@deftypefun int config_setting_remove_elem (@w{config_setting_t * @var{parent}}, @w{unsigned int @var{idx}}) + +This function removes the child setting at the given index @var{idx} from +the setting @var{parent}, which must be a group, list, or array. Any +child settings of the removed setting are recursively destroyed as +well. + +The function returns @code{CONFIG_TRUE} on success. If @var{parent} is +not a group, list, or array, or if @var{idx} is out of range, it returns +@code{CONFIG_FALSE}. + +@end deftypefun + +@deftypefun {config_setting_t *} config_root_setting (@w{const config_t * @var{config}}) + +This function returns the root setting for the configuration +@var{config}. The root setting is a group. + +@end deftypefun + +@deftypefun {const char *} config_setting_name (@w{const config_setting_t * @var{setting}}) + +This function returns the name of the given @var{setting}, or +@code{NULL} if the setting has no name. Storage for the returned +string is managed by the library and released automatically when the +setting is destroyed; the string must not be freed by the caller. + +@end deftypefun + +@deftypefun {config_setting_t *} config_setting_parent (@w{const config_setting_t * @var{setting}}) + +This function returns the parent setting of the given @var{setting}, +or @code{NULL} if @var{setting} is the root setting. + +@end deftypefun + +@deftypefun int config_setting_is_root (@w{const config_setting_t * @var{setting}}) + +This function returns @code{CONFIG_TRUE} if the given @var{setting} is +the root setting, and @code{CONFIG_FALSE} otherwise. + +@end deftypefun + +@deftypefun int config_setting_index (@w{const config_setting_t * @var{setting}}) + +This function returns the index of the given @var{setting} within its +parent setting. If @var{setting} is the root setting, this function +returns -1. + +@end deftypefun + +@deftypefun int config_setting_length (@w{const config_setting_t * @var{setting}}) + +This function returns the number of settings in a group, or the number of +elements in a list or array. For other types of settings, it returns +0. + +@end deftypefun + +@deftypefun int config_setting_type (@w{const config_setting_t * @var{setting}}) + +This function returns the type of the given @var{setting}. The return +value is one of the constants +@code{CONFIG_TYPE_INT}, @code{CONFIG_TYPE_INT64}, @code{CONFIG_TYPE_FLOAT}, +@code{CONFIG_TYPE_STRING}, @code{CONFIG_TYPE_BOOL}, +@code{CONFIG_TYPE_ARRAY}, @code{CONFIG_TYPE_LIST}, or @code{CONFIG_TYPE_GROUP}. + +@end deftypefun + +@deftypefun int config_setting_is_group (@w{const config_setting_t * @var{setting}}) +@deftypefunx int config_setting_is_array (@w{const config_setting_t * @var{setting}}) +@deftypefunx int config_setting_is_list (@w{const config_setting_t * @var{setting}}) + +These convenience functions, which are implemented as macros, test if +the setting @var{setting} is of a given type. They return +@code{CONFIG_TRUE} or @code{CONFIG_FALSE}. + +@end deftypefun + +@deftypefun int config_setting_is_aggregate (@w{const config_setting_t * @var{setting}}) +@deftypefunx int config_setting_is_scalar (@w{const config_setting_t * @var{setting}}) +@deftypefunx int config_setting_is_number (@w{const config_setting_t * @var{setting}}) + +@cindex aggregate value +These convenience functions, which are implemented as macros, test if +the setting @var{setting} is of an aggregate type (a group, array, or +list), of a scalar type (integer, 64-bit integer, floating point, +boolean, or string), and of a number (integer, 64-bit integer, or +floating point), respectively. They return @code{CONFIG_TRUE} or +@code{CONFIG_FALSE}. + +@end deftypefun + +@deftypefun {unsigned int} config_setting_source_line (@w{const config_setting_t * @var{setting}}) + +This function returns the line number of the configuration file or +stream at which the setting @var{setting} was parsed. This information +is useful for reporting application-level errors. If the setting was +not read from a file or stream, or if the line number is otherwise +unavailable, the function returns 0. + +@end deftypefun + +@deftypefun void config_setting_set_hook (@w{config_setting_t * @var{setting}}, @w{void * @var{hook}}) +@deftypefunx {void *} config_setting_get_hook (@w{const config_setting_t * @var{setting}}) + +These functions make it possible to attach arbitrary data to each +setting structure, for instance a ``wrapper'' or ``peer'' object written in +another programming language. The destructor function, if one has been +supplied via a call to @code{config_set_destructor()}, will be called +by the library to dispose of this data when the setting itself is +destroyed. There is no default destructor. + +@end deftypefun + +@deftypefun void config_set_destructor (@w{config_t * @var{config}}, @w{void (* @var{destructor})(void *)}) + +This function assigns the destructor function @var{destructor} for the +configuration @var{config}. This function accepts a single @code{void +*} argument and has no return value. See +@code{config_setting_set_hook()} above for more information. + +@end deftypefun + +@node The C++ API, Configuration File Grammar, The C API, Top +@comment node-name, next, previous, up +@chapter The C++ API + +@tindex Config +@tindex Setting +This chapter describes the C++ library API. The class @code{Config} +represents a configuration, and the class @code{Setting} represents a +configuration setting. Note that by design, neither of these classes +provides a public copy constructor or assignment operator. Therefore, +instances of these classes may only be passed between functions via +references or pointers. + +@tindex ConfigException +The library defines a group of exceptions, all of which extend the +common base exception @code{ConfigException}. + +@tindex SettingTypeException +A @code{SettingTypeException} is thrown when the type of a setting's +value does not match the type requested. + +@tindex SettingNotFoundException +A @code{SettingNotFoundException} is thrown when a setting is not found. + +@tindex SettingNameException +A @code{SettingNameException} is thrown when an attempt is made to add +a new setting with a non-unique or invalid name. + +@tindex ParseException +A @code{ParseException} is thrown when a parse error occurs while +reading a configuration from a stream. + +@tindex FileIOException +A @code{FileIOException} is thrown when an I/O error occurs while +reading/writing a configuration from/to a file. + +@tindex SettingException +@code{SettingTypeException}, @code{SettingNotFoundException}, and +@code{SettingNameException} all extend the common base +exception @code{SettingException}, which provides the following method: + +@deftypemethod SettingException {const char *} getPath () + +Returns the path to the setting associated with the exception, or +@code{NULL} if there is no applicable path. + +@end deftypemethod + +The remainder of this chapter describes the methods for manipulating +configurations and configuration settings. + +@deftypemethod Config {} Config () +@deftypemethodx Config {} ~Config () + +These methods create and destroy @code{Config} objects. + +@end deftypemethod + +@deftypemethod Config void read (@w{FILE * @var{stream}}) +@deftypemethodx Config void write (@w{FILE * @var{stream}}) + +The @code{read()} method reads and parses a configuration from the given +@var{stream}. A @code{ParseException} is thrown if a parse error occurs. + +The @code{write()} method writes the configuration to the given @var{stream}. + +@end deftypemethod + +@deftypemethod Config void readFile (@w{const char * @var{filename}}) +@deftypemethodx Config void writeFile (@w{const char * @var{filename}}) + +The @code{readFile()} method reads and parses a configuration from the file +named @var{filename}. A @code{ParseException} is thrown if a parse error occurs. A +@code{FileIOException} is thrown if the file cannot be read. + +The @code{writeFile()} method writes the configuration to the file +named @var{filename}. A @code{FileIOException} is thrown if the file cannot +be written. + +@end deftypemethod + +@deftypemethod ParseException {const char *} getError () +@deftypemethodx ParseException int getLine () + +If a call to @code{readFile()} or @code{read()} resulted in a +@code{ParseException}, these methods can be called on the exception +object to obtain the text and line number of the parse error. Storage +for the string returned by @code{getError()} is managed by the +library; the string must not be freed by the caller. + +@end deftypemethod + +@deftypemethod Config void setAutoConvert (bool @var{flag}) +@deftypemethodx Config bool getAutoConvert () + +@code{setAutoConvert()} enables number auto-conversion for the +configuration if @var{flag} is @code{true}, and disables it +otherwise. When this feature is enabled, an attempt to assign a +floating point setting to an integer (or vice versa), or +assign an integer to a floating point setting (or vice versa) will +cause the library to silently perform the necessary conversion +(possibly leading to loss of data), rather than throwing a +@code{SettingTypeException}. By default this feature is disabled. + +@code{getAutoConvert()} returns @code{true} if number auto-conversion +is currently enabled for the configuration; otherwise it returns +@code{false}. + +@end deftypemethod + +@deftypemethod Config {Setting &} getRoot () + +This method returns the root setting for the configuration, which is a group. + +@end deftypemethod + +@deftypemethod Config {Setting &} lookup (@w{const std::string &@var{path}}) +@deftypemethodx Config {Setting &} lookup (@w{const char * @var{path}}) + +These methods locate the setting specified by the path @var{path}. If +the requested setting is not found, a @code{SettingNotFoundException} is +thrown. + +@end deftypemethod +@deftypemethod Config bool exists (@w{const std::string &@var{path}}) +@deftypemethodx Config bool exists (@w{const char *@var{path}}) + +These methods test if a setting with the given @var{path} exists in +the configuration. They return @code{true} if the setting exists, and +@var{false} otherwise. These methods do not throw exceptions. + +@end deftypemethod + +@deftypemethod Config bool lookupValue (@w{const char *@var{path}}, @w{bool &@var{value}}) +@deftypemethodx Config bool lookupValue (@w{const std::string &@var{path}}, @w{bool &@var{value}}) + +@deftypemethodx Config bool lookupValue (@w{const char *@var{path}}, @w{int &@var{value}}) +@deftypemethodx Config bool lookupValue (@w{const std::string &@var{path}}, @w{int &@var{value}}) + +@deftypemethodx Config bool lookupValue (@w{const char *@var{path}}, @w{unsigned int &@var{value}}) +@deftypemethodx Config bool lookupValue (@w{const std::string &@var{path}}, @w{unsigned int &@var{value}}) + +@deftypemethodx Config bool lookupValue (@w{const char *@var{path}}, @w{long &@var{value}}) +@deftypemethodx Config bool lookupValue (@w{const std::string &@var{path}}, @w{long &@var{value}}) + +@deftypemethodx Config bool lookupValue (@w{const char *@var{path}}, @w{long long &@var{value}}) +@deftypemethodx Config bool lookupValue (@w{const std::string &@var{path}}, @w{long long &@var{value}}) + +@deftypemethodx Config bool lookupValue (@w{const char *@var{path}}, @w{unsigned long &@var{value}}) +@deftypemethodx Config bool lookupValue (@w{const std::string &@var{path}}, @w{unsigned long &@var{value}}) + +@deftypemethodx Config bool lookupValue (@w{const char *@var{path}}, @w{float &@var{value}}) +@deftypemethodx Config bool lookupValue (@w{const std::string &@var{path}}, @w{float &@var{value}}) + +@deftypemethodx Config bool lookupValue (@w{const char *@var{path}}, @w{double &@var{value}}) +@deftypemethodx Config bool lookupValue (@w{const std::string &@var{path}}, @w{double &@var{value}}) + +@deftypemethodx Config bool lookupValue (@w{const char *@var{path}}, @w{const char *&@var{value}}) +@deftypemethodx Config bool lookupValue (@w{const std::string &@var{path}}, @w{const char *&@var{value}}) + +@deftypemethodx Config bool lookupValue (@w{const char *@var{path}}, @w{std::string &@var{value}}) +@deftypemethodx Config bool lookupValue (@w{const std::string &@var{path}}, @w{std::string &@var{value}}) + +These are convenience methods for looking up the value of a setting +with the given @var{path}. If the setting is found and is of an +appropriate type, the value is stored in @var{value} and the method +returns @code{true}. Otherwise, @var{value} is left unmodified and the +method returns @var{false}. These methods do not throw exceptions. + +Storage for @w{@i{const char *}} values is managed by the library and +released automatically when the setting is destroyed or when its value +is changed; the string must not be freed by the caller. For safety and +convenience, always assigning string values to a @code{std::string} is +suggested. + +Since these methods have boolean return values and do not throw +exceptions, they can be used within boolean logic expressions. The following +example presents a concise way to look up three values at once and +perform error handling if any of them are not found or are of the +wrong type: + +@sp 1 +@cartouche +@example +int var1; +double var2; +const char *var3; + +if(config.lookupValue("values.var1", var1) + && config.lookupValue("values.var2", var2) + && config.lookupValue("values.var3", var3)) +@{ + // use var1, var2, var3 +@} +else +@{ + // error handling here +@} +@end example +@end cartouche + +This approach also takes advantage of the short-circuit evaluation rules +of C++, i.e., if the first lookup fails (returning @code{false}), the +remaining lookups are skipped entirely. + +@end deftypemethod +@page +@deftypemethod Setting {} {operator bool()} +@deftypemethodx Setting {} {operator int()} +@deftypemethodx Setting {} {operator unsigned int()} +@deftypemethodx Setting {} {operator long()} +@deftypemethodx Setting {} {operator unsigned long()} +@deftypemethodx Setting {} {operator long long()} +@deftypemethodx Setting {} {operator unsigned long long()} +@deftypemethodx Setting {} {operator float()} +@deftypemethodx Setting {} {operator double()} +@deftypemethodx Setting {} {operator const char *()} +@deftypemethodx Setting {} {operator std::string()} + +These cast operators allow a @code{Setting} object to be assigned to a +variable of type @i{bool} if it is of type @code{TypeBoolean}; +@i{int}, @i{unsigned int}, @i{long}, or @i{unsigned long} if it is of +type @code{TypeInt}; @code{long long} or @code{unsigned long long} if +it is of type @code{TypeInt64}, @i{float} or @i{double} if it is of type +@code{TypeFloat}; or @w{@i{const char *}} or @i{std::string} if it is +of type @code{TypeString}. + +Storage for @w{@i{const char *}} return values is managed by the +library and released automatically when the setting is destroyed or +when its value is changed; the string must not be freed by the +caller. For safety and convenience, always assigning string return +values to a @code{std::string} is suggested. + +The following examples demonstrate this usage: + +@cartouche +@example +long width = config.lookup("application.window.size.w"); + +bool splashScreen = config.lookup("application.splash_screen"); + +std::string title = config.lookup("application.window.title"); +@end example +@end cartouche + +Note that certain conversions can lead to loss of precision or +clipping of values, e.g., assigning a negative value to an @i{unsigned +int} (in which case the value will be treated as 0), or a +double-precision value to a @i{float}. The library does not treat +these lossy conversions as errors. + +Perhaps surprisingly, the following code in particular will cause a +compiler error: + +@cartouche +@example +std::string title; +. +. +. +title = config.lookup("application.window.title"); +@end example +@end cartouche + +This is because the assignment operator of @code{std::string} is being +invoked with a @code{Setting &} as an argument. The compiler is unable +to make an implicit conversion because both the @code{const char *} +and the @code{std::string} cast operators of @code{Setting} are +equally appropriate. This is not a bug in @i{libconfig}; providing +only the @code{const char *} cast operator would resolve this +particular ambiguity, but would cause assignments to +@code{std::string} like the one in the previous example to produce a +compiler error. (To understand why, see section 11.4.1 of @i{The C++ +Programming Language}.) + +The solution to this problem is to use an explicit conversion that +avoids the construction of an intermediate @code{std::string} object, +as follows: + +@cartouche +@example +std::string title; +. +. +. +title = (const char *)config.lookup("application.window.title"); +@end example +@end cartouche + +If the assignment is invalid due to a type mismatch, a +@code{SettingTypeException} is thrown. + +@end deftypemethod + +@deftypemethod Setting {Setting &} operator= (@w{bool @var{value}}) +@deftypemethodx Setting {Setting &} operator= (@w{int @var{value}}) +@deftypemethodx Setting {Setting &} operator= (@w{long @var{value}}) +@deftypemethodx Setting {Setting &} operator= (@w{const long long &@var{value}}) +@deftypemethodx Setting {Setting &} operator= (@w{float @var{value}}) +@deftypemethodx Setting {Setting &} operator= (@w{const double &@var{value}}) +@deftypemethodx Setting {Setting &} operator= (@w{const char *@var{value}}) +@deftypemethodx Setting {Setting &} operator= (@w{const std::string &@var{value}}) + +These assignment operators allow values of type @i{bool}, @i{int}, +@i{long}, @i{long long}, @i{float}, @i{double}, @i{const char *}, and +@i{std::string} to be assigned to a setting. In the case of strings, +the library makes a copy of the passed string @var{value}, so it may +be subsequently freed or modified by the caller without affecting the +value of the setting. + +If the assignment is invalid due to a type mismatch, a +@code{SettingTypeException} is thrown. + +@end deftypemethod + +@deftypemethod Setting {Setting &} {operator[]} (@w{int @var{idx}}) +@deftypemethodx Setting {Setting &} {operator[]} (@w{const std::string &@var{name}}) +@deftypemethodx Setting {Setting &} {operator[]} (@w{const char *@var{name}}) + +A @code{Setting} object may be subscripted with an integer index +@var{idx} if it is an array or list, or with either a string +@var{name} or an integer index @var{idx} if it is a group. For example, +the following code would produce the string @samp{Last Name} when +applied to the example configuration in @ref{Configuration Files}. + +@cartouche +@example +Setting& setting = config.lookup("application.misc"); +const char *s = setting["columns"][0]; +@end example +@end cartouche + +If the setting is not an array, list, or group, a +@code{SettingTypeException} is thrown. If the subscript (@var{idx} +or @var{name}) does not refer to a valid element, a +@code{SettingNotFoundException} is thrown. + +Iterating over a group's child settings with an integer index will +return the settings in the same order that they appear in the +configuration. + +@end deftypemethod + +@deftypemethod Setting bool lookupValue (@w{const char *@var{name}}, @w{bool &@var{value}}) +@deftypemethodx Setting bool lookupValue (@w{const std::string &@var{name}}, @w{bool &@var{value}}) + +@deftypemethodx Setting bool lookupValue (@w{const char *@var{name}}, @w{int &@var{value}}) +@deftypemethodx Setting bool lookupValue (@w{const std::string &@var{name}}, @w{int &@var{value}}) + +@deftypemethodx Setting bool lookupValue (@w{const char *@var{name}}, @w{unsigned int &@var{value}}) +@deftypemethodx Setting bool lookupValue (@w{const std::string &@var{name}}, @w{unsigned int &@var{value}}) + +@deftypemethodx Setting bool lookupValue (@w{const char *@var{name}}, @w{long long &@var{value}}) +@deftypemethodx Setting bool lookupValue (@w{const std::string &@var{name}}, @w{long long &@var{value}}) + +@deftypemethodx Setting bool lookupValue (@w{const char *@var{name}}, @w{unsigned long long &@var{value}}) +@deftypemethodx Setting bool lookupValue (@w{const std::string &@var{name}}, @w{unsigned long long &@var{value}}) + +@deftypemethodx Setting bool lookupValue (@w{const char *@var{name}}, @w{long &@var{value}}) +@deftypemethodx Setting bool lookupValue (@w{const std::string &@var{name}}, @w{long &@var{value}}) + +@deftypemethodx Setting bool lookupValue (@w{const char *@var{name}}, @w{unsigned long &@var{value}}) +@deftypemethodx Setting bool lookupValue (@w{const std::string &@var{name}}, @w{unsigned long &@var{value}}) + +@deftypemethodx Setting bool lookupValue (@w{const char *@var{name}}, @w{float &@var{value}}) +@deftypemethodx Setting bool lookupValue (@w{const std::string &@var{name}}, @w{float &@var{value}}) + +@deftypemethodx Setting bool lookupValue (@w{const char *@var{name}}, @w{double &@var{value}}) +@deftypemethodx Setting bool lookupValue (@w{const std::string &@var{name}}, @w{double &@var{value}}) + +@deftypemethodx Setting bool lookupValue (@w{const char *@var{name}}, @w{const char *&@var{value}}) +@deftypemethodx Setting bool lookupValue (@w{const std::string &@var{name}}, @w{const char *&@var{value}}) + +@deftypemethodx Setting bool lookupValue (@w{const char *@var{name}}, @w{std::string &@var{value}}) +@deftypemethodx Setting bool lookupValue (@w{const std::string &@var{name}}, @w{std::string &@var{value}}) + +These are convenience methods for looking up the value of a child setting +with the given @var{name}. If the setting is found and is of an +appropriate type, the value is stored in @var{value} and the method +returns @code{true}. Otherwise, @var{value} is left unmodified and the +method returns @var{false}. These methods do not throw exceptions. + +Storage for @w{@i{const char *}} values is managed by the library and +released automatically when the setting is destroyed or when its value +is changed; the string must not be freed by the caller. For safety and +convenience, always assigning string values to a @code{std::string} is +suggested. + +Since these methods have boolean return values and do not throw +exceptions, they can be used within boolean logic expressions. The following +example presents a concise way to look up three values at once and +perform error handling if any of them are not found or are of the +wrong type: + +@sp 1 +@cartouche +@example +int var1; +double var2; +const char *var3; + +if(setting.lookupValue("var1", var1) + && setting.lookupValue("var2", var2) + && setting.lookupValue("var3", var3)) +@{ + // use var1, var2, var3 +@} +else +@{ + // error handling here +@} +@end example +@end cartouche + +This approach also takes advantage of the short-circuit evaluation +rules of C++, e.g., if the first lookup fails (returning @code{false}), the +remaining lookups are skipped entirely. + +@end deftypemethod + +@deftypemethod Setting {Setting &} add (@w{const std::string &@var{name}}, @w{Setting::Type @var{type}}) +@deftypemethodx Setting {Setting &} add (@w{const char *@var{name}}, @w{Setting::Type @var{type}}) + +These methods add a new child setting with the given @var{name} and +@var{type} to the setting, which must be a group. They return a +reference to the new setting. If the setting already has a child +setting with the given name, or if the name is invalid, a +@code{SettingNameException} is thrown. If the setting is not a group, +a @code{SettingTypeException} is thrown. + +Once a setting has been created, neither its name nor type can be +changed. + +@end deftypemethod + +@deftypemethod Setting {Setting &} add (@w{Setting::Type @var{type}}) + +This method adds a new element to the setting, which must be of type +@code{TypeArray} or @code{TypeList}. If the setting is an array which +currently has zero elements, the @var{type} parameter (which must be +@code{TypeInt}, @code{TypeInt64}, @code{TypeFloat}, @code{TypeBool}, +or @code{TypeString}) determines the type for the array; otherwise it +must match the type of the existing elements in the array. + +The method returns the new setting on success. If @var{type} is a +scalar type, the new setting will have a default value of 0, 0.0, +@code{false}, or @code{NULL}, depending on the type. + +The method throws a @code{SettingTypeException} if the setting is not +an array or list, or if @var{type} is invalid. + +@end deftypemethod + +@deftypemethod Setting void remove (@w{const std::string &@var{name}}) +@deftypemethodx Setting void remove (@w{const char *@var{name}}) + +These methods remove the child setting with the given @var{name} from +the setting, which must be a group. Any child settings of the removed +setting are recursively destroyed as well. + +If the setting is not a group, a @code{SettingTypeException} is +thrown. If the setting does not have a child setting with the given +name, a @code{SettingNotFoundException} is thrown. + +@end deftypemethod + +@deftypemethod Setting void remove (@w{unsigned int @var{idx}}) + +This method removes the child setting at the given index @var{idx} from +the setting, which must be a group, list, or array. Any child settings +of the removed setting are recursively destroyed as well. + +If the setting is not a group, list, or array, a +@code{SettingTypeException} is thrown. If @var{idx} is out of range, +a @code{SettingNotFoundException} is thrown. + +@end deftypemethod + +@deftypemethod Setting {const char *} getName () + +This method returns the name of the setting, or @code{NULL} if the +setting has no name. Storage for the returned string is managed by the +library and released automatically when the setting is destroyed; the +string must not be freed by the caller. For safety and convenience, +consider assigning the return value to a @code{std::string}. + +@end deftypemethod + +@deftypemethod Setting {std::string} getPath () + +This method returns the complete dot-separated path to the +setting. Settings which do not have a name (list and array elements) +are represented by their index in square brackets. + +@end deftypemethod + +@deftypemethod Setting {Setting &} getParent () + +This method returns the parent setting of the setting. If the setting +is the root setting, a @code{SettingNotFoundException} is thrown. + +@end deftypemethod + +@deftypemethod Setting bool isRoot () + +This method returns @i{true} if the setting is the root setting, and +@i{false} otherwise. + +@end deftypemethod + +@deftypemethod Setting int getIndex () + +This method returns the index of the setting within its parent +setting. When applied to the root setting, this method returns -1. + +@end deftypemethod + +@deftypemethod Setting Setting::Type getType () + +@tindex Setting::Type +This method returns the type of the setting. The +@code{Setting::Type} enumeration consists of the following constants: +@code{TypeInt}, @code{TypeInt64}, @code{TypeFloat}, @code{TypeString}, +@code{TypeBoolean}, @code{TypeArray}, @code{TypeList}, or +@code{TypeGroup}. + +@end deftypemethod + +@deftypemethod Setting Setting::Format getFormat () +@deftypemethodx Setting void setFormat (@w{Setting::Format @var{format}}) + +These methods get and set the external format for the setting. + +@tindex Setting::Format +The @var{Setting::Format} enumeration consists of the following +constants: @code{FormatDefault}, @code{FormatHex}. All settings +support the @code{FormatDefault} format. The @code{FormatHex} format +specifies hexadecimal formatting for integer values, and hence only +applies to settings of type @code{TypeInt} and @code{TypeInt64}. If +@var{format} is invalid for the given setting, it is ignored. + +@end deftypemethod + +@deftypemethod Setting bool exists (@w{const std::string &@var{name}}) +@deftypemethodx Setting bool exists (@w{const char *@var{name}}) + +These methods test if the setting has a child setting with the given +@var{name}. They return @code{true} if the setting exists, and +@var{false} otherwise. These methods do not throw exceptions. + +@end deftypemethod + +@deftypemethod Setting int getLength () + +This method returns the number of settings in a group, or the number of +elements in a list or array. For other types of settings, it returns +0. + +@end deftypemethod + +@deftypemethod Setting bool isGroup () +@deftypemethodx Setting bool isArray () +@deftypemethodx Setting bool isList () + +These convenience methods test if a setting is of a given type. + +@end deftypemethod + +@deftypemethod Setting bool isAggregate () +@deftypemethodx Setting bool isScalar () +@deftypemethodx Setting bool isNumber () + +These convenience methods test if a setting is of an aggregate type (a +group, array, or list), of a scalar type (integer, 64-bit integer, +floating point, boolean, or string), and of a number (integer or +floating point), respectively. + +@end deftypemethod + +@deftypemethod Setting {unsigned int} getSourceLine () + +This method returns the line number of the configuration file or +stream at which the setting was parsed. This information is useful for +reporting application-level errors. If the setting was not read from a +file or stream, or if the line number is otherwise unavailable, the +method returns 0. + +@end deftypemethod + +@node Configuration File Grammar, License, The C++ API, Top +@comment node-name, next, previous, up +@chapter Configuration File Grammar + +Below is the BNF grammar for configuration files. Comments are not part +of the grammar, and hence are not included here. + +@sp 1 +@example +configuration = setting-list | empty + +empty = + +setting-list = setting | setting-list setting + +setting = name (":" | "=") value ";" + +value = scalar-value | array | list | group + +value-list = value | value-list "," value + +scalar-value = boolean | integer | integer64 | hex | hex64 | float + | string + +scalar-value-list = scalar-value | scalar-value-list "," scalar-value + +array = "[" (scalar-value-list | empty) "]" + +list = "(" (value-list | empty) ")" + +group = "@{" (setting-list | empty) "@}" +@end example + +@sp 2 +Terminals are defined below as regular expressions: +@sp 1 + +@multitable @columnfractions .2 .8 +@item @code{boolean} @tab +@code{([Tt][Rr][Uu][Ee])|([Ff][Aa][Ll][Ss][Ee])} +@item @code{string} @tab +@code{\"([^\"\\]|\\.)*\"} +@item @code{name} @tab +@code{[A-Za-z\*][-A-Za-z0-9_\*]*} +@item @code{integer} @tab +@code{[-+]?[0-9]+} +@item @code{integer64} @tab +@code{[-+]?[0-9]+L(L)?} +@item @code{hex} @tab +@code{0[Xx][0-9A-Fa-f]+} +@item @code{hex64} @tab +@code{0[Xx][0-9A-Fa-f]+L(L)?} +@item @code{float} @tab +@code{([-+]?([0-9]*)?\.[0-9]*([eE][-+]?[0-9]+)?)|([-+]([0-9]+)(\.[0-9]*)?[eE][-+]?[0-9]+)} +@end multitable + +@node License, Function Index, Configuration File Grammar, Top +@comment node-name, next, previous, up +@appendix License + +@include LGPL.texi + +@node Function Index, Type Index, License, Top +@comment node-name, next, previous, up +@unnumbered Function Index + +@printindex fn + +@node Type Index, Concept Index, Function Index, Top +@comment node-name, next, previous, up +@unnumbered Type Index + +@printindex tp + +@node Concept Index, , Type Index, Top +@comment node-name, next, previous, up +@unnumbered Concept Index + +@printindex cp + +@bye diff --git a/coregrade/src/libconfig-1.3.1/doc/texinfo.tex b/coregrade/src/libconfig-1.3.1/doc/texinfo.tex new file mode 100644 index 0000000..c93912a --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/doc/texinfo.tex @@ -0,0 +1,7086 @@ +% texinfo.tex -- TeX macros to handle Texinfo files. +% +% Load plain if necessary, i.e., if running under initex. +\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi +% +\def\texinfoversion{2004-11-25.16} +% +% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, +% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software +% Foundation, Inc. +% +% This texinfo.tex file is free software; you can redistribute it and/or +% modify it under the terms of the GNU General Public License as +% published by the Free Software Foundation; either version 2, or (at +% your option) any later version. +% +% This texinfo.tex file is distributed in the hope that it will be +% useful, but WITHOUT ANY WARRANTY; without even the implied warranty +% of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +% General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this texinfo.tex file; see the file COPYING. If not, write +% to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +% Boston, MA 02111-1307, USA. +% +% As a special exception, when this file is read by TeX when processing +% a Texinfo source document, you may use the result without +% restriction. (This has been our intent since Texinfo was invented.) +% +% Please try the latest version of texinfo.tex before submitting bug +% reports; you can get the latest version from: +% http://www.gnu.org/software/texinfo/ (the Texinfo home page), or +% ftp://tug.org/tex/texinfo.tex +% (and all CTAN mirrors, see http://www.ctan.org). +% The texinfo.tex in any given distribution could well be out +% of date, so if that's what you're using, please check. +% +% Send bug reports to bug-texinfo@gnu.org. Please include including a +% complete document in each bug report with which we can reproduce the +% problem. Patches are, of course, greatly appreciated. +% +% To process a Texinfo manual with TeX, it's most reliable to use the +% texi2dvi shell script that comes with the distribution. For a simple +% manual foo.texi, however, you can get away with this: +% tex foo.texi +% texindex foo.?? +% tex foo.texi +% tex foo.texi +% dvips foo.dvi -o # or whatever; this makes foo.ps. +% The extra TeX runs get the cross-reference information correct. +% Sometimes one run after texindex suffices, and sometimes you need more +% than two; texi2dvi does it as many times as necessary. +% +% It is possible to adapt texinfo.tex for other languages, to some +% extent. You can get the existing language-specific files from the +% full Texinfo distribution. +% +% The GNU Texinfo home page is http://www.gnu.org/software/texinfo. + + +\message{Loading texinfo [version \texinfoversion]:} + +% If in a .fmt file, print the version number +% and turn on active characters that we couldn't do earlier because +% they might have appeared in the input file name. +\everyjob{\message{[Texinfo version \texinfoversion]}% + \catcode`+=\active \catcode`\_=\active} + +\message{Basics,} +\chardef\other=12 + +% We never want plain's \outer definition of \+ in Texinfo. +% For @tex, we can use \tabalign. +\let\+ = \relax + +% Save some plain tex macros whose names we will redefine. +\let\ptexb=\b +\let\ptexbullet=\bullet +\let\ptexc=\c +\let\ptexcomma=\, +\let\ptexdot=\. +\let\ptexdots=\dots +\let\ptexend=\end +\let\ptexequiv=\equiv +\let\ptexexclam=\! +\let\ptexfootnote=\footnote +\let\ptexgtr=> +\let\ptexhat=^ +\let\ptexi=\i +\let\ptexindent=\indent +\let\ptexinsert=\insert +\let\ptexlbrace=\{ +\let\ptexless=< +\let\ptexnewwrite\newwrite +\let\ptexnoindent=\noindent +\let\ptexplus=+ +\let\ptexrbrace=\} +\let\ptexslash=\/ +\let\ptexstar=\* +\let\ptext=\t + +% If this character appears in an error message or help string, it +% starts a new line in the output. +\newlinechar = `^^J + +% Use TeX 3.0's \inputlineno to get the line number, for better error +% messages, but if we're using an old version of TeX, don't do anything. +% +\ifx\inputlineno\thisisundefined + \let\linenumber = \empty % Pre-3.0. +\else + \def\linenumber{l.\the\inputlineno:\space} +\fi + +% Set up fixed words for English if not already set. +\ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi +\ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi +\ifx\putwordfile\undefined \gdef\putwordfile{file}\fi +\ifx\putwordin\undefined \gdef\putwordin{in}\fi +\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi +\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi +\ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi +\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi +\ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi +\ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi +\ifx\putwordof\undefined \gdef\putwordof{of}\fi +\ifx\putwordon\undefined \gdef\putwordon{on}\fi +\ifx\putwordpage\undefined \gdef\putwordpage{page}\fi +\ifx\putwordsection\undefined \gdef\putwordsection{section}\fi +\ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi +\ifx\putwordsee\undefined \gdef\putwordsee{see}\fi +\ifx\putwordSee\undefined \gdef\putwordSee{See}\fi +\ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi +\ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi +% +\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi +\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi +\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi +\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi +\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi +\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi +\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi +\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi +\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi +\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi +\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi +\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi +% +\ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi +\ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi +\ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi +\ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi +\ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi + +% In some macros, we cannot use the `\? notation---the left quote is +% in some cases the escape char. +\chardef\colonChar = `\: +\chardef\commaChar = `\, +\chardef\dotChar = `\. +\chardef\exclamChar= `\! +\chardef\questChar = `\? +\chardef\semiChar = `\; +\chardef\underChar = `\_ + +\chardef\spaceChar = `\ % +\chardef\spacecat = 10 +\def\spaceisspace{\catcode\spaceChar=\spacecat} + +% Ignore a token. +% +\def\gobble#1{} + +% The following is used inside several \edef's. +\def\makecsname#1{\expandafter\noexpand\csname#1\endcsname} + +% Hyphenation fixes. +\hyphenation{ + Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script + ap-pen-dix bit-map bit-maps + data-base data-bases eshell fall-ing half-way long-est man-u-script + man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm + par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces + spell-ing spell-ings + stand-alone strong-est time-stamp time-stamps which-ever white-space + wide-spread wrap-around +} + +% Margin to add to right of even pages, to left of odd pages. +\newdimen\bindingoffset +\newdimen\normaloffset +\newdimen\pagewidth \newdimen\pageheight + +% For a final copy, take out the rectangles +% that mark overfull boxes (in case you have decided +% that the text looks ok even though it passes the margin). +% +\def\finalout{\overfullrule=0pt} + +% @| inserts a changebar to the left of the current line. It should +% surround any changed text. This approach does *not* work if the +% change spans more than two lines of output. To handle that, we would +% have adopt a much more difficult approach (putting marks into the main +% vertical list for the beginning and end of each change). +% +\def\|{% + % \vadjust can only be used in horizontal mode. + \leavevmode + % + % Append this vertical mode material after the current line in the output. + \vadjust{% + % We want to insert a rule with the height and depth of the current + % leading; that is exactly what \strutbox is supposed to record. + \vskip-\baselineskip + % + % \vadjust-items are inserted at the left edge of the type. So + % the \llap here moves out into the left-hand margin. + \llap{% + % + % For a thicker or thinner bar, change the `1pt'. + \vrule height\baselineskip width1pt + % + % This is the space between the bar and the text. + \hskip 12pt + }% + }% +} + +% Sometimes it is convenient to have everything in the transcript file +% and nothing on the terminal. We don't just call \tracingall here, +% since that produces some useless output on the terminal. We also make +% some effort to order the tracing commands to reduce output in the log +% file; cf. trace.sty in LaTeX. +% +\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}% +\def\loggingall{% + \tracingstats2 + \tracingpages1 + \tracinglostchars2 % 2 gives us more in etex + \tracingparagraphs1 + \tracingoutput1 + \tracingmacros2 + \tracingrestores1 + \showboxbreadth\maxdimen \showboxdepth\maxdimen + \ifx\eTeXversion\undefined\else % etex gives us more logging + \tracingscantokens1 + \tracingifs1 + \tracinggroups1 + \tracingnesting2 + \tracingassigns1 + \fi + \tracingcommands3 % 3 gives us more in etex + \errorcontextlines16 +}% + +% add check for \lastpenalty to plain's definitions. If the last thing +% we did was a \nobreak, we don't want to insert more space. +% +\def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount + \removelastskip\penalty-50\smallskip\fi\fi} +\def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount + \removelastskip\penalty-100\medskip\fi\fi} +\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount + \removelastskip\penalty-200\bigskip\fi\fi} + +% For @cropmarks command. +% Do @cropmarks to get crop marks. +% +\newif\ifcropmarks +\let\cropmarks = \cropmarkstrue +% +% Dimensions to add cropmarks at corners. +% Added by P. A. MacKay, 12 Nov. 1986 +% +\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines +\newdimen\cornerlong \cornerlong=1pc +\newdimen\cornerthick \cornerthick=.3pt +\newdimen\topandbottommargin \topandbottommargin=.75in + +% Main output routine. +\chardef\PAGE = 255 +\output = {\onepageout{\pagecontents\PAGE}} + +\newbox\headlinebox +\newbox\footlinebox + +% \onepageout takes a vbox as an argument. Note that \pagecontents +% does insertions, but you have to call it yourself. +\def\onepageout#1{% + \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi + % + \ifodd\pageno \advance\hoffset by \bindingoffset + \else \advance\hoffset by -\bindingoffset\fi + % + % Do this outside of the \shipout so @code etc. will be expanded in + % the headline as they should be, not taken literally (outputting ''code). + \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}% + \setbox\footlinebox = \vbox{\let\hsize=\pagewidth \makefootline}% + % + {% + % Have to do this stuff outside the \shipout because we want it to + % take effect in \write's, yet the group defined by the \vbox ends + % before the \shipout runs. + % + \escapechar = `\\ % use backslash in output files. + \indexdummies % don't expand commands in the output. + \normalturnoffactive % \ in index entries must not stay \, e.g., if + % the page break happens to be in the middle of an example. + \shipout\vbox{% + % Do this early so pdf references go to the beginning of the page. + \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi + % + \ifcropmarks \vbox to \outervsize\bgroup + \hsize = \outerhsize + \vskip-\topandbottommargin + \vtop to0pt{% + \line{\ewtop\hfil\ewtop}% + \nointerlineskip + \line{% + \vbox{\moveleft\cornerthick\nstop}% + \hfill + \vbox{\moveright\cornerthick\nstop}% + }% + \vss}% + \vskip\topandbottommargin + \line\bgroup + \hfil % center the page within the outer (page) hsize. + \ifodd\pageno\hskip\bindingoffset\fi + \vbox\bgroup + \fi + % + \unvbox\headlinebox + \pagebody{#1}% + \ifdim\ht\footlinebox > 0pt + % Only leave this space if the footline is nonempty. + % (We lessened \vsize for it in \oddfootingxxx.) + % The \baselineskip=24pt in plain's \makefootline has no effect. + \vskip 2\baselineskip + \unvbox\footlinebox + \fi + % + \ifcropmarks + \egroup % end of \vbox\bgroup + \hfil\egroup % end of (centering) \line\bgroup + \vskip\topandbottommargin plus1fill minus1fill + \boxmaxdepth = \cornerthick + \vbox to0pt{\vss + \line{% + \vbox{\moveleft\cornerthick\nsbot}% + \hfill + \vbox{\moveright\cornerthick\nsbot}% + }% + \nointerlineskip + \line{\ewbot\hfil\ewbot}% + }% + \egroup % \vbox from first cropmarks clause + \fi + }% end of \shipout\vbox + }% end of group with \normalturnoffactive + \advancepageno + \ifnum\outputpenalty>-20000 \else\dosupereject\fi +} + +\newinsert\margin \dimen\margin=\maxdimen + +\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}} +{\catcode`\@ =11 +\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi +% marginal hacks, juha@viisa.uucp (Juha Takala) +\ifvoid\margin\else % marginal info is present + \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi +\dimen@=\dp#1 \unvbox#1 +\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi +\ifr@ggedbottom \kern-\dimen@ \vfil \fi} +} + +% Here are the rules for the cropmarks. Note that they are +% offset so that the space between them is truly \outerhsize or \outervsize +% (P. A. MacKay, 12 November, 1986) +% +\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong} +\def\nstop{\vbox + {\hrule height\cornerthick depth\cornerlong width\cornerthick}} +\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong} +\def\nsbot{\vbox + {\hrule height\cornerlong depth\cornerthick width\cornerthick}} + +% Parse an argument, then pass it to #1. The argument is the rest of +% the input line (except we remove a trailing comment). #1 should be a +% macro which expects an ordinary undelimited TeX argument. +% +\def\parsearg{\parseargusing{}} +\def\parseargusing#1#2{% + \def\next{#2}% + \begingroup + \obeylines + \spaceisspace + #1% + \parseargline\empty% Insert the \empty token, see \finishparsearg below. +} + +{\obeylines % + \gdef\parseargline#1^^M{% + \endgroup % End of the group started in \parsearg. + \argremovecomment #1\comment\ArgTerm% + }% +} + +% First remove any @comment, then any @c comment. +\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm} +\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm} + +% Each occurence of `\^^M' or `\^^M' is replaced by a single space. +% +% \argremovec might leave us with trailing space, e.g., +% @end itemize @c foo +% This space token undergoes the same procedure and is eventually removed +% by \finishparsearg. +% +\def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M} +\def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M} +\def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{% + \def\temp{#3}% + \ifx\temp\empty + % We cannot use \next here, as it holds the macro to run; + % thus we reuse \temp. + \let\temp\finishparsearg + \else + \let\temp\argcheckspaces + \fi + % Put the space token in: + \temp#1 #3\ArgTerm +} + +% If a _delimited_ argument is enclosed in braces, they get stripped; so +% to get _exactly_ the rest of the line, we had to prevent such situation. +% We prepended an \empty token at the very beginning and we expand it now, +% just before passing the control to \next. +% (Similarily, we have to think about #3 of \argcheckspacesY above: it is +% either the null string, or it ends with \^^M---thus there is no danger +% that a pair of braces would be stripped. +% +% But first, we have to remove the trailing space token. +% +\def\finishparsearg#1 \ArgTerm{\expandafter\next\expandafter{#1}} + +% \parseargdef\foo{...} +% is roughly equivalent to +% \def\foo{\parsearg\Xfoo} +% \def\Xfoo#1{...} +% +% Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my +% favourite TeX trick. --kasal, 16nov03 + +\def\parseargdef#1{% + \expandafter \doparseargdef \csname\string#1\endcsname #1% +} +\def\doparseargdef#1#2{% + \def#2{\parsearg#1}% + \def#1##1% +} + +% Several utility definitions with active space: +{ + \obeyspaces + \gdef\obeyedspace{ } + + % Make each space character in the input produce a normal interword + % space in the output. Don't allow a line break at this space, as this + % is used only in environments like @example, where each line of input + % should produce a line of output anyway. + % + \gdef\sepspaces{\obeyspaces\let =\tie} + + % If an index command is used in an @example environment, any spaces + % therein should become regular spaces in the raw index file, not the + % expansion of \tie (\leavevmode \penalty \@M \ ). + \gdef\unsepspaces{\let =\space} +} + + +\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next} + +% Define the framework for environments in texinfo.tex. It's used like this: +% +% \envdef\foo{...} +% \def\Efoo{...} +% +% It's the responsibility of \envdef to insert \begingroup before the +% actual body; @end closes the group after calling \Efoo. \envdef also +% defines \thisenv, so the current environment is known; @end checks +% whether the environment name matches. The \checkenv macro can also be +% used to check whether the current environment is the one expected. +% +% Non-false conditionals (@iftex, @ifset) don't fit into this, so they +% are not treated as enviroments; they don't open a group. (The +% implementation of @end takes care not to call \endgroup in this +% special case.) + + +% At runtime, environments start with this: +\def\startenvironment#1{\begingroup\def\thisenv{#1}} +% initialize +\let\thisenv\empty + +% ... but they get defined via ``\envdef\foo{...}'': +\long\def\envdef#1#2{\def#1{\startenvironment#1#2}} +\def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}} + +% Check whether we're in the right environment: +\def\checkenv#1{% + \def\temp{#1}% + \ifx\thisenv\temp + \else + \badenverr + \fi +} + +% Evironment mismatch, #1 expected: +\def\badenverr{% + \errhelp = \EMsimple + \errmessage{This command can appear only \inenvironment\temp, + not \inenvironment\thisenv}% +} +\def\inenvironment#1{% + \ifx#1\empty + out of any environment% + \else + in environment \expandafter\string#1% + \fi +} + +% @end foo executes the definition of \Efoo. +% But first, it executes a specialized version of \checkenv +% +\parseargdef\end{% + \if 1\csname iscond.#1\endcsname + \else + % The general wording of \badenverr may not be ideal, but... --kasal, 06nov03 + \expandafter\checkenv\csname#1\endcsname + \csname E#1\endcsname + \endgroup + \fi +} + +\newhelp\EMsimple{Press RETURN to continue.} + + +%% Simple single-character @ commands + +% @@ prints an @ +% Kludge this until the fonts are right (grr). +\def\@{{\tt\char64}} + +% This is turned off because it was never documented +% and you can use @w{...} around a quote to suppress ligatures. +%% Define @` and @' to be the same as ` and ' +%% but suppressing ligatures. +%\def\`{{`}} +%\def\'{{'}} + +% Used to generate quoted braces. +\def\mylbrace {{\tt\char123}} +\def\myrbrace {{\tt\char125}} +\let\{=\mylbrace +\let\}=\myrbrace +\begingroup + % Definitions to produce \{ and \} commands for indices, + % and @{ and @} for the aux file. + \catcode`\{ = \other \catcode`\} = \other + \catcode`\[ = 1 \catcode`\] = 2 + \catcode`\! = 0 \catcode`\\ = \other + !gdef!lbracecmd[\{]% + !gdef!rbracecmd[\}]% + !gdef!lbraceatcmd[@{]% + !gdef!rbraceatcmd[@}]% +!endgroup + +% @comma{} to avoid , parsing problems. +\let\comma = , + +% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent +% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H. +\let\, = \c +\let\dotaccent = \. +\def\ringaccent#1{{\accent23 #1}} +\let\tieaccent = \t +\let\ubaraccent = \b +\let\udotaccent = \d + +% Other special characters: @questiondown @exclamdown @ordf @ordm +% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss. +\def\questiondown{?`} +\def\exclamdown{!`} +\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}} +\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}} + +% Dotless i and dotless j, used for accents. +\def\imacro{i} +\def\jmacro{j} +\def\dotless#1{% + \def\temp{#1}% + \ifx\temp\imacro \ptexi + \else\ifx\temp\jmacro \j + \else \errmessage{@dotless can be used only with i or j}% + \fi\fi +} + +% The \TeX{} logo, as in plain, but resetting the spacing so that a +% period following counts as ending a sentence. (Idea found in latex.) +% +\edef\TeX{\TeX \spacefactor=1000 } + +% @LaTeX{} logo. Not quite the same results as the definition in +% latex.ltx, since we use a different font for the raised A; it's most +% convenient for us to use an explicitly smaller font, rather than using +% the \scriptstyle font (since we don't reset \scriptstyle and +% \scriptscriptstyle). +% +\def\LaTeX{% + L\kern-.36em + {\setbox0=\hbox{T}% + \vbox to \ht0{\hbox{\selectfonts\lllsize A}\vss}}% + \kern-.15em + \TeX +} + +% Be sure we're in horizontal mode when doing a tie, since we make space +% equivalent to this in @example-like environments. Otherwise, a space +% at the beginning of a line will start with \penalty -- and +% since \penalty is valid in vertical mode, we'd end up putting the +% penalty on the vertical list instead of in the new paragraph. +{\catcode`@ = 11 + % Avoid using \@M directly, because that causes trouble + % if the definition is written into an index file. + \global\let\tiepenalty = \@M + \gdef\tie{\leavevmode\penalty\tiepenalty\ } +} + +% @: forces normal size whitespace following. +\def\:{\spacefactor=1000 } + +% @* forces a line break. +\def\*{\hfil\break\hbox{}\ignorespaces} + +% @/ allows a line break. +\let\/=\allowbreak + +% @. is an end-of-sentence period. +\def\.{.\spacefactor=3000 } + +% @! is an end-of-sentence bang. +\def\!{!\spacefactor=3000 } + +% @? is an end-of-sentence query. +\def\?{?\spacefactor=3000 } + +% @w prevents a word break. Without the \leavevmode, @w at the +% beginning of a paragraph, when TeX is still in vertical mode, would +% produce a whole line of output instead of starting the paragraph. +\def\w#1{\leavevmode\hbox{#1}} + +% @group ... @end group forces ... to be all on one page, by enclosing +% it in a TeX vbox. We use \vtop instead of \vbox to construct the box +% to keep its height that of a normal line. According to the rules for +% \topskip (p.114 of the TeXbook), the glue inserted is +% max (\topskip - \ht (first item), 0). If that height is large, +% therefore, no glue is inserted, and the space between the headline and +% the text is small, which looks bad. +% +% Another complication is that the group might be very large. This can +% cause the glue on the previous page to be unduly stretched, because it +% does not have much material. In this case, it's better to add an +% explicit \vfill so that the extra space is at the bottom. The +% threshold for doing this is if the group is more than \vfilllimit +% percent of a page (\vfilllimit can be changed inside of @tex). +% +\newbox\groupbox +\def\vfilllimit{0.7} +% +\envdef\group{% + \ifnum\catcode`\^^M=\active \else + \errhelp = \groupinvalidhelp + \errmessage{@group invalid in context where filling is enabled}% + \fi + \startsavinginserts + % + \setbox\groupbox = \vtop\bgroup + % Do @comment since we are called inside an environment such as + % @example, where each end-of-line in the input causes an + % end-of-line in the output. We don't want the end-of-line after + % the `@group' to put extra space in the output. Since @group + % should appear on a line by itself (according to the Texinfo + % manual), we don't worry about eating any user text. + \comment +} +% +% The \vtop produces a box with normal height and large depth; thus, TeX puts +% \baselineskip glue before it, and (when the next line of text is done) +% \lineskip glue after it. Thus, space below is not quite equal to space +% above. But it's pretty close. +\def\Egroup{% + % To get correct interline space between the last line of the group + % and the first line afterwards, we have to propagate \prevdepth. + \endgraf % Not \par, as it may have been set to \lisppar. + \global\dimen1 = \prevdepth + \egroup % End the \vtop. + % \dimen0 is the vertical size of the group's box. + \dimen0 = \ht\groupbox \advance\dimen0 by \dp\groupbox + % \dimen2 is how much space is left on the page (more or less). + \dimen2 = \pageheight \advance\dimen2 by -\pagetotal + % if the group doesn't fit on the current page, and it's a big big + % group, force a page break. + \ifdim \dimen0 > \dimen2 + \ifdim \pagetotal < \vfilllimit\pageheight + \page + \fi + \fi + \box\groupbox + \prevdepth = \dimen1 + \checkinserts +} +% +% TeX puts in an \escapechar (i.e., `@') at the beginning of the help +% message, so this ends up printing `@group can only ...'. +% +\newhelp\groupinvalidhelp{% +group can only be used in environments such as @example,^^J% +where each line of input produces a line of output.} + +% @need space-in-mils +% forces a page break if there is not space-in-mils remaining. + +\newdimen\mil \mil=0.001in + +% Old definition--didn't work. +%\parseargdef\need{\par % +%% This method tries to make TeX break the page naturally +%% if the depth of the box does not fit. +%{\baselineskip=0pt% +%\vtop to #1\mil{\vfil}\kern -#1\mil\nobreak +%\prevdepth=-1000pt +%}} + +\parseargdef\need{% + % Ensure vertical mode, so we don't make a big box in the middle of a + % paragraph. + \par + % + % If the @need value is less than one line space, it's useless. + \dimen0 = #1\mil + \dimen2 = \ht\strutbox + \advance\dimen2 by \dp\strutbox + \ifdim\dimen0 > \dimen2 + % + % Do a \strut just to make the height of this box be normal, so the + % normal leading is inserted relative to the preceding line. + % And a page break here is fine. + \vtop to #1\mil{\strut\vfil}% + % + % TeX does not even consider page breaks if a penalty added to the + % main vertical list is 10000 or more. But in order to see if the + % empty box we just added fits on the page, we must make it consider + % page breaks. On the other hand, we don't want to actually break the + % page after the empty box. So we use a penalty of 9999. + % + % There is an extremely small chance that TeX will actually break the + % page at this \penalty, if there are no other feasible breakpoints in + % sight. (If the user is using lots of big @group commands, which + % almost-but-not-quite fill up a page, TeX will have a hard time doing + % good page breaking, for example.) However, I could not construct an + % example where a page broke at this \penalty; if it happens in a real + % document, then we can reconsider our strategy. + \penalty9999 + % + % Back up by the size of the box, whether we did a page break or not. + \kern -#1\mil + % + % Do not allow a page break right after this kern. + \nobreak + \fi +} + +% @br forces paragraph break (and is undocumented). + +\let\br = \par + +% @page forces the start of a new page. +% +\def\page{\par\vfill\supereject} + +% @exdent text.... +% outputs text on separate line in roman font, starting at standard page margin + +% This records the amount of indent in the innermost environment. +% That's how much \exdent should take out. +\newskip\exdentamount + +% This defn is used inside fill environments such as @defun. +\parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break} + +% This defn is used inside nofill environments such as @example. +\parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount + \leftline{\hskip\leftskip{\rm#1}}}} + +% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current +% paragraph. For more general purposes, use the \margin insertion +% class. WHICH is `l' or `r'. +% +\newskip\inmarginspacing \inmarginspacing=1cm +\def\strutdepth{\dp\strutbox} +% +\def\doinmargin#1#2{\strut\vadjust{% + \nobreak + \kern-\strutdepth + \vtop to \strutdepth{% + \baselineskip=\strutdepth + \vss + % if you have multiple lines of stuff to put here, you'll need to + % make the vbox yourself of the appropriate size. + \ifx#1l% + \llap{\ignorespaces #2\hskip\inmarginspacing}% + \else + \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}% + \fi + \null + }% +}} +\def\inleftmargin{\doinmargin l} +\def\inrightmargin{\doinmargin r} +% +% @inmargin{TEXT [, RIGHT-TEXT]} +% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right; +% else use TEXT for both). +% +\def\inmargin#1{\parseinmargin #1,,\finish} +\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing. + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0 > 0pt + \def\lefttext{#1}% have both texts + \def\righttext{#2}% + \else + \def\lefttext{#1}% have only one text + \def\righttext{#1}% + \fi + % + \ifodd\pageno + \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin + \else + \def\temp{\inleftmargin\lefttext}% + \fi + \temp +} + +% @include file insert text of that file as input. +% +\def\include{\parseargusing\filenamecatcodes\includezzz} +\def\includezzz#1{% + \pushthisfilestack + \def\thisfile{#1}% + {% + \makevalueexpandable + \def\temp{\input #1 }% + \expandafter + }\temp + \popthisfilestack +} +\def\filenamecatcodes{% + \catcode`\\=\other + \catcode`~=\other + \catcode`^=\other + \catcode`_=\other + \catcode`|=\other + \catcode`<=\other + \catcode`>=\other + \catcode`+=\other + \catcode`-=\other +} + +\def\pushthisfilestack{% + \expandafter\pushthisfilestackX\popthisfilestack\StackTerm +} +\def\pushthisfilestackX{% + \expandafter\pushthisfilestackY\thisfile\StackTerm +} +\def\pushthisfilestackY #1\StackTerm #2\StackTerm {% + \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}% +} + +\def\popthisfilestack{\errthisfilestackempty} +\def\errthisfilestackempty{\errmessage{Internal error: + the stack of filenames is empty.}} + +\def\thisfile{} + +% @center line +% outputs that line, centered. +% +\parseargdef\center{% + \ifhmode + \let\next\centerH + \else + \let\next\centerV + \fi + \next{\hfil \ignorespaces#1\unskip \hfil}% +} +\def\centerH#1{% + {% + \hfil\break + \advance\hsize by -\leftskip + \advance\hsize by -\rightskip + \line{#1}% + \break + }% +} +\def\centerV#1{\line{\kern\leftskip #1\kern\rightskip}} + +% @sp n outputs n lines of vertical space + +\parseargdef\sp{\vskip #1\baselineskip} + +% @comment ...line which is ignored... +% @c is the same as @comment +% @ignore ... @end ignore is another way to write a comment + +\def\comment{\begingroup \catcode`\^^M=\other% +\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other% +\commentxxx} +{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}} + +\let\c=\comment + +% @paragraphindent NCHARS +% We'll use ems for NCHARS, close enough. +% NCHARS can also be the word `asis' or `none'. +% We cannot feasibly implement @paragraphindent asis, though. +% +\def\asisword{asis} % no translation, these are keywords +\def\noneword{none} +% +\parseargdef\paragraphindent{% + \def\temp{#1}% + \ifx\temp\asisword + \else + \ifx\temp\noneword + \defaultparindent = 0pt + \else + \defaultparindent = #1em + \fi + \fi + \parindent = \defaultparindent +} + +% @exampleindent NCHARS +% We'll use ems for NCHARS like @paragraphindent. +% It seems @exampleindent asis isn't necessary, but +% I preserve it to make it similar to @paragraphindent. +\parseargdef\exampleindent{% + \def\temp{#1}% + \ifx\temp\asisword + \else + \ifx\temp\noneword + \lispnarrowing = 0pt + \else + \lispnarrowing = #1em + \fi + \fi +} + +% @firstparagraphindent WORD +% If WORD is `none', then suppress indentation of the first paragraph +% after a section heading. If WORD is `insert', then do indent at such +% paragraphs. +% +% The paragraph indentation is suppressed or not by calling +% \suppressfirstparagraphindent, which the sectioning commands do. +% We switch the definition of this back and forth according to WORD. +% By default, we suppress indentation. +% +\def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent} +\def\insertword{insert} +% +\parseargdef\firstparagraphindent{% + \def\temp{#1}% + \ifx\temp\noneword + \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent + \else\ifx\temp\insertword + \let\suppressfirstparagraphindent = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @firstparagraphindent option `\temp'}% + \fi\fi +} + +% Here is how we actually suppress indentation. Redefine \everypar to +% \kern backwards by \parindent, and then reset itself to empty. +% +% We also make \indent itself not actually do anything until the next +% paragraph. +% +\gdef\dosuppressfirstparagraphindent{% + \gdef\indent{% + \restorefirstparagraphindent + \indent + }% + \gdef\noindent{% + \restorefirstparagraphindent + \noindent + }% + \global\everypar = {% + \kern -\parindent + \restorefirstparagraphindent + }% +} + +\gdef\restorefirstparagraphindent{% + \global \let \indent = \ptexindent + \global \let \noindent = \ptexnoindent + \global \everypar = {}% +} + + +% @asis just yields its argument. Used with @table, for example. +% +\def\asis#1{#1} + +% @math outputs its argument in math mode. +% +% One complication: _ usually means subscripts, but it could also mean +% an actual _ character, as in @math{@var{some_variable} + 1}. So make +% _ active, and distinguish by seeing if the current family is \slfam, +% which is what @var uses. +{ + \catcode\underChar = \active + \gdef\mathunderscore{% + \catcode\underChar=\active + \def_{\ifnum\fam=\slfam \_\else\sb\fi}% + } +} +% Another complication: we want \\ (and @\) to output a \ character. +% FYI, plain.tex uses \\ as a temporary control sequence (why?), but +% this is not advertised and we don't care. Texinfo does not +% otherwise define @\. +% +% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\. +\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi} +% +\def\math{% + \tex + \mathunderscore + \let\\ = \mathbackslash + \mathactive + $\finishmath +} +\def\finishmath#1{#1$\endgroup} % Close the group opened by \tex. + +% Some active characters (such as <) are spaced differently in math. +% We have to reset their definitions in case the @math was an argument +% to a command which sets the catcodes (such as @item or @section). +% +{ + \catcode`^ = \active + \catcode`< = \active + \catcode`> = \active + \catcode`+ = \active + \gdef\mathactive{% + \let^ = \ptexhat + \let< = \ptexless + \let> = \ptexgtr + \let+ = \ptexplus + } +} + +% @bullet and @minus need the same treatment as @math, just above. +\def\bullet{$\ptexbullet$} +\def\minus{$-$} + +% @dots{} outputs an ellipsis using the current font. +% We do .5em per period so that it has the same spacing in a typewriter +% font as three actual period characters. +% +\def\dots{% + \leavevmode + \hbox to 1.5em{% + \hskip 0pt plus 0.25fil + .\hfil.\hfil.% + \hskip 0pt plus 0.5fil + }% +} + +% @enddots{} is an end-of-sentence ellipsis. +% +\def\enddots{% + \dots + \spacefactor=3000 +} + +% @comma{} is so commas can be inserted into text without messing up +% Texinfo's parsing. +% +\let\comma = , + +% @refill is a no-op. +\let\refill=\relax + +% If working on a large document in chapters, it is convenient to +% be able to disable indexing, cross-referencing, and contents, for test runs. +% This is done with @novalidate (before @setfilename). +% +\newif\iflinks \linkstrue % by default we want the aux files. +\let\novalidate = \linksfalse + +% @setfilename is done at the beginning of every texinfo file. +% So open here the files we need to have open while reading the input. +% This makes it possible to make a .fmt file for texinfo. +\def\setfilename{% + \fixbackslash % Turn off hack to swallow `\input texinfo'. + \iflinks + \tryauxfile + % Open the new aux file. TeX will close it automatically at exit. + \immediate\openout\auxfile=\jobname.aux + \fi % \openindices needs to do some work in any case. + \openindices + \let\setfilename=\comment % Ignore extra @setfilename cmds. + % + % If texinfo.cnf is present on the system, read it. + % Useful for site-wide @afourpaper, etc. + \openin 1 texinfo.cnf + \ifeof 1 \else \input texinfo.cnf \fi + \closein 1 + % + \comment % Ignore the actual filename. +} + +% Called from \setfilename. +% +\def\openindices{% + \newindex{cp}% + \newcodeindex{fn}% + \newcodeindex{vr}% + \newcodeindex{tp}% + \newcodeindex{ky}% + \newcodeindex{pg}% +} + +% @bye. +\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend} + + +\message{pdf,} +% adobe `portable' document format +\newcount\tempnum +\newcount\lnkcount +\newtoks\filename +\newcount\filenamelength +\newcount\pgn +\newtoks\toksA +\newtoks\toksB +\newtoks\toksC +\newtoks\toksD +\newbox\boxA +\newcount\countA +\newif\ifpdf +\newif\ifpdfmakepagedest + +% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1 +% can be set). So we test for \relax and 0 as well as \undefined, +% borrowed from ifpdf.sty. +\ifx\pdfoutput\undefined +\else + \ifx\pdfoutput\relax + \else + \ifcase\pdfoutput + \else + \pdftrue + \fi + \fi +\fi +% +\ifpdf + \input pdfcolor + \pdfcatalog{/PageMode /UseOutlines}% + \def\dopdfimage#1#2#3{% + \def\imagewidth{#2}% + \def\imageheight{#3}% + % without \immediate, pdftex seg faults when the same image is + % included twice. (Version 3.14159-pre-1.0-unofficial-20010704.) + \ifnum\pdftexversion < 14 + \immediate\pdfimage + \else + \immediate\pdfximage + \fi + \ifx\empty\imagewidth\else width \imagewidth \fi + \ifx\empty\imageheight\else height \imageheight \fi + \ifnum\pdftexversion<13 + #1.pdf% + \else + {#1.pdf}% + \fi + \ifnum\pdftexversion < 14 \else + \pdfrefximage \pdflastximage + \fi} + \def\pdfmkdest#1{{% + % We have to set dummies so commands such as @code in a section title + % aren't expanded. + \atdummies + \normalturnoffactive + \pdfdest name{#1} xyz% + }} + \def\pdfmkpgn#1{#1} + \let\linkcolor = \Blue % was Cyan, but that seems light? + \def\endlink{\Black\pdfendlink} + % Adding outlines to PDF; macros for calculating structure of outlines + % come from Petr Olsak + \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0% + \else \csname#1\endcsname \fi} + \def\advancenumber#1{\tempnum=\expnumber{#1}\relax + \advance\tempnum by 1 + \expandafter\xdef\csname#1\endcsname{\the\tempnum}} + % + % #1 is the section text. #2 is the pdf expression for the number + % of subentries (or empty, for subsubsections). #3 is the node + % text, which might be empty if this toc entry had no + % corresponding node. #4 is the page number. + % + \def\dopdfoutline#1#2#3#4{% + % Generate a link to the node text if that exists; else, use the + % page number. We could generate a destination for the section + % text in the case where a section has no node, but it doesn't + % seem worthwhile, since most documents are normally structured. + \def\pdfoutlinedest{#3}% + \ifx\pdfoutlinedest\empty \def\pdfoutlinedest{#4}\fi + % + \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{#1}% + } + % + \def\pdfmakeoutlines{% + \begingroup + % Thanh's hack / proper braces in bookmarks + \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace + \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace + % + % Read toc silently, to get counts of subentries for \pdfoutline. + \def\numchapentry##1##2##3##4{% + \def\thischapnum{##2}% + \def\thissecnum{0}% + \def\thissubsecnum{0}% + }% + \def\numsecentry##1##2##3##4{% + \advancenumber{chap\thischapnum}% + \def\thissecnum{##2}% + \def\thissubsecnum{0}% + }% + \def\numsubsecentry##1##2##3##4{% + \advancenumber{sec\thissecnum}% + \def\thissubsecnum{##2}% + }% + \def\numsubsubsecentry##1##2##3##4{% + \advancenumber{subsec\thissubsecnum}% + }% + \def\thischapnum{0}% + \def\thissecnum{0}% + \def\thissubsecnum{0}% + % + % use \def rather than \let here because we redefine \chapentry et + % al. a second time, below. + \def\appentry{\numchapentry}% + \def\appsecentry{\numsecentry}% + \def\appsubsecentry{\numsubsecentry}% + \def\appsubsubsecentry{\numsubsubsecentry}% + \def\unnchapentry{\numchapentry}% + \def\unnsecentry{\numsecentry}% + \def\unnsubsecentry{\numsubsecentry}% + \def\unnsubsubsecentry{\numsubsubsecentry}% + \input \jobname.toc + % + % Read toc second time, this time actually producing the outlines. + % The `-' means take the \expnumber as the absolute number of + % subentries, which we calculated on our first read of the .toc above. + % + % We use the node names as the destinations. + \def\numchapentry##1##2##3##4{% + \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}% + \def\numsecentry##1##2##3##4{% + \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}% + \def\numsubsecentry##1##2##3##4{% + \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}% + \def\numsubsubsecentry##1##2##3##4{% count is always zero + \dopdfoutline{##1}{}{##3}{##4}}% + % + % PDF outlines are displayed using system fonts, instead of + % document fonts. Therefore we cannot use special characters, + % since the encoding is unknown. For example, the eogonek from + % Latin 2 (0xea) gets translated to a | character. Info from + % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100. + % + % xx to do this right, we have to translate 8-bit characters to + % their "best" equivalent, based on the @documentencoding. Right + % now, I guess we'll just let the pdf reader have its way. + \indexnofonts + \turnoffactive + \input \jobname.toc + \endgroup + } + % + \def\makelinks #1,{% + \def\params{#1}\def\E{END}% + \ifx\params\E + \let\nextmakelinks=\relax + \else + \let\nextmakelinks=\makelinks + \ifnum\lnkcount>0,\fi + \picknum{#1}% + \startlink attr{/Border [0 0 0]} + goto name{\pdfmkpgn{\the\pgn}}% + \linkcolor #1% + \advance\lnkcount by 1% + \endlink + \fi + \nextmakelinks + } + \def\picknum#1{\expandafter\pn#1} + \def\pn#1{% + \def\p{#1}% + \ifx\p\lbrace + \let\nextpn=\ppn + \else + \let\nextpn=\ppnn + \def\first{#1} + \fi + \nextpn + } + \def\ppn#1{\pgn=#1\gobble} + \def\ppnn{\pgn=\first} + \def\pdfmklnk#1{\lnkcount=0\makelinks #1,END,} + \def\skipspaces#1{\def\PP{#1}\def\D{|}% + \ifx\PP\D\let\nextsp\relax + \else\let\nextsp\skipspaces + \ifx\p\space\else\addtokens{\filename}{\PP}% + \advance\filenamelength by 1 + \fi + \fi + \nextsp} + \def\getfilename#1{\filenamelength=0\expandafter\skipspaces#1|\relax} + \ifnum\pdftexversion < 14 + \let \startlink \pdfannotlink + \else + \let \startlink \pdfstartlink + \fi + \def\pdfurl#1{% + \begingroup + \normalturnoffactive\def\@{@}% + \makevalueexpandable + \leavevmode\Red + \startlink attr{/Border [0 0 0]}% + user{/Subtype /Link /A << /S /URI /URI (#1) >>}% + \endgroup} + \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}} + \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} + \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks} + \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}} + \def\maketoks{% + \expandafter\poptoks\the\toksA|ENDTOKS|\relax + \ifx\first0\adn0 + \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3 + \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6 + \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9 + \else + \ifnum0=\countA\else\makelink\fi + \ifx\first.\let\next=\done\else + \let\next=\maketoks + \addtokens{\toksB}{\the\toksD} + \ifx\first,\addtokens{\toksB}{\space}\fi + \fi + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \next} + \def\makelink{\addtokens{\toksB}% + {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} + \def\pdflink#1{% + \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}} + \linkcolor #1\endlink} + \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} +\else + \let\pdfmkdest = \gobble + \let\pdfurl = \gobble + \let\endlink = \relax + \let\linkcolor = \relax + \let\pdfmakeoutlines = \relax +\fi % \ifx\pdfoutput + + +\message{fonts,} + +% Change the current font style to #1, remembering it in \curfontstyle. +% For now, we do not accumulate font styles: @b{@i{foo}} prints foo in +% italics, not bold italics. +% +\def\setfontstyle#1{% + \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd. + \csname ten#1\endcsname % change the current font +} + +% Select #1 fonts with the current style. +% +\def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname} + +\def\rm{\fam=0 \setfontstyle{rm}} +\def\it{\fam=\itfam \setfontstyle{it}} +\def\sl{\fam=\slfam \setfontstyle{sl}} +\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf} +\def\tt{\fam=\ttfam \setfontstyle{tt}} + +% Texinfo sort of supports the sans serif font style, which plain TeX does not. +% So we set up a \sf. +\newfam\sffam +\def\sf{\fam=\sffam \setfontstyle{sf}} +\let\li = \sf % Sometimes we call it \li, not \sf. + +% We don't need math for this font style. +\def\ttsl{\setfontstyle{ttsl}} + +% Default leading. +\newdimen\textleading \textleading = 13.2pt + +% Set the baselineskip to #1, and the lineskip and strut size +% correspondingly. There is no deep meaning behind these magic numbers +% used as factors; they just match (closely enough) what Knuth defined. +% +\def\lineskipfactor{.08333} +\def\strutheightpercent{.70833} +\def\strutdepthpercent {.29167} +% +\def\setleading#1{% + \normalbaselineskip = #1\relax + \normallineskip = \lineskipfactor\normalbaselineskip + \normalbaselines + \setbox\strutbox =\hbox{% + \vrule width0pt height\strutheightpercent\baselineskip + depth \strutdepthpercent \baselineskip + }% +} + +% Set the font macro #1 to the font named #2, adding on the +% specified font prefix (normally `cm'). +% #3 is the font's design size, #4 is a scale factor +\def\setfont#1#2#3#4{\font#1=\fontprefix#2#3 scaled #4} + +% Use cm as the default font prefix. +% To specify the font prefix, you must define \fontprefix +% before you read in texinfo.tex. +\ifx\fontprefix\undefined +\def\fontprefix{cm} +\fi +% Support font families that don't use the same naming scheme as CM. +\def\rmshape{r} +\def\rmbshape{bx} %where the normal face is bold +\def\bfshape{b} +\def\bxshape{bx} +\def\ttshape{tt} +\def\ttbshape{tt} +\def\ttslshape{sltt} +\def\itshape{ti} +\def\itbshape{bxti} +\def\slshape{sl} +\def\slbshape{bxsl} +\def\sfshape{ss} +\def\sfbshape{ss} +\def\scshape{csc} +\def\scbshape{csc} + +% Text fonts (11.2pt, magstep1). +\def\textnominalsize{11pt} +\edef\mainmagstep{\magstephalf} +\setfont\textrm\rmshape{10}{\mainmagstep} +\setfont\texttt\ttshape{10}{\mainmagstep} +\setfont\textbf\bfshape{10}{\mainmagstep} +\setfont\textit\itshape{10}{\mainmagstep} +\setfont\textsl\slshape{10}{\mainmagstep} +\setfont\textsf\sfshape{10}{\mainmagstep} +\setfont\textsc\scshape{10}{\mainmagstep} +\setfont\textttsl\ttslshape{10}{\mainmagstep} +\font\texti=cmmi10 scaled \mainmagstep +\font\textsy=cmsy10 scaled \mainmagstep + +% A few fonts for @defun names and args. +\setfont\defbf\bfshape{10}{\magstep1} +\setfont\deftt\ttshape{10}{\magstep1} +\setfont\defttsl\ttslshape{10}{\magstep1} +\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf} + +% Fonts for indices, footnotes, small examples (9pt). +\def\smallnominalsize{9pt} +\setfont\smallrm\rmshape{9}{1000} +\setfont\smalltt\ttshape{9}{1000} +\setfont\smallbf\bfshape{10}{900} +\setfont\smallit\itshape{9}{1000} +\setfont\smallsl\slshape{9}{1000} +\setfont\smallsf\sfshape{9}{1000} +\setfont\smallsc\scshape{10}{900} +\setfont\smallttsl\ttslshape{10}{900} +\font\smalli=cmmi9 +\font\smallsy=cmsy9 + +% Fonts for small examples (8pt). +\def\smallernominalsize{8pt} +\setfont\smallerrm\rmshape{8}{1000} +\setfont\smallertt\ttshape{8}{1000} +\setfont\smallerbf\bfshape{10}{800} +\setfont\smallerit\itshape{8}{1000} +\setfont\smallersl\slshape{8}{1000} +\setfont\smallersf\sfshape{8}{1000} +\setfont\smallersc\scshape{10}{800} +\setfont\smallerttsl\ttslshape{10}{800} +\font\smalleri=cmmi8 +\font\smallersy=cmsy8 + +% Fonts for title page (20.4pt): +\def\titlenominalsize{20pt} +\setfont\titlerm\rmbshape{12}{\magstep3} +\setfont\titleit\itbshape{10}{\magstep4} +\setfont\titlesl\slbshape{10}{\magstep4} +\setfont\titlett\ttbshape{12}{\magstep3} +\setfont\titlettsl\ttslshape{10}{\magstep4} +\setfont\titlesf\sfbshape{17}{\magstep1} +\let\titlebf=\titlerm +\setfont\titlesc\scbshape{10}{\magstep4} +\font\titlei=cmmi12 scaled \magstep3 +\font\titlesy=cmsy10 scaled \magstep4 +\def\authorrm{\secrm} +\def\authortt{\sectt} + +% Chapter (and unnumbered) fonts (17.28pt). +\def\chapnominalsize{17pt} +\setfont\chaprm\rmbshape{12}{\magstep2} +\setfont\chapit\itbshape{10}{\magstep3} +\setfont\chapsl\slbshape{10}{\magstep3} +\setfont\chaptt\ttbshape{12}{\magstep2} +\setfont\chapttsl\ttslshape{10}{\magstep3} +\setfont\chapsf\sfbshape{17}{1000} +\let\chapbf=\chaprm +\setfont\chapsc\scbshape{10}{\magstep3} +\font\chapi=cmmi12 scaled \magstep2 +\font\chapsy=cmsy10 scaled \magstep3 + +% Section fonts (14.4pt). +\def\secnominalsize{14pt} +\setfont\secrm\rmbshape{12}{\magstep1} +\setfont\secit\itbshape{10}{\magstep2} +\setfont\secsl\slbshape{10}{\magstep2} +\setfont\sectt\ttbshape{12}{\magstep1} +\setfont\secttsl\ttslshape{10}{\magstep2} +\setfont\secsf\sfbshape{12}{\magstep1} +\let\secbf\secrm +\setfont\secsc\scbshape{10}{\magstep2} +\font\seci=cmmi12 scaled \magstep1 +\font\secsy=cmsy10 scaled \magstep2 + +% Subsection fonts (13.15pt). +\def\ssecnominalsize{13pt} +\setfont\ssecrm\rmbshape{12}{\magstephalf} +\setfont\ssecit\itbshape{10}{1315} +\setfont\ssecsl\slbshape{10}{1315} +\setfont\ssectt\ttbshape{12}{\magstephalf} +\setfont\ssecttsl\ttslshape{10}{1315} +\setfont\ssecsf\sfbshape{12}{\magstephalf} +\let\ssecbf\ssecrm +\setfont\ssecsc\scbshape{10}{1315} +\font\sseci=cmmi12 scaled \magstephalf +\font\ssecsy=cmsy10 scaled 1315 + +% Reduced fonts for @acro in text (10pt). +\def\reducednominalsize{10pt} +\setfont\reducedrm\rmshape{10}{1000} +\setfont\reducedtt\ttshape{10}{1000} +\setfont\reducedbf\bfshape{10}{1000} +\setfont\reducedit\itshape{10}{1000} +\setfont\reducedsl\slshape{10}{1000} +\setfont\reducedsf\sfshape{10}{1000} +\setfont\reducedsc\scshape{10}{1000} +\setfont\reducedttsl\ttslshape{10}{1000} +\font\reducedi=cmmi10 +\font\reducedsy=cmsy10 + +% In order for the font changes to affect most math symbols and letters, +% we have to define the \textfont of the standard families. Since +% texinfo doesn't allow for producing subscripts and superscripts except +% in the main text, we don't bother to reset \scriptfont and +% \scriptscriptfont (which would also require loading a lot more fonts). +% +\def\resetmathfonts{% + \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy + \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf + \textfont\ttfam=\tentt \textfont\sffam=\tensf +} + +% The font-changing commands redefine the meanings of \tenSTYLE, instead +% of just \STYLE. We do this because \STYLE needs to also set the +% current \fam for math mode. Our \STYLE (e.g., \rm) commands hardwire +% \tenSTYLE to set the current font. +% +% Each font-changing command also sets the names \lsize (one size lower) +% and \lllsize (three sizes lower). These relative commands are used in +% the LaTeX logo and acronyms. +% +% This all needs generalizing, badly. +% +\def\textfonts{% + \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl + \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc + \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy + \let\tenttsl=\textttsl + \def\curfontsize{text}% + \def\lsize{reduced}\def\lllsize{smaller}% + \resetmathfonts \setleading{\textleading}} +\def\titlefonts{% + \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl + \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc + \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy + \let\tenttsl=\titlettsl + \def\curfontsize{title}% + \def\lsize{chap}\def\lllsize{subsec}% + \resetmathfonts \setleading{25pt}} +\def\titlefont#1{{\titlefonts\rm #1}} +\def\chapfonts{% + \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl + \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc + \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy + \let\tenttsl=\chapttsl + \def\curfontsize{chap}% + \def\lsize{sec}\def\lllsize{text}% + \resetmathfonts \setleading{19pt}} +\def\secfonts{% + \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl + \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc + \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy + \let\tenttsl=\secttsl + \def\curfontsize{sec}% + \def\lsize{subsec}\def\lllsize{reduced}% + \resetmathfonts \setleading{16pt}} +\def\subsecfonts{% + \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl + \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc + \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy + \let\tenttsl=\ssecttsl + \def\curfontsize{ssec}% + \def\lsize{text}\def\lllsize{small}% + \resetmathfonts \setleading{15pt}} +\let\subsubsecfonts = \subsecfonts +\def\reducedfonts{% + \let\tenrm=\reducedrm \let\tenit=\reducedit \let\tensl=\reducedsl + \let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc + \let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy + \let\tenttsl=\reducedttsl + \def\curfontsize{reduced}% + \def\lsize{small}\def\lllsize{smaller}% + \resetmathfonts \setleading{10.5pt}} +\def\smallfonts{% + \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl + \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc + \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy + \let\tenttsl=\smallttsl + \def\curfontsize{small}% + \def\lsize{smaller}\def\lllsize{smaller}% + \resetmathfonts \setleading{10.5pt}} +\def\smallerfonts{% + \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl + \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc + \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy + \let\tenttsl=\smallerttsl + \def\curfontsize{smaller}% + \def\lsize{smaller}\def\lllsize{smaller}% + \resetmathfonts \setleading{9.5pt}} + +% Set the fonts to use with the @small... environments. +\let\smallexamplefonts = \smallfonts + +% About \smallexamplefonts. If we use \smallfonts (9pt), @smallexample +% can fit this many characters: +% 8.5x11=86 smallbook=72 a4=90 a5=69 +% If we use \scriptfonts (8pt), then we can fit this many characters: +% 8.5x11=90+ smallbook=80 a4=90+ a5=77 +% For me, subjectively, the few extra characters that fit aren't worth +% the additional smallness of 8pt. So I'm making the default 9pt. +% +% By the way, for comparison, here's what fits with @example (10pt): +% 8.5x11=71 smallbook=60 a4=75 a5=58 +% +% I wish the USA used A4 paper. +% --karl, 24jan03. + + +% Set up the default fonts, so we can use them for creating boxes. +% +\textfonts \rm + +% Define these so they can be easily changed for other fonts. +\def\angleleft{$\langle$} +\def\angleright{$\rangle$} + +% Count depth in font-changes, for error checks +\newcount\fontdepth \fontdepth=0 + +% Fonts for short table of contents. +\setfont\shortcontrm\rmshape{12}{1000} +\setfont\shortcontbf\bfshape{10}{\magstep1} % no cmb12 +\setfont\shortcontsl\slshape{12}{1000} +\setfont\shortconttt\ttshape{12}{1000} + +%% Add scribe-like font environments, plus @l for inline lisp (usually sans +%% serif) and @ii for TeX italic + +% \smartitalic{ARG} outputs arg in italics, followed by an italic correction +% unless the following character is such as not to need one. +\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else + \ptexslash\fi\fi\fi} +\def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx} +\def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx} + +% like \smartslanted except unconditionally uses \ttsl. +% @var is set to this for defun arguments. +\def\ttslanted#1{{\ttsl #1}\futurelet\next\smartitalicx} + +% like \smartslanted except unconditionally use \sl. We never want +% ttsl for book titles, do we? +\def\cite#1{{\sl #1}\futurelet\next\smartitalicx} + +\let\i=\smartitalic +\let\slanted=\smartslanted +\let\var=\smartslanted +\let\dfn=\smartslanted +\let\emph=\smartitalic + +% @b, explicit bold. +\def\b#1{{\bf #1}} +\let\strong=\b + +% @sansserif, explicit sans. +\def\sansserif#1{{\sf #1}} + +% We can't just use \exhyphenpenalty, because that only has effect at +% the end of a paragraph. Restore normal hyphenation at the end of the +% group within which \nohyphenation is presumably called. +% +\def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation} +\def\restorehyphenation{\hyphenchar\font = `- } + +% Set sfcode to normal for the chars that usually have another value. +% Can't use plain's \frenchspacing because it uses the `\x notation, and +% sometimes \x has an active definition that messes things up. +% +\catcode`@=11 + \def\frenchspacing{% + \sfcode\dotChar =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m + \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m + } +\catcode`@=\other + +\def\t#1{% + {\tt \rawbackslash \frenchspacing #1}% + \null +} +\def\samp#1{`\tclose{#1}'\null} +\setfont\keyrm\rmshape{8}{1000} +\font\keysy=cmsy9 +\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{% + \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% + \vbox{\hrule\kern-0.4pt + \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% + \kern-0.4pt\hrule}% + \kern-.06em\raise0.4pt\hbox{\angleright}}}} +% The old definition, with no lozenge: +%\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null} +\def\ctrl #1{{\tt \rawbackslash \hat}#1} + +% @file, @option are the same as @samp. +\let\file=\samp +\let\option=\samp + +% @code is a modification of @t, +% which makes spaces the same size as normal in the surrounding text. +\def\tclose#1{% + {% + % Change normal interword space to be same as for the current font. + \spaceskip = \fontdimen2\font + % + % Switch to typewriter. + \tt + % + % But `\ ' produces the large typewriter interword space. + \def\ {{\spaceskip = 0pt{} }}% + % + % Turn off hyphenation. + \nohyphenation + % + \rawbackslash + \frenchspacing + #1% + }% + \null +} + +% We *must* turn on hyphenation at `-' and `_' in @code. +% Otherwise, it is too hard to avoid overfull hboxes +% in the Emacs manual, the Library manual, etc. + +% Unfortunately, TeX uses one parameter (\hyphenchar) to control +% both hyphenation at - and hyphenation within words. +% We must therefore turn them both off (\tclose does that) +% and arrange explicitly to hyphenate at a dash. +% -- rms. +{ + \catcode`\-=\active + \catcode`\_=\active + % + \global\def\code{\begingroup + \catcode`\-=\active \let-\codedash + \catcode`\_=\active \let_\codeunder + \codex + } +} + +\def\realdash{-} +\def\codedash{-\discretionary{}{}{}} +\def\codeunder{% + % this is all so @math{@code{var_name}+1} can work. In math mode, _ + % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.) + % will therefore expand the active definition of _, which is us + % (inside @code that is), therefore an endless loop. + \ifusingtt{\ifmmode + \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_. + \else\normalunderscore \fi + \discretionary{}{}{}}% + {\_}% +} +\def\codex #1{\tclose{#1}\endgroup} + +% @kbd is like @code, except that if the argument is just one @key command, +% then @kbd has no effect. + +% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), +% `example' (@kbd uses ttsl only inside of @example and friends), +% or `code' (@kbd uses normal tty font always). +\parseargdef\kbdinputstyle{% + \def\arg{#1}% + \ifx\arg\worddistinct + \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}% + \else\ifx\arg\wordexample + \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}% + \else\ifx\arg\wordcode + \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}% + \else + \errhelp = \EMsimple + \errmessage{Unknown @kbdinputstyle option `\arg'}% + \fi\fi\fi +} +\def\worddistinct{distinct} +\def\wordexample{example} +\def\wordcode{code} + +% Default is `distinct.' +\kbdinputstyle distinct + +\def\xkey{\key} +\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}% +\ifx\one\xkey\ifx\threex\three \key{#2}% +\else{\tclose{\kbdfont\look}}\fi +\else{\tclose{\kbdfont\look}}\fi} + +% For @indicateurl, @env, @command quotes seem unnecessary, so use \code. +\let\indicateurl=\code +\let\env=\code +\let\command=\code + +% @uref (abbreviation for `urlref') takes an optional (comma-separated) +% second argument specifying the text to display and an optional third +% arg as text to display instead of (rather than in addition to) the url +% itself. First (mandatory) arg is the url. Perhaps eventually put in +% a hypertex \special here. +% +\def\uref#1{\douref #1,,,\finish} +\def\douref#1,#2,#3,#4\finish{\begingroup + \unsepspaces + \pdfurl{#1}% + \setbox0 = \hbox{\ignorespaces #3}% + \ifdim\wd0 > 0pt + \unhbox0 % third arg given, show only that + \else + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0 > 0pt + \ifpdf + \unhbox0 % PDF: 2nd arg given, show only it + \else + \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url + \fi + \else + \code{#1}% only url given, so show it + \fi + \fi + \endlink +\endgroup} + +% @url synonym for @uref, since that's how everyone uses it. +% +\let\url=\uref + +% rms does not like angle brackets --karl, 17may97. +% So now @email is just like @uref, unless we are pdf. +% +%\def\email#1{\angleleft{\tt #1}\angleright} +\ifpdf + \def\email#1{\doemail#1,,\finish} + \def\doemail#1,#2,#3\finish{\begingroup + \unsepspaces + \pdfurl{mailto:#1}% + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi + \endlink + \endgroup} +\else + \let\email=\uref +\fi + +% Check if we are currently using a typewriter font. Since all the +% Computer Modern typewriter fonts have zero interword stretch (and +% shrink), and it is reasonable to expect all typewriter fonts to have +% this property, we can check that font parameter. +% +\def\ifmonospace{\ifdim\fontdimen3\font=0pt } + +% Typeset a dimension, e.g., `in' or `pt'. The only reason for the +% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt. +% +\def\dmn#1{\thinspace #1} + +\def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par} + +% @l was never documented to mean ``switch to the Lisp font'', +% and it is not used as such in any manual I can find. We need it for +% Polish suppressed-l. --karl, 22sep96. +%\def\l#1{{\li #1}\null} + +% Explicit font changes: @r, @sc, undocumented @ii. +\def\r#1{{\rm #1}} % roman font +\def\sc#1{{\smallcaps#1}} % smallcaps font +\def\ii#1{{\it #1}} % italic font + +% @acronym for "FBI", "NATO", and the like. +% We print this one point size smaller, since it's intended for +% all-uppercase. +% +\def\acronym#1{\doacronym #1,,\finish} +\def\doacronym#1,#2,#3\finish{% + {\selectfonts\lsize #1}% + \def\temp{#2}% + \ifx\temp\empty \else + \space ({\unsepspaces \ignorespaces \temp \unskip})% + \fi +} + +% @abbr for "Comput. J." and the like. +% No font change, but don't do end-of-sentence spacing. +% +\def\abbr#1{\doabbr #1,,\finish} +\def\doabbr#1,#2,#3\finish{% + {\frenchspacing #1}% + \def\temp{#2}% + \ifx\temp\empty \else + \space ({\unsepspaces \ignorespaces \temp \unskip})% + \fi +} + +% @pounds{} is a sterling sign, which Knuth put in the CM italic font. +% +\def\pounds{{\it\$}} + +% @euro{} comes from a separate font, depending on the current style. +% We use the free feym* fonts from the eurosym package by Henrik +% Theiling, which support regular, slanted, bold and bold slanted (and +% "outlined" (blackboard board, sort of) versions, which we don't need). +% It is available from http://www.ctan.org/tex-archive/fonts/eurosym. +% +% Although only regular is the truly official Euro symbol, we ignore +% that. The Euro is designed to be slightly taller than the regular +% font height. +% +% feymr - regular +% feymo - slanted +% feybr - bold +% feybo - bold slanted +% +% There is no good (free) typewriter version, to my knowledge. +% A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide. +% Hmm. +% +% Also doesn't work in math. Do we need to do math with euro symbols? +% Hope not. +% +% +\def\euro{{\eurofont e}} +\def\eurofont{% + % We set the font at each command, rather than predefining it in + % \textfonts and the other font-switching commands, so that + % installations which never need the symbold don't have to have the + % font installed. + % + % There is only one designed size (nominal 10pt), so we always scale + % that to the current nominal size. + % + % By the way, simply using "at 1em" works for cmr10 and the like, but + % does not work for cmbx10 and other extended/shrunken fonts. + % + \def\eurosize{\csname\curfontsize nominalsize\endcsname}% + % + \ifx\curfontstyle\bfstylename + % bold: + \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize + \else + % regular: + \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize + \fi + \thiseurofont +} + +% @registeredsymbol - R in a circle. The font for the R should really +% be smaller yet, but lllsize is the best we can do for now. +% Adapted from the plain.tex definition of \copyright. +% +\def\registeredsymbol{% + $^{{\ooalign{\hfil\raise.07ex\hbox{\selectfonts\lllsize R}% + \hfil\crcr\Orb}}% + }$% +} + +% Laurent Siebenmann reports \Orb undefined with: +% Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38 +% so we'll define it if necessary. +% +\ifx\Orb\undefined +\def\Orb{\mathhexbox20D} +\fi + + +\message{page headings,} + +\newskip\titlepagetopglue \titlepagetopglue = 1.5in +\newskip\titlepagebottomglue \titlepagebottomglue = 2pc + +% First the title page. Must do @settitle before @titlepage. +\newif\ifseenauthor +\newif\iffinishedtitlepage + +% Do an implicit @contents or @shortcontents after @end titlepage if the +% user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage. +% +\newif\ifsetcontentsaftertitlepage + \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue +\newif\ifsetshortcontentsaftertitlepage + \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue + +\parseargdef\shorttitlepage{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}% + \endgroup\page\hbox{}\page} + +\envdef\titlepage{% + % Open one extra group, as we want to close it in the middle of \Etitlepage. + \begingroup + \parindent=0pt \textfonts + % Leave some space at the very top of the page. + \vglue\titlepagetopglue + % No rule at page bottom unless we print one at the top with @title. + \finishedtitlepagetrue + % + % Most title ``pages'' are actually two pages long, with space + % at the top of the second. We don't want the ragged left on the second. + \let\oldpage = \page + \def\page{% + \iffinishedtitlepage\else + \finishtitlepage + \fi + \let\page = \oldpage + \page + \null + }% +} + +\def\Etitlepage{% + \iffinishedtitlepage\else + \finishtitlepage + \fi + % It is important to do the page break before ending the group, + % because the headline and footline are only empty inside the group. + % If we use the new definition of \page, we always get a blank page + % after the title page, which we certainly don't want. + \oldpage + \endgroup + % + % Need this before the \...aftertitlepage checks so that if they are + % in effect the toc pages will come out with page numbers. + \HEADINGSon + % + % If they want short, they certainly want long too. + \ifsetshortcontentsaftertitlepage + \shortcontents + \contents + \global\let\shortcontents = \relax + \global\let\contents = \relax + \fi + % + \ifsetcontentsaftertitlepage + \contents + \global\let\contents = \relax + \global\let\shortcontents = \relax + \fi +} + +\def\finishtitlepage{% + \vskip4pt \hrule height 2pt width \hsize + \vskip\titlepagebottomglue + \finishedtitlepagetrue +} + +%%% Macros to be used within @titlepage: + +\let\subtitlerm=\tenrm +\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines} + +\def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines + \let\tt=\authortt} + +\parseargdef\title{% + \checkenv\titlepage + \leftline{\titlefonts\rm #1} + % print a rule at the page bottom also. + \finishedtitlepagefalse + \vskip4pt \hrule height 4pt width \hsize \vskip4pt +} + +\parseargdef\subtitle{% + \checkenv\titlepage + {\subtitlefont \rightline{#1}}% +} + +% @author should come last, but may come many times. +% It can also be used inside @quotation. +% +\parseargdef\author{% + \def\temp{\quotation}% + \ifx\thisenv\temp + \def\quotationauthor{#1}% printed in \Equotation. + \else + \checkenv\titlepage + \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi + {\authorfont \leftline{#1}}% + \fi +} + + +%%% Set up page headings and footings. + +\let\thispage=\folio + +\newtoks\evenheadline % headline on even pages +\newtoks\oddheadline % headline on odd pages +\newtoks\evenfootline % footline on even pages +\newtoks\oddfootline % footline on odd pages + +% Now make TeX use those variables +\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline + \else \the\evenheadline \fi}} +\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline + \else \the\evenfootline \fi}\HEADINGShook} +\let\HEADINGShook=\relax + +% Commands to set those variables. +% For example, this is what @headings on does +% @evenheading @thistitle|@thispage|@thischapter +% @oddheading @thischapter|@thispage|@thistitle +% @evenfooting @thisfile|| +% @oddfooting ||@thisfile + + +\def\evenheading{\parsearg\evenheadingxxx} +\def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish} +\def\evenheadingyyy #1\|#2\|#3\|#4\finish{% +\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + +\def\oddheading{\parsearg\oddheadingxxx} +\def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish} +\def\oddheadingyyy #1\|#2\|#3\|#4\finish{% +\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + +\parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}% + +\def\evenfooting{\parsearg\evenfootingxxx} +\def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish} +\def\evenfootingyyy #1\|#2\|#3\|#4\finish{% +\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + +\def\oddfooting{\parsearg\oddfootingxxx} +\def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish} +\def\oddfootingyyy #1\|#2\|#3\|#4\finish{% + \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}% + % + % Leave some space for the footline. Hopefully ok to assume + % @evenfooting will not be used by itself. + \global\advance\pageheight by -\baselineskip + \global\advance\vsize by -\baselineskip +} + +\parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}} + + +% @headings double turns headings on for double-sided printing. +% @headings single turns headings on for single-sided printing. +% @headings off turns them off. +% @headings on same as @headings double, retained for compatibility. +% @headings after turns on double-sided headings after this page. +% @headings doubleafter turns on double-sided headings after this page. +% @headings singleafter turns on single-sided headings after this page. +% By default, they are off at the start of a document, +% and turned `on' after @end titlepage. + +\def\headings #1 {\csname HEADINGS#1\endcsname} + +\def\HEADINGSoff{% +\global\evenheadline={\hfil} \global\evenfootline={\hfil} +\global\oddheadline={\hfil} \global\oddfootline={\hfil}} +\HEADINGSoff +% When we turn headings on, set the page number to 1. +% For double-sided printing, put current file name in lower left corner, +% chapter name on inside top of right hand pages, document +% title on inside top of left hand pages, and page numbers on outside top +% edge of all pages. +\def\HEADINGSdouble{% +\global\pageno=1 +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\folio\hfil\thistitle}} +\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\let\contentsalignmacro = \chapoddpage +} +\let\contentsalignmacro = \chappager + +% For single-sided printing, chapter title goes across top left of page, +% page number on top right. +\def\HEADINGSsingle{% +\global\pageno=1 +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\thischapter\hfil\folio}} +\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\let\contentsalignmacro = \chappager +} +\def\HEADINGSon{\HEADINGSdouble} + +\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex} +\let\HEADINGSdoubleafter=\HEADINGSafter +\def\HEADINGSdoublex{% +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\folio\hfil\thistitle}} +\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\let\contentsalignmacro = \chapoddpage +} + +\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex} +\def\HEADINGSsinglex{% +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\thischapter\hfil\folio}} +\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\let\contentsalignmacro = \chappager +} + +% Subroutines used in generating headings +% This produces Day Month Year style of output. +% Only define if not already defined, in case a txi-??.tex file has set +% up a different format (e.g., txi-cs.tex does this). +\ifx\today\undefined +\def\today{% + \number\day\space + \ifcase\month + \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr + \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug + \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec + \fi + \space\number\year} +\fi + +% @settitle line... specifies the title of the document, for headings. +% It generates no output of its own. +\def\thistitle{\putwordNoTitle} +\def\settitle{\parsearg{\gdef\thistitle}} + + +\message{tables,} +% Tables -- @table, @ftable, @vtable, @item(x). + +% default indentation of table text +\newdimen\tableindent \tableindent=.8in +% default indentation of @itemize and @enumerate text +\newdimen\itemindent \itemindent=.3in +% margin between end of table item and start of table text. +\newdimen\itemmargin \itemmargin=.1in + +% used internally for \itemindent minus \itemmargin +\newdimen\itemmax + +% Note @table, @ftable, and @vtable define @item, @itemx, etc., with +% these defs. +% They also define \itemindex +% to index the item name in whatever manner is desired (perhaps none). + +\newif\ifitemxneedsnegativevskip + +\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi} + +\def\internalBitem{\smallbreak \parsearg\itemzzz} +\def\internalBitemx{\itemxpar \parsearg\itemzzz} + +\def\itemzzz #1{\begingroup % + \advance\hsize by -\rightskip + \advance\hsize by -\tableindent + \setbox0=\hbox{\itemindicate{#1}}% + \itemindex{#1}% + \nobreak % This prevents a break before @itemx. + % + % If the item text does not fit in the space we have, put it on a line + % by itself, and do not allow a page break either before or after that + % line. We do not start a paragraph here because then if the next + % command is, e.g., @kindex, the whatsit would get put into the + % horizontal list on a line by itself, resulting in extra blank space. + \ifdim \wd0>\itemmax + % + % Make this a paragraph so we get the \parskip glue and wrapping, + % but leave it ragged-right. + \begingroup + \advance\leftskip by-\tableindent + \advance\hsize by\tableindent + \advance\rightskip by0pt plus1fil + \leavevmode\unhbox0\par + \endgroup + % + % We're going to be starting a paragraph, but we don't want the + % \parskip glue -- logically it's part of the @item we just started. + \nobreak \vskip-\parskip + % + % Stop a page break at the \parskip glue coming up. However, if + % what follows is an environment such as @example, there will be no + % \parskip glue; then the negative vskip we just inserted would + % cause the example and the item to crash together. So we use this + % bizarre value of 10001 as a signal to \aboveenvbreak to insert + % \parskip glue after all. Section titles are handled this way also. + % + \penalty 10001 + \endgroup + \itemxneedsnegativevskipfalse + \else + % The item text fits into the space. Start a paragraph, so that the + % following text (if any) will end up on the same line. + \noindent + % Do this with kerns and \unhbox so that if there is a footnote in + % the item text, it can migrate to the main vertical list and + % eventually be printed. + \nobreak\kern-\tableindent + \dimen0 = \itemmax \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0 + \unhbox0 + \nobreak\kern\dimen0 + \endgroup + \itemxneedsnegativevskiptrue + \fi +} + +\def\item{\errmessage{@item while not in a list environment}} +\def\itemx{\errmessage{@itemx while not in a list environment}} + +% @table, @ftable, @vtable. +\envdef\table{% + \let\itemindex\gobble + \tablecheck{table}% +} +\envdef\ftable{% + \def\itemindex ##1{\doind {fn}{\code{##1}}}% + \tablecheck{ftable}% +} +\envdef\vtable{% + \def\itemindex ##1{\doind {vr}{\code{##1}}}% + \tablecheck{vtable}% +} +\def\tablecheck#1{% + \ifnum \the\catcode`\^^M=\active + \endgroup + \errmessage{This command won't work in this context; perhaps the problem is + that we are \inenvironment\thisenv}% + \def\next{\doignore{#1}}% + \else + \let\next\tablex + \fi + \next +} +\def\tablex#1{% + \def\itemindicate{#1}% + \parsearg\tabley +} +\def\tabley#1{% + {% + \makevalueexpandable + \edef\temp{\noexpand\tablez #1\space\space\space}% + \expandafter + }\temp \endtablez +} +\def\tablez #1 #2 #3 #4\endtablez{% + \aboveenvbreak + \ifnum 0#1>0 \advance \leftskip by #1\mil \fi + \ifnum 0#2>0 \tableindent=#2\mil \fi + \ifnum 0#3>0 \advance \rightskip by #3\mil \fi + \itemmax=\tableindent + \advance \itemmax by -\itemmargin + \advance \leftskip by \tableindent + \exdentamount=\tableindent + \parindent = 0pt + \parskip = \smallskipamount + \ifdim \parskip=0pt \parskip=2pt \fi + \let\item = \internalBitem + \let\itemx = \internalBitemx +} +\def\Etable{\endgraf\afterenvbreak} +\let\Eftable\Etable +\let\Evtable\Etable +\let\Eitemize\Etable +\let\Eenumerate\Etable + +% This is the counter used by @enumerate, which is really @itemize + +\newcount \itemno + +\envdef\itemize{\parsearg\doitemize} + +\def\doitemize#1{% + \aboveenvbreak + \itemmax=\itemindent + \advance\itemmax by -\itemmargin + \advance\leftskip by \itemindent + \exdentamount=\itemindent + \parindent=0pt + \parskip=\smallskipamount + \ifdim\parskip=0pt \parskip=2pt \fi + \def\itemcontents{#1}% + % @itemize with no arg is equivalent to @itemize @bullet. + \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi + \let\item=\itemizeitem +} + +% Definition of @item while inside @itemize and @enumerate. +% +\def\itemizeitem{% + \advance\itemno by 1 % for enumerations + {\let\par=\endgraf \smallbreak}% reasonable place to break + {% + % If the document has an @itemize directly after a section title, a + % \nobreak will be last on the list, and \sectionheading will have + % done a \vskip-\parskip. In that case, we don't want to zero + % parskip, or the item text will crash with the heading. On the + % other hand, when there is normal text preceding the item (as there + % usually is), we do want to zero parskip, or there would be too much + % space. In that case, we won't have a \nobreak before. At least + % that's the theory. + \ifnum\lastpenalty<10000 \parskip=0in \fi + \noindent + \hbox to 0pt{\hss \itemcontents \kern\itemmargin}% + \vadjust{\penalty 1200}}% not good to break after first line of item. + \flushcr +} + +% \splitoff TOKENS\endmark defines \first to be the first token in +% TOKENS, and \rest to be the remainder. +% +\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}% + +% Allow an optional argument of an uppercase letter, lowercase letter, +% or number, to specify the first label in the enumerated list. No +% argument is the same as `1'. +% +\envparseargdef\enumerate{\enumeratey #1 \endenumeratey} +\def\enumeratey #1 #2\endenumeratey{% + % If we were given no argument, pretend we were given `1'. + \def\thearg{#1}% + \ifx\thearg\empty \def\thearg{1}\fi + % + % Detect if the argument is a single token. If so, it might be a + % letter. Otherwise, the only valid thing it can be is a number. + % (We will always have one token, because of the test we just made. + % This is a good thing, since \splitoff doesn't work given nothing at + % all -- the first parameter is undelimited.) + \expandafter\splitoff\thearg\endmark + \ifx\rest\empty + % Only one token in the argument. It could still be anything. + % A ``lowercase letter'' is one whose \lccode is nonzero. + % An ``uppercase letter'' is one whose \lccode is both nonzero, and + % not equal to itself. + % Otherwise, we assume it's a number. + % + % We need the \relax at the end of the \ifnum lines to stop TeX from + % continuing to look for a . + % + \ifnum\lccode\expandafter`\thearg=0\relax + \numericenumerate % a number (we hope) + \else + % It's a letter. + \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax + \lowercaseenumerate % lowercase letter + \else + \uppercaseenumerate % uppercase letter + \fi + \fi + \else + % Multiple tokens in the argument. We hope it's a number. + \numericenumerate + \fi +} + +% An @enumerate whose labels are integers. The starting integer is +% given in \thearg. +% +\def\numericenumerate{% + \itemno = \thearg + \startenumeration{\the\itemno}% +} + +% The starting (lowercase) letter is in \thearg. +\def\lowercaseenumerate{% + \itemno = \expandafter`\thearg + \startenumeration{% + % Be sure we're not beyond the end of the alphabet. + \ifnum\itemno=0 + \errmessage{No more lowercase letters in @enumerate; get a bigger + alphabet}% + \fi + \char\lccode\itemno + }% +} + +% The starting (uppercase) letter is in \thearg. +\def\uppercaseenumerate{% + \itemno = \expandafter`\thearg + \startenumeration{% + % Be sure we're not beyond the end of the alphabet. + \ifnum\itemno=0 + \errmessage{No more uppercase letters in @enumerate; get a bigger + alphabet} + \fi + \char\uccode\itemno + }% +} + +% Call \doitemize, adding a period to the first argument and supplying the +% common last two arguments. Also subtract one from the initial value in +% \itemno, since @item increments \itemno. +% +\def\startenumeration#1{% + \advance\itemno by -1 + \doitemize{#1.}\flushcr +} + +% @alphaenumerate and @capsenumerate are abbreviations for giving an arg +% to @enumerate. +% +\def\alphaenumerate{\enumerate{a}} +\def\capsenumerate{\enumerate{A}} +\def\Ealphaenumerate{\Eenumerate} +\def\Ecapsenumerate{\Eenumerate} + + +% @multitable macros +% Amy Hendrickson, 8/18/94, 3/6/96 +% +% @multitable ... @end multitable will make as many columns as desired. +% Contents of each column will wrap at width given in preamble. Width +% can be specified either with sample text given in a template line, +% or in percent of \hsize, the current width of text on page. + +% Table can continue over pages but will only break between lines. + +% To make preamble: +% +% Either define widths of columns in terms of percent of \hsize: +% @multitable @columnfractions .25 .3 .45 +% @item ... +% +% Numbers following @columnfractions are the percent of the total +% current hsize to be used for each column. You may use as many +% columns as desired. + + +% Or use a template: +% @multitable {Column 1 template} {Column 2 template} {Column 3 template} +% @item ... +% using the widest term desired in each column. + +% Each new table line starts with @item, each subsequent new column +% starts with @tab. Empty columns may be produced by supplying @tab's +% with nothing between them for as many times as empty columns are needed, +% ie, @tab@tab@tab will produce two empty columns. + +% @item, @tab do not need to be on their own lines, but it will not hurt +% if they are. + +% Sample multitable: + +% @multitable {Column 1 template} {Column 2 template} {Column 3 template} +% @item first col stuff @tab second col stuff @tab third col +% @item +% first col stuff +% @tab +% second col stuff +% @tab +% third col +% @item first col stuff @tab second col stuff +% @tab Many paragraphs of text may be used in any column. +% +% They will wrap at the width determined by the template. +% @item@tab@tab This will be in third column. +% @end multitable + +% Default dimensions may be reset by user. +% @multitableparskip is vertical space between paragraphs in table. +% @multitableparindent is paragraph indent in table. +% @multitablecolmargin is horizontal space to be left between columns. +% @multitablelinespace is space to leave between table items, baseline +% to baseline. +% 0pt means it depends on current normal line spacing. +% +\newskip\multitableparskip +\newskip\multitableparindent +\newdimen\multitablecolspace +\newskip\multitablelinespace +\multitableparskip=0pt +\multitableparindent=6pt +\multitablecolspace=12pt +\multitablelinespace=0pt + +% Macros used to set up halign preamble: +% +\let\endsetuptable\relax +\def\xendsetuptable{\endsetuptable} +\let\columnfractions\relax +\def\xcolumnfractions{\columnfractions} +\newif\ifsetpercent + +% #1 is the @columnfraction, usually a decimal number like .5, but might +% be just 1. We just use it, whatever it is. +% +\def\pickupwholefraction#1 {% + \global\advance\colcount by 1 + \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}% + \setuptable +} + +\newcount\colcount +\def\setuptable#1{% + \def\firstarg{#1}% + \ifx\firstarg\xendsetuptable + \let\go = \relax + \else + \ifx\firstarg\xcolumnfractions + \global\setpercenttrue + \else + \ifsetpercent + \let\go\pickupwholefraction + \else + \global\advance\colcount by 1 + \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a + % separator; typically that is always in the input, anyway. + \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}% + \fi + \fi + \ifx\go\pickupwholefraction + % Put the argument back for the \pickupwholefraction call, so + % we'll always have a period there to be parsed. + \def\go{\pickupwholefraction#1}% + \else + \let\go = \setuptable + \fi% + \fi + \go +} + +% multitable-only commands. +% +% @headitem starts a heading row, which we typeset in bold. +% Assignments have to be global since we are inside the implicit group +% of an alignment entry. Note that \everycr resets \everytab. +\def\headitem{\checkenv\multitable \crcr \global\everytab={\bf}\the\everytab}% +% +% A \tab used to include \hskip1sp. But then the space in a template +% line is not enough. That is bad. So let's go back to just `&' until +% we encounter the problem it was intended to solve again. +% --karl, nathan@acm.org, 20apr99. +\def\tab{\checkenv\multitable &\the\everytab}% + +% @multitable ... @end multitable definitions: +% +\newtoks\everytab % insert after every tab. +% +\envdef\multitable{% + \vskip\parskip + \startsavinginserts + % + % @item within a multitable starts a normal row. + % We use \def instead of \let so that if one of the multitable entries + % contains an @itemize, we don't choke on the \item (seen as \crcr aka + % \endtemplate) expanding \doitemize. + \def\item{\crcr}% + % + \tolerance=9500 + \hbadness=9500 + \setmultitablespacing + \parskip=\multitableparskip + \parindent=\multitableparindent + \overfullrule=0pt + \global\colcount=0 + % + \everycr = {% + \noalign{% + \global\everytab={}% + \global\colcount=0 % Reset the column counter. + % Check for saved footnotes, etc. + \checkinserts + % Keeps underfull box messages off when table breaks over pages. + %\filbreak + % Maybe so, but it also creates really weird page breaks when the + % table breaks over pages. Wouldn't \vfil be better? Wait until the + % problem manifests itself, so it can be fixed for real --karl. + }% + }% + % + \parsearg\domultitable +} +\def\domultitable#1{% + % To parse everything between @multitable and @item: + \setuptable#1 \endsetuptable + % + % This preamble sets up a generic column definition, which will + % be used as many times as user calls for columns. + % \vtop will set a single line and will also let text wrap and + % continue for many paragraphs if desired. + \halign\bgroup &% + \global\advance\colcount by 1 + \multistrut + \vtop{% + % Use the current \colcount to find the correct column width: + \hsize=\expandafter\csname col\the\colcount\endcsname + % + % In order to keep entries from bumping into each other + % we will add a \leftskip of \multitablecolspace to all columns after + % the first one. + % + % If a template has been used, we will add \multitablecolspace + % to the width of each template entry. + % + % If the user has set preamble in terms of percent of \hsize we will + % use that dimension as the width of the column, and the \leftskip + % will keep entries from bumping into each other. Table will start at + % left margin and final column will justify at right margin. + % + % Make sure we don't inherit \rightskip from the outer environment. + \rightskip=0pt + \ifnum\colcount=1 + % The first column will be indented with the surrounding text. + \advance\hsize by\leftskip + \else + \ifsetpercent \else + % If user has not set preamble in terms of percent of \hsize + % we will advance \hsize by \multitablecolspace. + \advance\hsize by \multitablecolspace + \fi + % In either case we will make \leftskip=\multitablecolspace: + \leftskip=\multitablecolspace + \fi + % Ignoring space at the beginning and end avoids an occasional spurious + % blank line, when TeX decides to break the line at the space before the + % box from the multistrut, so the strut ends up on a line by itself. + % For example: + % @multitable @columnfractions .11 .89 + % @item @code{#} + % @tab Legal holiday which is valid in major parts of the whole country. + % Is automatically provided with highlighting sequences respectively + % marking characters. + \noindent\ignorespaces##\unskip\multistrut + }\cr +} +\def\Emultitable{% + \crcr + \egroup % end the \halign + \global\setpercentfalse +} + +\def\setmultitablespacing{% + \def\multistrut{\strut}% just use the standard line spacing + % + % Compute \multitablelinespace (if not defined by user) for use in + % \multitableparskip calculation. We used define \multistrut based on + % this, but (ironically) that caused the spacing to be off. + % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100. +\ifdim\multitablelinespace=0pt +\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip +\global\advance\multitablelinespace by-\ht0 +\fi +%% Test to see if parskip is larger than space between lines of +%% table. If not, do nothing. +%% If so, set to same dimension as multitablelinespace. +\ifdim\multitableparskip>\multitablelinespace +\global\multitableparskip=\multitablelinespace +\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller + %% than skip between lines in the table. +\fi% +\ifdim\multitableparskip=0pt +\global\multitableparskip=\multitablelinespace +\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller + %% than skip between lines in the table. +\fi} + + +\message{conditionals,} + +% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext, +% @ifnotxml always succeed. They currently do nothing; we don't +% attempt to check whether the conditionals are properly nested. But we +% have to remember that they are conditionals, so that @end doesn't +% attempt to close an environment group. +% +\def\makecond#1{% + \expandafter\let\csname #1\endcsname = \relax + \expandafter\let\csname iscond.#1\endcsname = 1 +} +\makecond{iftex} +\makecond{ifnotdocbook} +\makecond{ifnothtml} +\makecond{ifnotinfo} +\makecond{ifnotplaintext} +\makecond{ifnotxml} + +% Ignore @ignore, @ifhtml, @ifinfo, and the like. +% +\def\direntry{\doignore{direntry}} +\def\documentdescription{\doignore{documentdescription}} +\def\docbook{\doignore{docbook}} +\def\html{\doignore{html}} +\def\ifdocbook{\doignore{ifdocbook}} +\def\ifhtml{\doignore{ifhtml}} +\def\ifinfo{\doignore{ifinfo}} +\def\ifnottex{\doignore{ifnottex}} +\def\ifplaintext{\doignore{ifplaintext}} +\def\ifxml{\doignore{ifxml}} +\def\ignore{\doignore{ignore}} +\def\menu{\doignore{menu}} +\def\xml{\doignore{xml}} + +% Ignore text until a line `@end #1', keeping track of nested conditionals. +% +% A count to remember the depth of nesting. +\newcount\doignorecount + +\def\doignore#1{\begingroup + % Scan in ``verbatim'' mode: + \catcode`\@ = \other + \catcode`\{ = \other + \catcode`\} = \other + % + % Make sure that spaces turn into tokens that match what \doignoretext wants. + \spaceisspace + % + % Count number of #1's that we've seen. + \doignorecount = 0 + % + % Swallow text until we reach the matching `@end #1'. + \dodoignore{#1}% +} + +{ \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source. + \obeylines % + % + \gdef\dodoignore#1{% + % #1 contains the command name as a string, e.g., `ifinfo'. + % + % Define a command to find the next `@end #1', which must be on a line + % by itself. + \long\def\doignoretext##1^^M@end #1{\doignoretextyyy##1^^M@#1\_STOP_}% + % And this command to find another #1 command, at the beginning of a + % line. (Otherwise, we would consider a line `@c @ifset', for + % example, to count as an @ifset for nesting.) + \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}% + % + % And now expand that command. + \obeylines % + \doignoretext ^^M% + }% +} + +\def\doignoreyyy#1{% + \def\temp{#1}% + \ifx\temp\empty % Nothing found. + \let\next\doignoretextzzz + \else % Found a nested condition, ... + \advance\doignorecount by 1 + \let\next\doignoretextyyy % ..., look for another. + % If we're here, #1 ends with ^^M\ifinfo (for example). + \fi + \next #1% the token \_STOP_ is present just after this macro. +} + +% We have to swallow the remaining "\_STOP_". +% +\def\doignoretextzzz#1{% + \ifnum\doignorecount = 0 % We have just found the outermost @end. + \let\next\enddoignore + \else % Still inside a nested condition. + \advance\doignorecount by -1 + \let\next\doignoretext % Look for the next @end. + \fi + \next +} + +% Finish off ignored text. +\def\enddoignore{\endgroup\ignorespaces} + + +% @set VAR sets the variable VAR to an empty value. +% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE. +% +% Since we want to separate VAR from REST-OF-LINE (which might be +% empty), we can't just use \parsearg; we have to insert a space of our +% own to delimit the rest of the line, and then take it out again if we +% didn't need it. +% We rely on the fact that \parsearg sets \catcode`\ =10. +% +\parseargdef\set{\setyyy#1 \endsetyyy} +\def\setyyy#1 #2\endsetyyy{% + {% + \makevalueexpandable + \def\temp{#2}% + \edef\next{\gdef\makecsname{SET#1}}% + \ifx\temp\empty + \next{}% + \else + \setzzz#2\endsetzzz + \fi + }% +} +% Remove the trailing space \setxxx inserted. +\def\setzzz#1 \endsetzzz{\next{#1}} + +% @clear VAR clears (i.e., unsets) the variable VAR. +% +\parseargdef\clear{% + {% + \makevalueexpandable + \global\expandafter\let\csname SET#1\endcsname=\relax + }% +} + +% @value{foo} gets the text saved in variable foo. +\def\value{\begingroup\makevalueexpandable\valuexxx} +\def\valuexxx#1{\expandablevalue{#1}\endgroup} +{ + \catcode`\- = \active \catcode`\_ = \active + % + \gdef\makevalueexpandable{% + \let\value = \expandablevalue + % We don't want these characters active, ... + \catcode`\-=\other \catcode`\_=\other + % ..., but we might end up with active ones in the argument if + % we're called from @code, as @code{@value{foo-bar_}}, though. + % So \let them to their normal equivalents. + \let-\realdash \let_\normalunderscore + } +} + +% We have this subroutine so that we can handle at least some @value's +% properly in indexes (we call \makevalueexpandable in \indexdummies). +% The command has to be fully expandable (if the variable is set), since +% the result winds up in the index file. This means that if the +% variable's value contains other Texinfo commands, it's almost certain +% it will fail (although perhaps we could fix that with sufficient work +% to do a one-level expansion on the result, instead of complete). +% +\def\expandablevalue#1{% + \expandafter\ifx\csname SET#1\endcsname\relax + {[No value for ``#1'']}% + \message{Variable `#1', used in @value, is not set.}% + \else + \csname SET#1\endcsname + \fi +} + +% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined +% with @set. +% +% To get special treatment of `@end ifset,' call \makeond and the redefine. +% +\makecond{ifset} +\def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}} +\def\doifset#1#2{% + {% + \makevalueexpandable + \let\next=\empty + \expandafter\ifx\csname SET#2\endcsname\relax + #1% If not set, redefine \next. + \fi + \expandafter + }\next +} +\def\ifsetfail{\doignore{ifset}} + +% @ifclear VAR ... @end ifclear reads the `...' iff VAR has never been +% defined with @set, or has been undefined with @clear. +% +% The `\else' inside the `\doifset' parameter is a trick to reuse the +% above code: if the variable is not set, do nothing, if it is set, +% then redefine \next to \ifclearfail. +% +\makecond{ifclear} +\def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}} +\def\ifclearfail{\doignore{ifclear}} + +% @dircategory CATEGORY -- specify a category of the dir file +% which this file should belong to. Ignore this in TeX. +\let\dircategory=\comment + +% @defininfoenclose. +\let\definfoenclose=\comment + + +\message{indexing,} +% Index generation facilities + +% Define \newwrite to be identical to plain tex's \newwrite +% except not \outer, so it can be used within macros and \if's. +\edef\newwrite{\makecsname{ptexnewwrite}} + +% \newindex {foo} defines an index named foo. +% It automatically defines \fooindex such that +% \fooindex ...rest of line... puts an entry in the index foo. +% It also defines \fooindfile to be the number of the output channel for +% the file that accumulates this index. The file's extension is foo. +% The name of an index should be no more than 2 characters long +% for the sake of vms. +% +\def\newindex#1{% + \iflinks + \expandafter\newwrite \csname#1indfile\endcsname + \openout \csname#1indfile\endcsname \jobname.#1 % Open the file + \fi + \expandafter\xdef\csname#1index\endcsname{% % Define @#1index + \noexpand\doindex{#1}} +} + +% @defindex foo == \newindex{foo} +% +\def\defindex{\parsearg\newindex} + +% Define @defcodeindex, like @defindex except put all entries in @code. +% +\def\defcodeindex{\parsearg\newcodeindex} +% +\def\newcodeindex#1{% + \iflinks + \expandafter\newwrite \csname#1indfile\endcsname + \openout \csname#1indfile\endcsname \jobname.#1 + \fi + \expandafter\xdef\csname#1index\endcsname{% + \noexpand\docodeindex{#1}}% +} + + +% @synindex foo bar makes index foo feed into index bar. +% Do this instead of @defindex foo if you don't want it as a separate index. +% +% @syncodeindex foo bar similar, but put all entries made for index foo +% inside @code. +% +\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}} +\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}} + +% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo), +% #3 the target index (bar). +\def\dosynindex#1#2#3{% + % Only do \closeout if we haven't already done it, else we'll end up + % closing the target index. + \expandafter \ifx\csname donesynindex#2\endcsname \undefined + % The \closeout helps reduce unnecessary open files; the limit on the + % Acorn RISC OS is a mere 16 files. + \expandafter\closeout\csname#2indfile\endcsname + \expandafter\let\csname\donesynindex#2\endcsname = 1 + \fi + % redefine \fooindfile: + \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname + \expandafter\let\csname#2indfile\endcsname=\temp + % redefine \fooindex: + \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}% +} + +% Define \doindex, the driver for all \fooindex macros. +% Argument #1 is generated by the calling \fooindex macro, +% and it is "foo", the name of the index. + +% \doindex just uses \parsearg; it calls \doind for the actual work. +% This is because \doind is more useful to call from other macros. + +% There is also \dosubind {index}{topic}{subtopic} +% which makes an entry in a two-level index such as the operation index. + +\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer} +\def\singleindexer #1{\doind{\indexname}{#1}} + +% like the previous two, but they put @code around the argument. +\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer} +\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}} + +% Take care of Texinfo commands that can appear in an index entry. +% Since there are some commands we want to expand, and others we don't, +% we have to laboriously prevent expansion for those that we don't. +% +\def\indexdummies{% + \def\@{@}% change to @@ when we switch to @ as escape char in index files. + \def\ {\realbackslash\space }% + % Need these in case \tex is in effect and \{ is a \delimiter again. + % But can't use \lbracecmd and \rbracecmd because texindex assumes + % braces and backslashes are used only as delimiters. + \let\{ = \mylbrace + \let\} = \myrbrace + % + % \definedummyword defines \#1 as \realbackslash #1\space, thus + % effectively preventing its expansion. This is used only for control + % words, not control letters, because the \space would be incorrect + % for control characters, but is needed to separate the control word + % from whatever follows. + % + % For control letters, we have \definedummyletter, which omits the + % space. + % + % These can be used both for control words that take an argument and + % those that do not. If it is followed by {arg} in the input, then + % that will dutifully get written to the index (or wherever). + % + \def\definedummyword##1{% + \expandafter\def\csname ##1\endcsname{\realbackslash ##1\space}% + }% + \def\definedummyletter##1{% + \expandafter\def\csname ##1\endcsname{\realbackslash ##1}% + }% + \let\definedummyaccent\definedummyletter + % + % Do the redefinitions. + \commondummies +} + +% For the aux file, @ is the escape character. So we want to redefine +% everything using @ instead of \realbackslash. When everything uses +% @, this will be simpler. +% +\def\atdummies{% + \def\@{@@}% + \def\ {@ }% + \let\{ = \lbraceatcmd + \let\} = \rbraceatcmd + % + % (See comments in \indexdummies.) + \def\definedummyword##1{% + \expandafter\def\csname ##1\endcsname{@##1\space}% + }% + \def\definedummyletter##1{% + \expandafter\def\csname ##1\endcsname{@##1}% + }% + \let\definedummyaccent\definedummyletter + % + % Do the redefinitions. + \commondummies +} + +% Called from \indexdummies and \atdummies. \definedummyword and +% \definedummyletter must be defined first. +% +\def\commondummies{% + % + \normalturnoffactive + % + \commondummiesnofonts + % + \definedummyletter{_}% + % + % Non-English letters. + \definedummyword{AA}% + \definedummyword{AE}% + \definedummyword{L}% + \definedummyword{OE}% + \definedummyword{O}% + \definedummyword{aa}% + \definedummyword{ae}% + \definedummyword{l}% + \definedummyword{oe}% + \definedummyword{o}% + \definedummyword{ss}% + \definedummyword{exclamdown}% + \definedummyword{questiondown}% + \definedummyword{ordf}% + \definedummyword{ordm}% + % + % Although these internal commands shouldn't show up, sometimes they do. + \definedummyword{bf}% + \definedummyword{gtr}% + \definedummyword{hat}% + \definedummyword{less}% + \definedummyword{sf}% + \definedummyword{sl}% + \definedummyword{tclose}% + \definedummyword{tt}% + % + \definedummyword{LaTeX}% + \definedummyword{TeX}% + % + % Assorted special characters. + \definedummyword{bullet}% + \definedummyword{comma}% + \definedummyword{copyright}% + \definedummyword{registeredsymbol}% + \definedummyword{dots}% + \definedummyword{enddots}% + \definedummyword{equiv}% + \definedummyword{error}% + \definedummyword{euro}% + \definedummyword{expansion}% + \definedummyword{minus}% + \definedummyword{pounds}% + \definedummyword{point}% + \definedummyword{print}% + \definedummyword{result}% + % + % Handle some cases of @value -- where it does not contain any + % (non-fully-expandable) commands. + \makevalueexpandable + % + % Normal spaces, not active ones. + \unsepspaces + % + % No macro expansion. + \turnoffmacros +} + +% \commondummiesnofonts: common to \commondummies and \indexnofonts. +% +% Better have this without active chars. +{ + \catcode`\~=\other + \gdef\commondummiesnofonts{% + % Control letters and accents. + \definedummyletter{!}% + \definedummyaccent{"}% + \definedummyaccent{'}% + \definedummyletter{*}% + \definedummyaccent{,}% + \definedummyletter{.}% + \definedummyletter{/}% + \definedummyletter{:}% + \definedummyaccent{=}% + \definedummyletter{?}% + \definedummyaccent{^}% + \definedummyaccent{`}% + \definedummyaccent{~}% + \definedummyword{u}% + \definedummyword{v}% + \definedummyword{H}% + \definedummyword{dotaccent}% + \definedummyword{ringaccent}% + \definedummyword{tieaccent}% + \definedummyword{ubaraccent}% + \definedummyword{udotaccent}% + \definedummyword{dotless}% + % + % Texinfo font commands. + \definedummyword{b}% + \definedummyword{i}% + \definedummyword{r}% + \definedummyword{sc}% + \definedummyword{t}% + % + % Commands that take arguments. + \definedummyword{acronym}% + \definedummyword{cite}% + \definedummyword{code}% + \definedummyword{command}% + \definedummyword{dfn}% + \definedummyword{emph}% + \definedummyword{env}% + \definedummyword{file}% + \definedummyword{kbd}% + \definedummyword{key}% + \definedummyword{math}% + \definedummyword{option}% + \definedummyword{samp}% + \definedummyword{strong}% + \definedummyword{tie}% + \definedummyword{uref}% + \definedummyword{url}% + \definedummyword{var}% + \definedummyword{verb}% + \definedummyword{w}% + } +} + +% \indexnofonts is used when outputting the strings to sort the index +% by, and when constructing control sequence names. It eliminates all +% control sequences and just writes whatever the best ASCII sort string +% would be for a given command (usually its argument). +% +\def\indexnofonts{% + % Accent commands should become @asis. + \def\definedummyaccent##1{% + \expandafter\let\csname ##1\endcsname\asis + }% + % We can just ignore other control letters. + \def\definedummyletter##1{% + \expandafter\def\csname ##1\endcsname{}% + }% + % Hopefully, all control words can become @asis. + \let\definedummyword\definedummyaccent + % + \commondummiesnofonts + % + % Don't no-op \tt, since it isn't a user-level command + % and is used in the definitions of the active chars like <, >, |, etc. + % Likewise with the other plain tex font commands. + %\let\tt=\asis + % + \def\ { }% + \def\@{@}% + % how to handle braces? + \def\_{\normalunderscore}% + % + % Non-English letters. + \def\AA{AA}% + \def\AE{AE}% + \def\L{L}% + \def\OE{OE}% + \def\O{O}% + \def\aa{aa}% + \def\ae{ae}% + \def\l{l}% + \def\oe{oe}% + \def\o{o}% + \def\ss{ss}% + \def\exclamdown{!}% + \def\questiondown{?}% + \def\ordf{a}% + \def\ordm{o}% + % + \def\LaTeX{LaTeX}% + \def\TeX{TeX}% + % + % Assorted special characters. + % (The following {} will end up in the sort string, but that's ok.) + \def\bullet{bullet}% + \def\comma{,}% + \def\copyright{copyright}% + \def\registeredsymbol{R}% + \def\dots{...}% + \def\enddots{...}% + \def\equiv{==}% + \def\error{error}% + \def\euro{euro}% + \def\expansion{==>}% + \def\minus{-}% + \def\pounds{pounds}% + \def\point{.}% + \def\print{-|}% + \def\result{=>}% + % + % Don't write macro names. + \emptyusermacros +} + +\let\indexbackslash=0 %overridden during \printindex. +\let\SETmarginindex=\relax % put index entries in margin (undocumented)? + +% Most index entries go through here, but \dosubind is the general case. +% #1 is the index name, #2 is the entry text. +\def\doind#1#2{\dosubind{#1}{#2}{}} + +% Workhorse for all \fooindexes. +% #1 is name of index, #2 is stuff to put there, #3 is subentry -- +% empty if called from \doind, as we usually are (the main exception +% is with most defuns, which call us directly). +% +\def\dosubind#1#2#3{% + \iflinks + {% + % Store the main index entry text (including the third arg). + \toks0 = {#2}% + % If third arg is present, precede it with a space. + \def\thirdarg{#3}% + \ifx\thirdarg\empty \else + \toks0 = \expandafter{\the\toks0 \space #3}% + \fi + % + \edef\writeto{\csname#1indfile\endcsname}% + % + \ifvmode + \dosubindsanitize + \else + \dosubindwrite + \fi + }% + \fi +} + +% Write the entry in \toks0 to the index file: +% +\def\dosubindwrite{% + % Put the index entry in the margin if desired. + \ifx\SETmarginindex\relax\else + \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}% + \fi + % + % Remember, we are within a group. + \indexdummies % Must do this here, since \bf, etc expand at this stage + \escapechar=`\\ + \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now + % so it will be output as is; and it will print as backslash. + % + % Process the index entry with all font commands turned off, to + % get the string to sort by. + {\indexnofonts + \edef\temp{\the\toks0}% need full expansion + \xdef\indexsorttmp{\temp}% + }% + % + % Set up the complete index entry, with both the sort key and + % the original text, including any font commands. We write + % three arguments to \entry to the .?? file (four in the + % subentry case), texindex reduces to two when writing the .??s + % sorted result. + \edef\temp{% + \write\writeto{% + \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}% + }% + \temp +} + +% Take care of unwanted page breaks: +% +% If a skip is the last thing on the list now, preserve it +% by backing up by \lastskip, doing the \write, then inserting +% the skip again. Otherwise, the whatsit generated by the +% \write will make \lastskip zero. The result is that sequences +% like this: +% @end defun +% @tindex whatever +% @defun ... +% will have extra space inserted, because the \medbreak in the +% start of the @defun won't see the skip inserted by the @end of +% the previous defun. +% +% But don't do any of this if we're not in vertical mode. We +% don't want to do a \vskip and prematurely end a paragraph. +% +% Avoid page breaks due to these extra skips, too. +% +% But wait, there is a catch there: +% We'll have to check whether \lastskip is zero skip. \ifdim is not +% sufficient for this purpose, as it ignores stretch and shrink parts +% of the skip. The only way seems to be to check the textual +% representation of the skip. +% +% The following is almost like \def\zeroskipmacro{0.0pt} except that +% the ``p'' and ``t'' characters have catcode \other, not 11 (letter). +% +\edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname} +% +% ..., ready, GO: +% +\def\dosubindsanitize{% + % \lastskip and \lastpenalty cannot both be nonzero simultaneously. + \skip0 = \lastskip + \edef\lastskipmacro{\the\lastskip}% + \count255 = \lastpenalty + % + % If \lastskip is nonzero, that means the last item was a + % skip. And since a skip is discardable, that means this + % -\skip0 glue we're inserting is preceded by a + % non-discardable item, therefore it is not a potential + % breakpoint, therefore no \nobreak needed. + \ifx\lastskipmacro\zeroskipmacro + \else + \vskip-\skip0 + \fi + % + \dosubindwrite + % + \ifx\lastskipmacro\zeroskipmacro + % If \lastskip was zero, perhaps the last item was a penalty, and + % perhaps it was >=10000, e.g., a \nobreak. In that case, we want + % to re-insert the same penalty (values >10000 are used for various + % signals); since we just inserted a non-discardable item, any + % following glue (such as a \parskip) would be a breakpoint. For example: + % + % @deffn deffn-whatever + % @vindex index-whatever + % Description. + % would allow a break between the index-whatever whatsit + % and the "Description." paragraph. + \ifnum\count255>9999 \penalty\count255 \fi + \else + % On the other hand, if we had a nonzero \lastskip, + % this make-up glue would be preceded by a non-discardable item + % (the whatsit from the \write), so we must insert a \nobreak. + \nobreak\vskip\skip0 + \fi +} + +% The index entry written in the file actually looks like +% \entry {sortstring}{page}{topic} +% or +% \entry {sortstring}{page}{topic}{subtopic} +% The texindex program reads in these files and writes files +% containing these kinds of lines: +% \initial {c} +% before the first topic whose initial is c +% \entry {topic}{pagelist} +% for a topic that is used without subtopics +% \primary {topic} +% for the beginning of a topic that is used with subtopics +% \secondary {subtopic}{pagelist} +% for each subtopic. + +% Define the user-accessible indexing commands +% @findex, @vindex, @kindex, @cindex. + +\def\findex {\fnindex} +\def\kindex {\kyindex} +\def\cindex {\cpindex} +\def\vindex {\vrindex} +\def\tindex {\tpindex} +\def\pindex {\pgindex} + +\def\cindexsub {\begingroup\obeylines\cindexsub} +{\obeylines % +\gdef\cindexsub "#1" #2^^M{\endgroup % +\dosubind{cp}{#2}{#1}}} + +% Define the macros used in formatting output of the sorted index material. + +% @printindex causes a particular index (the ??s file) to get printed. +% It does not print any chapter heading (usually an @unnumbered). +% +\parseargdef\printindex{\begingroup + \dobreak \chapheadingskip{10000}% + % + \smallfonts \rm + \tolerance = 9500 + \everypar = {}% don't want the \kern\-parindent from indentation suppression. + % + % See if the index file exists and is nonempty. + % Change catcode of @ here so that if the index file contains + % \initial {@} + % as its first line, TeX doesn't complain about mismatched braces + % (because it thinks @} is a control sequence). + \catcode`\@ = 11 + \openin 1 \jobname.#1s + \ifeof 1 + % \enddoublecolumns gets confused if there is no text in the index, + % and it loses the chapter title and the aux file entries for the + % index. The easiest way to prevent this problem is to make sure + % there is some text. + \putwordIndexNonexistent + \else + % + % If the index file exists but is empty, then \openin leaves \ifeof + % false. We have to make TeX try to read something from the file, so + % it can discover if there is anything in it. + \read 1 to \temp + \ifeof 1 + \putwordIndexIsEmpty + \else + % Index files are almost Texinfo source, but we use \ as the escape + % character. It would be better to use @, but that's too big a change + % to make right now. + \def\indexbackslash{\backslashcurfont}% + \catcode`\\ = 0 + \escapechar = `\\ + \begindoublecolumns + \input \jobname.#1s + \enddoublecolumns + \fi + \fi + \closein 1 +\endgroup} + +% These macros are used by the sorted index file itself. +% Change them to control the appearance of the index. + +\def\initial#1{{% + % Some minor font changes for the special characters. + \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt + % + % Remove any glue we may have, we'll be inserting our own. + \removelastskip + % + % We like breaks before the index initials, so insert a bonus. + \nobreak + \vskip 0pt plus 3\baselineskip + \penalty 0 + \vskip 0pt plus -3\baselineskip + % + % Typeset the initial. Making this add up to a whole number of + % baselineskips increases the chance of the dots lining up from column + % to column. It still won't often be perfect, because of the stretch + % we need before each entry, but it's better. + % + % No shrink because it confuses \balancecolumns. + \vskip 1.67\baselineskip plus .5\baselineskip + \leftline{\secbf #1}% + % Do our best not to break after the initial. + \nobreak + \vskip .33\baselineskip plus .1\baselineskip +}} + +% \entry typesets a paragraph consisting of the text (#1), dot leaders, and +% then page number (#2) flushed to the right margin. It is used for index +% and table of contents entries. The paragraph is indented by \leftskip. +% +% A straightforward implementation would start like this: +% \def\entry#1#2{... +% But this frozes the catcodes in the argument, and can cause problems to +% @code, which sets - active. This problem was fixed by a kludge--- +% ``-'' was active throughout whole index, but this isn't really right. +% +% The right solution is to prevent \entry from swallowing the whole text. +% --kasal, 21nov03 +\def\entry{% + \begingroup + % + % Start a new paragraph if necessary, so our assignments below can't + % affect previous text. + \par + % + % Do not fill out the last line with white space. + \parfillskip = 0in + % + % No extra space above this paragraph. + \parskip = 0in + % + % Do not prefer a separate line ending with a hyphen to fewer lines. + \finalhyphendemerits = 0 + % + % \hangindent is only relevant when the entry text and page number + % don't both fit on one line. In that case, bob suggests starting the + % dots pretty far over on the line. Unfortunately, a large + % indentation looks wrong when the entry text itself is broken across + % lines. So we use a small indentation and put up with long leaders. + % + % \hangafter is reset to 1 (which is the value we want) at the start + % of each paragraph, so we need not do anything with that. + \hangindent = 2em + % + % When the entry text needs to be broken, just fill out the first line + % with blank space. + \rightskip = 0pt plus1fil + % + % A bit of stretch before each entry for the benefit of balancing + % columns. + \vskip 0pt plus1pt + % + % Swallow the left brace of the text (first parameter): + \afterassignment\doentry + \let\temp = +} +\def\doentry{% + \bgroup % Instead of the swallowed brace. + \noindent + \aftergroup\finishentry + % And now comes the text of the entry. +} +\def\finishentry#1{% + % #1 is the page number. + % + % The following is kludged to not output a line of dots in the index if + % there are no page numbers. The next person who breaks this will be + % cursed by a Unix daemon. + \def\tempa{{\rm }}% + \def\tempb{#1}% + \edef\tempc{\tempa}% + \edef\tempd{\tempb}% + \ifx\tempc\tempd + \ % + \else + % + % If we must, put the page number on a line of its own, and fill out + % this line with blank space. (The \hfil is overwhelmed with the + % fill leaders glue in \indexdotfill if the page number does fit.) + \hfil\penalty50 + \null\nobreak\indexdotfill % Have leaders before the page number. + % + % The `\ ' here is removed by the implicit \unskip that TeX does as + % part of (the primitive) \par. Without it, a spurious underfull + % \hbox ensues. + \ifpdf + \pdfgettoks#1.% + \ \the\toksA + \else + \ #1% + \fi + \fi + \par + \endgroup +} + +% Like \dotfill except takes at least 1 em. +\def\indexdotfill{\cleaders + \hbox{$\mathsurround=0pt \mkern1.5mu ${\it .}$ \mkern1.5mu$}\hskip 1em plus 1fill} + +\def\primary #1{\line{#1\hfil}} + +\newskip\secondaryindent \secondaryindent=0.5cm +\def\secondary#1#2{{% + \parfillskip=0in + \parskip=0in + \hangindent=1in + \hangafter=1 + \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill + \ifpdf + \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. + \else + #2 + \fi + \par +}} + +% Define two-column mode, which we use to typeset indexes. +% Adapted from the TeXbook, page 416, which is to say, +% the manmac.tex format used to print the TeXbook itself. +\catcode`\@=11 + +\newbox\partialpage +\newdimen\doublecolumnhsize + +\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns + % Grab any single-column material above us. + \output = {% + % + % Here is a possibility not foreseen in manmac: if we accumulate a + % whole lot of material, we might end up calling this \output + % routine twice in a row (see the doublecol-lose test, which is + % essentially a couple of indexes with @setchapternewpage off). In + % that case we just ship out what is in \partialpage with the normal + % output routine. Generally, \partialpage will be empty when this + % runs and this will be a no-op. See the indexspread.tex test case. + \ifvoid\partialpage \else + \onepageout{\pagecontents\partialpage}% + \fi + % + \global\setbox\partialpage = \vbox{% + % Unvbox the main output page. + \unvbox\PAGE + \kern-\topskip \kern\baselineskip + }% + }% + \eject % run that output routine to set \partialpage + % + % Use the double-column output routine for subsequent pages. + \output = {\doublecolumnout}% + % + % Change the page size parameters. We could do this once outside this + % routine, in each of @smallbook, @afourpaper, and the default 8.5x11 + % format, but then we repeat the same computation. Repeating a couple + % of assignments once per index is clearly meaningless for the + % execution time, so we may as well do it in one place. + % + % First we halve the line length, less a little for the gutter between + % the columns. We compute the gutter based on the line length, so it + % changes automatically with the paper format. The magic constant + % below is chosen so that the gutter has the same value (well, +-<1pt) + % as it did when we hard-coded it. + % + % We put the result in a separate register, \doublecolumhsize, so we + % can restore it in \pagesofar, after \hsize itself has (potentially) + % been clobbered. + % + \doublecolumnhsize = \hsize + \advance\doublecolumnhsize by -.04154\hsize + \divide\doublecolumnhsize by 2 + \hsize = \doublecolumnhsize + % + % Double the \vsize as well. (We don't need a separate register here, + % since nobody clobbers \vsize.) + \vsize = 2\vsize +} + +% The double-column output routine for all double-column pages except +% the last. +% +\def\doublecolumnout{% + \splittopskip=\topskip \splitmaxdepth=\maxdepth + % Get the available space for the double columns -- the normal + % (undoubled) page height minus any material left over from the + % previous page. + \dimen@ = \vsize + \divide\dimen@ by 2 + \advance\dimen@ by -\ht\partialpage + % + % box0 will be the left-hand column, box2 the right. + \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@ + \onepageout\pagesofar + \unvbox255 + \penalty\outputpenalty +} +% +% Re-output the contents of the output page -- any previous material, +% followed by the two boxes we just split, in box0 and box2. +\def\pagesofar{% + \unvbox\partialpage + % + \hsize = \doublecolumnhsize + \wd0=\hsize \wd2=\hsize + \hbox to\pagewidth{\box0\hfil\box2}% +} +% +% All done with double columns. +\def\enddoublecolumns{% + \output = {% + % Split the last of the double-column material. Leave it on the + % current page, no automatic page break. + \balancecolumns + % + % If we end up splitting too much material for the current page, + % though, there will be another page break right after this \output + % invocation ends. Having called \balancecolumns once, we do not + % want to call it again. Therefore, reset \output to its normal + % definition right away. (We hope \balancecolumns will never be + % called on to balance too much material, but if it is, this makes + % the output somewhat more palatable.) + \global\output = {\onepageout{\pagecontents\PAGE}}% + }% + \eject + \endgroup % started in \begindoublecolumns + % + % \pagegoal was set to the doubled \vsize above, since we restarted + % the current page. We're now back to normal single-column + % typesetting, so reset \pagegoal to the normal \vsize (after the + % \endgroup where \vsize got restored). + \pagegoal = \vsize +} +% +% Called at the end of the double column material. +\def\balancecolumns{% + \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120. + \dimen@ = \ht0 + \advance\dimen@ by \topskip + \advance\dimen@ by-\baselineskip + \divide\dimen@ by 2 % target to split to + %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}% + \splittopskip = \topskip + % Loop until we get a decent breakpoint. + {% + \vbadness = 10000 + \loop + \global\setbox3 = \copy0 + \global\setbox1 = \vsplit3 to \dimen@ + \ifdim\ht3>\dimen@ + \global\advance\dimen@ by 1pt + \repeat + }% + %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}% + \setbox0=\vbox to\dimen@{\unvbox1}% + \setbox2=\vbox to\dimen@{\unvbox3}% + % + \pagesofar +} +\catcode`\@ = \other + + +\message{sectioning,} +% Chapters, sections, etc. + +% \unnumberedno is an oxymoron, of course. But we count the unnumbered +% sections so that we can refer to them unambiguously in the pdf +% outlines by their "section number". We avoid collisions with chapter +% numbers by starting them at 10000. (If a document ever has 10000 +% chapters, we're in trouble anyway, I'm sure.) +\newcount\unnumberedno \unnumberedno = 10000 +\newcount\chapno +\newcount\secno \secno=0 +\newcount\subsecno \subsecno=0 +\newcount\subsubsecno \subsubsecno=0 + +% This counter is funny since it counts through charcodes of letters A, B, ... +\newcount\appendixno \appendixno = `\@ +% +% \def\appendixletter{\char\the\appendixno} +% We do the following ugly conditional instead of the above simple +% construct for the sake of pdftex, which needs the actual +% letter in the expansion, not just typeset. +% +\def\appendixletter{% + \ifnum\appendixno=`A A% + \else\ifnum\appendixno=`B B% + \else\ifnum\appendixno=`C C% + \else\ifnum\appendixno=`D D% + \else\ifnum\appendixno=`E E% + \else\ifnum\appendixno=`F F% + \else\ifnum\appendixno=`G G% + \else\ifnum\appendixno=`H H% + \else\ifnum\appendixno=`I I% + \else\ifnum\appendixno=`J J% + \else\ifnum\appendixno=`K K% + \else\ifnum\appendixno=`L L% + \else\ifnum\appendixno=`M M% + \else\ifnum\appendixno=`N N% + \else\ifnum\appendixno=`O O% + \else\ifnum\appendixno=`P P% + \else\ifnum\appendixno=`Q Q% + \else\ifnum\appendixno=`R R% + \else\ifnum\appendixno=`S S% + \else\ifnum\appendixno=`T T% + \else\ifnum\appendixno=`U U% + \else\ifnum\appendixno=`V V% + \else\ifnum\appendixno=`W W% + \else\ifnum\appendixno=`X X% + \else\ifnum\appendixno=`Y Y% + \else\ifnum\appendixno=`Z Z% + % The \the is necessary, despite appearances, because \appendixletter is + % expanded while writing the .toc file. \char\appendixno is not + % expandable, thus it is written literally, thus all appendixes come out + % with the same letter (or @) in the toc without it. + \else\char\the\appendixno + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} + +% Each @chapter defines this as the name of the chapter. +% page headings and footings can use it. @section does likewise. +% However, they are not reliable, because we don't use marks. +\def\thischapter{} +\def\thissection{} + +\newcount\absseclevel % used to calculate proper heading level +\newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count + +% @raisesections: treat @section as chapter, @subsection as section, etc. +\def\raisesections{\global\advance\secbase by -1} +\let\up=\raisesections % original BFox name + +% @lowersections: treat @chapter as section, @section as subsection, etc. +\def\lowersections{\global\advance\secbase by 1} +\let\down=\lowersections % original BFox name + +% we only have subsub. +\chardef\maxseclevel = 3 +% +% A numbered section within an unnumbered changes to unnumbered too. +% To achive this, remember the "biggest" unnum. sec. we are currently in: +\chardef\unmlevel = \maxseclevel +% +% Trace whether the current chapter is an appendix or not: +% \chapheadtype is "N" or "A", unnumbered chapters are ignored. +\def\chapheadtype{N} + +% Choose a heading macro +% #1 is heading type +% #2 is heading level +% #3 is text for heading +\def\genhead#1#2#3{% + % Compute the abs. sec. level: + \absseclevel=#2 + \advance\absseclevel by \secbase + % Make sure \absseclevel doesn't fall outside the range: + \ifnum \absseclevel < 0 + \absseclevel = 0 + \else + \ifnum \absseclevel > 3 + \absseclevel = 3 + \fi + \fi + % The heading type: + \def\headtype{#1}% + \if \headtype U% + \ifnum \absseclevel < \unmlevel + \chardef\unmlevel = \absseclevel + \fi + \else + % Check for appendix sections: + \ifnum \absseclevel = 0 + \edef\chapheadtype{\headtype}% + \else + \if \headtype A\if \chapheadtype N% + \errmessage{@appendix... within a non-appendix chapter}% + \fi\fi + \fi + % Check for numbered within unnumbered: + \ifnum \absseclevel > \unmlevel + \def\headtype{U}% + \else + \chardef\unmlevel = 3 + \fi + \fi + % Now print the heading: + \if \headtype U% + \ifcase\absseclevel + \unnumberedzzz{#3}% + \or \unnumberedseczzz{#3}% + \or \unnumberedsubseczzz{#3}% + \or \unnumberedsubsubseczzz{#3}% + \fi + \else + \if \headtype A% + \ifcase\absseclevel + \appendixzzz{#3}% + \or \appendixsectionzzz{#3}% + \or \appendixsubseczzz{#3}% + \or \appendixsubsubseczzz{#3}% + \fi + \else + \ifcase\absseclevel + \chapterzzz{#3}% + \or \seczzz{#3}% + \or \numberedsubseczzz{#3}% + \or \numberedsubsubseczzz{#3}% + \fi + \fi + \fi + \suppressfirstparagraphindent +} + +% an interface: +\def\numhead{\genhead N} +\def\apphead{\genhead A} +\def\unnmhead{\genhead U} + +% @chapter, @appendix, @unnumbered. Increment top-level counter, reset +% all lower-level sectioning counters to zero. +% +% Also set \chaplevelprefix, which we prepend to @float sequence numbers +% (e.g., figures), q.v. By default (before any chapter), that is empty. +\let\chaplevelprefix = \empty +% +\outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz +\def\chapterzzz#1{% + % section resetting is \global in case the chapter is in a group, such + % as an @include file. + \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 + \global\advance\chapno by 1 + % + % Used for \float. + \gdef\chaplevelprefix{\the\chapno.}% + \resetallfloatnos + % + \message{\putwordChapter\space \the\chapno}% + % + % Write the actual heading. + \chapmacro{#1}{Ynumbered}{\the\chapno}% + % + % So @section and the like are numbered underneath this chapter. + \global\let\section = \numberedsec + \global\let\subsection = \numberedsubsec + \global\let\subsubsection = \numberedsubsubsec +} + +\outer\parseargdef\appendix{\apphead0{#1}} % normally apphead0 calls appendixzzz +\def\appendixzzz#1{% + \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 + \global\advance\appendixno by 1 + \gdef\chaplevelprefix{\appendixletter.}% + \resetallfloatnos + % + \def\appendixnum{\putwordAppendix\space \appendixletter}% + \message{\appendixnum}% + % + \chapmacro{#1}{Yappendix}{\appendixletter}% + % + \global\let\section = \appendixsec + \global\let\subsection = \appendixsubsec + \global\let\subsubsection = \appendixsubsubsec +} + +\outer\parseargdef\unnumbered{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz +\def\unnumberedzzz#1{% + \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 + \global\advance\unnumberedno by 1 + % + % Since an unnumbered has no number, no prefix for figures. + \global\let\chaplevelprefix = \empty + \resetallfloatnos + % + % This used to be simply \message{#1}, but TeX fully expands the + % argument to \message. Therefore, if #1 contained @-commands, TeX + % expanded them. For example, in `@unnumbered The @cite{Book}', TeX + % expanded @cite (which turns out to cause errors because \cite is meant + % to be executed, not expanded). + % + % Anyway, we don't want the fully-expanded definition of @cite to appear + % as a result of the \message, we just want `@cite' itself. We use + % \the to achieve this: TeX expands \the only once, + % simply yielding the contents of . (We also do this for + % the toc entries.) + \toks0 = {#1}% + \message{(\the\toks0)}% + % + \chapmacro{#1}{Ynothing}{\the\unnumberedno}% + % + \global\let\section = \unnumberedsec + \global\let\subsection = \unnumberedsubsec + \global\let\subsubsection = \unnumberedsubsubsec +} + +% @centerchap is like @unnumbered, but the heading is centered. +\outer\parseargdef\centerchap{% + % Well, we could do the following in a group, but that would break + % an assumption that \chapmacro is called at the outermost level. + % Thus we are safer this way: --kasal, 24feb04 + \let\centerparametersmaybe = \centerparameters + \unnmhead0{#1}% + \let\centerparametersmaybe = \relax +} + +% @top is like @unnumbered. +\let\top\unnumbered + +% Sections. +\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz +\def\seczzz#1{% + \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 + \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}% +} + +\outer\parseargdef\appendixsection{\apphead1{#1}} % normally calls appendixsectionzzz +\def\appendixsectionzzz#1{% + \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 + \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}% +} +\let\appendixsec\appendixsection + +\outer\parseargdef\unnumberedsec{\unnmhead1{#1}} % normally calls unnumberedseczzz +\def\unnumberedseczzz#1{% + \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 + \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}% +} + +% Subsections. +\outer\parseargdef\numberedsubsec{\numhead2{#1}} % normally calls numberedsubseczzz +\def\numberedsubseczzz#1{% + \global\subsubsecno=0 \global\advance\subsecno by 1 + \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}% +} + +\outer\parseargdef\appendixsubsec{\apphead2{#1}} % normally calls appendixsubseczzz +\def\appendixsubseczzz#1{% + \global\subsubsecno=0 \global\advance\subsecno by 1 + \sectionheading{#1}{subsec}{Yappendix}% + {\appendixletter.\the\secno.\the\subsecno}% +} + +\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} %normally calls unnumberedsubseczzz +\def\unnumberedsubseczzz#1{% + \global\subsubsecno=0 \global\advance\subsecno by 1 + \sectionheading{#1}{subsec}{Ynothing}% + {\the\unnumberedno.\the\secno.\the\subsecno}% +} + +% Subsubsections. +\outer\parseargdef\numberedsubsubsec{\numhead3{#1}} % normally numberedsubsubseczzz +\def\numberedsubsubseczzz#1{% + \global\advance\subsubsecno by 1 + \sectionheading{#1}{subsubsec}{Ynumbered}% + {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}% +} + +\outer\parseargdef\appendixsubsubsec{\apphead3{#1}} % normally appendixsubsubseczzz +\def\appendixsubsubseczzz#1{% + \global\advance\subsubsecno by 1 + \sectionheading{#1}{subsubsec}{Yappendix}% + {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}% +} + +\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} %normally unnumberedsubsubseczzz +\def\unnumberedsubsubseczzz#1{% + \global\advance\subsubsecno by 1 + \sectionheading{#1}{subsubsec}{Ynothing}% + {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}% +} + +% These macros control what the section commands do, according +% to what kind of chapter we are in (ordinary, appendix, or unnumbered). +% Define them by default for a numbered chapter. +\let\section = \numberedsec +\let\subsection = \numberedsubsec +\let\subsubsection = \numberedsubsubsec + +% Define @majorheading, @heading and @subheading + +% NOTE on use of \vbox for chapter headings, section headings, and such: +% 1) We use \vbox rather than the earlier \line to permit +% overlong headings to fold. +% 2) \hyphenpenalty is set to 10000 because hyphenation in a +% heading is obnoxious; this forbids it. +% 3) Likewise, headings look best if no \parindent is used, and +% if justification is not attempted. Hence \raggedright. + + +\def\majorheading{% + {\advance\chapheadingskip by 10pt \chapbreak }% + \parsearg\chapheadingzzz +} + +\def\chapheading{\chapbreak \parsearg\chapheadingzzz} +\def\chapheadingzzz#1{% + {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 + \parindent=0pt\raggedright + \rm #1\hfill}}% + \bigskip \par\penalty 200\relax + \suppressfirstparagraphindent +} + +% @heading, @subheading, @subsubheading. +\parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{} + \suppressfirstparagraphindent} +\parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{} + \suppressfirstparagraphindent} +\parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{} + \suppressfirstparagraphindent} + +% These macros generate a chapter, section, etc. heading only +% (including whitespace, linebreaking, etc. around it), +% given all the information in convenient, parsed form. + +%%% Args are the skip and penalty (usually negative) +\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi} + +%%% Define plain chapter starts, and page on/off switching for it +% Parameter controlling skip before chapter headings (if needed) + +\newskip\chapheadingskip + +\def\chapbreak{\dobreak \chapheadingskip {-4000}} +\def\chappager{\par\vfill\supereject} +\def\chapoddpage{\chappager \ifodd\pageno \else \hbox to 0pt{} \chappager\fi} + +\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname} + +\def\CHAPPAGoff{% +\global\let\contentsalignmacro = \chappager +\global\let\pchapsepmacro=\chapbreak +\global\let\pagealignmacro=\chappager} + +\def\CHAPPAGon{% +\global\let\contentsalignmacro = \chappager +\global\let\pchapsepmacro=\chappager +\global\let\pagealignmacro=\chappager +\global\def\HEADINGSon{\HEADINGSsingle}} + +\def\CHAPPAGodd{% +\global\let\contentsalignmacro = \chapoddpage +\global\let\pchapsepmacro=\chapoddpage +\global\let\pagealignmacro=\chapoddpage +\global\def\HEADINGSon{\HEADINGSdouble}} + +\CHAPPAGon + +% Chapter opening. +% +% #1 is the text, #2 is the section type (Ynumbered, Ynothing, +% Yappendix, Yomitfromtoc), #3 the chapter number. +% +% To test against our argument. +\def\Ynothingkeyword{Ynothing} +\def\Yomitfromtockeyword{Yomitfromtoc} +\def\Yappendixkeyword{Yappendix} +% +\def\chapmacro#1#2#3{% + \pchapsepmacro + {% + \chapfonts \rm + % + % Have to define \thissection before calling \donoderef, because the + % xref code eventually uses it. On the other hand, it has to be called + % after \pchapsepmacro, or the headline will change too soon. + \gdef\thissection{#1}% + \gdef\thischaptername{#1}% + % + % Only insert the separating space if we have a chapter/appendix + % number, and don't print the unnumbered ``number''. + \def\temptype{#2}% + \ifx\temptype\Ynothingkeyword + \setbox0 = \hbox{}% + \def\toctype{unnchap}% + \def\thischapter{#1}% + \else\ifx\temptype\Yomitfromtockeyword + \setbox0 = \hbox{}% contents like unnumbered, but no toc entry + \def\toctype{omit}% + \xdef\thischapter{}% + \else\ifx\temptype\Yappendixkeyword + \setbox0 = \hbox{\putwordAppendix{} #3\enspace}% + \def\toctype{app}% + % We don't substitute the actual chapter name into \thischapter + % because we don't want its macros evaluated now. And we don't + % use \thissection because that changes with each section. + % + \xdef\thischapter{\putwordAppendix{} \appendixletter: + \noexpand\thischaptername}% + \else + \setbox0 = \hbox{#3\enspace}% + \def\toctype{numchap}% + \xdef\thischapter{\putwordChapter{} \the\chapno: + \noexpand\thischaptername}% + \fi\fi\fi + % + % Write the toc entry for this chapter. Must come before the + % \donoderef, because we include the current node name in the toc + % entry, and \donoderef resets it to empty. + \writetocentry{\toctype}{#1}{#3}% + % + % For pdftex, we have to write out the node definition (aka, make + % the pdfdest) after any page break, but before the actual text has + % been typeset. If the destination for the pdf outline is after the + % text, then jumping from the outline may wind up with the text not + % being visible, for instance under high magnification. + \donoderef{#2}% + % + % Typeset the actual heading. + \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright + \hangindent=\wd0 \centerparametersmaybe + \unhbox0 #1\par}% + }% + \nobreak\bigskip % no page break after a chapter title + \nobreak +} + +% @centerchap -- centered and unnumbered. +\let\centerparametersmaybe = \relax +\def\centerparameters{% + \advance\rightskip by 3\rightskip + \leftskip = \rightskip + \parfillskip = 0pt +} + + +% I don't think this chapter style is supported any more, so I'm not +% updating it with the new noderef stuff. We'll see. --karl, 11aug03. +% +\def\setchapterstyle #1 {\csname CHAPF#1\endcsname} +% +\def\unnchfopen #1{% +\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 + \parindent=0pt\raggedright + \rm #1\hfill}}\bigskip \par\nobreak +} +\def\chfopen #1#2{\chapoddpage {\chapfonts +\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}% +\par\penalty 5000 % +} +\def\centerchfopen #1{% +\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000 + \parindent=0pt + \hfill {\rm #1}\hfill}}\bigskip \par\nobreak +} +\def\CHAPFopen{% + \global\let\chapmacro=\chfopen + \global\let\centerchapmacro=\centerchfopen} + + +% Section titles. These macros combine the section number parts and +% call the generic \sectionheading to do the printing. +% +\newskip\secheadingskip +\def\secheadingbreak{\dobreak \secheadingskip{-1000}} + +% Subsection titles. +\newskip\subsecheadingskip +\def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}} + +% Subsubsection titles. +\def\subsubsecheadingskip{\subsecheadingskip} +\def\subsubsecheadingbreak{\subsecheadingbreak} + + +% Print any size, any type, section title. +% +% #1 is the text, #2 is the section level (sec/subsec/subsubsec), #3 is +% the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the +% section number. +% +\def\sectionheading#1#2#3#4{% + {% + % Switch to the right set of fonts. + \csname #2fonts\endcsname \rm + % + % Insert space above the heading. + \csname #2headingbreak\endcsname + % + % Only insert the space after the number if we have a section number. + \def\sectionlevel{#2}% + \def\temptype{#3}% + % + \ifx\temptype\Ynothingkeyword + \setbox0 = \hbox{}% + \def\toctype{unn}% + \gdef\thissection{#1}% + \else\ifx\temptype\Yomitfromtockeyword + % for @headings -- no section number, don't include in toc, + % and don't redefine \thissection. + \setbox0 = \hbox{}% + \def\toctype{omit}% + \let\sectionlevel=\empty + \else\ifx\temptype\Yappendixkeyword + \setbox0 = \hbox{#4\enspace}% + \def\toctype{app}% + \gdef\thissection{#1}% + \else + \setbox0 = \hbox{#4\enspace}% + \def\toctype{num}% + \gdef\thissection{#1}% + \fi\fi\fi + % + % Write the toc entry (before \donoderef). See comments in \chfplain. + \writetocentry{\toctype\sectionlevel}{#1}{#4}% + % + % Write the node reference (= pdf destination for pdftex). + % Again, see comments in \chfplain. + \donoderef{#3}% + % + % Output the actual section heading. + \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright + \hangindent=\wd0 % zero if no section number + \unhbox0 #1}% + }% + % Add extra space after the heading -- half of whatever came above it. + % Don't allow stretch, though. + \kern .5 \csname #2headingskip\endcsname + % + % Do not let the kern be a potential breakpoint, as it would be if it + % was followed by glue. + \nobreak + % + % We'll almost certainly start a paragraph next, so don't let that + % glue accumulate. (Not a breakpoint because it's preceded by a + % discardable item.) + \vskip-\parskip + % + % This is purely so the last item on the list is a known \penalty > + % 10000. This is so \startdefun can avoid allowing breakpoints after + % section headings. Otherwise, it would insert a valid breakpoint between: + % + % @section sec-whatever + % @deffn def-whatever + \penalty 10001 +} + + +\message{toc,} +% Table of contents. +\newwrite\tocfile + +% Write an entry to the toc file, opening it if necessary. +% Called from @chapter, etc. +% +% Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno} +% We append the current node name (if any) and page number as additional +% arguments for the \{chap,sec,...}entry macros which will eventually +% read this. The node name is used in the pdf outlines as the +% destination to jump to. +% +% We open the .toc file for writing here instead of at @setfilename (or +% any other fixed time) so that @contents can be anywhere in the document. +% But if #1 is `omit', then we don't do anything. This is used for the +% table of contents chapter openings themselves. +% +\newif\iftocfileopened +\def\omitkeyword{omit}% +% +\def\writetocentry#1#2#3{% + \edef\writetoctype{#1}% + \ifx\writetoctype\omitkeyword \else + \iftocfileopened\else + \immediate\openout\tocfile = \jobname.toc + \global\tocfileopenedtrue + \fi + % + \iflinks + \toks0 = {#2}% + \toks2 = \expandafter{\lastnode}% + \edef\temp{\write\tocfile{\realbackslash #1entry{\the\toks0}{#3}% + {\the\toks2}{\noexpand\folio}}}% + \temp + \fi + \fi + % + % Tell \shipout to create a pdf destination on each page, if we're + % writing pdf. These are used in the table of contents. We can't + % just write one on every page because the title pages are numbered + % 1 and 2 (the page numbers aren't printed), and so are the first + % two pages of the document. Thus, we'd have two destinations named + % `1', and two named `2'. + \ifpdf \global\pdfmakepagedesttrue \fi +} + +\newskip\contentsrightmargin \contentsrightmargin=1in +\newcount\savepageno +\newcount\lastnegativepageno \lastnegativepageno = -1 + +% Prepare to read what we've written to \tocfile. +% +\def\startcontents#1{% + % If @setchapternewpage on, and @headings double, the contents should + % start on an odd page, unlike chapters. Thus, we maintain + % \contentsalignmacro in parallel with \pagealignmacro. + % From: Torbjorn Granlund + \contentsalignmacro + \immediate\closeout\tocfile + % + % Don't need to put `Contents' or `Short Contents' in the headline. + % It is abundantly clear what they are. + \def\thischapter{}% + \chapmacro{#1}{Yomitfromtoc}{}% + % + \savepageno = \pageno + \begingroup % Set up to handle contents files properly. + \catcode`\\=0 \catcode`\{=1 \catcode`\}=2 \catcode`\@=11 + % We can't do this, because then an actual ^ in a section + % title fails, e.g., @chapter ^ -- exponentiation. --karl, 9jul97. + %\catcode`\^=7 % to see ^^e4 as \"a etc. juha@piuha.ydi.vtt.fi + \raggedbottom % Worry more about breakpoints than the bottom. + \advance\hsize by -\contentsrightmargin % Don't use the full line length. + % + % Roman numerals for page numbers. + \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi +} + + +% Normal (long) toc. +\def\contents{% + \startcontents{\putwordTOC}% + \openin 1 \jobname.toc + \ifeof 1 \else + \input \jobname.toc + \fi + \vfill \eject + \contentsalignmacro % in case @setchapternewpage odd is in effect + \ifeof 1 \else + \pdfmakeoutlines + \fi + \closein 1 + \endgroup + \lastnegativepageno = \pageno + \global\pageno = \savepageno +} + +% And just the chapters. +\def\summarycontents{% + \startcontents{\putwordShortTOC}% + % + \let\numchapentry = \shortchapentry + \let\appentry = \shortchapentry + \let\unnchapentry = \shortunnchapentry + % We want a true roman here for the page numbers. + \secfonts + \let\rm=\shortcontrm \let\bf=\shortcontbf + \let\sl=\shortcontsl \let\tt=\shortconttt + \rm + \hyphenpenalty = 10000 + \advance\baselineskip by 1pt % Open it up a little. + \def\numsecentry##1##2##3##4{} + \let\appsecentry = \numsecentry + \let\unnsecentry = \numsecentry + \let\numsubsecentry = \numsecentry + \let\appsubsecentry = \numsecentry + \let\unnsubsecentry = \numsecentry + \let\numsubsubsecentry = \numsecentry + \let\appsubsubsecentry = \numsecentry + \let\unnsubsubsecentry = \numsecentry + \openin 1 \jobname.toc + \ifeof 1 \else + \input \jobname.toc + \fi + \closein 1 + \vfill \eject + \contentsalignmacro % in case @setchapternewpage odd is in effect + \endgroup + \lastnegativepageno = \pageno + \global\pageno = \savepageno +} +\let\shortcontents = \summarycontents + +% Typeset the label for a chapter or appendix for the short contents. +% The arg is, e.g., `A' for an appendix, or `3' for a chapter. +% +\def\shortchaplabel#1{% + % This space should be enough, since a single number is .5em, and the + % widest letter (M) is 1em, at least in the Computer Modern fonts. + % But use \hss just in case. + % (This space doesn't include the extra space that gets added after + % the label; that gets put in by \shortchapentry above.) + % + % We'd like to right-justify chapter numbers, but that looks strange + % with appendix letters. And right-justifying numbers and + % left-justifying letters looks strange when there is less than 10 + % chapters. Have to read the whole toc once to know how many chapters + % there are before deciding ... + \hbox to 1em{#1\hss}% +} + +% These macros generate individual entries in the table of contents. +% The first argument is the chapter or section name. +% The last argument is the page number. +% The arguments in between are the chapter number, section number, ... + +% Chapters, in the main contents. +\def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}} +% +% Chapters, in the short toc. +% See comments in \dochapentry re vbox and related settings. +\def\shortchapentry#1#2#3#4{% + \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}% +} + +% Appendices, in the main contents. +% Need the word Appendix, and a fixed-size box. +% +\def\appendixbox#1{% + % We use M since it's probably the widest letter. + \setbox0 = \hbox{\putwordAppendix{} M}% + \hbox to \wd0{\putwordAppendix{} #1\hss}} +% +\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}} + +% Unnumbered chapters. +\def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}} +\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}} + +% Sections. +\def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}} +\let\appsecentry=\numsecentry +\def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}} + +% Subsections. +\def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}} +\let\appsubsecentry=\numsubsecentry +\def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}} + +% And subsubsections. +\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}} +\let\appsubsubsecentry=\numsubsubsecentry +\def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}} + +% This parameter controls the indentation of the various levels. +% Same as \defaultparindent. +\newdimen\tocindent \tocindent = 15pt + +% Now for the actual typesetting. In all these, #1 is the text and #2 is the +% page number. +% +% If the toc has to be broken over pages, we want it to be at chapters +% if at all possible; hence the \penalty. +\def\dochapentry#1#2{% + \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip + \begingroup + \chapentryfonts + \tocentry{#1}{\dopageno\bgroup#2\egroup}% + \endgroup + \nobreak\vskip .25\baselineskip plus.1\baselineskip +} + +\def\dosecentry#1#2{\begingroup + \secentryfonts \leftskip=\tocindent + \tocentry{#1}{\dopageno\bgroup#2\egroup}% +\endgroup} + +\def\dosubsecentry#1#2{\begingroup + \subsecentryfonts \leftskip=2\tocindent + \tocentry{#1}{\dopageno\bgroup#2\egroup}% +\endgroup} + +\def\dosubsubsecentry#1#2{\begingroup + \subsubsecentryfonts \leftskip=3\tocindent + \tocentry{#1}{\dopageno\bgroup#2\egroup}% +\endgroup} + +% We use the same \entry macro as for the index entries. +\let\tocentry = \entry + +% Space between chapter (or whatever) number and the title. +\def\labelspace{\hskip1em \relax} + +\def\dopageno#1{{\rm #1}} +\def\doshortpageno#1{{\rm #1}} + +\def\chapentryfonts{\secfonts \rm} +\def\secentryfonts{\textfonts} +\def\subsecentryfonts{\textfonts} +\def\subsubsecentryfonts{\textfonts} + + +\message{environments,} +% @foo ... @end foo. + +% @point{}, @result{}, @expansion{}, @print{}, @equiv{}. +% +% Since these characters are used in examples, it should be an even number of +% \tt widths. Each \tt character is 1en, so two makes it 1em. +% +\def\point{$\star$} +\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} +\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}} +\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} +\def\equiv{\leavevmode\lower.1ex\hbox to 1em{\hfil$\ptexequiv$\hfil}} + +% The @error{} command. +% Adapted from the TeXbook's \boxit. +% +\newbox\errorbox +% +{\tentt \global\dimen0 = 3em}% Width of the box. +\dimen2 = .55pt % Thickness of rules +% The text. (`r' is open on the right, `e' somewhat less so on the left.) +\setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt} +% +\setbox\errorbox=\hbox to \dimen0{\hfil + \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. + \advance\hsize by -2\dimen2 % Rules. + \vbox{% + \hrule height\dimen2 + \hbox{\vrule width\dimen2 \kern3pt % Space to left of text. + \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below. + \kern3pt\vrule width\dimen2}% Space to right. + \hrule height\dimen2} + \hfil} +% +\def\error{\leavevmode\lower.7ex\copy\errorbox} + +% @tex ... @end tex escapes into raw Tex temporarily. +% One exception: @ is still an escape character, so that @end tex works. +% But \@ or @@ will get a plain tex @ character. + +\envdef\tex{% + \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 + \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 + \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie + \catcode `\%=14 + \catcode `\+=\other + \catcode `\"=\other + \catcode `\|=\other + \catcode `\<=\other + \catcode `\>=\other + \escapechar=`\\ + % + \let\b=\ptexb + \let\bullet=\ptexbullet + \let\c=\ptexc + \let\,=\ptexcomma + \let\.=\ptexdot + \let\dots=\ptexdots + \let\equiv=\ptexequiv + \let\!=\ptexexclam + \let\i=\ptexi + \let\indent=\ptexindent + \let\noindent=\ptexnoindent + \let\{=\ptexlbrace + \let\+=\tabalign + \let\}=\ptexrbrace + \let\/=\ptexslash + \let\*=\ptexstar + \let\t=\ptext + % + \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% + \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}% + \def\@{@}% +} +% There is no need to define \Etex. + +% Define @lisp ... @end lisp. +% @lisp environment forms a group so it can rebind things, +% including the definition of @end lisp (which normally is erroneous). + +% Amount to narrow the margins by for @lisp. +\newskip\lispnarrowing \lispnarrowing=0.4in + +% This is the definition that ^^M gets inside @lisp, @example, and other +% such environments. \null is better than a space, since it doesn't +% have any width. +\def\lisppar{\null\endgraf} + +% This space is always present above and below environments. +\newskip\envskipamount \envskipamount = 0pt + +% Make spacing and below environment symmetrical. We use \parskip here +% to help in doing that, since in @example-like environments \parskip +% is reset to zero; thus the \afterenvbreak inserts no space -- but the +% start of the next paragraph will insert \parskip. +% +\def\aboveenvbreak{{% + % =10000 instead of <10000 because of a special case in \itemzzz and + % \sectionheading, q.v. + \ifnum \lastpenalty=10000 \else + \advance\envskipamount by \parskip + \endgraf + \ifdim\lastskip<\envskipamount + \removelastskip + % it's not a good place to break if the last penalty was \nobreak + % or better ... + \ifnum\lastpenalty<10000 \penalty-50 \fi + \vskip\envskipamount + \fi + \fi +}} + +\let\afterenvbreak = \aboveenvbreak + +% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins. +\let\nonarrowing=\relax + +% @cartouche ... @end cartouche: draw rectangle w/rounded corners around +% environment contents. +\font\circle=lcircle10 +\newdimen\circthick +\newdimen\cartouter\newdimen\cartinner +\newskip\normbskip\newskip\normpskip\newskip\normlskip +\circthick=\fontdimen8\circle +% +\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth +\def\ctr{{\hskip 6pt\circle\char'010}} +\def\cbl{{\circle\char'012\hskip -6pt}} +\def\cbr{{\hskip 6pt\circle\char'011}} +\def\carttop{\hbox to \cartouter{\hskip\lskip + \ctl\leaders\hrule height\circthick\hfil\ctr + \hskip\rskip}} +\def\cartbot{\hbox to \cartouter{\hskip\lskip + \cbl\leaders\hrule height\circthick\hfil\cbr + \hskip\rskip}} +% +\newskip\lskip\newskip\rskip + +\envdef\cartouche{% + \ifhmode\par\fi % can't be in the midst of a paragraph. + \startsavinginserts + \lskip=\leftskip \rskip=\rightskip + \leftskip=0pt\rightskip=0pt % we want these *outside*. + \cartinner=\hsize \advance\cartinner by-\lskip + \advance\cartinner by-\rskip + \cartouter=\hsize + \advance\cartouter by 18.4pt % allow for 3pt kerns on either + % side, and for 6pt waste from + % each corner char, and rule thickness + \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip + % Flag to tell @lisp, etc., not to narrow margin. + \let\nonarrowing=\comment + \vbox\bgroup + \baselineskip=0pt\parskip=0pt\lineskip=0pt + \carttop + \hbox\bgroup + \hskip\lskip + \vrule\kern3pt + \vbox\bgroup + \kern3pt + \hsize=\cartinner + \baselineskip=\normbskip + \lineskip=\normlskip + \parskip=\normpskip + \vskip -\parskip + \comment % For explanation, see the end of \def\group. +} +\def\Ecartouche{% + \ifhmode\par\fi + \kern3pt + \egroup + \kern3pt\vrule + \hskip\rskip + \egroup + \cartbot + \egroup + \checkinserts +} + + +% This macro is called at the beginning of all the @example variants, +% inside a group. +\def\nonfillstart{% + \aboveenvbreak + \hfuzz = 12pt % Don't be fussy + \sepspaces % Make spaces be word-separators rather than space tokens. + \let\par = \lisppar % don't ignore blank lines + \obeylines % each line of input is a line of output + \parskip = 0pt + \parindent = 0pt + \emergencystretch = 0pt % don't try to avoid overfull boxes + % @cartouche defines \nonarrowing to inhibit narrowing + % at next level down. + \ifx\nonarrowing\relax + \advance \leftskip by \lispnarrowing + \exdentamount=\lispnarrowing + \fi + \let\exdent=\nofillexdent +} + +% If you want all examples etc. small: @set dispenvsize small. +% If you want even small examples the full size: @set dispenvsize nosmall. +% This affects the following displayed environments: +% @example, @display, @format, @lisp +% +\def\smallword{small} +\def\nosmallword{nosmall} +\let\SETdispenvsize\relax +\def\setnormaldispenv{% + \ifx\SETdispenvsize\smallword + \smallexamplefonts \rm + \fi +} +\def\setsmalldispenv{% + \ifx\SETdispenvsize\nosmallword + \else + \smallexamplefonts \rm + \fi +} + +% We often define two environments, @foo and @smallfoo. +% Let's do it by one command: +\def\makedispenv #1#2{ + \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2} + \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2} + \expandafter\let\csname E#1\endcsname \afterenvbreak + \expandafter\let\csname Esmall#1\endcsname \afterenvbreak +} + +% Define two synonyms: +\def\maketwodispenvs #1#2#3{ + \makedispenv{#1}{#3} + \makedispenv{#2}{#3} +} + +% @lisp: indented, narrowed, typewriter font; @example: same as @lisp. +% +% @smallexample and @smalllisp: use smaller fonts. +% Originally contributed by Pavel@xerox. +% +\maketwodispenvs {lisp}{example}{% + \nonfillstart + \tt + \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. + \gobble % eat return +} + +% @display/@smalldisplay: same as @lisp except keep current font. +% +\makedispenv {display}{% + \nonfillstart + \gobble +} + +% @format/@smallformat: same as @display except don't narrow margins. +% +\makedispenv{format}{% + \let\nonarrowing = t% + \nonfillstart + \gobble +} + +% @flushleft: same as @format, but doesn't obey \SETdispenvsize. +\envdef\flushleft{% + \let\nonarrowing = t% + \nonfillstart + \gobble +} +\let\Eflushleft = \afterenvbreak + +% @flushright. +% +\envdef\flushright{% + \let\nonarrowing = t% + \nonfillstart + \advance\leftskip by 0pt plus 1fill + \gobble +} +\let\Eflushright = \afterenvbreak + + +% @quotation does normal linebreaking (hence we can't use \nonfillstart) +% and narrows the margins. We keep \parskip nonzero in general, since +% we're doing normal filling. So, when using \aboveenvbreak and +% \afterenvbreak, temporarily make \parskip 0. +% +\envdef\quotation{% + {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip + \parindent=0pt + % + % @cartouche defines \nonarrowing to inhibit narrowing at next level down. + \ifx\nonarrowing\relax + \advance\leftskip by \lispnarrowing + \advance\rightskip by \lispnarrowing + \exdentamount = \lispnarrowing + \let\nonarrowing = \relax + \fi + \parsearg\quotationlabel +} + +% We have retained a nonzero parskip for the environment, since we're +% doing normal filling. +% +\def\Equotation{% + \par + \ifx\quotationauthor\undefined\else + % indent a bit. + \leftline{\kern 2\leftskip \sl ---\quotationauthor}% + \fi + {\parskip=0pt \afterenvbreak}% +} + +% If we're given an argument, typeset it in bold with a colon after. +\def\quotationlabel#1{% + \def\temp{#1}% + \ifx\temp\empty \else + {\bf #1: }% + \fi +} + + +% LaTeX-like @verbatim...@end verbatim and @verb{...} +% If we want to allow any as delimiter, +% we need the curly braces so that makeinfo sees the @verb command, eg: +% `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org +% +% [Knuth]: Donald Ervin Knuth, 1996. The TeXbook. +% +% [Knuth] p.344; only we need to do the other characters Texinfo sets +% active too. Otherwise, they get lost as the first character on a +% verbatim line. +\def\dospecials{% + \do\ \do\\\do\{\do\}\do\$\do\&% + \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~% + \do\<\do\>\do\|\do\@\do+\do\"% +} +% +% [Knuth] p. 380 +\def\uncatcodespecials{% + \def\do##1{\catcode`##1=\other}\dospecials} +% +% [Knuth] pp. 380,381,391 +% Disable Spanish ligatures ?` and !` of \tt font +\begingroup + \catcode`\`=\active\gdef`{\relax\lq} +\endgroup +% +% Setup for the @verb command. +% +% Eight spaces for a tab +\begingroup + \catcode`\^^I=\active + \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }} +\endgroup +% +\def\setupverb{% + \tt % easiest (and conventionally used) font for verbatim + \def\par{\leavevmode\endgraf}% + \catcode`\`=\active + \tabeightspaces + % Respect line breaks, + % print special symbols as themselves, and + % make each space count + % must do in this order: + \obeylines \uncatcodespecials \sepspaces +} + +% Setup for the @verbatim environment +% +% Real tab expansion +\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount +% +\def\starttabbox{\setbox0=\hbox\bgroup} +\begingroup + \catcode`\^^I=\active + \gdef\tabexpand{% + \catcode`\^^I=\active + \def^^I{\leavevmode\egroup + \dimen0=\wd0 % the width so far, or since the previous tab + \divide\dimen0 by\tabw + \multiply\dimen0 by\tabw % compute previous multiple of \tabw + \advance\dimen0 by\tabw % advance to next multiple of \tabw + \wd0=\dimen0 \box0 \starttabbox + }% + } +\endgroup +\def\setupverbatim{% + \nonfillstart + \advance\leftskip by -\defbodyindent + % Easiest (and conventionally used) font for verbatim + \tt + \def\par{\leavevmode\egroup\box0\endgraf}% + \catcode`\`=\active + \tabexpand + % Respect line breaks, + % print special symbols as themselves, and + % make each space count + % must do in this order: + \obeylines \uncatcodespecials \sepspaces + \everypar{\starttabbox}% +} + +% Do the @verb magic: verbatim text is quoted by unique +% delimiter characters. Before first delimiter expect a +% right brace, after last delimiter expect closing brace: +% +% \def\doverb'{'#1'}'{#1} +% +% [Knuth] p. 382; only eat outer {} +\begingroup + \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other + \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next] +\endgroup +% +\def\verb{\begingroup\setupverb\doverb} +% +% +% Do the @verbatim magic: define the macro \doverbatim so that +% the (first) argument ends when '@end verbatim' is reached, ie: +% +% \def\doverbatim#1@end verbatim{#1} +% +% For Texinfo it's a lot easier than for LaTeX, +% because texinfo's \verbatim doesn't stop at '\end{verbatim}': +% we need not redefine '\', '{' and '}'. +% +% Inspired by LaTeX's verbatim command set [latex.ltx] +% +\begingroup + \catcode`\ =\active + \obeylines % + % ignore everything up to the first ^^M, that's the newline at the end + % of the @verbatim input line itself. Otherwise we get an extra blank + % line in the output. + \xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}% + % We really want {...\end verbatim} in the body of the macro, but + % without the active space; thus we have to use \xdef and \gobble. +\endgroup +% +\envdef\verbatim{% + \setupverbatim\doverbatim +} +\let\Everbatim = \afterenvbreak + + +% @verbatiminclude FILE - insert text of file in verbatim environment. +% +\def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude} +% +\def\doverbatiminclude#1{% + {% + \makevalueexpandable + \setupverbatim + \input #1 + \afterenvbreak + }% +} + +% @copying ... @end copying. +% Save the text away for @insertcopying later. +% +% We save the uninterpreted tokens, rather than creating a box. +% Saving the text in a box would be much easier, but then all the +% typesetting commands (@smallbook, font changes, etc.) have to be done +% beforehand -- and a) we want @copying to be done first in the source +% file; b) letting users define the frontmatter in as flexible order as +% possible is very desirable. +% +\def\copying{\checkenv{}\begingroup\scanargctxt\docopying} +\def\docopying#1@end copying{\endgroup\def\copyingtext{#1}} +% +\def\insertcopying{% + \begingroup + \parindent = 0pt % paragraph indentation looks wrong on title page + \scanexp\copyingtext + \endgroup +} + +\message{defuns,} +% @defun etc. + +\newskip\defbodyindent \defbodyindent=.4in +\newskip\defargsindent \defargsindent=50pt +\newskip\deflastargmargin \deflastargmargin=18pt + +% Start the processing of @deffn: +\def\startdefun{% + \ifnum\lastpenalty<10000 + \medbreak + \else + % If there are two @def commands in a row, we'll have a \nobreak, + % which is there to keep the function description together with its + % header. But if there's nothing but headers, we need to allow a + % break somewhere. Check specifically for penalty 10002, inserted + % by \defargscommonending, instead of 10000, since the sectioning + % commands also insert a nobreak penalty, and we don't want to allow + % a break between a section heading and a defun. + % + \ifnum\lastpenalty=10002 \penalty2000 \fi + % + % Similarly, after a section heading, do not allow a break. + % But do insert the glue. + \medskip % preceded by discardable penalty, so not a breakpoint + \fi + % + \parindent=0in + \advance\leftskip by \defbodyindent + \exdentamount=\defbodyindent +} + +\def\dodefunx#1{% + % First, check whether we are in the right environment: + \checkenv#1% + % + % As above, allow line break if we have multiple x headers in a row. + % It's not a great place, though. + \ifnum\lastpenalty=10002 \penalty3000 \fi + % + % And now, it's time to reuse the body of the original defun: + \expandafter\gobbledefun#1% +} +\def\gobbledefun#1\startdefun{} + +% \printdefunline \deffnheader{text} +% +\def\printdefunline#1#2{% + \begingroup + % call \deffnheader: + #1#2 \endheader + % common ending: + \interlinepenalty = 10000 + \advance\rightskip by 0pt plus 1fil + \endgraf + \nobreak\vskip -\parskip + \penalty 10002 % signal to \startdefun and \dodefunx + % Some of the @defun-type tags do not enable magic parentheses, + % rendering the following check redundant. But we don't optimize. + \checkparencounts + \endgroup +} + +\def\Edefun{\endgraf\medbreak} + +% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn; +% the only thing remainnig is to define \deffnheader. +% +\def\makedefun#1{% + \expandafter\let\csname E#1\endcsname = \Edefun + \edef\temp{\noexpand\domakedefun + \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}% + \temp +} + +% \domakedefun \deffn \deffnx \deffnheader +% +% Define \deffn and \deffnx, without parameters. +% \deffnheader has to be defined explicitly. +% +\def\domakedefun#1#2#3{% + \envdef#1{% + \startdefun + \parseargusing\activeparens{\printdefunline#3}% + }% + \def#2{\dodefunx#1}% + \def#3% +} + +%%% Untyped functions: + +% @deffn category name args +\makedefun{deffn}{\deffngeneral{}} + +% @deffn category class name args +\makedefun{defop}#1 {\defopon{#1\ \putwordon}} + +% \defopon {category on}class name args +\def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } + +% \deffngeneral {subind}category name args +% +\def\deffngeneral#1#2 #3 #4\endheader{% + % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}. + \dosubind{fn}{\code{#3}}{#1}% + \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}% +} + +%%% Typed functions: + +% @deftypefn category type name args +\makedefun{deftypefn}{\deftypefngeneral{}} + +% @deftypeop category class type name args +\makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}} + +% \deftypeopon {category on}class type name args +\def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } + +% \deftypefngeneral {subind}category type name args +% +\def\deftypefngeneral#1#2 #3 #4 #5\endheader{% + \dosubind{fn}{\code{#4}}{#1}% + \defname{#2}{#3}{#4}\defunargs{#5\unskip}% +} + +%%% Typed variables: + +% @deftypevr category type var args +\makedefun{deftypevr}{\deftypecvgeneral{}} + +% @deftypecv category class type var args +\makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}} + +% \deftypecvof {category of}class type var args +\def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} } + +% \deftypecvgeneral {subind}category type var args +% +\def\deftypecvgeneral#1#2 #3 #4 #5\endheader{% + \dosubind{vr}{\code{#4}}{#1}% + \defname{#2}{#3}{#4}\defunargs{#5\unskip}% +} + +%%% Untyped variables: + +% @defvr category var args +\makedefun{defvr}#1 {\deftypevrheader{#1} {} } + +% @defcv category class var args +\makedefun{defcv}#1 {\defcvof{#1\ \putwordof}} + +% \defcvof {category of}class var args +\def\defcvof#1#2 {\deftypecvof{#1}#2 {} } + +%%% Type: +% @deftp category name args +\makedefun{deftp}#1 #2 #3\endheader{% + \doind{tp}{\code{#2}}% + \defname{#1}{}{#2}\defunargs{#3\unskip}% +} + +% Remaining @defun-like shortcuts: +\makedefun{defun}{\deffnheader{\putwordDeffunc} } +\makedefun{defmac}{\deffnheader{\putwordDefmac} } +\makedefun{defspec}{\deffnheader{\putwordDefspec} } +\makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} } +\makedefun{defvar}{\defvrheader{\putwordDefvar} } +\makedefun{defopt}{\defvrheader{\putwordDefopt} } +\makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} } +\makedefun{defmethod}{\defopon\putwordMethodon} +\makedefun{deftypemethod}{\deftypeopon\putwordMethodon} +\makedefun{defivar}{\defcvof\putwordInstanceVariableof} +\makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof} + +% \defname, which formats the name of the @def (not the args). +% #1 is the category, such as "Function". +% #2 is the return type, if any. +% #3 is the function name. +% +% We are followed by (but not passed) the arguments, if any. +% +\def\defname#1#2#3{% + % Get the values of \leftskip and \rightskip as they were outside the @def... + \advance\leftskip by -\defbodyindent + % + % How we'll format the type name. Putting it in brackets helps + % distinguish it from the body text that may end up on the next line + % just below it. + \def\temp{#1}% + \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi} + % + % Figure out line sizes for the paragraph shape. + % The first line needs space for \box0; but if \rightskip is nonzero, + % we need only space for the part of \box0 which exceeds it: + \dimen0=\hsize \advance\dimen0 by -\wd0 \advance\dimen0 by \rightskip + % The continuations: + \dimen2=\hsize \advance\dimen2 by -\defargsindent + % (plain.tex says that \dimen1 should be used only as global.) + \parshape 2 0in \dimen0 \defargsindent \dimen2 + % + % Put the type name to the right margin. + \noindent + \hbox to 0pt{% + \hfil\box0 \kern-\hsize + % \hsize has to be shortened this way: + \kern\leftskip + % Intentionally do not respect \rightskip, since we need the space. + }% + % + % Allow all lines to be underfull without complaint: + \tolerance=10000 \hbadness=10000 + \exdentamount=\defbodyindent + {% + % defun fonts. We use typewriter by default (used to be bold) because: + % . we're printing identifiers, they should be in tt in principle. + % . in languages with many accents, such as Czech or French, it's + % common to leave accents off identifiers. The result looks ok in + % tt, but exceedingly strange in rm. + % . we don't want -- and --- to be treated as ligatures. + % . this still does not fix the ?` and !` ligatures, but so far no + % one has made identifiers using them :). + \df \tt + \def\temp{#2}% return value type + \ifx\temp\empty\else \tclose{\temp} \fi + #3% output function name + }% + {\rm\enskip}% hskip 0.5 em of \tenrm + % + \boldbrax + % arguments will be output next, if any. +} + +% Print arguments in slanted roman (not ttsl), inconsistently with using +% tt for the name. This is because literal text is sometimes needed in +% the argument list (groff manual), and ttsl and tt are not very +% distinguishable. Prevent hyphenation at `-' chars. +% +\def\defunargs#1{% + % use sl by default (not ttsl), + % tt for the names. + \df \sl \hyphenchar\font=0 + % + % On the other hand, if an argument has two dashes (for instance), we + % want a way to get ttsl. Let's try @var for that. + \let\var=\ttslanted + #1% + \sl\hyphenchar\font=45 +} + +% We want ()&[] to print specially on the defun line. +% +\def\activeparens{% + \catcode`\(=\active \catcode`\)=\active + \catcode`\[=\active \catcode`\]=\active + \catcode`\&=\active +} + +% Make control sequences which act like normal parenthesis chars. +\let\lparen = ( \let\rparen = ) + +% Be sure that we always have a definition for `(', etc. For example, +% if the fn name has parens in it, \boldbrax will not be in effect yet, +% so TeX would otherwise complain about undefined control sequence. +{ + \activeparens + \global\let(=\lparen \global\let)=\rparen + \global\let[=\lbrack \global\let]=\rbrack + \global\let& = \& + + \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb} + \gdef\magicamp{\let&=\amprm} +} + +\newcount\parencount + +% If we encounter &foo, then turn on ()-hacking afterwards +\newif\ifampseen +\def\amprm#1 {\ampseentrue{\bf\ }} + +\def\parenfont{% + \ifampseen + % At the first level, print parens in roman, + % otherwise use the default font. + \ifnum \parencount=1 \rm \fi + \else + % The \sf parens (in \boldbrax) actually are a little bolder than + % the contained text. This is especially needed for [ and ] . + \sf + \fi +} +\def\infirstlevel#1{% + \ifampseen + \ifnum\parencount=1 + #1% + \fi + \fi +} +\def\bfafterword#1 {#1 \bf} + +\def\opnr{% + \global\advance\parencount by 1 + {\parenfont(}% + \infirstlevel \bfafterword +} +\def\clnr{% + {\parenfont)}% + \infirstlevel \sl + \global\advance\parencount by -1 +} + +\newcount\brackcount +\def\lbrb{% + \global\advance\brackcount by 1 + {\bf[}% +} +\def\rbrb{% + {\bf]}% + \global\advance\brackcount by -1 +} + +\def\checkparencounts{% + \ifnum\parencount=0 \else \badparencount \fi + \ifnum\brackcount=0 \else \badbrackcount \fi +} +\def\badparencount{% + \errmessage{Unbalanced parentheses in @def}% + \global\parencount=0 +} +\def\badbrackcount{% + \errmessage{Unbalanced square braces in @def}% + \global\brackcount=0 +} + + +\message{macros,} +% @macro. + +% To do this right we need a feature of e-TeX, \scantokens, +% which we arrange to emulate with a temporary file in ordinary TeX. +\ifx\eTeXversion\undefined + \newwrite\macscribble + \def\scantokens#1{% + \toks0={#1}% + \immediate\openout\macscribble=\jobname.tmp + \immediate\write\macscribble{\the\toks0}% + \immediate\closeout\macscribble + \input \jobname.tmp + } +\fi + +\def\scanmacro#1{% + \begingroup + \newlinechar`\^^M + \let\xeatspaces\eatspaces + % Undo catcode changes of \startcontents and \doprintindex + % When called from @insertcopying or (short)caption, we need active + % backslash to get it printed correctly. Previously, we had + % \catcode`\\=\other instead. We'll see whether a problem appears + % with macro expansion. --kasal, 19aug04 + \catcode`\@=0 \catcode`\\=\active \escapechar=`\@ + % ... and \example + \spaceisspace + % + % Append \endinput to make sure that TeX does not see the ending newline. + % + % I've verified that it is necessary both for e-TeX and for ordinary TeX + % --kasal, 29nov03 + \scantokens{#1\endinput}% + \endgroup +} + +\def\scanexp#1{% + \edef\temp{\noexpand\scanmacro{#1}}% + \temp +} + +\newcount\paramno % Count of parameters +\newtoks\macname % Macro name +\newif\ifrecursive % Is it recursive? +\def\macrolist{} % List of all defined macros in the form + % \do\macro1\do\macro2... + +% Utility routines. +% This does \let #1 = #2, with \csnames; that is, +% \let \csname#1\endcsname = \csname#2\endcsname +% (except of course we have to play expansion games). +% +\def\cslet#1#2{% + \expandafter\let + \csname#1\expandafter\endcsname + \csname#2\endcsname +} + +% Trim leading and trailing spaces off a string. +% Concepts from aro-bend problem 15 (see CTAN). +{\catcode`\@=11 +\gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }} +\gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@} +\gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @} +\def\unbrace#1{#1} +\unbrace{\gdef\trim@@@ #1 } #2@{#1} +} + +% Trim a single trailing ^^M off a string. +{\catcode`\^^M=\other \catcode`\Q=3% +\gdef\eatcr #1{\eatcra #1Q^^MQ}% +\gdef\eatcra#1^^MQ{\eatcrb#1Q}% +\gdef\eatcrb#1Q#2Q{#1}% +} + +% Macro bodies are absorbed as an argument in a context where +% all characters are catcode 10, 11 or 12, except \ which is active +% (as in normal texinfo). It is necessary to change the definition of \. + +% It's necessary to have hard CRs when the macro is executed. This is +% done by making ^^M (\endlinechar) catcode 12 when reading the macro +% body, and then making it the \newlinechar in \scanmacro. + +\def\scanctxt{% + \catcode`\"=\other + \catcode`\+=\other + \catcode`\<=\other + \catcode`\>=\other + \catcode`\@=\other + \catcode`\^=\other + \catcode`\_=\other + \catcode`\|=\other + \catcode`\~=\other +} + +\def\scanargctxt{% + \scanctxt + \catcode`\\=\other + \catcode`\^^M=\other +} + +\def\macrobodyctxt{% + \scanctxt + \catcode`\{=\other + \catcode`\}=\other + \catcode`\^^M=\other + \usembodybackslash +} + +\def\macroargctxt{% + \scanctxt + \catcode`\\=\other +} + +% \mbodybackslash is the definition of \ in @macro bodies. +% It maps \foo\ => \csname macarg.foo\endcsname => #N +% where N is the macro parameter number. +% We define \csname macarg.\endcsname to be \realbackslash, so +% \\ in macro replacement text gets you a backslash. + +{\catcode`@=0 @catcode`@\=@active + @gdef@usembodybackslash{@let\=@mbodybackslash} + @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname} +} +\expandafter\def\csname macarg.\endcsname{\realbackslash} + +\def\macro{\recursivefalse\parsearg\macroxxx} +\def\rmacro{\recursivetrue\parsearg\macroxxx} + +\def\macroxxx#1{% + \getargs{#1}% now \macname is the macname and \argl the arglist + \ifx\argl\empty % no arguments + \paramno=0% + \else + \expandafter\parsemargdef \argl;% + \fi + \if1\csname ismacro.\the\macname\endcsname + \message{Warning: redefining \the\macname}% + \else + \expandafter\ifx\csname \the\macname\endcsname \relax + \else \errmessage{Macro name \the\macname\space already defined}\fi + \global\cslet{macsave.\the\macname}{\the\macname}% + \global\expandafter\let\csname ismacro.\the\macname\endcsname=1% + % Add the macroname to \macrolist + \toks0 = \expandafter{\macrolist\do}% + \xdef\macrolist{\the\toks0 + \expandafter\noexpand\csname\the\macname\endcsname}% + \fi + \begingroup \macrobodyctxt + \ifrecursive \expandafter\parsermacbody + \else \expandafter\parsemacbody + \fi} + +\parseargdef\unmacro{% + \if1\csname ismacro.#1\endcsname + \global\cslet{#1}{macsave.#1}% + \global\expandafter\let \csname ismacro.#1\endcsname=0% + % Remove the macro name from \macrolist: + \begingroup + \expandafter\let\csname#1\endcsname \relax + \let\do\unmacrodo + \xdef\macrolist{\macrolist}% + \endgroup + \else + \errmessage{Macro #1 not defined}% + \fi +} + +% Called by \do from \dounmacro on each macro. The idea is to omit any +% macro definitions that have been changed to \relax. +% +\def\unmacrodo#1{% + \ifx#1\relax + % remove this + \else + \noexpand\do \noexpand #1% + \fi +} + +% This makes use of the obscure feature that if the last token of a +% is #, then the preceding argument is delimited by +% an opening brace, and that opening brace is not consumed. +\def\getargs#1{\getargsxxx#1{}} +\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs} +\def\getmacname #1 #2\relax{\macname={#1}} +\def\getmacargs#1{\def\argl{#1}} + +% Parse the optional {params} list. Set up \paramno and \paramlist +% so \defmacro knows what to do. Define \macarg.blah for each blah +% in the params list, to be ##N where N is the position in that list. +% That gets used by \mbodybackslash (above). + +% We need to get `macro parameter char #' into several definitions. +% The technique used is stolen from LaTeX: let \hash be something +% unexpandable, insert that wherever you need a #, and then redefine +% it to # just before using the token list produced. +% +% The same technique is used to protect \eatspaces till just before +% the macro is used. + +\def\parsemargdef#1;{\paramno=0\def\paramlist{}% + \let\hash\relax\let\xeatspaces\relax\parsemargdefxxx#1,;,} +\def\parsemargdefxxx#1,{% + \if#1;\let\next=\relax + \else \let\next=\parsemargdefxxx + \advance\paramno by 1% + \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname + {\xeatspaces{\hash\the\paramno}}% + \edef\paramlist{\paramlist\hash\the\paramno,}% + \fi\next} + +% These two commands read recursive and nonrecursive macro bodies. +% (They're different since rec and nonrec macros end differently.) + +\long\def\parsemacbody#1@end macro% +{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% +\long\def\parsermacbody#1@end rmacro% +{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% + +% This defines the macro itself. There are six cases: recursive and +% nonrecursive macros of zero, one, and many arguments. +% Much magic with \expandafter here. +% \xdef is used so that macro definitions will survive the file +% they're defined in; @include reads the file inside a group. +\def\defmacro{% + \let\hash=##% convert placeholders to macro parameter chars + \ifrecursive + \ifcase\paramno + % 0 + \expandafter\xdef\csname\the\macname\endcsname{% + \noexpand\scanmacro{\temp}}% + \or % 1 + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup\noexpand\macroargctxt + \noexpand\braceorline + \expandafter\noexpand\csname\the\macname xxx\endcsname}% + \expandafter\xdef\csname\the\macname xxx\endcsname##1{% + \egroup\noexpand\scanmacro{\temp}}% + \else % many + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup\noexpand\macroargctxt + \noexpand\csname\the\macname xx\endcsname}% + \expandafter\xdef\csname\the\macname xx\endcsname##1{% + \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% + \expandafter\expandafter + \expandafter\xdef + \expandafter\expandafter + \csname\the\macname xxx\endcsname + \paramlist{\egroup\noexpand\scanmacro{\temp}}% + \fi + \else + \ifcase\paramno + % 0 + \expandafter\xdef\csname\the\macname\endcsname{% + \noexpand\norecurse{\the\macname}% + \noexpand\scanmacro{\temp}\egroup}% + \or % 1 + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup\noexpand\macroargctxt + \noexpand\braceorline + \expandafter\noexpand\csname\the\macname xxx\endcsname}% + \expandafter\xdef\csname\the\macname xxx\endcsname##1{% + \egroup + \noexpand\norecurse{\the\macname}% + \noexpand\scanmacro{\temp}\egroup}% + \else % many + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup\noexpand\macroargctxt + \expandafter\noexpand\csname\the\macname xx\endcsname}% + \expandafter\xdef\csname\the\macname xx\endcsname##1{% + \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% + \expandafter\expandafter + \expandafter\xdef + \expandafter\expandafter + \csname\the\macname xxx\endcsname + \paramlist{% + \egroup + \noexpand\norecurse{\the\macname}% + \noexpand\scanmacro{\temp}\egroup}% + \fi + \fi} + +\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}} + +% \braceorline decides whether the next nonwhitespace character is a +% {. If so it reads up to the closing }, if not, it reads the whole +% line. Whatever was read is then fed to the next control sequence +% as an argument (by \parsebrace or \parsearg) +\def\braceorline#1{\let\next=#1\futurelet\nchar\braceorlinexxx} +\def\braceorlinexxx{% + \ifx\nchar\bgroup\else + \expandafter\parsearg + \fi \next} + +% We want to disable all macros during \shipout so that they are not +% expanded by \write. +\def\turnoffmacros{\begingroup \def\do##1{\let\noexpand##1=\relax}% + \edef\next{\macrolist}\expandafter\endgroup\next} + +% For \indexnofonts, we need to get rid of all macros, leaving only the +% arguments (if present). Of course this is not nearly correct, but it +% is the best we can do for now. makeinfo does not expand macros in the +% argument to @deffn, which ends up writing an index entry, and texindex +% isn't prepared for an index sort entry that starts with \. +% +% Since macro invocations are followed by braces, we can just redefine them +% to take a single TeX argument. The case of a macro invocation that +% goes to end-of-line is not handled. +% +\def\emptyusermacros{\begingroup + \def\do##1{\let\noexpand##1=\noexpand\asis}% + \edef\next{\macrolist}\expandafter\endgroup\next} + + +% @alias. +% We need some trickery to remove the optional spaces around the equal +% sign. Just make them active and then expand them all to nothing. +\def\alias{\parseargusing\obeyspaces\aliasxxx} +\def\aliasxxx #1{\aliasyyy#1\relax} +\def\aliasyyy #1=#2\relax{% + {% + \expandafter\let\obeyedspace=\empty + \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}% + }% + \next +} + + +\message{cross references,} + +\newwrite\auxfile + +\newif\ifhavexrefs % True if xref values are known. +\newif\ifwarnedxrefs % True if we warned once that they aren't known. + +% @inforef is relatively simple. +\def\inforef #1{\inforefzzz #1,,,,**} +\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}}, + node \samp{\ignorespaces#1{}}} + +% @node's only job in TeX is to define \lastnode, which is used in +% cross-references. The @node line might or might not have commas, and +% might or might not have spaces before the first comma, like: +% @node foo , bar , ... +% We don't want such trailing spaces in the node name. +% +\parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse} +% +% also remove a trailing comma, in case of something like this: +% @node Help-Cross, , , Cross-refs +\def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse} +\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}} + +\let\nwnode=\node +\let\lastnode=\empty + +% Write a cross-reference definition for the current node. #1 is the +% type (Ynumbered, Yappendix, Ynothing). +% +\def\donoderef#1{% + \ifx\lastnode\empty\else + \setref{\lastnode}{#1}% + \global\let\lastnode=\empty + \fi +} + +% @anchor{NAME} -- define xref target at arbitrary point. +% +\newcount\savesfregister +% +\def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi} +\def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi} +\def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces} + +% \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an +% anchor), which consists of three parts: +% 1) NAME-title - the current sectioning name taken from \thissection, +% or the anchor name. +% 2) NAME-snt - section number and type, passed as the SNT arg, or +% empty for anchors. +% 3) NAME-pg - the page number. +% +% This is called from \donoderef, \anchor, and \dofloat. In the case of +% floats, there is an additional part, which is not written here: +% 4) NAME-lof - the text as it should appear in a @listoffloats. +% +\def\setref#1#2{% + \pdfmkdest{#1}% + \iflinks + {% + \atdummies % preserve commands, but don't expand them + \turnoffactive + \otherbackslash + \edef\writexrdef##1##2{% + \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef + ##1}{##2}}% these are parameters of \writexrdef + }% + \toks0 = \expandafter{\thissection}% + \immediate \writexrdef{title}{\the\toks0 }% + \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc. + \writexrdef{pg}{\folio}% will be written later, during \shipout + }% + \fi +} + +% @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is +% the node name, #2 the name of the Info cross-reference, #3 the printed +% node name, #4 the name of the Info file, #5 the name of the printed +% manual. All but the node name can be omitted. +% +\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]} +\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]} +\def\ref#1{\xrefX[#1,,,,,,,]} +\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup + \unsepspaces + \def\printedmanual{\ignorespaces #5}% + \def\printedrefname{\ignorespaces #3}% + \setbox1=\hbox{\printedmanual\unskip}% + \setbox0=\hbox{\printedrefname\unskip}% + \ifdim \wd0 = 0pt + % No printed node name was explicitly given. + \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax + % Use the node name inside the square brackets. + \def\printedrefname{\ignorespaces #1}% + \else + % Use the actual chapter/section title appear inside + % the square brackets. Use the real section title if we have it. + \ifdim \wd1 > 0pt + % It is in another manual, so we don't have it. + \def\printedrefname{\ignorespaces #1}% + \else + \ifhavexrefs + % We know the real title if we have the xref values. + \def\printedrefname{\refx{#1-title}{}}% + \else + % Otherwise just copy the Info node name. + \def\printedrefname{\ignorespaces #1}% + \fi% + \fi + \fi + \fi + % + % Make link in pdf output. + \ifpdf + \leavevmode + \getfilename{#4}% + {\turnoffactive \otherbackslash + \ifnum\filenamelength>0 + \startlink attr{/Border [0 0 0]}% + goto file{\the\filename.pdf} name{#1}% + \else + \startlink attr{/Border [0 0 0]}% + goto name{\pdfmkpgn{#1}}% + \fi + }% + \linkcolor + \fi + % + % Float references are printed completely differently: "Figure 1.2" + % instead of "[somenode], p.3". We distinguish them by the + % LABEL-title being set to a magic string. + {% + % Have to otherify everything special to allow the \csname to + % include an _ in the xref name, etc. + \indexnofonts + \turnoffactive + \otherbackslash + \expandafter\global\expandafter\let\expandafter\Xthisreftitle + \csname XR#1-title\endcsname + }% + \iffloat\Xthisreftitle + % If the user specified the print name (third arg) to the ref, + % print it instead of our usual "Figure 1.2". + \ifdim\wd0 = 0pt + \refx{#1-snt}% + \else + \printedrefname + \fi + % + % if the user also gave the printed manual name (fifth arg), append + % "in MANUALNAME". + \ifdim \wd1 > 0pt + \space \putwordin{} \cite{\printedmanual}% + \fi + \else + % node/anchor (non-float) references. + % + % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not + % insert empty discretionaries after hyphens, which means that it will + % not find a line break at a hyphen in a node names. Since some manuals + % are best written with fairly long node names, containing hyphens, this + % is a loss. Therefore, we give the text of the node name again, so it + % is as if TeX is seeing it for the first time. + \ifdim \wd1 > 0pt + \putwordsection{} ``\printedrefname'' \putwordin{} \cite{\printedmanual}% + \else + % _ (for example) has to be the character _ for the purposes of the + % control sequence corresponding to the node, but it has to expand + % into the usual \leavevmode...\vrule stuff for purposes of + % printing. So we \turnoffactive for the \refx-snt, back on for the + % printing, back off for the \refx-pg. + {\turnoffactive \otherbackslash + % Only output a following space if the -snt ref is nonempty; for + % @unnumbered and @anchor, it won't be. + \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}% + \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi + }% + % output the `[mynode]' via a macro so it can be overridden. + \xrefprintnodename\printedrefname + % + % But we always want a comma and a space: + ,\space + % + % output the `page 3'. + \turnoffactive \otherbackslash \putwordpage\tie\refx{#1-pg}{}% + \fi + \fi + \endlink +\endgroup} + +% This macro is called from \xrefX for the `[nodename]' part of xref +% output. It's a separate macro only so it can be changed more easily, +% since square brackets don't work well in some documents. Particularly +% one that Bob is working on :). +% +\def\xrefprintnodename#1{[#1]} + +% Things referred to by \setref. +% +\def\Ynothing{} +\def\Yomitfromtoc{} +\def\Ynumbered{% + \ifnum\secno=0 + \putwordChapter@tie \the\chapno + \else \ifnum\subsecno=0 + \putwordSection@tie \the\chapno.\the\secno + \else \ifnum\subsubsecno=0 + \putwordSection@tie \the\chapno.\the\secno.\the\subsecno + \else + \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno + \fi\fi\fi +} +\def\Yappendix{% + \ifnum\secno=0 + \putwordAppendix@tie @char\the\appendixno{}% + \else \ifnum\subsecno=0 + \putwordSection@tie @char\the\appendixno.\the\secno + \else \ifnum\subsubsecno=0 + \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno + \else + \putwordSection@tie + @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno + \fi\fi\fi +} + +% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME. +% If its value is nonempty, SUFFIX is output afterward. +% +\def\refx#1#2{% + {% + \indexnofonts + \otherbackslash + \expandafter\global\expandafter\let\expandafter\thisrefX + \csname XR#1\endcsname + }% + \ifx\thisrefX\relax + % If not defined, say something at least. + \angleleft un\-de\-fined\angleright + \iflinks + \ifhavexrefs + \message{\linenumber Undefined cross reference `#1'.}% + \else + \ifwarnedxrefs\else + \global\warnedxrefstrue + \message{Cross reference values unknown; you must run TeX again.}% + \fi + \fi + \fi + \else + % It's defined, so just use it. + \thisrefX + \fi + #2% Output the suffix in any case. +} + +% This is the macro invoked by entries in the aux file. Usually it's +% just a \def (we prepend XR to the control sequence name to avoid +% collisions). But if this is a float type, we have more work to do. +% +\def\xrdef#1#2{% + \expandafter\gdef\csname XR#1\endcsname{#2}% remember this xref value. + % + % Was that xref control sequence that we just defined for a float? + \expandafter\iffloat\csname XR#1\endcsname + % it was a float, and we have the (safe) float type in \iffloattype. + \expandafter\let\expandafter\floatlist + \csname floatlist\iffloattype\endcsname + % + % Is this the first time we've seen this float type? + \expandafter\ifx\floatlist\relax + \toks0 = {\do}% yes, so just \do + \else + % had it before, so preserve previous elements in list. + \toks0 = \expandafter{\floatlist\do}% + \fi + % + % Remember this xref in the control sequence \floatlistFLOATTYPE, + % for later use in \listoffloats. + \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0{#1}}% + \fi +} + +% Read the last existing aux file, if any. No error if none exists. +% +\def\tryauxfile{% + \openin 1 \jobname.aux + \ifeof 1 \else + \readauxfile + \global\havexrefstrue + \fi + \closein 1 +} + +\def\readauxfile{\begingroup + \catcode`\^^@=\other + \catcode`\^^A=\other + \catcode`\^^B=\other + \catcode`\^^C=\other + \catcode`\^^D=\other + \catcode`\^^E=\other + \catcode`\^^F=\other + \catcode`\^^G=\other + \catcode`\^^H=\other + \catcode`\^^K=\other + \catcode`\^^L=\other + \catcode`\^^N=\other + \catcode`\^^P=\other + \catcode`\^^Q=\other + \catcode`\^^R=\other + \catcode`\^^S=\other + \catcode`\^^T=\other + \catcode`\^^U=\other + \catcode`\^^V=\other + \catcode`\^^W=\other + \catcode`\^^X=\other + \catcode`\^^Z=\other + \catcode`\^^[=\other + \catcode`\^^\=\other + \catcode`\^^]=\other + \catcode`\^^^=\other + \catcode`\^^_=\other + % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc. + % in xref tags, i.e., node names. But since ^^e4 notation isn't + % supported in the main text, it doesn't seem desirable. Furthermore, + % that is not enough: for node names that actually contain a ^ + % character, we would end up writing a line like this: 'xrdef {'hat + % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first + % argument, and \hat is not an expandable control sequence. It could + % all be worked out, but why? Either we support ^^ or we don't. + % + % The other change necessary for this was to define \auxhat: + % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter + % and then to call \auxhat in \setq. + % + \catcode`\^=\other + % + % Special characters. Should be turned off anyway, but... + \catcode`\~=\other + \catcode`\[=\other + \catcode`\]=\other + \catcode`\"=\other + \catcode`\_=\other + \catcode`\|=\other + \catcode`\<=\other + \catcode`\>=\other + \catcode`\$=\other + \catcode`\#=\other + \catcode`\&=\other + \catcode`\%=\other + \catcode`+=\other % avoid \+ for paranoia even though we've turned it off + % + % This is to support \ in node names and titles, since the \ + % characters end up in a \csname. It's easier than + % leaving it active and making its active definition an actual \ + % character. What I don't understand is why it works in the *value* + % of the xrdef. Seems like it should be a catcode12 \, and that + % should not typeset properly. But it works, so I'm moving on for + % now. --karl, 15jan04. + \catcode`\\=\other + % + % Make the characters 128-255 be printing characters. + {% + \count 1=128 + \def\loop{% + \catcode\count 1=\other + \advance\count 1 by 1 + \ifnum \count 1<256 \loop \fi + }% + }% + % + % @ is our escape character in .aux files, and we need braces. + \catcode`\{=1 + \catcode`\}=2 + \catcode`\@=0 + % + \input \jobname.aux +\endgroup} + + +\message{insertions,} +% including footnotes. + +\newcount \footnoteno + +% The trailing space in the following definition for supereject is +% vital for proper filling; pages come out unaligned when you do a +% pagealignmacro call if that space before the closing brace is +% removed. (Generally, numeric constants should always be followed by a +% space to prevent strange expansion errors.) +\def\supereject{\par\penalty -20000\footnoteno =0 } + +% @footnotestyle is meaningful for info output only. +\let\footnotestyle=\comment + +{\catcode `\@=11 +% +% Auto-number footnotes. Otherwise like plain. +\gdef\footnote{% + \let\indent=\ptexindent + \let\noindent=\ptexnoindent + \global\advance\footnoteno by \@ne + \edef\thisfootno{$^{\the\footnoteno}$}% + % + % In case the footnote comes at the end of a sentence, preserve the + % extra spacing after we do the footnote number. + \let\@sf\empty + \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi + % + % Remove inadvertent blank space before typesetting the footnote number. + \unskip + \thisfootno\@sf + \dofootnote +}% + +% Don't bother with the trickery in plain.tex to not require the +% footnote text as a parameter. Our footnotes don't need to be so general. +% +% Oh yes, they do; otherwise, @ifset (and anything else that uses +% \parseargline) fails inside footnotes because the tokens are fixed when +% the footnote is read. --karl, 16nov96. +% +\gdef\dofootnote{% + \insert\footins\bgroup + % We want to typeset this text as a normal paragraph, even if the + % footnote reference occurs in (for example) a display environment. + % So reset some parameters. + \hsize=\pagewidth + \interlinepenalty\interfootnotelinepenalty + \splittopskip\ht\strutbox % top baseline for broken footnotes + \splitmaxdepth\dp\strutbox + \floatingpenalty\@MM + \leftskip\z@skip + \rightskip\z@skip + \spaceskip\z@skip + \xspaceskip\z@skip + \parindent\defaultparindent + % + \smallfonts \rm + % + % Because we use hanging indentation in footnotes, a @noindent appears + % to exdent this text, so make it be a no-op. makeinfo does not use + % hanging indentation so @noindent can still be needed within footnote + % text after an @example or the like (not that this is good style). + \let\noindent = \relax + % + % Hang the footnote text off the number. Use \everypar in case the + % footnote extends for more than one paragraph. + \everypar = {\hang}% + \textindent{\thisfootno}% + % + % Don't crash into the line above the footnote text. Since this + % expands into a box, it must come within the paragraph, lest it + % provide a place where TeX can split the footnote. + \footstrut + \futurelet\next\fo@t +} +}%end \catcode `\@=11 + +% In case a @footnote appears in a vbox, save the footnote text and create +% the real \insert just after the vbox finished. Otherwise, the insertion +% would be lost. +% Similarily, if a @footnote appears inside an alignment, save the footnote +% text to a box and make the \insert when a row of the table is finished. +% And the same can be done for other insert classes. --kasal, 16nov03. + +% Replace the \insert primitive by a cheating macro. +% Deeper inside, just make sure that the saved insertions are not spilled +% out prematurely. +% +\def\startsavinginserts{% + \ifx \insert\ptexinsert + \let\insert\saveinsert + \else + \let\checkinserts\relax + \fi +} + +% This \insert replacement works for both \insert\footins{foo} and +% \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}. +% +\def\saveinsert#1{% + \edef\next{\noexpand\savetobox \makeSAVEname#1}% + \afterassignment\next + % swallow the left brace + \let\temp = +} +\def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}} +\def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1} + +\def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi} + +\def\placesaveins#1{% + \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname + {\box#1}% +} + +% eat @SAVE -- beware, all of them have catcode \other: +{ + \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials % ;-) + \gdef\gobblesave @SAVE{} +} + +% initialization: +\def\newsaveins #1{% + \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}% + \next +} +\def\newsaveinsX #1{% + \csname newbox\endcsname #1% + \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts + \checksaveins #1}% +} + +% initialize: +\let\checkinserts\empty +\newsaveins\footins +\newsaveins\margin + + +% @image. We use the macros from epsf.tex to support this. +% If epsf.tex is not installed and @image is used, we complain. +% +% Check for and read epsf.tex up front. If we read it only at @image +% time, we might be inside a group, and then its definitions would get +% undone and the next image would fail. +\openin 1 = epsf.tex +\ifeof 1 \else + % Do not bother showing banner with epsf.tex v2.7k (available in + % doc/epsf.tex and on ctan). + \def\epsfannounce{\toks0 = }% + \input epsf.tex +\fi +\closein 1 +% +% We will only complain once about lack of epsf.tex. +\newif\ifwarnednoepsf +\newhelp\noepsfhelp{epsf.tex must be installed for images to + work. It is also included in the Texinfo distribution, or you can get + it from ftp://tug.org/tex/epsf.tex.} +% +\def\image#1{% + \ifx\epsfbox\undefined + \ifwarnednoepsf \else + \errhelp = \noepsfhelp + \errmessage{epsf.tex not found, images will be ignored}% + \global\warnednoepsftrue + \fi + \else + \imagexxx #1,,,,,\finish + \fi +} +% +% Arguments to @image: +% #1 is (mandatory) image filename; we tack on .eps extension. +% #2 is (optional) width, #3 is (optional) height. +% #4 is (ignored optional) html alt text. +% #5 is (ignored optional) extension. +% #6 is just the usual extra ignored arg for parsing this stuff. +\newif\ifimagevmode +\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup + \catcode`\^^M = 5 % in case we're inside an example + \normalturnoffactive % allow _ et al. in names + % If the image is by itself, center it. + \ifvmode + \imagevmodetrue + \nobreak\bigskip + % Usually we'll have text after the image which will insert + % \parskip glue, so insert it here too to equalize the space + % above and below. + \nobreak\vskip\parskip + \nobreak + \line\bgroup\hss + \fi + % + % Output the image. + \ifpdf + \dopdfimage{#1}{#2}{#3}% + \else + % \epsfbox itself resets \epsf?size at each figure. + \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi + \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi + \epsfbox{#1.eps}% + \fi + % + \ifimagevmode \hss \egroup \bigbreak \fi % space after the image +\endgroup} + + +% @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables, +% etc. We don't actually implement floating yet, we always include the +% float "here". But it seemed the best name for the future. +% +\envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish} + +% There may be a space before second and/or third parameter; delete it. +\def\eatcommaspace#1, {#1,} + +% #1 is the optional FLOATTYPE, the text label for this float, typically +% "Figure", "Table", "Example", etc. Can't contain commas. If omitted, +% this float will not be numbered and cannot be referred to. +% +% #2 is the optional xref label. Also must be present for the float to +% be referable. +% +% #3 is the optional positioning argument; for now, it is ignored. It +% will somehow specify the positions allowed to float to (here, top, bottom). +% +% We keep a separate counter for each FLOATTYPE, which we reset at each +% chapter-level command. +\let\resetallfloatnos=\empty +% +\def\dofloat#1,#2,#3,#4\finish{% + \let\thiscaption=\empty + \let\thisshortcaption=\empty + % + % don't lose footnotes inside @float. + % + % BEWARE: when the floats start float, we have to issue warning whenever an + % insert appears inside a float which could possibly float. --kasal, 26may04 + % + \startsavinginserts + % + % We can't be used inside a paragraph. + \par + % + \vtop\bgroup + \def\floattype{#1}% + \def\floatlabel{#2}% + \def\floatloc{#3}% we do nothing with this yet. + % + \ifx\floattype\empty + \let\safefloattype=\empty + \else + {% + % the floattype might have accents or other special characters, + % but we need to use it in a control sequence name. + \indexnofonts + \turnoffactive + \xdef\safefloattype{\floattype}% + }% + \fi + % + % If label is given but no type, we handle that as the empty type. + \ifx\floatlabel\empty \else + % We want each FLOATTYPE to be numbered separately (Figure 1, + % Table 1, Figure 2, ...). (And if no label, no number.) + % + \expandafter\getfloatno\csname\safefloattype floatno\endcsname + \global\advance\floatno by 1 + % + {% + % This magic value for \thissection is output by \setref as the + % XREFLABEL-title value. \xrefX uses it to distinguish float + % labels (which have a completely different output format) from + % node and anchor labels. And \xrdef uses it to construct the + % lists of floats. + % + \edef\thissection{\floatmagic=\safefloattype}% + \setref{\floatlabel}{Yfloat}% + }% + \fi + % + % start with \parskip glue, I guess. + \vskip\parskip + % + % Don't suppress indentation if a float happens to start a section. + \restorefirstparagraphindent +} + +% we have these possibilities: +% @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap +% @float Foo,lbl & no caption: Foo 1.1 +% @float Foo & @caption{Cap}: Foo: Cap +% @float Foo & no caption: Foo +% @float ,lbl & Caption{Cap}: 1.1: Cap +% @float ,lbl & no caption: 1.1 +% @float & @caption{Cap}: Cap +% @float & no caption: +% +\def\Efloat{% + \let\floatident = \empty + % + % In all cases, if we have a float type, it comes first. + \ifx\floattype\empty \else \def\floatident{\floattype}\fi + % + % If we have an xref label, the number comes next. + \ifx\floatlabel\empty \else + \ifx\floattype\empty \else % if also had float type, need tie first. + \appendtomacro\floatident{\tie}% + \fi + % the number. + \appendtomacro\floatident{\chaplevelprefix\the\floatno}% + \fi + % + % Start the printed caption with what we've constructed in + % \floatident, but keep it separate; we need \floatident again. + \let\captionline = \floatident + % + \ifx\thiscaption\empty \else + \ifx\floatident\empty \else + \appendtomacro\captionline{: }% had ident, so need a colon between + \fi + % + % caption text. + \appendtomacro\captionline{\scanexp\thiscaption}% + \fi + % + % If we have anything to print, print it, with space before. + % Eventually this needs to become an \insert. + \ifx\captionline\empty \else + \vskip.5\parskip + \captionline + % + % Space below caption. + \vskip\parskip + \fi + % + % If have an xref label, write the list of floats info. Do this + % after the caption, to avoid chance of it being a breakpoint. + \ifx\floatlabel\empty \else + % Write the text that goes in the lof to the aux file as + % \floatlabel-lof. Besides \floatident, we include the short + % caption if specified, else the full caption if specified, else nothing. + {% + \atdummies \turnoffactive \otherbackslash + % since we read the caption text in the macro world, where ^^M + % is turned into a normal character, we have to scan it back, so + % we don't write the literal three characters "^^M" into the aux file. + \scanexp{% + \xdef\noexpand\gtemp{% + \ifx\thisshortcaption\empty + \thiscaption + \else + \thisshortcaption + \fi + }% + }% + \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident + \ifx\gtemp\empty \else : \gtemp \fi}}% + }% + \fi + \egroup % end of \vtop + % + % place the captured inserts + % + % BEWARE: when the floats start float, we have to issue warning whenever an + % insert appears inside a float which could possibly float. --kasal, 26may04 + % + \checkinserts +} + +% Append the tokens #2 to the definition of macro #1, not expanding either. +% +\def\appendtomacro#1#2{% + \expandafter\def\expandafter#1\expandafter{#1#2}% +} + +% @caption, @shortcaption +% +\def\caption{\docaption\thiscaption} +\def\shortcaption{\docaption\thisshortcaption} +\def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption} +\def\defcaption#1#2{\egroup \def#1{#2}} + +% The parameter is the control sequence identifying the counter we are +% going to use. Create it if it doesn't exist and assign it to \floatno. +\def\getfloatno#1{% + \ifx#1\relax + % Haven't seen this figure type before. + \csname newcount\endcsname #1% + % + % Remember to reset this floatno at the next chap. + \expandafter\gdef\expandafter\resetallfloatnos + \expandafter{\resetallfloatnos #1=0 }% + \fi + \let\floatno#1% +} + +% \setref calls this to get the XREFLABEL-snt value. We want an @xref +% to the FLOATLABEL to expand to "Figure 3.1". We call \setref when we +% first read the @float command. +% +\def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}% + +% Magic string used for the XREFLABEL-title value, so \xrefX can +% distinguish floats from other xref types. +\def\floatmagic{!!float!!} + +% #1 is the control sequence we are passed; we expand into a conditional +% which is true if #1 represents a float ref. That is, the magic +% \thissection value which we \setref above. +% +\def\iffloat#1{\expandafter\doiffloat#1==\finish} +% +% #1 is (maybe) the \floatmagic string. If so, #2 will be the +% (safe) float type for this float. We set \iffloattype to #2. +% +\def\doiffloat#1=#2=#3\finish{% + \def\temp{#1}% + \def\iffloattype{#2}% + \ifx\temp\floatmagic +} + +% @listoffloats FLOATTYPE - print a list of floats like a table of contents. +% +\parseargdef\listoffloats{% + \def\floattype{#1}% floattype + {% + % the floattype might have accents or other special characters, + % but we need to use it in a control sequence name. + \indexnofonts + \turnoffactive + \xdef\safefloattype{\floattype}% + }% + % + % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE. + \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax + \ifhavexrefs + % if the user said @listoffloats foo but never @float foo. + \message{\linenumber No `\safefloattype' floats to list.}% + \fi + \else + \begingroup + \leftskip=\tocindent % indent these entries like a toc + \let\do=\listoffloatsdo + \csname floatlist\safefloattype\endcsname + \endgroup + \fi +} + +% This is called on each entry in a list of floats. We're passed the +% xref label, in the form LABEL-title, which is how we save it in the +% aux file. We strip off the -title and look up \XRLABEL-lof, which +% has the text we're supposed to typeset here. +% +% Figures without xref labels will not be included in the list (since +% they won't appear in the aux file). +% +\def\listoffloatsdo#1{\listoffloatsdoentry#1\finish} +\def\listoffloatsdoentry#1-title\finish{{% + % Can't fully expand XR#1-lof because it can contain anything. Just + % pass the control sequence. On the other hand, XR#1-pg is just the + % page number, and we want to fully expand that so we can get a link + % in pdf output. + \toksA = \expandafter{\csname XR#1-lof\endcsname}% + % + % use the same \entry macro we use to generate the TOC and index. + \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}% + \writeentry +}} + +\message{localization,} +% and i18n. + +% @documentlanguage is usually given very early, just after +% @setfilename. If done too late, it may not override everything +% properly. Single argument is the language abbreviation. +% It would be nice if we could set up a hyphenation file here. +% +\parseargdef\documentlanguage{% + \tex % read txi-??.tex file in plain TeX. + % Read the file if it exists. + \openin 1 txi-#1.tex + \ifeof 1 + \errhelp = \nolanghelp + \errmessage{Cannot read language file txi-#1.tex}% + \else + \input txi-#1.tex + \fi + \closein 1 + \endgroup +} +\newhelp\nolanghelp{The given language definition file cannot be found or +is empty. Maybe you need to install it? In the current directory +should work if nowhere else does.} + + +% @documentencoding should change something in TeX eventually, most +% likely, but for now just recognize it. +\let\documentencoding = \comment + + +% Page size parameters. +% +\newdimen\defaultparindent \defaultparindent = 15pt + +\chapheadingskip = 15pt plus 4pt minus 2pt +\secheadingskip = 12pt plus 3pt minus 2pt +\subsecheadingskip = 9pt plus 2pt minus 2pt + +% Prevent underfull vbox error messages. +\vbadness = 10000 + +% Don't be so finicky about underfull hboxes, either. +\hbadness = 2000 + +% Following George Bush, just get rid of widows and orphans. +\widowpenalty=10000 +\clubpenalty=10000 + +% Use TeX 3.0's \emergencystretch to help line breaking, but if we're +% using an old version of TeX, don't do anything. We want the amount of +% stretch added to depend on the line length, hence the dependence on +% \hsize. We call this whenever the paper size is set. +% +\def\setemergencystretch{% + \ifx\emergencystretch\thisisundefined + % Allow us to assign to \emergencystretch anyway. + \def\emergencystretch{\dimen0}% + \else + \emergencystretch = .15\hsize + \fi +} + +% Parameters in order: 1) textheight; 2) textwidth; 3) voffset; +% 4) hoffset; 5) binding offset; 6) topskip; 7) physical page height; 8) +% physical page width. +% +% We also call \setleading{\textleading}, so the caller should define +% \textleading. The caller should also set \parskip. +% +\def\internalpagesizes#1#2#3#4#5#6#7#8{% + \voffset = #3\relax + \topskip = #6\relax + \splittopskip = \topskip + % + \vsize = #1\relax + \advance\vsize by \topskip + \outervsize = \vsize + \advance\outervsize by 2\topandbottommargin + \pageheight = \vsize + % + \hsize = #2\relax + \outerhsize = \hsize + \advance\outerhsize by 0.5in + \pagewidth = \hsize + % + \normaloffset = #4\relax + \bindingoffset = #5\relax + % + \ifpdf + \pdfpageheight #7\relax + \pdfpagewidth #8\relax + \fi + % + \setleading{\textleading} + % + \parindent = \defaultparindent + \setemergencystretch +} + +% @letterpaper (the default). +\def\letterpaper{{\globaldefs = 1 + \parskip = 3pt plus 2pt minus 1pt + \textleading = 13.2pt + % + % If page is nothing but text, make it come out even. + \internalpagesizes{46\baselineskip}{6in}% + {\voffset}{.25in}% + {\bindingoffset}{36pt}% + {11in}{8.5in}% +}} + +% Use @smallbook to reset parameters for 7x9.5 (or so) format. +\def\smallbook{{\globaldefs = 1 + \parskip = 2pt plus 1pt + \textleading = 12pt + % + \internalpagesizes{7.5in}{5in}% + {\voffset}{.25in}% + {\bindingoffset}{16pt}% + {9.25in}{7in}% + % + \lispnarrowing = 0.3in + \tolerance = 700 + \hfuzz = 1pt + \contentsrightmargin = 0pt + \defbodyindent = .5cm +}} + +% Use @afourpaper to print on European A4 paper. +\def\afourpaper{{\globaldefs = 1 + \parskip = 3pt plus 2pt minus 1pt + \textleading = 13.2pt + % + % Double-side printing via postscript on Laserjet 4050 + % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm. + % To change the settings for a different printer or situation, adjust + % \normaloffset until the front-side and back-side texts align. Then + % do the same for \bindingoffset. You can set these for testing in + % your texinfo source file like this: + % @tex + % \global\normaloffset = -6mm + % \global\bindingoffset = 10mm + % @end tex + \internalpagesizes{51\baselineskip}{160mm} + {\voffset}{\hoffset}% + {\bindingoffset}{44pt}% + {297mm}{210mm}% + % + \tolerance = 700 + \hfuzz = 1pt + \contentsrightmargin = 0pt + \defbodyindent = 5mm +}} + +% Use @afivepaper to print on European A5 paper. +% From romildo@urano.iceb.ufop.br, 2 July 2000. +% He also recommends making @example and @lisp be small. +\def\afivepaper{{\globaldefs = 1 + \parskip = 2pt plus 1pt minus 0.1pt + \textleading = 12.5pt + % + \internalpagesizes{160mm}{120mm}% + {\voffset}{\hoffset}% + {\bindingoffset}{8pt}% + {210mm}{148mm}% + % + \lispnarrowing = 0.2in + \tolerance = 800 + \hfuzz = 1.2pt + \contentsrightmargin = 0pt + \defbodyindent = 2mm + \tableindent = 12mm +}} + +% A specific text layout, 24x15cm overall, intended for A4 paper. +\def\afourlatex{{\globaldefs = 1 + \afourpaper + \internalpagesizes{237mm}{150mm}% + {\voffset}{4.6mm}% + {\bindingoffset}{7mm}% + {297mm}{210mm}% + % + % Must explicitly reset to 0 because we call \afourpaper. + \globaldefs = 0 +}} + +% Use @afourwide to print on A4 paper in landscape format. +\def\afourwide{{\globaldefs = 1 + \afourpaper + \internalpagesizes{241mm}{165mm}% + {\voffset}{-2.95mm}% + {\bindingoffset}{7mm}% + {297mm}{210mm}% + \globaldefs = 0 +}} + +% @pagesizes TEXTHEIGHT[,TEXTWIDTH] +% Perhaps we should allow setting the margins, \topskip, \parskip, +% and/or leading, also. Or perhaps we should compute them somehow. +% +\parseargdef\pagesizes{\pagesizesyyy #1,,\finish} +\def\pagesizesyyy#1,#2,#3\finish{{% + \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi + \globaldefs = 1 + % + \parskip = 3pt plus 2pt minus 1pt + \setleading{\textleading}% + % + \dimen0 = #1 + \advance\dimen0 by \voffset + % + \dimen2 = \hsize + \advance\dimen2 by \normaloffset + % + \internalpagesizes{#1}{\hsize}% + {\voffset}{\normaloffset}% + {\bindingoffset}{44pt}% + {\dimen0}{\dimen2}% +}} + +% Set default to letter. +% +\letterpaper + + +\message{and turning on texinfo input format.} + +% Define macros to output various characters with catcode for normal text. +\catcode`\"=\other +\catcode`\~=\other +\catcode`\^=\other +\catcode`\_=\other +\catcode`\|=\other +\catcode`\<=\other +\catcode`\>=\other +\catcode`\+=\other +\catcode`\$=\other +\def\normaldoublequote{"} +\def\normaltilde{~} +\def\normalcaret{^} +\def\normalunderscore{_} +\def\normalverticalbar{|} +\def\normalless{<} +\def\normalgreater{>} +\def\normalplus{+} +\def\normaldollar{$}%$ font-lock fix + +% This macro is used to make a character print one way in \tt +% (where it can probably be output as-is), and another way in other fonts, +% where something hairier probably needs to be done. +% +% #1 is what to print if we are indeed using \tt; #2 is what to print +% otherwise. Since all the Computer Modern typewriter fonts have zero +% interword stretch (and shrink), and it is reasonable to expect all +% typewriter fonts to have this, we can check that font parameter. +% +\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi} + +% Same as above, but check for italic font. Actually this also catches +% non-italic slanted fonts since it is impossible to distinguish them from +% italic fonts. But since this is only used by $ and it uses \sl anyway +% this is not a problem. +\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi} + +% Turn off all special characters except @ +% (and those which the user can use as if they were ordinary). +% Most of these we simply print from the \tt font, but for some, we can +% use math or other variants that look better in normal text. + +\catcode`\"=\active +\def\activedoublequote{{\tt\char34}} +\let"=\activedoublequote +\catcode`\~=\active +\def~{{\tt\char126}} +\chardef\hat=`\^ +\catcode`\^=\active +\def^{{\tt \hat}} + +\catcode`\_=\active +\def_{\ifusingtt\normalunderscore\_} +% Subroutine for the previous macro. +\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em } + +\catcode`\|=\active +\def|{{\tt\char124}} +\chardef \less=`\< +\catcode`\<=\active +\def<{{\tt \less}} +\chardef \gtr=`\> +\catcode`\>=\active +\def>{{\tt \gtr}} +\catcode`\+=\active +\def+{{\tt \char 43}} +\catcode`\$=\active +\def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix + +% If a .fmt file is being used, characters that might appear in a file +% name cannot be active until we have parsed the command line. +% So turn them off again, and have \everyjob (or @setfilename) turn them on. +% \otherifyactive is called near the end of this file. +\def\otherifyactive{\catcode`+=\other \catcode`\_=\other} + +\catcode`\@=0 + +% \backslashcurfont outputs one backslash character in current font, +% as in \char`\\. +\global\chardef\backslashcurfont=`\\ +\global\let\rawbackslashxx=\backslashcurfont % let existing .??s files work + +% \rawbackslash defines an active \ to do \backslashcurfont. +% \otherbackslash defines an active \ to be a literal `\' character with +% catcode other. +{\catcode`\\=\active + @gdef@rawbackslash{@let\=@backslashcurfont} + @gdef@otherbackslash{@let\=@realbackslash} +} + +% \realbackslash is an actual character `\' with catcode other. +{\catcode`\\=\other @gdef@realbackslash{\}} + +% \normalbackslash outputs one backslash in fixed width font. +\def\normalbackslash{{\tt\backslashcurfont}} + +\catcode`\\=\active + +% Used sometimes to turn off (effectively) the active characters +% even after parsing them. +@def@turnoffactive{% + @let"=@normaldoublequote + @let\=@realbackslash + @let~=@normaltilde + @let^=@normalcaret + @let_=@normalunderscore + @let|=@normalverticalbar + @let<=@normalless + @let>=@normalgreater + @let+=@normalplus + @let$=@normaldollar %$ font-lock fix + @unsepspaces +} + +% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of +% the literal character `\'. (Thus, \ is not expandable when this is in +% effect.) +% +@def@normalturnoffactive{@turnoffactive @let\=@normalbackslash} + +% Make _ and + \other characters, temporarily. +% This is canceled by @fixbackslash. +@otherifyactive + +% If a .fmt file is being used, we don't want the `\input texinfo' to show up. +% That is what \eatinput is for; after that, the `\' should revert to printing +% a backslash. +% +@gdef@eatinput input texinfo{@fixbackslash} +@global@let\ = @eatinput + +% On the other hand, perhaps the file did not have a `\input texinfo'. Then +% the first `\{ in the file would cause an error. This macro tries to fix +% that, assuming it is called before the first `\' could plausibly occur. +% Also back turn on active characters that might appear in the input +% file name, in case not using a pre-dumped format. +% +@gdef@fixbackslash{% + @ifx\@eatinput @let\ = @normalbackslash @fi + @catcode`+=@active + @catcode`@_=@active +} + +% Say @foo, not \foo, in error messages. +@escapechar = `@@ + +% These look ok in all fonts, so just make them not special. +@catcode`@& = @other +@catcode`@# = @other +@catcode`@% = @other + + +@c Local variables: +@c eval: (add-hook 'write-file-hooks 'time-stamp) +@c page-delimiter: "^\\\\message" +@c time-stamp-start: "def\\\\texinfoversion{" +@c time-stamp-format: "%:y-%02m-%02d.%02H" +@c time-stamp-end: "}" +@c End: + +@c vim:sw=2: + +@ignore + arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115 +@end ignore diff --git a/coregrade/src/libconfig-1.3.1/grammar.c b/coregrade/src/libconfig-1.3.1/grammar.c new file mode 100644 index 0000000..8317318 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/grammar.c @@ -0,0 +1,1928 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton implementation for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + 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 + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "2.3" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 1 + +/* Using locations. */ +#define YYLSP_NEEDED 0 + +/* Substitute the variable and function names. */ +#define yyparse libconfig_yyparse +#define yylex libconfig_yylex +#define yyerror libconfig_yyerror +#define yylval libconfig_yylval +#define yychar libconfig_yychar +#define yydebug libconfig_yydebug +#define yynerrs libconfig_yynerrs + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + TOK_BOOLEAN = 258, + TOK_INTEGER = 259, + TOK_HEX = 260, + TOK_INTEGER64 = 261, + TOK_HEX64 = 262, + TOK_FLOAT = 263, + TOK_STRING = 264, + TOK_NAME = 265, + TOK_EQUALS = 266, + TOK_NEWLINE = 267, + TOK_ARRAY_START = 268, + TOK_ARRAY_END = 269, + TOK_LIST_START = 270, + TOK_LIST_END = 271, + TOK_COMMA = 272, + TOK_GROUP_START = 273, + TOK_GROUP_END = 274, + TOK_END = 275, + TOK_GARBAGE = 276 + }; +#endif +/* Tokens. */ +#define TOK_BOOLEAN 258 +#define TOK_INTEGER 259 +#define TOK_HEX 260 +#define TOK_INTEGER64 261 +#define TOK_HEX64 262 +#define TOK_FLOAT 263 +#define TOK_STRING 264 +#define TOK_NAME 265 +#define TOK_EQUALS 266 +#define TOK_NEWLINE 267 +#define TOK_ARRAY_START 268 +#define TOK_ARRAY_END 269 +#define TOK_LIST_START 270 +#define TOK_LIST_END 271 +#define TOK_COMMA 272 +#define TOK_GROUP_START 273 +#define TOK_GROUP_END 274 +#define TOK_END 275 +#define TOK_GARBAGE 276 + + + + +/* Copy the first part of user declarations. */ +#line 31 "grammar.y" + +#include +#include +#include "libconfig.h" +#ifdef WIN32 +#include "wincompat.h" + +/* prevent warnings about redefined malloc/free in generated code: */ +#ifndef _STDLIB_H +#define _STDLIB_H +#endif + +#include +#endif +#include "private.h" + +/* these delcarations are provided to suppress compiler warnings */ +extern int libconfig_yylex(); +extern int libconfig_yyget_lineno(); + +static const char *err_array_elem_type = "mismatched element type in array"; +static const char *err_duplicate_setting = "duplicate setting name"; + +#define IN_ARRAY() \ + (ctx->parent && (ctx->parent->type == CONFIG_TYPE_ARRAY)) + +#define IN_LIST() \ + (ctx->parent && (ctx->parent->type == CONFIG_TYPE_LIST)) + +#define CAPTURE_PARSE_POS(S) \ + (S)->line = (unsigned int)libconfig_yyget_lineno(scanner) + +void libconfig_yyerror(void *scanner, struct parse_context *ctx, + char const *s) +{ + ctx->config->error_line = libconfig_yyget_lineno(scanner); + ctx->config->error_text = s; +} + + + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 73 "grammar.y" +{ + long ival; + long long llval; + double fval; + char *sval; +} +/* Line 187 of yacc.c. */ +#line 194 "grammar.c" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + + + +/* Copy the second part of user declarations. */ + + +/* Line 216 of yacc.c. */ +#line 207 "grammar.c" + +#ifdef short +# undef short +#endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; +#endif + +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +typedef signed char yytype_int8; +#else +typedef short int yytype_int8; +#endif + +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(e) ((void) (e)) +#else +# define YYUSE(e) /* empty */ +#endif + +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) +#else +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int i) +#else +static int +YYID (i) + int i; +#endif +{ + return i; +} +#endif + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined _STDLIB_H \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss; + YYSTYPE yyvs; + }; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) + +#endif + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 6 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 32 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 22 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 18 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 34 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 43 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 276 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +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, 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, 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, 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, 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, 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, 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, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint8 yyprhs[] = +{ + 0, 0, 3, 4, 6, 8, 11, 12, 14, 15, + 21, 22, 27, 28, 33, 35, 37, 39, 41, 43, + 45, 47, 49, 51, 53, 55, 57, 61, 62, 64, + 66, 70, 71, 73, 74 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int8 yyrhs[] = +{ + 23, 0, -1, -1, 24, -1, 26, -1, 24, 26, + -1, -1, 24, -1, -1, 10, 27, 11, 32, 20, + -1, -1, 13, 29, 37, 14, -1, -1, 15, 31, + 35, 16, -1, 33, -1, 28, -1, 30, -1, 38, + -1, 3, -1, 4, -1, 6, -1, 5, -1, 7, + -1, 8, -1, 9, -1, 32, -1, 34, 17, 32, + -1, -1, 34, -1, 33, -1, 36, 17, 33, -1, + -1, 36, -1, -1, 18, 39, 25, 19, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint16 yyrline[] = +{ + 0, 88, 88, 90, 94, 95, 98, 100, 105, 104, + 125, 124, 148, 147, 170, 171, 172, 173, 177, 197, + 219, 241, 263, 285, 303, 330, 331, 334, 336, 340, + 341, 344, 346, 351, 350 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "TOK_BOOLEAN", "TOK_INTEGER", "TOK_HEX", + "TOK_INTEGER64", "TOK_HEX64", "TOK_FLOAT", "TOK_STRING", "TOK_NAME", + "TOK_EQUALS", "TOK_NEWLINE", "TOK_ARRAY_START", "TOK_ARRAY_END", + "TOK_LIST_START", "TOK_LIST_END", "TOK_COMMA", "TOK_GROUP_START", + "TOK_GROUP_END", "TOK_END", "TOK_GARBAGE", "$accept", "configuration", + "setting_list", "setting_list_optional", "setting", "@1", "array", "@2", + "list", "@3", "value", "simple_value", "value_list", + "value_list_optional", "simple_value_list", "simple_value_list_optional", + "group", "@4", 0 +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 22, 23, 23, 24, 24, 25, 25, 27, 26, + 29, 28, 31, 30, 32, 32, 32, 32, 33, 33, + 33, 33, 33, 33, 33, 34, 34, 35, 35, 36, + 36, 37, 37, 39, 38 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 0, 1, 1, 2, 0, 1, 0, 5, + 0, 4, 0, 4, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 3, 0, 1, 1, + 3, 0, 1, 0, 4 +}; + +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint8 yydefact[] = +{ + 2, 8, 0, 3, 4, 0, 1, 5, 0, 18, + 19, 21, 20, 22, 23, 24, 10, 12, 33, 15, + 16, 0, 14, 17, 31, 27, 6, 9, 29, 32, + 0, 25, 28, 0, 7, 0, 0, 11, 0, 13, + 34, 30, 26 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int8 yydefgoto[] = +{ + -1, 2, 3, 35, 4, 5, 19, 24, 20, 25, + 21, 22, 32, 33, 29, 30, 23, 26 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -18 +static const yytype_int8 yypact[] = +{ + -1, -18, 12, -1, -18, 3, -18, -18, -2, -18, + -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, + -18, -5, -18, -18, 20, -2, -1, -18, -18, 0, + 4, -18, 2, 14, -1, 1, 20, -18, -2, -18, + -18, -18, -18 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int8 yypgoto[] = +{ + -18, -18, 6, -18, -3, -18, -18, -18, -18, -18, + -17, -14, -18, -18, -18, -18, -18, -18 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -1 +static const yytype_uint8 yytable[] = +{ + 7, 9, 10, 11, 12, 13, 14, 15, 31, 1, + 28, 16, 6, 17, 8, 27, 18, 36, 37, 38, + 40, 42, 41, 9, 10, 11, 12, 13, 14, 15, + 39, 7, 34 +}; + +static const yytype_uint8 yycheck[] = +{ + 3, 3, 4, 5, 6, 7, 8, 9, 25, 10, + 24, 13, 0, 15, 11, 20, 18, 17, 14, 17, + 19, 38, 36, 3, 4, 5, 6, 7, 8, 9, + 16, 34, 26 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint8 yystos[] = +{ + 0, 10, 23, 24, 26, 27, 0, 26, 11, 3, + 4, 5, 6, 7, 8, 9, 13, 15, 18, 28, + 30, 32, 33, 38, 29, 31, 39, 20, 33, 36, + 37, 32, 34, 35, 24, 25, 17, 14, 17, 16, + 19, 33, 32 +}; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ + +#define YYFAIL goto yyerrlab + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (scanner, ctx, YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + + +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (YYID (0)) +#endif + + +/* YY_LOCATION_PRINT -- Print the location on the stream. + This macro was not mandated originally: define only if we know + we won't break user code: when these are the locations we know. */ + +#ifndef YY_LOCATION_PRINT +# if YYLTYPE_IS_TRIVIAL +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (&yylval, YYLEX_PARAM) +#else +# define YYLEX yylex (&yylval, scanner) +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value, scanner, ctx); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, void *scanner, struct parse_context *ctx) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep, scanner, ctx) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; + void *scanner; + struct parse_context *ctx; +#endif +{ + if (!yyvaluep) + return; + YYUSE (scanner); + YYUSE (ctx); +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); +# endif + switch (yytype) + { + default: + break; + } +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, void *scanner, struct parse_context *ctx) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep, scanner, ctx) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; + void *scanner; + struct parse_context *ctx; +#endif +{ + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep, scanner, ctx); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) +#else +static void +yy_stack_print (bottom, top) + yytype_int16 *bottom; + yytype_int16 *top; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (; bottom <= top; ++bottom) + YYFPRINTF (stderr, " %d", *bottom); + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, int yyrule, void *scanner, struct parse_context *ctx) +#else +static void +yy_reduce_print (yyvsp, yyrule, scanner, ctx) + YYSTYPE *yyvsp; + int yyrule; + void *scanner; + struct parse_context *ctx; +#endif +{ + int yynrhs = yyr2[yyrule]; + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + fprintf (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + , scanner, ctx); + fprintf (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule, scanner, ctx); \ +} while (YYID (0)) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static YYSIZE_T +yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static char * +yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into YYRESULT an error message about the unexpected token + YYCHAR while in state YYSTATE. Return the number of bytes copied, + including the terminating null byte. If YYRESULT is null, do not + copy anything; just return the number of bytes that would be + copied. As a special case, return 0 if an ordinary "syntax error" + message will do. Return YYSIZE_MAXIMUM if overflow occurs during + size calculation. */ +static YYSIZE_T +yysyntax_error (char *yyresult, int yystate, int yychar) +{ + int yyn = yypact[yystate]; + + if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) + return 0; + else + { + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; + +# if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +# endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } + + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + + if (yysize_overflow) + return YYSIZE_MAXIMUM; + + if (yyresult) + { + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + char *yyp = yyresult; + int yyi = 0; + while ((*yyp = *yyf) != '\0') + { + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } + } + } + return yysize; + } +} +#endif /* YYERROR_VERBOSE */ + + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, void *scanner, struct parse_context *ctx) +#else +static void +yydestruct (yymsg, yytype, yyvaluep, scanner, ctx) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; + void *scanner; + struct parse_context *ctx; +#endif +{ + YYUSE (yyvaluep); + YYUSE (scanner); + YYUSE (ctx); + + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + + default: + break; + } +} + + +/* Prevent warnings from -Wmissing-prototypes. */ + +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (void *scanner, struct parse_context *ctx); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + + + + + + +/*----------. +| yyparse. | +`----------*/ + +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *scanner, struct parse_context *ctx) +#else +int +yyparse (scanner, ctx) + void *scanner; + struct parse_context *ctx; +#endif +#endif +{ + /* The look-ahead symbol. */ +int yychar; + +/* The semantic value of the look-ahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; + + int yystate; + int yyn; + int yyresult; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Look-ahead token as an internal (translated) token number. */ + int yytoken = 0; +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss = yyssa; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp; + + + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + YYSIZE_T yystacksize = YYINITDEPTH; + + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + + yyssp = yyss; + yyvsp = yyvs; + + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); + +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + look-ahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to look-ahead token. */ + yyn = yypact[yystate]; + if (yyn == YYPACT_NINF) + goto yydefault; + + /* Not known => get a look-ahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + if (yyn == YYFINAL) + YYACCEPT; + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the look-ahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; + + yystate = yyn; + *++yyvsp = yylval; + + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 8: +#line 105 "grammar.y" + { + ctx->setting = config_setting_add(ctx->parent, (yyvsp[(1) - (1)].sval), CONFIG_TYPE_NONE); + free((yyvsp[(1) - (1)].sval)); + + if(ctx->setting == NULL) + { + libconfig_yyerror(scanner, ctx, err_duplicate_setting); + YYABORT; + } + else + { + CAPTURE_PARSE_POS(ctx->setting); + } + } + break; + + case 10: +#line 125 "grammar.y" + { + if(IN_LIST()) + { + ctx->parent = config_setting_add(ctx->parent, NULL, CONFIG_TYPE_ARRAY); + CAPTURE_PARSE_POS(ctx->parent); + } + else + { + ctx->setting->type = CONFIG_TYPE_ARRAY; + ctx->parent = ctx->setting; + ctx->setting = NULL; + } + } + break; + + case 11: +#line 140 "grammar.y" + { + if(ctx->parent) + ctx->parent = ctx->parent->parent; + } + break; + + case 12: +#line 148 "grammar.y" + { + if(IN_LIST()) + { + ctx->parent = config_setting_add(ctx->parent, NULL, CONFIG_TYPE_LIST); + CAPTURE_PARSE_POS(ctx->parent); + } + else + { + ctx->setting->type = CONFIG_TYPE_LIST; + ctx->parent = ctx->setting; + ctx->setting = NULL; + } + } + break; + + case 13: +#line 163 "grammar.y" + { + if(ctx->parent) + ctx->parent = ctx->parent->parent; + } + break; + + case 18: +#line 178 "grammar.y" + { + if(IN_ARRAY() || IN_LIST()) + { + config_setting_t *e = config_setting_set_bool_elem(ctx->parent, -1, + (int)(yyvsp[(1) - (1)].ival)); + + if(! e) + { + libconfig_yyerror(scanner, ctx, err_array_elem_type); + YYABORT; + } + else + { + CAPTURE_PARSE_POS(e); + } + } + else + config_setting_set_bool(ctx->setting, (int)(yyvsp[(1) - (1)].ival)); + } + break; + + case 19: +#line 198 "grammar.y" + { + if(IN_ARRAY() || IN_LIST()) + { + config_setting_t *e = config_setting_set_int_elem(ctx->parent, -1, (yyvsp[(1) - (1)].ival)); + if(! e) + { + libconfig_yyerror(scanner, ctx, err_array_elem_type); + YYABORT; + } + else + { + config_setting_set_format(e, CONFIG_FORMAT_DEFAULT); + CAPTURE_PARSE_POS(e); + } + } + else + { + config_setting_set_int(ctx->setting, (yyvsp[(1) - (1)].ival)); + config_setting_set_format(ctx->setting, CONFIG_FORMAT_DEFAULT); + } + } + break; + + case 20: +#line 220 "grammar.y" + { + if(IN_ARRAY() || IN_LIST()) + { + config_setting_t *e = config_setting_set_int64_elem(ctx->parent, -1, (yyvsp[(1) - (1)].llval)); + if(! e) + { + libconfig_yyerror(scanner, ctx, err_array_elem_type); + YYABORT; + } + else + { + config_setting_set_format(e, CONFIG_FORMAT_DEFAULT); + CAPTURE_PARSE_POS(e); + } + } + else + { + config_setting_set_int64(ctx->setting, (yyvsp[(1) - (1)].llval)); + config_setting_set_format(ctx->setting, CONFIG_FORMAT_DEFAULT); + } + } + break; + + case 21: +#line 242 "grammar.y" + { + if(IN_ARRAY() || IN_LIST()) + { + config_setting_t *e = config_setting_set_int_elem(ctx->parent, -1, (yyvsp[(1) - (1)].ival)); + if(! e) + { + libconfig_yyerror(scanner, ctx, err_array_elem_type); + YYABORT; + } + else + { + config_setting_set_format(e, CONFIG_FORMAT_HEX); + CAPTURE_PARSE_POS(e); + } + } + else + { + config_setting_set_int(ctx->setting, (yyvsp[(1) - (1)].ival)); + config_setting_set_format(ctx->setting, CONFIG_FORMAT_HEX); + } + } + break; + + case 22: +#line 264 "grammar.y" + { + if(IN_ARRAY() || IN_LIST()) + { + config_setting_t *e = config_setting_set_int64_elem(ctx->parent, -1, (yyvsp[(1) - (1)].llval)); + if(! e) + { + libconfig_yyerror(scanner, ctx, err_array_elem_type); + YYABORT; + } + else + { + config_setting_set_format(e, CONFIG_FORMAT_HEX); + CAPTURE_PARSE_POS(e); + } + } + else + { + config_setting_set_int64(ctx->setting, (yyvsp[(1) - (1)].llval)); + config_setting_set_format(ctx->setting, CONFIG_FORMAT_HEX); + } + } + break; + + case 23: +#line 286 "grammar.y" + { + if(IN_ARRAY() || IN_LIST()) + { + config_setting_t *e = config_setting_set_float_elem(ctx->parent, -1, (yyvsp[(1) - (1)].fval)); + if(! e) + { + libconfig_yyerror(scanner, ctx, err_array_elem_type); + YYABORT; + } + else + { + CAPTURE_PARSE_POS(e); + } + } + else + config_setting_set_float(ctx->setting, (yyvsp[(1) - (1)].fval)); + } + break; + + case 24: +#line 304 "grammar.y" + { + if(IN_ARRAY() || IN_LIST()) + { + config_setting_t *e = config_setting_set_string_elem(ctx->parent, -1, + (yyvsp[(1) - (1)].sval)); + free((yyvsp[(1) - (1)].sval)); + + if(! e) + { + libconfig_yyerror(scanner, ctx, err_array_elem_type); + YYABORT; + } + else + { + CAPTURE_PARSE_POS(e); + } + } + else + { + config_setting_set_string(ctx->setting, (yyvsp[(1) - (1)].sval)); + free((yyvsp[(1) - (1)].sval)); + } + } + break; + + case 33: +#line 351 "grammar.y" + { + if(IN_LIST()) + { + ctx->parent = config_setting_add(ctx->parent, NULL, CONFIG_TYPE_GROUP); + CAPTURE_PARSE_POS(ctx->parent); + } + else + { + ctx->setting->type = CONFIG_TYPE_GROUP; + ctx->parent = ctx->setting; + ctx->setting = NULL; + } + } + break; + + case 34: +#line 366 "grammar.y" + { + if(ctx->parent) + ctx->parent = ctx->parent->parent; + } + break; + + +/* Line 1267 of yacc.c. */ +#line 1713 "grammar.c" + default: break; + } + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (scanner, ctx, YY_("syntax error")); +#else + { + YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); + if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) + { + YYSIZE_T yyalloc = 2 * yysize; + if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) + yyalloc = YYSTACK_ALLOC_MAXIMUM; + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yyalloc); + if (yymsg) + yymsg_alloc = yyalloc; + else + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + } + } + + if (0 < yysize && yysize <= yymsg_alloc) + { + (void) yysyntax_error (yymsg, yystate, yychar); + yyerror (scanner, ctx, yymsg); + } + else + { + yyerror (scanner, ctx, YY_("syntax error")); + if (yysize != 0) + goto yyexhaustedlab; + } + } +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse look-ahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval, scanner, ctx); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse look-ahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp, scanner, ctx); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + if (yyn == YYFINAL) + YYACCEPT; + + *++yyvsp = yylval; + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#ifndef yyoverflow +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (scanner, ctx, YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEOF && yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval, scanner, ctx); + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp, scanner, ctx); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); +} + + +#line 372 "grammar.y" + + diff --git a/coregrade/src/libconfig-1.3.1/grammar.h b/coregrade/src/libconfig-1.3.1/grammar.h new file mode 100644 index 0000000..e3fd524 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/grammar.h @@ -0,0 +1,105 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton interface for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + 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 + the Free Software Foundation; either version 2, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + TOK_BOOLEAN = 258, + TOK_INTEGER = 259, + TOK_HEX = 260, + TOK_INTEGER64 = 261, + TOK_HEX64 = 262, + TOK_FLOAT = 263, + TOK_STRING = 264, + TOK_NAME = 265, + TOK_EQUALS = 266, + TOK_NEWLINE = 267, + TOK_ARRAY_START = 268, + TOK_ARRAY_END = 269, + TOK_LIST_START = 270, + TOK_LIST_END = 271, + TOK_COMMA = 272, + TOK_GROUP_START = 273, + TOK_GROUP_END = 274, + TOK_END = 275, + TOK_GARBAGE = 276 + }; +#endif +/* Tokens. */ +#define TOK_BOOLEAN 258 +#define TOK_INTEGER 259 +#define TOK_HEX 260 +#define TOK_INTEGER64 261 +#define TOK_HEX64 262 +#define TOK_FLOAT 263 +#define TOK_STRING 264 +#define TOK_NAME 265 +#define TOK_EQUALS 266 +#define TOK_NEWLINE 267 +#define TOK_ARRAY_START 268 +#define TOK_ARRAY_END 269 +#define TOK_LIST_START 270 +#define TOK_LIST_END 271 +#define TOK_COMMA 272 +#define TOK_GROUP_START 273 +#define TOK_GROUP_END 274 +#define TOK_END 275 +#define TOK_GARBAGE 276 + + + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 73 "grammar.y" +{ + long ival; + long long llval; + double fval; + char *sval; +} +/* Line 1489 of yacc.c. */ +#line 98 "grammar.h" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + + + diff --git a/coregrade/src/libconfig-1.3.1/grammar.y b/coregrade/src/libconfig-1.3.1/grammar.y new file mode 100644 index 0000000..e484530 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/grammar.y @@ -0,0 +1,372 @@ +/* -*- mode: C -*- */ +/* ---------------------------------------------------------------------------- + libconfig - A library for processing structured configuration files + Copyright (C) 2005-2008 Mark A Lindner + + This file is part of libconfig. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation; either version 2.1 of + the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, see + . + ---------------------------------------------------------------------------- +*/ + +%defines +%output="y.tab.c" +%pure-parser +%lex-param{void *scanner} +%parse-param{void *scanner} +%parse-param{struct parse_context *ctx} + +%{ +#include +#include +#include "libconfig.h" +#ifdef WIN32 +#include "wincompat.h" + +/* prevent warnings about redefined malloc/free in generated code: */ +#ifndef _STDLIB_H +#define _STDLIB_H +#endif + +#include +#endif +#include "private.h" + +/* these delcarations are provided to suppress compiler warnings */ +extern int libconfig_yylex(); +extern int libconfig_yyget_lineno(); + +static const char *err_array_elem_type = "mismatched element type in array"; +static const char *err_duplicate_setting = "duplicate setting name"; + +#define IN_ARRAY() \ + (ctx->parent && (ctx->parent->type == CONFIG_TYPE_ARRAY)) + +#define IN_LIST() \ + (ctx->parent && (ctx->parent->type == CONFIG_TYPE_LIST)) + +#define CAPTURE_PARSE_POS(S) \ + (S)->line = (unsigned int)libconfig_yyget_lineno(scanner) + +void libconfig_yyerror(void *scanner, struct parse_context *ctx, + char const *s) +{ + ctx->config->error_line = libconfig_yyget_lineno(scanner); + ctx->config->error_text = s; +} + +%} + +%union +{ + long ival; + long long llval; + double fval; + char *sval; +} + +%token TOK_BOOLEAN TOK_INTEGER TOK_HEX +%token TOK_INTEGER64 TOK_HEX64 +%token TOK_FLOAT +%token TOK_STRING TOK_NAME +%token TOK_EQUALS TOK_NEWLINE TOK_ARRAY_START TOK_ARRAY_END TOK_LIST_START TOK_LIST_END TOK_COMMA TOK_GROUP_START TOK_GROUP_END TOK_END TOK_GARBAGE + +%% + +configuration: + /* empty */ + | setting_list + ; + +setting_list: + setting + | setting_list setting + ; + +setting_list_optional: + /* empty */ + | setting_list + ; + +setting: + TOK_NAME + { + ctx->setting = config_setting_add(ctx->parent, $1, CONFIG_TYPE_NONE); + free($1); + + if(ctx->setting == NULL) + { + libconfig_yyerror(scanner, ctx, err_duplicate_setting); + YYABORT; + } + else + { + CAPTURE_PARSE_POS(ctx->setting); + } + } + + TOK_EQUALS value TOK_END + ; + +array: + TOK_ARRAY_START + { + if(IN_LIST()) + { + ctx->parent = config_setting_add(ctx->parent, NULL, CONFIG_TYPE_ARRAY); + CAPTURE_PARSE_POS(ctx->parent); + } + else + { + ctx->setting->type = CONFIG_TYPE_ARRAY; + ctx->parent = ctx->setting; + ctx->setting = NULL; + } + } + simple_value_list_optional + TOK_ARRAY_END + { + if(ctx->parent) + ctx->parent = ctx->parent->parent; + } + ; + +list: + TOK_LIST_START + { + if(IN_LIST()) + { + ctx->parent = config_setting_add(ctx->parent, NULL, CONFIG_TYPE_LIST); + CAPTURE_PARSE_POS(ctx->parent); + } + else + { + ctx->setting->type = CONFIG_TYPE_LIST; + ctx->parent = ctx->setting; + ctx->setting = NULL; + } + } + value_list_optional + TOK_LIST_END + { + if(ctx->parent) + ctx->parent = ctx->parent->parent; + } + ; + +value: + simple_value + | array + | list + | group + ; + +simple_value: + TOK_BOOLEAN + { + if(IN_ARRAY() || IN_LIST()) + { + config_setting_t *e = config_setting_set_bool_elem(ctx->parent, -1, + (int)$1); + + if(! e) + { + libconfig_yyerror(scanner, ctx, err_array_elem_type); + YYABORT; + } + else + { + CAPTURE_PARSE_POS(e); + } + } + else + config_setting_set_bool(ctx->setting, (int)$1); + } + | TOK_INTEGER + { + if(IN_ARRAY() || IN_LIST()) + { + config_setting_t *e = config_setting_set_int_elem(ctx->parent, -1, $1); + if(! e) + { + libconfig_yyerror(scanner, ctx, err_array_elem_type); + YYABORT; + } + else + { + config_setting_set_format(e, CONFIG_FORMAT_DEFAULT); + CAPTURE_PARSE_POS(e); + } + } + else + { + config_setting_set_int(ctx->setting, $1); + config_setting_set_format(ctx->setting, CONFIG_FORMAT_DEFAULT); + } + } + | TOK_INTEGER64 + { + if(IN_ARRAY() || IN_LIST()) + { + config_setting_t *e = config_setting_set_int64_elem(ctx->parent, -1, $1); + if(! e) + { + libconfig_yyerror(scanner, ctx, err_array_elem_type); + YYABORT; + } + else + { + config_setting_set_format(e, CONFIG_FORMAT_DEFAULT); + CAPTURE_PARSE_POS(e); + } + } + else + { + config_setting_set_int64(ctx->setting, $1); + config_setting_set_format(ctx->setting, CONFIG_FORMAT_DEFAULT); + } + } + | TOK_HEX + { + if(IN_ARRAY() || IN_LIST()) + { + config_setting_t *e = config_setting_set_int_elem(ctx->parent, -1, $1); + if(! e) + { + libconfig_yyerror(scanner, ctx, err_array_elem_type); + YYABORT; + } + else + { + config_setting_set_format(e, CONFIG_FORMAT_HEX); + CAPTURE_PARSE_POS(e); + } + } + else + { + config_setting_set_int(ctx->setting, $1); + config_setting_set_format(ctx->setting, CONFIG_FORMAT_HEX); + } + } + | TOK_HEX64 + { + if(IN_ARRAY() || IN_LIST()) + { + config_setting_t *e = config_setting_set_int64_elem(ctx->parent, -1, $1); + if(! e) + { + libconfig_yyerror(scanner, ctx, err_array_elem_type); + YYABORT; + } + else + { + config_setting_set_format(e, CONFIG_FORMAT_HEX); + CAPTURE_PARSE_POS(e); + } + } + else + { + config_setting_set_int64(ctx->setting, $1); + config_setting_set_format(ctx->setting, CONFIG_FORMAT_HEX); + } + } + | TOK_FLOAT + { + if(IN_ARRAY() || IN_LIST()) + { + config_setting_t *e = config_setting_set_float_elem(ctx->parent, -1, $1); + if(! e) + { + libconfig_yyerror(scanner, ctx, err_array_elem_type); + YYABORT; + } + else + { + CAPTURE_PARSE_POS(e); + } + } + else + config_setting_set_float(ctx->setting, $1); + } + | TOK_STRING + { + if(IN_ARRAY() || IN_LIST()) + { + config_setting_t *e = config_setting_set_string_elem(ctx->parent, -1, + $1); + free($1); + + if(! e) + { + libconfig_yyerror(scanner, ctx, err_array_elem_type); + YYABORT; + } + else + { + CAPTURE_PARSE_POS(e); + } + } + else + { + config_setting_set_string(ctx->setting, $1); + free($1); + } + } + ; + +value_list: + value + | value_list TOK_COMMA value + ; + +value_list_optional: + /* empty */ + | value_list + ; + +simple_value_list: + simple_value + | simple_value_list TOK_COMMA simple_value + ; + +simple_value_list_optional: + /* empty */ + | simple_value_list + ; + +group: + TOK_GROUP_START + { + if(IN_LIST()) + { + ctx->parent = config_setting_add(ctx->parent, NULL, CONFIG_TYPE_GROUP); + CAPTURE_PARSE_POS(ctx->parent); + } + else + { + ctx->setting->type = CONFIG_TYPE_GROUP; + ctx->parent = ctx->setting; + ctx->setting = NULL; + } + } + setting_list_optional + TOK_GROUP_END + { + if(ctx->parent) + ctx->parent = ctx->parent->parent; + } + ; + +%% diff --git a/coregrade/src/libconfig-1.3.1/install-sh b/coregrade/src/libconfig-1.3.1/install-sh new file mode 100755 index 0000000..77bc381 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/install-sh @@ -0,0 +1,316 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2004-02-15.20 + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. It can only install one file at a time, a restriction +# shared with many OS's install programs. + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit="${DOITPROG-}" + +# put in absolute paths if you don't have them in your path; or use env. vars. + +mvprog="${MVPROG-mv}" +cpprog="${CPPROG-cp}" +chmodprog="${CHMODPROG-chmod}" +chownprog="${CHOWNPROG-chown}" +chgrpprog="${CHGRPPROG-chgrp}" +stripprog="${STRIPPROG-strip}" +rmprog="${RMPROG-rm}" +mkdirprog="${MKDIRPROG-mkdir}" + +transformbasename= +transform_arg= +instcmd="$mvprog" +chmodcmd="$chmodprog 0755" +chowncmd= +chgrpcmd= +stripcmd= +rmcmd="$rmprog -f" +mvcmd="$mvprog" +src= +dst= +dir_arg= + +usage="Usage: $0 [OPTION]... SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 -d DIRECTORIES... + +In the first form, install SRCFILE to DSTFILE, removing SRCFILE by default. +In the second, create the directory path DIR. + +Options: +-b=TRANSFORMBASENAME +-c copy source (using $cpprog) instead of moving (using $mvprog). +-d create directories instead of installing files. +-g GROUP $chgrp installed files to GROUP. +-m MODE $chmod installed files to MODE. +-o USER $chown installed files to USER. +-s strip installed files (using $stripprog). +-t=TRANSFORM +--help display this help and exit. +--version display version info and exit. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG +" + +while test -n "$1"; do + case $1 in + -b=*) transformbasename=`echo $1 | sed 's/-b=//'` + shift + continue;; + + -c) instcmd=$cpprog + shift + continue;; + + -d) dir_arg=true + shift + continue;; + + -g) chgrpcmd="$chgrpprog $2" + shift + shift + continue;; + + --help) echo "$usage"; exit 0;; + + -m) chmodcmd="$chmodprog $2" + shift + shift + continue;; + + -o) chowncmd="$chownprog $2" + shift + shift + continue;; + + -s) stripcmd=$stripprog + shift + continue;; + + -t=*) transformarg=`echo $1 | sed 's/-t=//'` + shift + continue;; + + --version) echo "$0 $scriptversion"; exit 0;; + + *) # When -d is used, all remaining arguments are directories to create. + test -n "$dir_arg" && break + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dstarg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dstarg" + shift # fnord + fi + shift # arg + dstarg=$arg + done + break;; + esac +done + +if test -z "$1"; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call `install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +for src +do + # Protect names starting with `-'. + case $src in + -*) src=./$src ;; + esac + + if test -n "$dir_arg"; then + dst=$src + src= + + if test -d "$dst"; then + instcmd=: + chmodcmd= + else + instcmd=$mkdirprog + fi + else + # Waiting for this to be detected by the "$instcmd $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dstarg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + + dst=$dstarg + # Protect names starting with `-'. + case $dst in + -*) dst=./$dst ;; + esac + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + dst=$dst/`basename "$src"` + fi + fi + + # This sed command emulates the dirname command. + dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` + + # Make sure that the destination directory exists. + + # Skip lots of stat calls in the usual case. + if test ! -d "$dstdir"; then + defaultIFS=' + ' + IFS="${IFS-$defaultIFS}" + + oIFS=$IFS + # Some sh's can't handle IFS=/ for some reason. + IFS='%' + set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` + IFS=$oIFS + + pathcomp= + + while test $# -ne 0 ; do + pathcomp=$pathcomp$1 + shift + if test ! -d "$pathcomp"; then + $mkdirprog "$pathcomp" || lasterr=$? + # mkdir can fail with a `File exist' error in case several + # install-sh are creating the directory concurrently. This + # is OK. + test ! -d "$pathcomp" && { (exit ${lasterr-1}); exit; } + fi + pathcomp=$pathcomp/ + done + fi + + if test -n "$dir_arg"; then + $doit $instcmd "$dst" \ + && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ + && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ + && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ + && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } + + else + # If we're going to rename the final executable, determine the name now. + if test -z "$transformarg"; then + dstfile=`basename "$dst"` + else + dstfile=`basename "$dst" $transformbasename \ + | sed $transformarg`$transformbasename + fi + + # don't allow the sed command to completely eliminate the filename. + test -z "$dstfile" && dstfile=`basename "$dst"` + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0 + trap '(exit $?); exit' 1 2 13 15 + + # Move or copy the file name to the temp name + $doit $instcmd "$src" "$dsttmp" && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $instcmd $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ + && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ + && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ + && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && + + # Now remove or move aside any old file at destination location. We + # try this two ways since rm can't unlink itself on some systems and + # the destination file might be busy for other reasons. In this case, + # the final cleanup might fail but the new file should still install + # successfully. + { + if test -f "$dstdir/$dstfile"; then + $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ + || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ + || { + echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 + (exit 1); exit + } + else + : + fi + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" + fi || { (exit 1); exit; } +done + +# The final little trick to "correctly" pass the exit status to the exit trap. +{ + (exit 0); exit +} + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/coregrade/src/libconfig-1.3.1/libconfig++.pc b/coregrade/src/libconfig-1.3.1/libconfig++.pc new file mode 100644 index 0000000..423e5a5 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/libconfig++.pc @@ -0,0 +1,14 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: libconfig++ +Description: C++ Configuration File Library +Version: 1.3.1 +URL: http://www.hyperrealm.com/main.php?s=libconfig +Requires: +Conflicts: +Libs: -L${libdir} -lconfig++ +Libs.private: +Cflags: -I${includedir} diff --git a/coregrade/src/libconfig-1.3.1/libconfig++.pc.in b/coregrade/src/libconfig-1.3.1/libconfig++.pc.in new file mode 100644 index 0000000..2771cc9 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/libconfig++.pc.in @@ -0,0 +1,14 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: libconfig++ +Description: C++ Configuration File Library +Version: @VERSION@ +URL: http://www.hyperrealm.com/main.php?s=libconfig +Requires: +Conflicts: +Libs: -L${libdir} -lconfig++ +Libs.private: @LIBS@ +Cflags: -I${includedir} diff --git a/coregrade/src/libconfig-1.3.1/libconfig++.vcproj b/coregrade/src/libconfig-1.3.1/libconfig++.vcproj new file mode 100644 index 0000000..232849b --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/libconfig++.vcproj @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/coregrade/src/libconfig-1.3.1/libconfig++_stub.vcproj b/coregrade/src/libconfig-1.3.1/libconfig++_stub.vcproj new file mode 100644 index 0000000..c89b53e --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/libconfig++_stub.vcproj @@ -0,0 +1,184 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/coregrade/src/libconfig-1.3.1/libconfig.c b/coregrade/src/libconfig-1.3.1/libconfig.c new file mode 100644 index 0000000..548e549 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/libconfig.c @@ -0,0 +1,1373 @@ +/* ---------------------------------------------------------------------------- + libconfig - A library for processing structured configuration files + Copyright (C) 2005-2008 Mark A Lindner + + This file is part of libconfig. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation; either version 2.1 of + the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, see + . + ---------------------------------------------------------------------------- +*/ + +//#ifdef WIN32 +//#include +//#endif + +#ifdef HAVE_CONFIG_H +#include "ac_config.h" +#endif + +#include "libconfig.h" +#include "grammar.h" +#include "scanner.h" +#include "private.h" +#include "wincompat.h" + +#include + +#ifdef HAVE_XLOCALE_H +#include +#endif + +#include +#include + +#define PATH_TOKENS ":./" +#define CHUNK_SIZE 10 +#define FLOAT_PRECISION 10 + +#define _new(T) (T *)calloc(sizeof(T), 1) /* zeroed */ +#define _delete(P) free((void *)(P)) + +/* ------------------------------------------------------------------------- */ + +#if (defined(WIN32) || defined(_WIN32) || defined(__WIN32__)) + +BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) +{ + return(TRUE); +} + +#endif + +/* ------------------------------------------------------------------------- */ + +static const char *__io_error = "file I/O error"; + +static void __config_list_destroy(config_list_t *list); +static void __config_write_setting(const config_setting_t *setting, + FILE *stream, int depth); + +extern int libconfig_yyparse(void *scanner, struct parse_context *ctx); + +/* ------------------------------------------------------------------------- */ + +static void __config_locale_override() +{ +#if (defined(WIN32) || defined(_WIN32) || defined(__WIN32__)) \ + && ! defined(__MINGW32__) + + _configthreadlocale(_ENABLE_PER_THREAD_LOCALE); + setlocale(LC_NUMERIC, "C"); + +#elif defined(__APPLE__) + + locale_t loc = newlocale(LC_NUMERIC_MASK, "C", NULL); + uselocale(loc); + +#elif ((defined HAVE_NEWLOCALE) && (defined HAVE_USELOCALE)) + + locale_t loc = newlocale(LC_NUMERIC, "C", NULL); + uselocale(loc); + +#else + +#warning "No way to modify calling thread's locale!" + +#endif +} + +/* ------------------------------------------------------------------------- */ + +static void __config_locale_restore() +{ +#if (defined(WIN32) || defined(_WIN32) || defined(__WIN32__)) \ + && ! defined(__MINGW32__) + + _configthreadlocale(_DISABLE_PER_THREAD_LOCALE); + +#elif ((defined HAVE_USELOCALE) && (defined HAVE_FREELOCALE)) + + locale_t loc = uselocale(LC_GLOBAL_LOCALE); + freelocale(loc); + +#else + +#warning "No way to modify calling thread's locale!" + +#endif +} + +/* ------------------------------------------------------------------------- */ + +static int __config_name_compare(const char *a, const char *b) +{ + const char *p, *q; + + for(p = a, q = b; ; p++, q++) + { + int pd = ((! *p) || strchr(PATH_TOKENS, *p)); + int qd = ((! *q) || strchr(PATH_TOKENS, *q)); + + if(pd && qd) + break; + else if(pd) + return(-1); + else if(qd) + return(1); + else if(*p < *q) + return(-1); + else if(*p > *q) + return(1); + } + + return(0); +} + +/* ------------------------------------------------------------------------- */ + +static void __config_write_value(const config_value_t *value, int type, + int format, int depth, FILE *stream) +{ + char fbuf[64]; + + switch(type) + { + /* boolean */ + case CONFIG_TYPE_BOOL: + fputs(value->ival ? "true" : "false", stream); + break; + + /* int */ + case CONFIG_TYPE_INT: + switch(format) + { + case CONFIG_FORMAT_HEX: + fprintf(stream, "0x%lX", value->ival); + break; + + case CONFIG_FORMAT_DEFAULT: + default: + fprintf(stream, "%ld", value->ival); + break; + } + break; + + /* 64-bit int */ + case CONFIG_TYPE_INT64: + switch(format) + { + case CONFIG_FORMAT_HEX: + fprintf(stream, "0x" INT64_HEX_FMT "L", value->llval); + break; + + case CONFIG_FORMAT_DEFAULT: + default: + fprintf(stream, INT64_FMT "L", value->llval); + break; + } + break; + + /* float */ + case CONFIG_TYPE_FLOAT: + { + char *q; + + snprintf(fbuf, sizeof(fbuf) - 3, "%.*g", FLOAT_PRECISION, value->fval); + + /* check for exponent */ + + q = strchr(fbuf, 'e'); + if(! q) + { + /* no exponent */ + + if(! strchr(fbuf, '.')) /* no decimal point */ + strcat(fbuf, ".0"); + else + { + /* has decimal point */ + + char *p; + + for(p = fbuf + strlen(fbuf) - 1; p > fbuf; --p) + { + if(*p != '0') + { + *(++p) = '\0'; + break; + } + } + } + } + + fputs(fbuf, stream); + break; + } + + /* string */ + case CONFIG_TYPE_STRING: + { + char *p; + + fputc('\"', stream); + + if(value->sval) + { + for(p = value->sval; *p; p++) + { + switch(*p) + { + case '\"': + case '\\': + fputc('\\', stream); + fputc(*p, stream); + break; + + case '\n': + fputs("\\n", stream); + break; + + case '\r': + fputs("\\r", stream); + break; + + case '\f': + fputs("\\f", stream); + break; + + case '\t': + fputs("\\t", stream); + break; + + default: + fputc(*p, stream); + } + } + } + fputc('\"', stream); + break; + } + + /* list */ + case CONFIG_TYPE_LIST: + { + config_list_t *list = value->list; + + fprintf(stream, "( "); + + if(list) + { + int len = list->length; + config_setting_t **s; + + for(s = list->elements; len--; s++) + { + __config_write_value(&((*s)->value), (*s)->type, (*s)->format, + depth + 1, stream); + + if(len) + fputc(',', stream); + + fputc(' ', stream); + } + } + + fputc(')', stream); + break; + } + + /* array */ + case CONFIG_TYPE_ARRAY: + { + config_list_t *list = value->list; + + fprintf(stream, "[ "); + + if(list) + { + int len = list->length; + config_setting_t **s; + + for(s = list->elements; len--; s++) + { + __config_write_value(&((*s)->value), (*s)->type, (*s)->format, + depth + 1, stream); + + if(len) + fputc(',', stream); + + fputc(' ', stream); + } + } + + fputc(']', stream); + break; + } + + /* group */ + case CONFIG_TYPE_GROUP: + { + config_list_t *list = value->list; + + if(depth > 0) + { + fputc('\n', stream); + + if(depth > 1) + fprintf(stream, "%*s", (depth - 1) * 2, " "); + fprintf(stream, "{\n"); + } + + if(list) + { + int len = list->length; + config_setting_t **s; + + for(s = list->elements; len--; s++) + __config_write_setting(*s, stream, depth + 1); + } + + if(depth > 1) + fprintf(stream, "%*s", (depth - 1) * 2, " "); + + if(depth > 0) + fputc('}', stream); + + break; + } + + default: + /* this shouldn't happen, but handle it gracefully... */ + fputs("???", stream); + break; + } +} + +/* ------------------------------------------------------------------------- */ + +static void __config_list_add(config_list_t *list, config_setting_t *setting) +{ + if(list->length == list->capacity) + { + list->capacity += CHUNK_SIZE; + list->elements = (config_setting_t **)realloc( + list->elements, list->capacity * sizeof(config_setting_t *)); + } + + list->elements[list->length] = setting; + list->length++; +} + +/* ------------------------------------------------------------------------- */ + +static config_setting_t *__config_list_search(config_list_t *list, + const char *name, + unsigned int *idx) +{ + config_setting_t **found = NULL; + unsigned int i; + + if(! list) + return(NULL); + + for(i = 0, found = list->elements; i < list->length; i++, found++) + { + if(! (*found)->name) + continue; + + if(! __config_name_compare(name, (*found)->name)) + { + if(idx) + *idx = i; + + return(*found); + } + } + + return(NULL); +} + +/* ------------------------------------------------------------------------- */ + +static void __config_list_remove(config_list_t *list, int idx) +{ + int offset = (idx * sizeof(config_setting_t *)); + int len = list->length - 1 - idx; + char *base = (char *)list->elements + offset; + + memmove(base, base + sizeof(config_setting_t *), + len * sizeof(config_setting_t *)); + + list->length--; + + if((list->capacity - list->length) >= CHUNK_SIZE) + { + /* realloc smaller? */ + } +} + +/* ------------------------------------------------------------------------- */ + +static void __config_setting_destroy(config_setting_t *setting) +{ + if(setting) + { + if(setting->name) + _delete(setting->name); + + if(setting->type == CONFIG_TYPE_STRING) + _delete(setting->value.sval); + + else if((setting->type == CONFIG_TYPE_GROUP) + || (setting->type == CONFIG_TYPE_ARRAY) + || (setting->type == CONFIG_TYPE_LIST)) + { + if(setting->value.list) + __config_list_destroy(setting->value.list); + } + + if(setting->hook && setting->config->destructor) + setting->config->destructor(setting->hook); + + _delete(setting); + } +} + +/* ------------------------------------------------------------------------- */ + +static void __config_list_destroy(config_list_t *list) +{ + config_setting_t **p; + unsigned int i; + + if(! list) + return; + + if(list->elements) + { + for(p = list->elements, i = 0; i < list->length; p++, i++) + __config_setting_destroy(*p); + + _delete(list->elements); + } + + _delete(list); +} + +/* ------------------------------------------------------------------------- */ + +static int __config_vector_checktype(const config_setting_t *vector, int type) +{ + /* if the array is empty, then it has no type yet */ + + if(! vector->value.list) + return(CONFIG_TRUE); + + if(vector->value.list->length == 0) + return(CONFIG_TRUE); + + /* if it's a list, any type is allowed */ + + if(vector->type == CONFIG_TYPE_LIST) + return(CONFIG_TRUE); + + /* otherwise the first element added determines the type of the array */ + + return((vector->value.list->elements[0]->type == type) + ? CONFIG_TRUE : CONFIG_FALSE); +} + +/* ------------------------------------------------------------------------- */ + +static int __config_validate_name(const char *name) +{ + const char *p = name; + + if(*p == '\0') + return(CONFIG_FALSE); + + if(! isalpha(*p) && (*p != '*')) + return(CONFIG_FALSE); + + for(++p; *p; ++p) + { + if(! (isalpha(*p) || isdigit(*p) || strchr("*_-", (int)*p))) + return(CONFIG_FALSE); + } + + return(CONFIG_TRUE); +} + +/* ------------------------------------------------------------------------- */ + +int config_read(config_t *config, FILE *stream) +{ + yyscan_t scanner; + struct parse_context ctx; + int r; + + /* Reinitialize the config (keep the destructor) */ + void (*destructor)(void *) = config->destructor; + config_destroy(config); + config_init(config); + config->destructor = destructor; + + ctx.config = config; + ctx.parent = config->root; + ctx.setting = config->root; + + __config_locale_override(); + + libconfig_yylex_init(&scanner); + libconfig_yyrestart(stream, scanner); + r = libconfig_yyparse(scanner, &ctx); + libconfig_yylex_destroy(scanner); + + __config_locale_restore(); + + return(r == 0 ? CONFIG_TRUE : CONFIG_FALSE); +} + +/* ------------------------------------------------------------------------- */ + +static void __config_write_setting(const config_setting_t *setting, + FILE *stream, int depth) +{ + if(depth > 1) + fprintf(stream, "%*s", (depth - 1) * 2, " "); + + if(setting->name) + { + fputs(setting->name, stream); + fprintf(stream, " %c ", (setting->type == CONFIG_TYPE_GROUP ? ':' : '=')); + } + + __config_write_value(&(setting->value), setting->type, setting->format, + depth, stream); + + if(depth > 0) + { + fputc(';', stream); + fputc('\n', stream); + } +} + +/* ------------------------------------------------------------------------- */ + +void config_write(const config_t *config, FILE *stream) +{ + __config_locale_override(); + + __config_write_setting(config->root, stream, 0); + + __config_locale_restore(); +} + +/* ------------------------------------------------------------------------- */ + +int config_read_file(config_t *config, const char *filename) +{ + int ret; + FILE *f = fopen(filename, "rt"); + if(! f) + { + config->error_text = __io_error; + return(CONFIG_FALSE); + } + + ret = config_read(config, f); + fclose(f); + return(ret); +} + +/* ------------------------------------------------------------------------- */ + +int config_write_file(config_t *config, const char *filename) +{ + FILE *f = fopen(filename, "wt"); + if(! f) + { + config->error_text = __io_error; + return(CONFIG_FALSE); + } + + config_write(config, f); + fclose(f); + return(CONFIG_TRUE); +} + +/* ------------------------------------------------------------------------- */ + +void config_destroy(config_t *config) +{ + __config_setting_destroy(config->root); + + memset((void *)config, 0, sizeof(config_t)); +} + +/* ------------------------------------------------------------------------- */ + +void config_init(config_t *config) +{ + memset((void *)config, 0, sizeof(config_t)); + + config->root = _new(config_setting_t); + config->root->type = CONFIG_TYPE_GROUP; + config->root->config = config; +} + +/* ------------------------------------------------------------------------- */ + +void config_set_auto_convert(config_t *config, int flag) +{ + if(flag) + config->flags |= CONFIG_OPTION_AUTOCONVERT; + else + config->flags &= ~CONFIG_OPTION_AUTOCONVERT; +} + +/* ------------------------------------------------------------------------- */ + +int config_get_auto_convert(const config_t *config) +{ + return((config->flags & CONFIG_OPTION_AUTOCONVERT) != 0); +} + +/* ------------------------------------------------------------------------- */ + +static config_setting_t *config_setting_create(config_setting_t *parent, + const char *name, int type) +{ + config_setting_t *setting; + config_list_t *list; + + if((parent->type != CONFIG_TYPE_GROUP) + && (parent->type != CONFIG_TYPE_ARRAY) + && (parent->type != CONFIG_TYPE_LIST)) + return(NULL); + + setting = _new(config_setting_t); + setting->parent = parent; + setting->name = (name == NULL) ? NULL : strdup(name); + setting->type = type; + setting->config = parent->config; + setting->hook = NULL; + setting->line = 0; + + list = parent->value.list; + + if(! list) + list = parent->value.list = _new(config_list_t); + + __config_list_add(list, setting); + + return(setting); +} + +/* ------------------------------------------------------------------------- */ + +long config_setting_get_int(const config_setting_t *setting) +{ + switch(setting->type) + { + case CONFIG_TYPE_INT: + return(setting->value.ival); + + case CONFIG_TYPE_INT64: + if((setting->value.llval > INT32_MAX) + || (setting->value.llval < INT32_MIN)) + return(0); + else + return((long)setting->value.llval); + + case CONFIG_TYPE_FLOAT: + if((setting->config->flags & CONFIG_OPTION_AUTOCONVERT) != 0) + return((long)(setting->value.fval)); + else + /* fall through */; + + default: + return(0); + } +} + +/* ------------------------------------------------------------------------- */ + +long long config_setting_get_int64(const config_setting_t *setting) +{ + switch(setting->type) + { + case CONFIG_TYPE_INT64: + return(setting->value.llval); + + case CONFIG_TYPE_INT: + return((long long)setting->value.ival); + + case CONFIG_TYPE_FLOAT: + if((setting->config->flags & CONFIG_OPTION_AUTOCONVERT) != 0) + return((long long)(setting->value.fval)); + else + /* fall through */; + + default: + return(0); + } +} + +/* ------------------------------------------------------------------------- */ + +int config_setting_set_int(config_setting_t *setting, long value) +{ + switch(setting->type) + { + case CONFIG_TYPE_NONE: + setting->type = CONFIG_TYPE_INT; + /* fall through */ + + case CONFIG_TYPE_INT: + setting->value.ival = value; + return(CONFIG_TRUE); + + case CONFIG_TYPE_FLOAT: + if(config_get_auto_convert(setting->config)) + { + setting->value.fval = (float)value; + return(CONFIG_TRUE); + } + else + return(CONFIG_FALSE); + + default: + return(CONFIG_FALSE); + } +} + +/* ------------------------------------------------------------------------- */ + +int config_setting_set_int64(config_setting_t *setting, long long value) +{ + switch(setting->type) + { + case CONFIG_TYPE_NONE: + setting->type = CONFIG_TYPE_INT64; + /* fall through */ + + case CONFIG_TYPE_INT64: + setting->value.llval = value; + return(CONFIG_TRUE); + + case CONFIG_TYPE_INT: + if((value > INT32_MAX) || (value < INT32_MIN)) + setting->value.ival = 0; + else + setting->value.ival = (long)value; + return(CONFIG_TRUE); + + case CONFIG_TYPE_FLOAT: + if(config_get_auto_convert(setting->config)) + { + setting->value.fval = (float)value; + return(CONFIG_TRUE); + } + else + return(CONFIG_FALSE); + + default: + return(CONFIG_FALSE); + } +} + +/* ------------------------------------------------------------------------- */ + +double config_setting_get_float(const config_setting_t *setting) +{ + switch(setting->type) + { + case CONFIG_TYPE_FLOAT: + return(setting->value.fval); + + case CONFIG_TYPE_INT: + if(config_get_auto_convert(setting->config)) + return((double)(setting->value.ival)); + else + return(0.0); + + case CONFIG_TYPE_INT64: + if(config_get_auto_convert(setting->config)) + return((double)(setting->value.llval)); + else + return(0.0); + + default: + return(0.0); + } +} + +/* ------------------------------------------------------------------------- */ + +int config_setting_set_float(config_setting_t *setting, double value) +{ + switch(setting->type) + { + case CONFIG_TYPE_NONE: + setting->type = CONFIG_TYPE_FLOAT; + /* fall through */ + + case CONFIG_TYPE_FLOAT: + setting->value.fval = value; + return(CONFIG_TRUE); + + case CONFIG_TYPE_INT: + if((setting->config->flags & CONFIG_OPTION_AUTOCONVERT) != 0) + { + setting->value.ival = (long)value; + return(CONFIG_TRUE); + } + else + return(CONFIG_FALSE); + + case CONFIG_TYPE_INT64: + if((setting->config->flags & CONFIG_OPTION_AUTOCONVERT) != 0) + { + setting->value.llval = (long long)value; + return(CONFIG_TRUE); + } + else + return(CONFIG_FALSE); + + default: + return(CONFIG_FALSE); + } +} + +/* ------------------------------------------------------------------------- */ + +int config_setting_get_bool(const config_setting_t *setting) +{ + return((setting->type == CONFIG_TYPE_BOOL) ? setting->value.ival : 0); +} + +/* ------------------------------------------------------------------------- */ + +int config_setting_set_bool(config_setting_t *setting, int value) +{ + if(setting->type == CONFIG_TYPE_NONE) + setting->type = CONFIG_TYPE_BOOL; + else if(setting->type != CONFIG_TYPE_BOOL) + return(CONFIG_FALSE); + + setting->value.ival = value; + return(CONFIG_TRUE); +} + +/* ------------------------------------------------------------------------- */ + +const char *config_setting_get_string(const config_setting_t *setting) +{ + return((setting->type == CONFIG_TYPE_STRING) ? setting->value.sval : NULL); +} + +/* ------------------------------------------------------------------------- */ + +int config_setting_set_string(config_setting_t *setting, const char *value) +{ + if(setting->type == CONFIG_TYPE_NONE) + setting->type = CONFIG_TYPE_STRING; + else if(setting->type != CONFIG_TYPE_STRING) + return(CONFIG_FALSE); + + if(setting->value.sval) + _delete(setting->value.sval); + + setting->value.sval = (value == NULL) ? NULL : strdup(value); + return(CONFIG_TRUE); +} + +/* ------------------------------------------------------------------------- */ + +int config_setting_set_format(config_setting_t *setting, short format) +{ + if(((setting->type != CONFIG_TYPE_INT) + && (setting->type != CONFIG_TYPE_INT64)) + || ((format != CONFIG_FORMAT_DEFAULT) && (format != CONFIG_FORMAT_HEX))) + return(CONFIG_FALSE); + + setting->format = format; + + return(CONFIG_TRUE); +} + +/* ------------------------------------------------------------------------- */ + +short config_setting_get_format(config_setting_t *setting) +{ + return(setting->format); +} + +/* ------------------------------------------------------------------------- */ + +config_setting_t *config_lookup(const config_t *config, const char *path) +{ + const char *p = path; + config_setting_t *setting = config->root, *found; + + for(;;) + { + while(*p && strchr(PATH_TOKENS, *p)) + p++; + + if(! *p) + break; + + if(*p == '[') + found = config_setting_get_elem(setting, atoi(++p)); + else + found = config_setting_get_member(setting, p); + + if(! found) + break; + + setting = found; + + while(! strchr(PATH_TOKENS, *p)) + p++; + } + + return(*p ? NULL : setting); +} + +/* ------------------------------------------------------------------------- */ + +const char *config_lookup_string(const config_t *config, const char *path) +{ + const config_setting_t *s = config_lookup(config, path); + if(! s) + return(NULL); + + return(config_setting_get_string(s)); +} + +/* ------------------------------------------------------------------------- */ + +long config_lookup_int(const config_t *config, const char *path) +{ + const config_setting_t *s = config_lookup(config, path); + if(! s) + return(0); + + return(config_setting_get_int(s)); +} + +/* ------------------------------------------------------------------------- */ + +long long config_lookup_int64(const config_t *config, const char *path) +{ + const config_setting_t *s = config_lookup(config, path); + if(! s) + return(INT64_CONST(0)); + + return(config_setting_get_int64(s)); +} + +/* ------------------------------------------------------------------------- */ + +double config_lookup_float(const config_t *config, const char *path) +{ + const config_setting_t *s = config_lookup(config, path); + if(! s) + return(0.0); + + return(config_setting_get_float(s)); +} + +/* ------------------------------------------------------------------------- */ + +int config_lookup_bool(const config_t *config, const char *path) +{ + const config_setting_t *s = config_lookup(config, path); + if(! s) + return(0); + + return(config_setting_get_bool(s)); +} + +/* ------------------------------------------------------------------------- */ + +long config_setting_get_int_elem(const config_setting_t *vector, int idx) +{ + const config_setting_t *element = config_setting_get_elem(vector, idx); + + return(element ? config_setting_get_int(element) : 0); +} + +/* ------------------------------------------------------------------------- */ + +config_setting_t *config_setting_set_int_elem(config_setting_t *vector, + int idx, long value) +{ + config_setting_t *element = NULL; + + if((vector->type != CONFIG_TYPE_ARRAY) && (vector->type != CONFIG_TYPE_LIST)) + return(NULL); + + if(idx < 0) + { + if(! __config_vector_checktype(vector, CONFIG_TYPE_INT)) + return(NULL); + + element = config_setting_create(vector, NULL, CONFIG_TYPE_INT); + } + else + { + element = config_setting_get_elem(vector, idx); + + if(! element) + return(NULL); + } + + if(! config_setting_set_int(element, value)) + return(NULL); + + return(element); +} + +/* ------------------------------------------------------------------------- */ + +long long config_setting_get_int64_elem(const config_setting_t *vector, + int idx) +{ + const config_setting_t *element = config_setting_get_elem(vector, idx); + + return(element ? config_setting_get_int64(element) : 0); +} + +/* ------------------------------------------------------------------------- */ + +config_setting_t *config_setting_set_int64_elem(config_setting_t *vector, + int idx, long long value) +{ + config_setting_t *element = NULL; + + if((vector->type != CONFIG_TYPE_ARRAY) && (vector->type != CONFIG_TYPE_LIST)) + return(NULL); + + if(idx < 0) + { + if(! __config_vector_checktype(vector, CONFIG_TYPE_INT64)) + return(NULL); + + element = config_setting_create(vector, NULL, CONFIG_TYPE_INT64); + } + else + { + element = config_setting_get_elem(vector, idx); + + if(! element) + return(NULL); + } + + if(! config_setting_set_int64(element, value)) + return(NULL); + + return(element); +} + +/* ------------------------------------------------------------------------- */ + +double config_setting_get_float_elem(const config_setting_t *vector, int idx) +{ + config_setting_t *element = config_setting_get_elem(vector, idx); + + return(element ? config_setting_get_float(element) : 0.0); +} + +/* ------------------------------------------------------------------------- */ + +config_setting_t *config_setting_set_float_elem(config_setting_t *vector, + int idx, double value) +{ + config_setting_t *element = NULL; + + if((vector->type != CONFIG_TYPE_ARRAY) && (vector->type != CONFIG_TYPE_LIST)) + return(NULL); + + if(idx < 0) + { + if(! __config_vector_checktype(vector, CONFIG_TYPE_FLOAT)) + return(NULL); + + element = config_setting_create(vector, NULL, CONFIG_TYPE_FLOAT); + } + else + element = config_setting_get_elem(vector, idx); + + if(! element) + return(NULL); + + if(! config_setting_set_float(element, value)) + return(NULL); + + return(element); +} + +/* ------------------------------------------------------------------------- */ + +int config_setting_get_bool_elem(const config_setting_t *vector, int idx) +{ + config_setting_t *element = config_setting_get_elem(vector, idx); + + if(! element) + return(CONFIG_FALSE); + + if(element->type != CONFIG_TYPE_BOOL) + return(CONFIG_FALSE); + + return(element->value.ival); +} + +/* ------------------------------------------------------------------------- */ + +config_setting_t *config_setting_set_bool_elem(config_setting_t *vector, + int idx, int value) +{ + config_setting_t *element = NULL; + + if((vector->type != CONFIG_TYPE_ARRAY) && (vector->type != CONFIG_TYPE_LIST)) + return(NULL); + + if(idx < 0) + { + if(! __config_vector_checktype(vector, CONFIG_TYPE_BOOL)) + return(NULL); + + element = config_setting_create(vector, NULL, CONFIG_TYPE_BOOL); + } + else + element = config_setting_get_elem(vector, idx); + + if(! element) + return(NULL); + + if(! config_setting_set_bool(element, value)) + return(NULL); + + return(element); +} + +/* ------------------------------------------------------------------------- */ + +const char *config_setting_get_string_elem(const config_setting_t *vector, + int idx) +{ + config_setting_t *element = config_setting_get_elem(vector, idx); + + if(! element) + return(NULL); + + if(element->type != CONFIG_TYPE_STRING) + return(NULL); + + return(element->value.sval); +} + +/* ------------------------------------------------------------------------- */ + +config_setting_t *config_setting_set_string_elem(config_setting_t *vector, + int idx, const char *value) +{ + config_setting_t *element = NULL; + + if((vector->type != CONFIG_TYPE_ARRAY) && (vector->type != CONFIG_TYPE_LIST)) + return(NULL); + + if(idx < 0) + { + if(! __config_vector_checktype(vector, CONFIG_TYPE_STRING)) + return(NULL); + + element = config_setting_create(vector, NULL, CONFIG_TYPE_STRING); + } + else + element = config_setting_get_elem(vector, idx); + + if(! element) + return(NULL); + + if(! config_setting_set_string(element, value)) + return(NULL); + + return(element); +} + +/* ------------------------------------------------------------------------- */ + +config_setting_t *config_setting_get_elem(const config_setting_t *vector, + unsigned int idx) +{ + config_list_t *list = vector->value.list; + + if(((vector->type != CONFIG_TYPE_ARRAY) + && (vector->type != CONFIG_TYPE_LIST) + && (vector->type != CONFIG_TYPE_GROUP)) || ! list) + return(NULL); + + if(idx >= list->length) + return(NULL); + + return(list->elements[idx]); +} + +/* ------------------------------------------------------------------------- */ + +config_setting_t *config_setting_get_member(const config_setting_t *setting, + const char *name) +{ + if(setting->type != CONFIG_TYPE_GROUP) + return(NULL); + + return(__config_list_search(setting->value.list, name, NULL)); +} + +/* ------------------------------------------------------------------------- */ + +void config_set_destructor(config_t *config, void (*destructor)(void *)) +{ + config->destructor = destructor; +} + +/* ------------------------------------------------------------------------- */ + +int config_setting_length(const config_setting_t *setting) +{ + if((setting->type != CONFIG_TYPE_GROUP) + && (setting->type != CONFIG_TYPE_ARRAY) + && (setting->type != CONFIG_TYPE_LIST)) + return(0); + + if(! setting->value.list) + return(0); + + return(setting->value.list->length); +} + +/* ------------------------------------------------------------------------- */ + +void config_setting_set_hook(config_setting_t *setting, void *hook) +{ + setting->hook = hook; +} + +/* ------------------------------------------------------------------------- */ + +config_setting_t *config_setting_add(config_setting_t *parent, + const char *name, int type) +{ + if((type < CONFIG_TYPE_NONE) || (type > CONFIG_TYPE_LIST)) + return(NULL); + + if(! parent) + return(NULL); + + if((parent->type == CONFIG_TYPE_ARRAY) || (parent->type == CONFIG_TYPE_LIST)) + name = NULL; + + if(name) + { + if(! __config_validate_name(name)) + return(NULL); + } + + if(config_setting_get_member(parent, name) != NULL) + return(NULL); /* already exists */ + + return(config_setting_create(parent, name, type)); +} + +/* ------------------------------------------------------------------------- */ + +int config_setting_remove(config_setting_t *parent, const char *name) +{ + unsigned int idx; + config_setting_t *setting; + + if(! parent) + return(CONFIG_FALSE); + + if(parent->type != CONFIG_TYPE_GROUP) + return(CONFIG_FALSE); + + if(! (setting = __config_list_search(parent->value.list, name, &idx))) + return(CONFIG_FALSE); + + __config_setting_destroy(setting); + + __config_list_remove(parent->value.list, idx); + + return(CONFIG_TRUE); +} + +/* ------------------------------------------------------------------------- */ + +int config_setting_remove_elem(config_setting_t *parent, unsigned int idx) +{ + config_list_t *list = parent->value.list; + + if(((parent->type != CONFIG_TYPE_ARRAY) + && (parent->type != CONFIG_TYPE_LIST) + && (parent->type != CONFIG_TYPE_GROUP)) || ! list) + return(CONFIG_FALSE); + + if(idx >= list->length) + return(CONFIG_FALSE); + + __config_list_remove(list, idx); + + return(CONFIG_TRUE); +} + +/* ------------------------------------------------------------------------- */ + +int config_setting_index(const config_setting_t *setting) +{ + config_setting_t **found = NULL; + config_list_t *list; + int i; + + if(! setting->parent) + return(-1); + + list = setting->parent->value.list; + + for(i = 0, found = list->elements; i < list->length; ++i, ++found) + { + if(*found == setting) + return(i); + } + + return(-1); +} + +/* ------------------------------------------------------------------------- */ +/* eof */ diff --git a/coregrade/src/libconfig-1.3.1/libconfig.h b/coregrade/src/libconfig-1.3.1/libconfig.h new file mode 100644 index 0000000..2537ffa --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/libconfig.h @@ -0,0 +1,253 @@ +/* ---------------------------------------------------------------------------- + libconfig - A library for processing structured configuration files + Copyright (C) 2005-2008 Mark A Lindner + + This file is part of libconfig. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation; either version 2.1 of + the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, see + . + ---------------------------------------------------------------------------- +*/ + +#ifndef __libconfig_h +#define __libconfig_h + +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +#if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +#if defined(LIBCONFIG_STATIC) +#define LIBCONFIG_API +#elif defined(LIBCONFIG_EXPORTS) +#define LIBCONFIG_API __declspec(dllexport) +#else /* ! LIBCONFIG_EXPORTS */ +#define LIBCONFIG_API __declspec(dllimport) +#endif /* LIBCONFIG_STATIC */ +#else /* ! WIN32 */ +#define LIBCONFIG_API +#endif /* WIN32 */ + +#include + +#define CONFIG_TYPE_NONE 0 +#define CONFIG_TYPE_GROUP 1 +#define CONFIG_TYPE_INT 2 +#define CONFIG_TYPE_INT64 3 +#define CONFIG_TYPE_FLOAT 4 +#define CONFIG_TYPE_STRING 5 +#define CONFIG_TYPE_BOOL 6 +#define CONFIG_TYPE_ARRAY 7 +#define CONFIG_TYPE_LIST 8 + +#define CONFIG_FORMAT_DEFAULT 0 +#define CONFIG_FORMAT_HEX 1 + +#define CONFIG_OPTION_AUTOCONVERT 0x01 + +#define CONFIG_TRUE (1) +#define CONFIG_FALSE (0) + +typedef union config_value_t +{ + long ival; + long long llval; + double fval; + char *sval; + struct config_list_t *list; +} config_value_t; + +typedef struct config_setting_t +{ + char *name; + short type; + short format; + config_value_t value; + struct config_setting_t *parent; + struct config_t *config; + void *hook; + unsigned int line; +} config_setting_t; + +typedef struct config_list_t +{ + unsigned int length; + unsigned int capacity; + config_setting_t **elements; +} config_list_t; + +typedef struct config_t +{ + config_setting_t *root; + void (*destructor)(void *); + int flags; + const char *error_text; + int error_line; +} config_t; + +extern LIBCONFIG_API int config_read(config_t *config, FILE *stream); +extern LIBCONFIG_API void config_write(const config_t *config, FILE *stream); + +extern LIBCONFIG_API void config_set_auto_convert(config_t *config, int flag); +extern LIBCONFIG_API int config_get_auto_convert(const config_t *config); + +extern LIBCONFIG_API int config_read_file(config_t *config, + const char *filename); +extern LIBCONFIG_API int config_write_file(config_t *config, + const char *filename); + +extern LIBCONFIG_API void config_set_destructor(config_t *config, + void (*destructor)(void *)); + +extern LIBCONFIG_API void config_init(config_t *config); +extern LIBCONFIG_API void config_destroy(config_t *config); + +extern LIBCONFIG_API long config_setting_get_int( + const config_setting_t *setting); +extern LIBCONFIG_API long long config_setting_get_int64( + const config_setting_t *setting); +extern LIBCONFIG_API double config_setting_get_float( + const config_setting_t *setting); +extern LIBCONFIG_API int config_setting_get_bool( + const config_setting_t *setting); +extern LIBCONFIG_API const char *config_setting_get_string( + const config_setting_t *setting); + +extern LIBCONFIG_API int config_setting_set_int(config_setting_t *setting, + long value); +extern LIBCONFIG_API int config_setting_set_int64(config_setting_t *setting, + long long value); +extern LIBCONFIG_API int config_setting_set_float(config_setting_t *setting, + double value); +extern LIBCONFIG_API int config_setting_set_bool(config_setting_t *setting, + int value); +extern LIBCONFIG_API int config_setting_set_string(config_setting_t *setting, + const char *value); + +extern LIBCONFIG_API int config_setting_set_format(config_setting_t *setting, + short format); +extern LIBCONFIG_API short config_setting_get_format(config_setting_t *setting); + +extern LIBCONFIG_API long config_setting_get_int_elem( + const config_setting_t *setting, int idx); +extern LIBCONFIG_API long long config_setting_get_int64_elem( + const config_setting_t *setting, int idx); +extern LIBCONFIG_API double config_setting_get_float_elem( + const config_setting_t *setting, int idx); +extern LIBCONFIG_API int config_setting_get_bool_elem( + const config_setting_t *setting, int idx); +extern LIBCONFIG_API const char *config_setting_get_string_elem( + const config_setting_t *setting, int idx); + +extern LIBCONFIG_API config_setting_t *config_setting_set_int_elem( + config_setting_t *setting, int idx, long value); +extern LIBCONFIG_API config_setting_t *config_setting_set_int64_elem( + config_setting_t *setting, int idx, long long value); +extern LIBCONFIG_API config_setting_t *config_setting_set_float_elem( + config_setting_t *setting, int idx, double value); +extern LIBCONFIG_API config_setting_t *config_setting_set_bool_elem( + config_setting_t *setting, int idx, int value); +extern LIBCONFIG_API config_setting_t *config_setting_set_string_elem( + config_setting_t *setting, int idx, const char *value); + +#define /* int */ config_setting_type(/* const config_setting_t * */ S) \ + ((S)->type) + +#define /* int */ config_setting_is_group(/* const config_setting_t * */ S) \ + ((S)->type == CONFIG_TYPE_GROUP) +#define /* int */ config_setting_is_array(/* const config_setting_t * */ S) \ + ((S)->type == CONFIG_TYPE_ARRAY) +#define /* int */ config_setting_is_list(/* const config_setting_t * */ S) \ + ((S)->type == CONFIG_TYPE_LIST) + +#define /* int */ config_setting_is_aggregate( \ + /* const config_setting_t * */ S) \ + (((S)->type == CONFIG_TYPE_GROUP) || ((S)->type == CONFIG_TYPE_LIST) \ + || ((S)->type == CONFIG_TYPE_ARRAY)) + +#define /* int */ config_setting_is_number(/* const config_setting_t * */ S) \ + (((S)->type == CONFIG_TYPE_INT) \ + || ((S)->type == CONFIG_TYPE_INT64) \ + || ((S)->type == CONFIG_TYPE_FLOAT)) + +#define /* int */ config_setting_is_scalar(/* const config_setting_t * */ S) \ + (((S)->type == CONFIG_TYPE_BOOL) || ((S)->type == CONFIG_TYPE_STRING) \ + || config_setting_is_number(S)) + +#define /* const char * */ config_setting_name( \ + /* const config_setting_t * */ S) \ + ((S)->name) + +#define /* config_setting_t * */ config_setting_parent( \ + /* const config_setting_t * */ S) \ + ((S)->parent) + +#define /* int */ config_setting_is_root( \ + /* const config_setting_t * */ S) \ + ((S)->parent ? CONFIG_FALSE : CONFIG_TRUE) + +extern LIBCONFIG_API int config_setting_index(const config_setting_t *setting); + +extern LIBCONFIG_API int config_setting_length( + const config_setting_t *setting); +extern LIBCONFIG_API config_setting_t *config_setting_get_elem( + const config_setting_t *setting, unsigned int idx); + +extern LIBCONFIG_API config_setting_t *config_setting_get_member( + const config_setting_t *setting, const char *name); + +extern LIBCONFIG_API config_setting_t *config_setting_add( + config_setting_t *parent, const char *name, int type); +extern LIBCONFIG_API int config_setting_remove(config_setting_t *parent, + const char *name); +extern LIBCONFIG_API int config_setting_remove_elem(config_setting_t *parent, + unsigned int idx); +extern LIBCONFIG_API void config_setting_set_hook(config_setting_t *setting, + void *hook); + +#define config_setting_get_hook(S) ((S)->hook) + +extern LIBCONFIG_API config_setting_t *config_lookup(const config_t *config, + const char *path); + +extern LIBCONFIG_API long config_lookup_int(const config_t *config, + const char *path); +extern LIBCONFIG_API long long config_lookup_int64(const config_t *config, + const char *path); +extern LIBCONFIG_API double config_lookup_float(const config_t *config, + const char *path); +extern LIBCONFIG_API int config_lookup_bool(const config_t *config, + const char *path); +extern LIBCONFIG_API const char *config_lookup_string(const config_t *config, + const char *path); + +#define /* config_setting_t * */ config_root_setting( \ + /* const config_t * */ C) \ + ((C)->root) + +#define /* unsigned short */ config_setting_source_line( \ + /* const config_t */ C) \ + ((C)->line) + +#define /* const char * */ config_error_text(/* const config_t * */ C) \ + ((C)->error_text) + +#define /* int */ config_error_line(/* const config_t * */ C) \ + ((C)->error_line) + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* __libconfig_h */ diff --git a/coregrade/src/libconfig-1.3.1/libconfig.h++ b/coregrade/src/libconfig-1.3.1/libconfig.h++ new file mode 100644 index 0000000..0cdf160 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/libconfig.h++ @@ -0,0 +1,428 @@ +/* ---------------------------------------------------------------------------- + libconfig - A library for processing structured configuration files + Copyright (C) 2005-2008 Mark A Lindner + + This file is part of libconfig. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation; either version 2.1 of + the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, see + . + ---------------------------------------------------------------------------- +*/ + +#ifndef __libconfig_hpp +#define __libconfig_hpp + +#include +#include +#include + +namespace libconfig +{ + +#include + + class LIBCONFIG_API ConfigException : public std::exception { }; + + class Setting; // fwd decl + + class LIBCONFIG_API SettingException : public ConfigException + { + friend class Config; + + public: + + SettingException(const SettingException &other); + SettingException& operator=(const SettingException &other); + + virtual ~SettingException() throw(); + + const char *getPath() const; + + virtual const char *what() const throw(); + + protected: + + SettingException(const Setting &setting); + SettingException(const Setting &setting, int idx); + SettingException(const Setting &setting, const char *name); + SettingException(const char *path); + + private: + + char *_path; + }; + + class LIBCONFIG_API SettingTypeException : public SettingException + { + friend class Config; + friend class Setting; + + const char *what() const throw(); + + private: + + SettingTypeException(const Setting &setting); + SettingTypeException(const Setting &setting, int idx); + SettingTypeException(const Setting &setting, const char *name); + }; + + class LIBCONFIG_API SettingNotFoundException : public SettingException + { + friend class Config; + friend class Setting; + + const char *what() const throw(); + + private: + + SettingNotFoundException(const Setting &setting, int idx); + SettingNotFoundException(const Setting &setting, const char *name); + SettingNotFoundException(const char *path); + }; + + class LIBCONFIG_API SettingNameException : public SettingException + { + friend class Config; + friend class Setting; + + const char *what() const throw(); + + private: + + SettingNameException(const Setting &setting, const char *name); + }; + + class LIBCONFIG_API FileIOException : public ConfigException + { + const char *what() const throw(); + }; + + class LIBCONFIG_API ParseException : public ConfigException + { + friend class Config; + + public: + + virtual ~ParseException() throw(); + + inline int getLine() throw() + { return(_line); } + + inline const char *getError() throw() + { return(_error); } + + const char *what() const throw(); + + private: + + ParseException(int line, const char *error); + + int _line; + const char *_error; + }; + + class LIBCONFIG_API Setting + { + friend class Config; + + public: + + enum Type + { + TypeNone = 0, + // scalar types + TypeInt, + TypeInt64, + TypeFloat, + TypeString, + TypeBoolean, + // aggregate types + TypeGroup, + TypeArray, + TypeList + }; + + enum Format + { + FormatDefault = 0, + FormatHex = 1 + }; + + private: + + config_setting_t *_setting; + Type _type; + Format _format; + + Setting(config_setting_t *setting); + + void assertType(Type type) const + throw(SettingTypeException); + static Setting & wrapSetting(config_setting_t *setting); + + Setting(const Setting& other); // not supported + Setting& operator=(const Setting& other); // not supported + + public: + + virtual ~Setting() throw(); + + inline Type getType() const throw() { return(_type); } + + inline Format getFormat() const throw() { return(_format); } + void setFormat(Format format) throw(); + + operator bool() const throw(SettingTypeException); + operator long() const throw(SettingTypeException); + operator unsigned long() const throw(SettingTypeException); + operator int() const throw(SettingTypeException); + operator unsigned int() const throw(SettingTypeException); + operator long long() const throw(SettingTypeException); + operator unsigned long long() const throw(SettingTypeException); + operator double() const throw(SettingTypeException); + operator float() const throw(SettingTypeException); + operator const char *() const throw(SettingTypeException); + operator std::string() const throw(SettingTypeException); + + Setting & operator=(bool value) throw(SettingTypeException); + Setting & operator=(long value) throw(SettingTypeException); + Setting & operator=(int value) throw(SettingTypeException); + Setting & operator=(const long long &value) throw(SettingTypeException); + Setting & operator=(const double &value) throw(SettingTypeException); + Setting & operator=(float value) throw(SettingTypeException); + Setting & operator=(const char *value) throw(SettingTypeException); + Setting & operator=(const std::string &value) throw(SettingTypeException); + + Setting & operator[](const char * key) const + throw(SettingTypeException, SettingNotFoundException); + + inline Setting & operator[](const std::string & key) const + throw(SettingTypeException, SettingNotFoundException) + { return(operator[](key.c_str())); } + + Setting & operator[](int index) const + throw(SettingTypeException, SettingNotFoundException); + + bool lookupValue(const char *name, bool &value) const throw(); + bool lookupValue(const char *name, long &value) const throw(); + bool lookupValue(const char *name, unsigned long &value) const throw(); + bool lookupValue(const char *name, int &value) const throw(); + bool lookupValue(const char *name, unsigned int &value) const throw(); + bool lookupValue(const char *name, long long &value) const throw(); + bool lookupValue(const char *name, unsigned long long &value) + const throw(); + bool lookupValue(const char *name, double &value) const throw(); + bool lookupValue(const char *name, float &value) const throw(); + bool lookupValue(const char *name, const char *&value) const throw(); + bool lookupValue(const char *name, std::string &value) const throw(); + + inline bool lookupValue(const std::string &name, bool &value) + const throw() + { return(lookupValue(name.c_str(), value)); } + + inline bool lookupValue(const std::string &name, long &value) + const throw() + { return(lookupValue(name.c_str(), value)); } + + inline bool lookupValue(const std::string &name, unsigned long &value) + const throw() + { return(lookupValue(name.c_str(), value)); } + + inline bool lookupValue(const std::string &name, int &value) const throw() + { return(lookupValue(name.c_str(), value)); } + + inline bool lookupValue(const std::string &name, unsigned int &value) + const throw() + { return(lookupValue(name.c_str(), value)); } + + inline bool lookupValue(const std::string &name, long long &value) + const throw() + { return(lookupValue(name.c_str(), value)); } + + inline bool lookupValue(const std::string &name, + unsigned long long &value) const throw() + { return(lookupValue(name.c_str(), value)); } + + inline bool lookupValue(const std::string &name, double &value) const + throw() + { return(lookupValue(name.c_str(), value)); } + + inline bool lookupValue(const std::string &name, float &value) const + throw() + { return(lookupValue(name.c_str(), value)); } + + inline bool lookupValue(const std::string &name, const char *&value) const + throw() + { return(lookupValue(name.c_str(), value)); } + + inline bool lookupValue(const std::string &name, std::string &value) const + throw() + { return(lookupValue(name.c_str(), value)); } + + void remove(const char *name) + throw(SettingTypeException, SettingNotFoundException); + + inline void remove(const std::string & name) + throw(SettingTypeException, SettingNotFoundException) + { remove(name.c_str()); } + + void remove(unsigned int idx) + throw(SettingTypeException, SettingNotFoundException); + + inline Setting & add(const std::string & name, Type type) + throw(SettingNameException, SettingTypeException) + { return(add(name.c_str(), type)); } + + Setting & add(const char *name, Type type) + throw(SettingNameException, SettingTypeException); + + Setting & add(Type type) + throw(SettingTypeException); + + inline bool exists(const std::string & name) const throw() + { return(exists(name.c_str())); } + + bool exists(const char *name) const throw(); + + int getLength() const throw(); + const char *getName() const throw(); + std::string getPath() const; + int getIndex() const throw(); + + const Setting & getParent() const throw(SettingNotFoundException); + Setting & getParent() throw(SettingNotFoundException); + + bool isRoot() const throw(); + + inline bool isGroup() const throw() + { return(_type == TypeGroup); } + + inline bool isArray() const throw() + { return(_type == TypeArray); } + + inline bool isList() const throw() + { return(_type == TypeList); } + + inline bool isAggregate() const throw() + { return(_type >= TypeGroup); } + + inline bool isScalar() const throw() + { return((_type > TypeNone) && (_type < TypeGroup)); } + + inline bool isNumber() const throw() + { return((_type == TypeInt) || (_type == TypeInt64) + || (_type == TypeFloat)); } + + inline unsigned int getSourceLine() const throw() + { return(config_setting_source_line(_setting)); } + }; + + class LIBCONFIG_API Config + { + private: + + config_t _config; + + static void ConfigDestructor(void *arg); + Config(const Config& other); // not supported + Config& operator=(const Config& other); // not supported + + public: + + Config(); + virtual ~Config(); + + void setAutoConvert(bool flag); + bool getAutoConvert() const; + + void read(FILE *stream) throw(ParseException); + void write(FILE *stream) const; + + void readFile(const char *filename) throw(FileIOException, ParseException); + void writeFile(const char *filename) throw(FileIOException); + + inline Setting & lookup(const std::string &path) const + throw(SettingNotFoundException) + { return(lookup(path.c_str())); } + + Setting & lookup(const char *path) const + throw(SettingNotFoundException); + + inline bool exists(const std::string & path) const throw() + { return(exists(path.c_str())); } + + bool exists(const char *path) const throw(); + + bool lookupValue(const char *path, bool &value) const throw(); + bool lookupValue(const char *path, long &value) const throw(); + bool lookupValue(const char *path, unsigned long &value) const throw(); + bool lookupValue(const char *path, int &value) const throw(); + bool lookupValue(const char *path, unsigned int &value) const throw(); + bool lookupValue(const char *path, long long &value) const throw(); + bool lookupValue(const char *path, unsigned long long &value) + const throw(); + bool lookupValue(const char *path, double &value) const throw(); + bool lookupValue(const char *path, float &value) const throw(); + bool lookupValue(const char *path, const char *&value) const throw(); + bool lookupValue(const char *path, std::string &value) const throw(); + + inline bool lookupValue(const std::string &path, bool &value) + const throw() + { return(lookupValue(path.c_str(), value)); } + + inline bool lookupValue(const std::string &path, long &value) + const throw() + { return(lookupValue(path.c_str(), value)); } + + inline bool lookupValue(const std::string &path, unsigned long &value) + const throw() + { return(lookupValue(path.c_str(), value)); } + + inline bool lookupValue(const std::string &path, int &value) const throw() + { return(lookupValue(path.c_str(), value)); } + + inline bool lookupValue(const std::string &path, unsigned int &value) + const throw() + { return(lookupValue(path.c_str(), value)); } + + inline bool lookupValue(const std::string &path, long long &value) + const throw() + { return(lookupValue(path.c_str(), value)); } + + inline bool lookupValue(const std::string &path, + unsigned long long &value) const throw() + { return(lookupValue(path.c_str(), value)); } + + inline bool lookupValue(const std::string &path, double &value) const + throw() + { return(lookupValue(path.c_str(), value)); } + + inline bool lookupValue(const std::string &path, float &value) const + throw() + { return(lookupValue(path.c_str(), value)); } + + inline bool lookupValue(const std::string &path, const char *&value) const + throw() + { return(lookupValue(path.c_str(), value)); } + + inline bool lookupValue(const std::string &path, std::string &value) const + throw() + { return(lookupValue(path.c_str(), value)); } + + Setting & getRoot() const; + }; + +} // namespace libconfig + +#endif // __libconfig_hpp diff --git a/coregrade/src/libconfig-1.3.1/libconfig.hh b/coregrade/src/libconfig-1.3.1/libconfig.hh new file mode 100644 index 0000000..8b3b2d5 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/libconfig.hh @@ -0,0 +1,23 @@ +/* ---------------------------------------------------------------------------- + libconfig - A structured configuration file parsing library + Copyright (C) 2005-2008 Mark A Lindner + + This file is part of libconfig. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation; either version 2.1 of + the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + ---------------------------------------------------------------------------- +*/ + +#include diff --git a/coregrade/src/libconfig-1.3.1/libconfig.pc b/coregrade/src/libconfig-1.3.1/libconfig.pc new file mode 100644 index 0000000..24a471e --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/libconfig.pc @@ -0,0 +1,14 @@ +prefix=/usr +exec_prefix=${prefix} +libdir=${exec_prefix}/lib +includedir=${prefix}/include + +Name: libconfig +Description: C Configuration File Library +Version: 1.3.1 +URL: http://www.hyperrealm.com/main.php?s=libconfig +Requires: +Conflicts: +Libs: -L${libdir} -lconfig +Libs.private: +Cflags: -I${includedir} diff --git a/coregrade/src/libconfig-1.3.1/libconfig.pc.in b/coregrade/src/libconfig-1.3.1/libconfig.pc.in new file mode 100644 index 0000000..4f7628b --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/libconfig.pc.in @@ -0,0 +1,14 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: libconfig +Description: C Configuration File Library +Version: @VERSION@ +URL: http://www.hyperrealm.com/main.php?s=libconfig +Requires: +Conflicts: +Libs: -L${libdir} -lconfig +Libs.private: @LIBS@ +Cflags: -I${includedir} diff --git a/coregrade/src/libconfig-1.3.1/libconfig.sln b/coregrade/src/libconfig-1.3.1/libconfig.sln new file mode 100644 index 0000000..8a6c989 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/libconfig.sln @@ -0,0 +1,38 @@ + +Microsoft Visual Studio Solution File, Format Version 9.00 +# Visual C++ Express 2005 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libconfig++_stub", "libconfig++_stub.vcproj", "{2A94C9E9-A7C7-4770-A24C-694312ADB850}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libconfig++", "libconfig++.vcproj", "{A0C36CE7-D908-4573-8B69-249EEEB7D2BE}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libconfig", "libconfig.vcproj", "{1A234565-926D-49B2-83E4-D56E0C38C9F2}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libconfig_stub", "libconfig_stub.vcproj", "{6CD5E648-E434-4C9A-9872-AF884149CE93}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Release|Win32 = Release|Win32 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {2A94C9E9-A7C7-4770-A24C-694312ADB850}.Debug|Win32.ActiveCfg = Debug|Win32 + {2A94C9E9-A7C7-4770-A24C-694312ADB850}.Debug|Win32.Build.0 = Debug|Win32 + {2A94C9E9-A7C7-4770-A24C-694312ADB850}.Release|Win32.ActiveCfg = Release|Win32 + {2A94C9E9-A7C7-4770-A24C-694312ADB850}.Release|Win32.Build.0 = Release|Win32 + {A0C36CE7-D908-4573-8B69-249EEEB7D2BE}.Debug|Win32.ActiveCfg = Debug|Win32 + {A0C36CE7-D908-4573-8B69-249EEEB7D2BE}.Debug|Win32.Build.0 = Debug|Win32 + {A0C36CE7-D908-4573-8B69-249EEEB7D2BE}.Release|Win32.ActiveCfg = Release|Win32 + {A0C36CE7-D908-4573-8B69-249EEEB7D2BE}.Release|Win32.Build.0 = Release|Win32 + {1A234565-926D-49B2-83E4-D56E0C38C9F2}.Debug|Win32.ActiveCfg = Debug|Win32 + {1A234565-926D-49B2-83E4-D56E0C38C9F2}.Debug|Win32.Build.0 = Debug|Win32 + {1A234565-926D-49B2-83E4-D56E0C38C9F2}.Release|Win32.ActiveCfg = Release|Win32 + {1A234565-926D-49B2-83E4-D56E0C38C9F2}.Release|Win32.Build.0 = Release|Win32 + {6CD5E648-E434-4C9A-9872-AF884149CE93}.Debug|Win32.ActiveCfg = Debug|Win32 + {6CD5E648-E434-4C9A-9872-AF884149CE93}.Debug|Win32.Build.0 = Debug|Win32 + {6CD5E648-E434-4C9A-9872-AF884149CE93}.Release|Win32.ActiveCfg = Release|Win32 + {6CD5E648-E434-4C9A-9872-AF884149CE93}.Release|Win32.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/coregrade/src/libconfig-1.3.1/libconfig.spec b/coregrade/src/libconfig-1.3.1/libconfig.spec new file mode 100644 index 0000000..650d49f --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/libconfig.spec @@ -0,0 +1,84 @@ +Name: libconfig +Version: 1.3.1 +Release: 1 +Summary: C/C++ Configuration File Library + +Group: System Environment/Libraries +License: LGPL +URL: http://hyperrealm.com/main.php?s=libconfig +Source0: %{name}-%{version}.tar.gz +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id} -u -n) + +Packager: Deneys S. Maartens + +BuildRequires: texinfo + +%description +%{name} is a simple library for manipulating structured configuration +files. The file format is more compact and more readable than XML. And +unlike XML, it is type-aware, so it is not necessary to do string +parsing in application code. + +%{name} is very compact -- just 25K for the stripped C shared library +(one-fifth the size of the expat XML parser library) and 39K for the +stripped C++ shared library. This makes it well-suited for +memory-constrained systems like handheld devices. + +The library includes bindings for both the C and C++ languages. It works +on POSIX-compliant UNIX systems. + +%package devel +Summary: %{name} development package +Group: Development/Libraries +Requires: %{name} = %{version} + +%description devel +Development files for %{name}. + +%prep +%setup -q + +%build +%configure +make %{?_smp_mflags} +make html + +%install +rm -rf $RPM_BUILD_ROOT +make install DESTDIR=$RPM_BUILD_ROOT + +%clean +rm -rf $RPM_BUILD_ROOT + +%post +ldconfig + +%postun +ldconfig + +%files +%defattr(-,root,root,-) +%doc AUTHORS COPYING.LIB ChangeLog INSTALL NEWS README +%{_libdir}/%{name}.so* +%{_libdir}/%{name}++.so* + +%files devel +%defattr(-,root,root,-) +%doc AUTHORS COPYING.LIB ChangeLog INSTALL NEWS README +%doc doc/%{name}.html +%doc test.cfg +%doc samples/c/*.c +%doc samples/c++/*.cpp +%{_infodir} +%{_includedir} +%{_libdir}/pkgconfig +%{_libdir}/%{name}.a +%{_libdir}/%{name}.la +%{_libdir}/%{name}++.a +%{_libdir}/%{name}++.la + +%changelog +* Wed Aug 19 2007 Deneys S. Maartens 1.1.3-1 +- create spec file + +# -fin- diff --git a/coregrade/src/libconfig-1.3.1/libconfig.spec.in b/coregrade/src/libconfig-1.3.1/libconfig.spec.in new file mode 100644 index 0000000..963e4de --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/libconfig.spec.in @@ -0,0 +1,84 @@ +Name: @PACKAGE@ +Version: @VERSION@ +Release: 1 +Summary: C/C++ Configuration File Library + +Group: System Environment/Libraries +License: LGPL +URL: http://hyperrealm.com/main.php?s=libconfig +Source0: %{name}-%{version}.tar.gz +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id} -u -n) + +Packager: Deneys S. Maartens + +BuildRequires: texinfo + +%description +%{name} is a simple library for manipulating structured configuration +files. The file format is more compact and more readable than XML. And +unlike XML, it is type-aware, so it is not necessary to do string +parsing in application code. + +%{name} is very compact -- just 25K for the stripped C shared library +(one-fifth the size of the expat XML parser library) and 39K for the +stripped C++ shared library. This makes it well-suited for +memory-constrained systems like handheld devices. + +The library includes bindings for both the C and C++ languages. It works +on POSIX-compliant UNIX systems. + +%package devel +Summary: %{name} development package +Group: Development/Libraries +Requires: %{name} = %{version} + +%description devel +Development files for %{name}. + +%prep +%setup -q + +%build +%configure +make %{?_smp_mflags} +make html + +%install +rm -rf $RPM_BUILD_ROOT +make install DESTDIR=$RPM_BUILD_ROOT + +%clean +rm -rf $RPM_BUILD_ROOT + +%post +ldconfig + +%postun +ldconfig + +%files +%defattr(-,root,root,-) +%doc AUTHORS COPYING.LIB ChangeLog INSTALL NEWS README +%{_libdir}/%{name}.so* +%{_libdir}/%{name}++.so* + +%files devel +%defattr(-,root,root,-) +%doc AUTHORS COPYING.LIB ChangeLog INSTALL NEWS README +%doc doc/%{name}.html +%doc test.cfg +%doc samples/c/*.c +%doc samples/c++/*.cpp +%{_infodir} +%{_includedir} +%{_libdir}/pkgconfig +%{_libdir}/%{name}.a +%{_libdir}/%{name}.la +%{_libdir}/%{name}++.a +%{_libdir}/%{name}++.la + +%changelog +* Wed Aug 19 2007 Deneys S. Maartens 1.1.3-1 +- create spec file + +# -fin- diff --git a/coregrade/src/libconfig-1.3.1/libconfig.vcproj b/coregrade/src/libconfig-1.3.1/libconfig.vcproj new file mode 100644 index 0000000..219f694 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/libconfig.vcproj @@ -0,0 +1,212 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/coregrade/src/libconfig-1.3.1/libconfig_stub.vcproj b/coregrade/src/libconfig-1.3.1/libconfig_stub.vcproj new file mode 100644 index 0000000..dc3e31f --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/libconfig_stub.vcproj @@ -0,0 +1,184 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/coregrade/src/libconfig-1.3.1/libconfigcpp.c++ b/coregrade/src/libconfig-1.3.1/libconfigcpp.c++ new file mode 100644 index 0000000..bd79721 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/libconfigcpp.c++ @@ -0,0 +1,1112 @@ +/* ---------------------------------------------------------------------------- + libconfig - A library for processing structured configuration files + Copyright (C) 2005-2008 Mark A Lindner + + This file is part of libconfig. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation; either version 2.1 of + the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, see + . + ---------------------------------------------------------------------------- +*/ + +#include "libconfig.h++" + +#ifdef _MSC_VER +#pragma warning (disable: 4996) +#endif + +#include "wincompat.h" + +using namespace libconfig; + +#include +#include +#include + +// --------------------------------------------------------------------------- + +ParseException::ParseException(int line, const char *error) + : _line(line), _error(error) +{ +} + +// --------------------------------------------------------------------------- + +ParseException::~ParseException() throw() +{ +} + +// --------------------------------------------------------------------------- + +const char *ParseException::what() const throw() +{ + return("ParseException"); +} + +// --------------------------------------------------------------------------- + +static int __toTypeCode(Setting::Type type) +{ + int typecode; + + switch(type) + { + case Setting::TypeGroup: + typecode = CONFIG_TYPE_GROUP; + break; + + case Setting::TypeInt: + typecode = CONFIG_TYPE_INT; + break; + + case Setting::TypeInt64: + typecode = CONFIG_TYPE_INT64; + break; + + case Setting::TypeFloat: + typecode = CONFIG_TYPE_FLOAT; + break; + + case Setting::TypeString: + typecode = CONFIG_TYPE_STRING; + break; + + case Setting::TypeBoolean: + typecode = CONFIG_TYPE_BOOL; + break; + + case Setting::TypeArray: + typecode = CONFIG_TYPE_ARRAY; + break; + + case Setting::TypeList: + typecode = CONFIG_TYPE_LIST; + break; + + default: + typecode = CONFIG_TYPE_NONE; + } + + return(typecode); +} + +// --------------------------------------------------------------------------- + +static void __constructPath(const Setting &setting, + std::stringstream &path) +{ + // head recursion to print path from root to target + + if(! setting.isRoot()) + { + __constructPath(setting.getParent(), path); + if(path.tellp() > 0) + path << '.'; + + const char *name = setting.getName(); + if(name) + path << name; + else + path << '[' << setting.getIndex() << ']'; + } +} + +// --------------------------------------------------------------------------- + +SettingException::SettingException(const Setting &setting) +{ + std::stringstream sstr; + __constructPath(setting, sstr); + + _path = ::strdup(sstr.str().c_str()); +} + +// --------------------------------------------------------------------------- + +SettingException::SettingException(const Setting &setting, int idx) +{ + std::stringstream sstr; + __constructPath(setting, sstr); + sstr << ".[" << idx << "]"; + + _path = ::strdup(sstr.str().c_str()); +} + +// --------------------------------------------------------------------------- + +SettingException::SettingException(const Setting &setting, const char *name) +{ + std::stringstream sstr; + __constructPath(setting, sstr); + sstr << '.' << name; + + _path = ::strdup(sstr.str().c_str()); +} + +// --------------------------------------------------------------------------- + +SettingException::SettingException(const char *path) +{ + _path = ::strdup(path); +} + +// --------------------------------------------------------------------------- + +const char *SettingException::getPath() const +{ + return(_path); +} + +// --------------------------------------------------------------------------- + +SettingException::SettingException(const SettingException &other) +{ + _path = ::strdup(other._path); +} + +// --------------------------------------------------------------------------- + +SettingException &SettingException::operator=(const SettingException &other) +{ + ::free(_path); + _path = ::strdup(other._path); + + return(*this); +} + +// --------------------------------------------------------------------------- + +const char *SettingException::what() const throw() +{ + return("SettingException"); +} + +// --------------------------------------------------------------------------- + +SettingException::~SettingException() throw() +{ + ::free(_path); +} + +// --------------------------------------------------------------------------- + +SettingTypeException::SettingTypeException(const Setting &setting) + : SettingException(setting) +{ +} + +// --------------------------------------------------------------------------- + +SettingTypeException::SettingTypeException(const Setting &setting, int idx) + : SettingException(setting, idx) +{ +} + +// --------------------------------------------------------------------------- + +SettingTypeException::SettingTypeException(const Setting &setting, + const char *name) + : SettingException(setting, name) +{ +} + +// --------------------------------------------------------------------------- + +const char *SettingTypeException::what() const throw() +{ + return("SettingTypeException"); +} + +// --------------------------------------------------------------------------- + +SettingNotFoundException::SettingNotFoundException(const Setting &setting, + int idx) + : SettingException(setting, idx) +{ +} + +// --------------------------------------------------------------------------- + +SettingNotFoundException::SettingNotFoundException(const Setting &setting, + const char *name) + : SettingException(setting, name) +{ +} + +// --------------------------------------------------------------------------- + +SettingNotFoundException::SettingNotFoundException(const char *path) + : SettingException(path) +{ +} + +// --------------------------------------------------------------------------- + +const char *SettingNotFoundException::what() const throw() +{ + return("SettingNotFoundException"); +} + +// --------------------------------------------------------------------------- + +SettingNameException::SettingNameException(const Setting &setting, + const char *name) + : SettingException(setting, name) +{ +} + +// --------------------------------------------------------------------------- + +const char *SettingNameException::what() const throw() +{ + return("SettingNameException"); +} + +// --------------------------------------------------------------------------- + +const char *FileIOException::what() const throw() +{ + return("FileIOException"); +} + +// --------------------------------------------------------------------------- + +void Config::ConfigDestructor(void *arg) +{ + delete reinterpret_cast(arg); +} + +// --------------------------------------------------------------------------- + +Config::Config() +{ + config_init(& _config); + config_set_destructor(& _config, ConfigDestructor); +} + +// --------------------------------------------------------------------------- + +Config::~Config() +{ + config_destroy(& _config); +} + +// --------------------------------------------------------------------------- + +void Config::setAutoConvert(bool flag) +{ + config_set_auto_convert(& _config, (flag ? CONFIG_TRUE : CONFIG_FALSE)); +} + +// --------------------------------------------------------------------------- + +bool Config::getAutoConvert() const +{ + return(config_get_auto_convert(& _config) != CONFIG_FALSE); +} + +// --------------------------------------------------------------------------- + +void Config::read(FILE *stream) throw(ParseException) +{ + if(! config_read(& _config, stream)) + throw ParseException(config_error_line(& _config), + config_error_text(& _config)); +} + +// --------------------------------------------------------------------------- + +void Config::write(FILE *stream) const +{ + config_write(& _config, stream); +} + +// --------------------------------------------------------------------------- + +void Config::readFile(const char *filename) throw(FileIOException, + ParseException) +{ + FILE *f = fopen(filename, "rt"); + if(f == NULL) + throw FileIOException(); + try + { + read(f); + fclose(f); + } + catch(ParseException& p) + { + fclose(f); + throw p; + } +} + +// --------------------------------------------------------------------------- + +void Config::writeFile(const char *filename) throw(FileIOException) +{ + if(! config_write_file(& _config, filename)) + throw FileIOException(); +} + +// --------------------------------------------------------------------------- + +Setting & Config::lookup(const char *path) const + throw(SettingNotFoundException) +{ + config_setting_t *s = config_lookup(& _config, path); + if(! s) + throw SettingNotFoundException(path); + + return(Setting::wrapSetting(s)); +} + +// --------------------------------------------------------------------------- + +bool Config::exists(const char *path) const throw() +{ + config_setting_t *s = config_lookup(& _config, path); + + return(s != NULL); +} + +// --------------------------------------------------------------------------- + +#define CONFIG_LOOKUP_NO_EXCEPTIONS(P, T, V) \ + try \ + { \ + Setting &s = lookup(P); \ + V = (T)s; \ + return(true); \ + } \ + catch(ConfigException) \ + { \ + return(false); \ + } + +// --------------------------------------------------------------------------- + +bool Config::lookupValue(const char *path, bool &value) const throw() +{ + CONFIG_LOOKUP_NO_EXCEPTIONS(path, bool, value); +} + +// --------------------------------------------------------------------------- + +bool Config::lookupValue(const char *path, long &value) const throw() +{ + CONFIG_LOOKUP_NO_EXCEPTIONS(path, long, value); +} + +// --------------------------------------------------------------------------- + +bool Config::lookupValue(const char *path, unsigned long &value) const throw() +{ + CONFIG_LOOKUP_NO_EXCEPTIONS(path, unsigned long, value); +} + +// --------------------------------------------------------------------------- + +bool Config::lookupValue(const char *path, int &value) const throw() +{ + CONFIG_LOOKUP_NO_EXCEPTIONS(path, int, value); +} + +// --------------------------------------------------------------------------- + +bool Config::lookupValue(const char *path, unsigned int &value) const throw() +{ + CONFIG_LOOKUP_NO_EXCEPTIONS(path, unsigned int, value); +} + +// --------------------------------------------------------------------------- + +bool Config::lookupValue(const char *path, long long &value) const throw() +{ + CONFIG_LOOKUP_NO_EXCEPTIONS(path, long long, value); +} + +// --------------------------------------------------------------------------- + +bool Config::lookupValue(const char *path, unsigned long long &value) + const throw() +{ + CONFIG_LOOKUP_NO_EXCEPTIONS(path, unsigned long long, value); +} + +// --------------------------------------------------------------------------- + +bool Config::lookupValue(const char *path, double &value) const throw() +{ + CONFIG_LOOKUP_NO_EXCEPTIONS(path, double, value); +} + +// --------------------------------------------------------------------------- + +bool Config::lookupValue(const char *path, float &value) const throw() +{ + CONFIG_LOOKUP_NO_EXCEPTIONS(path, float, value); +} + +// --------------------------------------------------------------------------- + +bool Config::lookupValue(const char *path, const char *&value) const throw() +{ + CONFIG_LOOKUP_NO_EXCEPTIONS(path, const char *, value); +} + +// --------------------------------------------------------------------------- + +bool Config::lookupValue(const char *path, std::string &value) const throw() +{ + CONFIG_LOOKUP_NO_EXCEPTIONS(path, const char *, value); +} + +// --------------------------------------------------------------------------- + +Setting & Config::getRoot() const +{ + return(Setting::wrapSetting(config_root_setting(& _config))); +} + +// --------------------------------------------------------------------------- + +Setting::Setting(config_setting_t *setting) + : _setting(setting) +{ + switch(config_setting_type(setting)) + { + case CONFIG_TYPE_GROUP: + _type = TypeGroup; + break; + + case CONFIG_TYPE_INT: + _type = TypeInt; + break; + + case CONFIG_TYPE_INT64: + _type = TypeInt64; + break; + + case CONFIG_TYPE_FLOAT: + _type = TypeFloat; + break; + + case CONFIG_TYPE_STRING: + _type = TypeString; + break; + + case CONFIG_TYPE_BOOL: + _type = TypeBoolean; + break; + + case CONFIG_TYPE_ARRAY: + _type = TypeArray; + break; + + case CONFIG_TYPE_LIST: + _type = TypeList; + break; + + case CONFIG_TYPE_NONE: + default: + _type = TypeNone; + break; + } + + switch(config_setting_get_format(setting)) + { + case CONFIG_FORMAT_HEX: + _format = FormatHex; + break; + + case CONFIG_FORMAT_DEFAULT: + default: + _format = FormatDefault; + break; + } +} + +// --------------------------------------------------------------------------- + +Setting::~Setting() throw() +{ + _setting = NULL; +} + +// --------------------------------------------------------------------------- + +void Setting::setFormat(Format format) throw() +{ + if((_type == TypeInt) || (_type == TypeInt64)) + { + if(format == FormatHex) + _format = FormatHex; + else + _format = FormatDefault; + } + else + _format = FormatDefault; +} + +// --------------------------------------------------------------------------- + +Setting::operator bool() const throw(SettingTypeException) +{ + assertType(TypeBoolean); + + return(config_setting_get_bool(_setting) ? true : false); +} + +// --------------------------------------------------------------------------- + +Setting::operator long() const throw(SettingTypeException) +{ + assertType(TypeInt); + + return(config_setting_get_int(_setting)); +} + +// --------------------------------------------------------------------------- + +Setting::operator unsigned long() const throw(SettingTypeException) +{ + assertType(TypeInt); + + long v = config_setting_get_int(_setting); + + if(v < 0) + v = 0; + + return(static_cast(v)); +} + +// --------------------------------------------------------------------------- + +Setting::operator int() const throw(SettingTypeException) +{ + assertType(TypeInt); + + // may cause loss of precision: + return(static_cast(config_setting_get_int(_setting))); +} + +// --------------------------------------------------------------------------- + +Setting::operator unsigned int() const throw(SettingTypeException) +{ + assertType(TypeInt); + + long v = config_setting_get_int(_setting); + + if(v < 0) + v = 0; + + return(static_cast(v)); +} + +// --------------------------------------------------------------------------- + +Setting::operator long long() const throw(SettingTypeException) +{ + assertType(TypeInt64); + + return(config_setting_get_int64(_setting)); +} + +// --------------------------------------------------------------------------- + +Setting::operator unsigned long long() const throw(SettingTypeException) +{ + assertType(TypeInt64); + + long long v = config_setting_get_int64(_setting); + + if(v < INT64_CONST(0)) + v = INT64_CONST(0); + + return(static_cast(v)); +} + +// --------------------------------------------------------------------------- + +Setting::operator double() const throw(SettingTypeException) +{ + assertType(TypeFloat); + + return(config_setting_get_float(_setting)); +} + +// --------------------------------------------------------------------------- + +Setting::operator float() const throw(SettingTypeException) +{ + assertType(TypeFloat); + + // may cause loss of precision: + return(static_cast(config_setting_get_float(_setting))); +} + +// --------------------------------------------------------------------------- + +Setting::operator const char *() const throw(SettingTypeException) +{ + assertType(TypeString); + + return(config_setting_get_string(_setting)); +} + +// --------------------------------------------------------------------------- + +Setting::operator std::string() const throw(SettingTypeException) +{ + assertType(TypeString); + + const char *s = config_setting_get_string(_setting); + + std::string str; + if(s) + str = s; + + return(str); +} + +// --------------------------------------------------------------------------- + +Setting & Setting::operator=(bool value) throw(SettingTypeException) +{ + assertType(TypeBoolean); + + config_setting_set_bool(_setting, value); + + return(*this); +} + +// --------------------------------------------------------------------------- + +Setting & Setting::operator=(long value) throw(SettingTypeException) +{ + assertType(TypeInt); + + config_setting_set_int(_setting, value); + + return(*this); +} + +// --------------------------------------------------------------------------- + +Setting & Setting::operator=(int value) throw(SettingTypeException) +{ + assertType(TypeInt); + + long cvalue = static_cast(value); + + config_setting_set_int(_setting, cvalue); + + return(*this); +} + +// --------------------------------------------------------------------------- + +Setting & Setting::operator=(const long long &value) + throw(SettingTypeException) +{ + assertType(TypeInt64); + + config_setting_set_int64(_setting, value); + + return(*this); +} + +// --------------------------------------------------------------------------- + +Setting & Setting::operator=(const double &value) throw(SettingTypeException) +{ + assertType(TypeFloat); + + config_setting_set_float(_setting, value); + + return(*this); +} + +// --------------------------------------------------------------------------- + +Setting & Setting::operator=(float value) throw(SettingTypeException) +{ + assertType(TypeFloat); + + double cvalue = static_cast(value); + + config_setting_set_float(_setting, cvalue); + + return(*this); +} + +// --------------------------------------------------------------------------- + +Setting & Setting::operator=(const char *value) throw(SettingTypeException) +{ + assertType(TypeString); + + config_setting_set_string(_setting, value); + + return(*this); +} + +// --------------------------------------------------------------------------- + +Setting & Setting::operator=(const std::string &value) + throw(SettingTypeException) +{ + assertType(TypeString); + + config_setting_set_string(_setting, value.c_str()); + + return(*this); +} + +// --------------------------------------------------------------------------- + +Setting & Setting::operator[](int i) const + throw(SettingTypeException, SettingNotFoundException) +{ + if((_type != TypeArray) && (_type != TypeGroup) && (_type != TypeList)) + throw SettingTypeException(*this, i); + + config_setting_t *setting = config_setting_get_elem(_setting, i); + + if(! setting) + throw SettingNotFoundException(*this, i); + + return(wrapSetting(setting)); +} + +// --------------------------------------------------------------------------- + +Setting & Setting::operator[](const char *key) const + throw(SettingTypeException, SettingNotFoundException) +{ + assertType(TypeGroup); + + config_setting_t *setting = config_setting_get_member(_setting, key); + + if(! setting) + throw SettingNotFoundException(*this, key); + + return(wrapSetting(setting)); +} + +// --------------------------------------------------------------------------- + +#define SETTING_LOOKUP_NO_EXCEPTIONS(K, T, V) \ + try \ + { \ + Setting &s = operator[](K); \ + V = (T)s; \ + return(true); \ + } \ + catch(ConfigException) \ + { \ + return(false); \ + } + +// --------------------------------------------------------------------------- + +bool Setting::lookupValue(const char *name, bool &value) const throw() +{ + SETTING_LOOKUP_NO_EXCEPTIONS(name, bool, value); +} + +// --------------------------------------------------------------------------- + +bool Setting::lookupValue(const char *name, long &value) const throw() +{ + SETTING_LOOKUP_NO_EXCEPTIONS(name, long, value); +} + +// --------------------------------------------------------------------------- + +bool Setting::lookupValue(const char *name, unsigned long &value) + const throw() +{ + SETTING_LOOKUP_NO_EXCEPTIONS(name, unsigned long, value); +} + +// --------------------------------------------------------------------------- + +bool Setting::lookupValue(const char *name, int &value) const throw() +{ + SETTING_LOOKUP_NO_EXCEPTIONS(name, int, value); +} + +// --------------------------------------------------------------------------- + +bool Setting::lookupValue(const char *name, unsigned int &value) const throw() +{ + SETTING_LOOKUP_NO_EXCEPTIONS(name, unsigned int, value); +} + +// --------------------------------------------------------------------------- + +bool Setting::lookupValue(const char *name, long long &value) const throw() +{ + SETTING_LOOKUP_NO_EXCEPTIONS(name, long long, value); +} + +// --------------------------------------------------------------------------- + +bool Setting::lookupValue(const char *name, unsigned long long &value) + const throw() +{ + SETTING_LOOKUP_NO_EXCEPTIONS(name, unsigned long long, value); +} + +// --------------------------------------------------------------------------- + +bool Setting::lookupValue(const char *name, double &value) const throw() +{ + SETTING_LOOKUP_NO_EXCEPTIONS(name, double, value); +} + +// --------------------------------------------------------------------------- + +bool Setting::lookupValue(const char *name, float &value) const throw() +{ + SETTING_LOOKUP_NO_EXCEPTIONS(name, float, value); +} + +// --------------------------------------------------------------------------- + +bool Setting::lookupValue(const char *name, const char *&value) const throw() +{ + SETTING_LOOKUP_NO_EXCEPTIONS(name, const char *, value); +} + +// --------------------------------------------------------------------------- + +bool Setting::lookupValue(const char *name, std::string &value) const throw() +{ + SETTING_LOOKUP_NO_EXCEPTIONS(name, const char *, value); +} + +// --------------------------------------------------------------------------- + +bool Setting::exists(const char *name) const throw() +{ + if(_type != TypeGroup) + return(false); + + config_setting_t *setting = config_setting_get_member(_setting, name); + + return(setting != NULL); +} + +// --------------------------------------------------------------------------- + +int Setting::getLength() const throw() +{ + return(config_setting_length(_setting)); +} + +// --------------------------------------------------------------------------- + +const char * Setting::getName() const throw() +{ + return(config_setting_name(_setting)); +} + +// --------------------------------------------------------------------------- + +std::string Setting::getPath() const +{ + std::stringstream path; + + __constructPath(*this, path); + + return(path.str()); +} + +// --------------------------------------------------------------------------- + +const Setting & Setting::getParent() const throw(SettingNotFoundException) +{ + config_setting_t *setting = config_setting_parent(_setting); + + if(! setting) + throw SettingNotFoundException(NULL); + + return(wrapSetting(setting)); +} + +// --------------------------------------------------------------------------- + +Setting & Setting::getParent() throw(SettingNotFoundException) +{ + config_setting_t *setting = config_setting_parent(_setting); + + if(! setting) + throw SettingNotFoundException(NULL); + + return(wrapSetting(setting)); +} + +// --------------------------------------------------------------------------- + +bool Setting::isRoot() const throw() +{ + return(config_setting_is_root(_setting)); +} + +// --------------------------------------------------------------------------- + +int Setting::getIndex() const throw() +{ + return(config_setting_index(_setting)); +} + +// --------------------------------------------------------------------------- + +void Setting::remove(const char *name) + throw(SettingTypeException, SettingNotFoundException) +{ + assertType(TypeGroup); + + if(! config_setting_remove(_setting, name)) + throw SettingNotFoundException(*this, name); +} + +// --------------------------------------------------------------------------- + +void Setting::remove(unsigned int idx) + throw(SettingTypeException, SettingNotFoundException) +{ + if((_type != TypeArray) && (_type != TypeGroup) && (_type != TypeList)) + throw SettingTypeException(*this, idx); + + if(! config_setting_remove_elem(_setting, idx)) + throw SettingNotFoundException(*this, idx); +} + +// --------------------------------------------------------------------------- + +Setting & Setting::add(const char *name, Setting::Type type) + throw(SettingNameException, SettingTypeException) +{ + assertType(TypeGroup); + + int typecode = __toTypeCode(type); + + if(typecode == CONFIG_TYPE_NONE) + throw SettingTypeException(*this, name); + + config_setting_t *setting = config_setting_add(_setting, name, typecode); + + if(! setting) + throw SettingNameException(*this, name); + + return(wrapSetting(setting)); +} + +// --------------------------------------------------------------------------- + +Setting & Setting::add(Setting::Type type) throw(SettingTypeException) +{ + if((_type != TypeArray) && (_type != TypeList)) + throw SettingTypeException(*this); + + if(_type == TypeArray) + { + int idx = getLength(); + + if(idx > 0) + { + Setting::Type atype = operator[](0).getType(); + if(type != atype) + throw SettingTypeException(*this, idx); + } + else + { + if((type != TypeInt) && (type != TypeFloat) && (type != TypeString) + && (type != TypeBoolean)) + throw SettingTypeException(*this, idx); + } + } + + int typecode = __toTypeCode(type); + config_setting_t *s = config_setting_add(_setting, NULL, typecode); + + Setting &ns = wrapSetting(s); + + switch(type) + { + case TypeInt: + ns = 0; + break; + + case TypeInt64: + ns = INT64_CONST(0); + break; + + case TypeFloat: + ns = 0.0; + break; + + case TypeString: + ns = (char *)NULL; + break; + + case TypeBoolean: + ns = false; + break; + + default: + // won't happen + break; + } + + return(ns); +} + +// --------------------------------------------------------------------------- + +void Setting::assertType(Setting::Type type) const throw(SettingTypeException) +{ + if(type != _type) + { + if(!(isNumber() && config_get_auto_convert(_setting->config) + && ((type == TypeInt) || (type == TypeFloat)))) + throw SettingTypeException(*this); + } +} + +// --------------------------------------------------------------------------- + +Setting & Setting::wrapSetting(config_setting_t *s) +{ + Setting *setting = NULL; + + void *hook = config_setting_get_hook(s); + if(! hook) + { + setting = new Setting(s); + config_setting_set_hook(s, reinterpret_cast(setting)); + } + else + setting = reinterpret_cast(hook); + + return(*setting); +} + +// --------------------------------------------------------------------------- +// eof diff --git a/coregrade/src/libconfig-1.3.1/libconfigcpp.cc b/coregrade/src/libconfig-1.3.1/libconfigcpp.cc new file mode 100644 index 0000000..3917ee7 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/libconfigcpp.cc @@ -0,0 +1,23 @@ +/* ---------------------------------------------------------------------------- + libconfig - A structured configuration file parsing library + Copyright (C) 2005-2008 Mark A Lindner + + This file is part of libconfig. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation; either version 2.1 of + the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + ---------------------------------------------------------------------------- +*/ + +#include "libconfigcpp.c++" diff --git a/coregrade/src/libconfig-1.3.1/ltmain.sh b/coregrade/src/libconfig-1.3.1/ltmain.sh new file mode 100644 index 0000000..4598ec6 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/ltmain.sh @@ -0,0 +1,6930 @@ +# ltmain.sh - Provide generalized library-building support services. +# NOTE: Changing this file will not affect anything until you rerun configure. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, +# 2007 Free Software Foundation, Inc. +# Originally by Gordon Matzigkeit , 1996 +# +# 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 +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +basename="s,^.*/,,g" + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" + +# The name of this program: +progname=`echo "$progpath" | $SED $basename` +modename="$progname" + +# Global variables: +EXIT_SUCCESS=0 +EXIT_FAILURE=1 + +PROGRAM=ltmain.sh +PACKAGE=libtool +VERSION=1.5.24 +TIMESTAMP=" (1.1220.2.455 2007/06/24 02:13:29)" + +# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# Check that we have a working $echo. +if test "X$1" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift +elif test "X$1" = X--fallback-echo; then + # Avoid inline document here, it may be left over + : +elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then + # Yippee, $echo works! + : +else + # Restart under the correct shell, and then maybe $echo will work. + exec $SHELL "$progpath" --no-reexec ${1+"$@"} +fi + +if test "X$1" = X--fallback-echo; then + # used as fallback echo + shift + cat <&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit $EXIT_FAILURE +fi + +# Global variables. +mode=$default_mode +nonopt= +prev= +prevopt= +run= +show="$echo" +show_help= +execute_dlfiles= +duplicate_deps=no +preserve_args= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" +extracted_archives= +extracted_serial=0 + +##################################### +# Shell function definitions: +# This seems to be the best place for them + +# func_mktempdir [string] +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, STRING is the basename for that directory. +func_mktempdir () +{ + my_template="${TMPDIR-/tmp}/${1-$progname}" + + if test "$run" = ":"; then + # Return a directory name, but don't create it in dry-run mode + my_tmpdir="${my_template}-$$" + else + + # If mktemp works, use that first and foremost + my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` + + if test ! -d "$my_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + my_tmpdir="${my_template}-${RANDOM-0}$$" + + save_mktempdir_umask=`umask` + umask 0077 + $mkdir "$my_tmpdir" + umask $save_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$my_tmpdir" || { + $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2 + exit $EXIT_FAILURE + } + fi + + $echo "X$my_tmpdir" | $Xsed +} + + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +func_win32_libid () +{ + win32_libid_type="unknown" + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \ + $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then + win32_nmres=`eval $NM -f posix -A $1 | \ + $SED -n -e '1,100{ + / I /{ + s,.*,import, + p + q + } + }'` + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $echo $win32_libid_type +} + + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + CC_quoted="$CC_quoted $arg" + done + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + CC_quoted="$CC_quoted $arg" + done + case "$@ " in + " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + $echo "$modename: unable to infer tagged configuration" + $echo "$modename: specify a tag with \`--tag'" 1>&2 + exit $EXIT_FAILURE +# else +# $echo "$modename: using $tagname tagged configuration" + fi + ;; + esac + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + f_ex_an_ar_dir="$1"; shift + f_ex_an_ar_oldlib="$1" + + $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)" + $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $? + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2 + exit $EXIT_FAILURE + fi +} + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + my_gentop="$1"; shift + my_oldlibs=${1+"$@"} + my_oldobjs="" + my_xlib="" + my_xabs="" + my_xdir="" + my_status="" + + $show "${rm}r $my_gentop" + $run ${rm}r "$my_gentop" + $show "$mkdir $my_gentop" + $run $mkdir "$my_gentop" + my_status=$? + if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then + exit $my_status + fi + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'` + my_xlib_u=$my_xlib + while :; do + case " $extracted_archives " in + *" $my_xlib_u "*) + extracted_serial=`expr $extracted_serial + 1` + my_xlib_u=lt$extracted_serial-$my_xlib ;; + *) break ;; + esac + done + extracted_archives="$extracted_archives $my_xlib_u" + my_xdir="$my_gentop/$my_xlib_u" + + $show "${rm}r $my_xdir" + $run ${rm}r "$my_xdir" + $show "$mkdir $my_xdir" + $run $mkdir "$my_xdir" + exit_status=$? + if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then + exit $exit_status + fi + case $host in + *-darwin*) + $show "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + if test -z "$run"; then + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'` + darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null` + if test -n "$darwin_arches"; then + darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + $show "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches ; do + mkdir -p "unfat-$$/${darwin_base_archive}-${darwin_arch}" + lipo -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" + func_extract_an_archive "`pwd`" "${darwin_base_archive}" + cd "$darwin_curdir" + $rm "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" + done # $darwin_arches + ## Okay now we have a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP` + lipo -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + ${rm}r unfat-$$ + cd "$darwin_orig_dir" + else + cd "$darwin_orig_dir" + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + fi # $run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP` + done + func_extract_archives_result="$my_oldobjs" +} +# End of Shell function definitions +##################################### + +# Darwin sucks +eval std_shrext=\"$shrext_cmds\" + +disable_libs=no + +# Parse our command line options once, thoroughly. +while test "$#" -gt 0 +do + arg="$1" + shift + + case $arg in + -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;; + *) optarg= ;; + esac + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + execute_dlfiles) + execute_dlfiles="$execute_dlfiles $arg" + ;; + tag) + tagname="$arg" + preserve_args="${preserve_args}=$arg" + + # Check whether tagname contains only valid characters + case $tagname in + *[!-_A-Za-z0-9,/]*) + $echo "$progname: invalid tag name: $tagname" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $tagname in + CC) + # Don't test for the "default" C tag, as we know, it's there, but + # not specially marked. + ;; + *) + if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then + taglist="$taglist $tagname" + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`" + else + $echo "$progname: ignoring unknown tag $tagname" 1>&2 + fi + ;; + esac + ;; + *) + eval "$prev=\$arg" + ;; + esac + + prev= + prevopt= + continue + fi + + # Have we seen a non-optional argument yet? + case $arg in + --help) + show_help=yes + ;; + + --version) + echo "\ +$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP + +Copyright (C) 2007 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + exit $? + ;; + + --config) + ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath + # Now print the configurations for the tags. + for tagname in $taglist; do + ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath" + done + exit $? + ;; + + --debug) + $echo "$progname: enabling shell trace mode" + set -x + preserve_args="$preserve_args $arg" + ;; + + --dry-run | -n) + run=: + ;; + + --features) + $echo "host: $host" + if test "$build_libtool_libs" = yes; then + $echo "enable shared libraries" + else + $echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then + $echo "enable static libraries" + else + $echo "disable static libraries" + fi + exit $? + ;; + + --finish) mode="finish" ;; + + --mode) prevopt="--mode" prev=mode ;; + --mode=*) mode="$optarg" ;; + + --preserve-dup-deps) duplicate_deps="yes" ;; + + --quiet | --silent) + show=: + preserve_args="$preserve_args $arg" + ;; + + --tag) + prevopt="--tag" + prev=tag + preserve_args="$preserve_args --tag" + ;; + --tag=*) + set tag "$optarg" ${1+"$@"} + shift + prev=tag + preserve_args="$preserve_args --tag" + ;; + + -dlopen) + prevopt="-dlopen" + prev=execute_dlfiles + ;; + + -*) + $echo "$modename: unrecognized option \`$arg'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + + *) + nonopt="$arg" + break + ;; + esac +done + +if test -n "$prevopt"; then + $echo "$modename: option \`$prevopt' requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE +fi + +case $disable_libs in +no) + ;; +shared) + build_libtool_libs=no + build_old_libs=yes + ;; +static) + build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` + ;; +esac + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + +if test -z "$show_help"; then + + # Infer the operation mode. + if test -z "$mode"; then + $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2 + $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2 + case $nonopt in + *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*) + mode=link + for arg + do + case $arg in + -c) + mode=compile + break + ;; + esac + done + ;; + *db | *dbx | *strace | *truss) + mode=execute + ;; + *install*|cp|mv) + mode=install + ;; + *rm) + mode=uninstall + ;; + *) + # If we have no mode, but dlfiles were specified, then do execute mode. + test -n "$execute_dlfiles" && mode=execute + + # Just use the default operation mode. + if test -z "$mode"; then + if test -n "$nonopt"; then + $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2 + else + $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2 + fi + fi + ;; + esac + fi + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$execute_dlfiles" && test "$mode" != execute; then + $echo "$modename: unrecognized option \`-dlopen'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$modename --help --mode=$mode' for more information." + + # These modes are in order of execution frequency so that they run quickly. + case $mode in + # libtool compile mode + compile) + modename="$modename: compile" + # Get the compilation command and the source file. + base_compile= + srcfile="$nonopt" # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg="$arg" + arg_mode=normal + ;; + + target ) + libobj="$arg" + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + if test -n "$libobj" ; then + $echo "$modename: you cannot specify \`-o' more than once" 1>&2 + exit $EXIT_FAILURE + fi + arg_mode=target + continue + ;; + + -static | -prefer-pic | -prefer-non-pic) + later="$later $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"` + lastarg= + save_ifs="$IFS"; IFS=',' + for arg in $args; do + IFS="$save_ifs" + + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + lastarg="$lastarg $arg" + done + IFS="$save_ifs" + lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"` + + # Add the arguments to base_compile. + base_compile="$base_compile $lastarg" + continue + ;; + + * ) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg="$srcfile" + srcfile="$arg" + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"` + + case $lastarg in + # Double-quote args containing other shell metacharacters. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, and some SunOS ksh mistreat backslash-escaping + # in scan sets (worked around with variable expansion), + # and furthermore cannot handle '|' '&' '(' ')' in scan sets + # at all, so we specify them separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + lastarg="\"$lastarg\"" + ;; + esac + + base_compile="$base_compile $lastarg" + done # for arg + + case $arg_mode in + arg) + $echo "$modename: you must specify an argument for -Xcompile" + exit $EXIT_FAILURE + ;; + target) + $echo "$modename: you must specify a target with \`-o'" 1>&2 + exit $EXIT_FAILURE + ;; + *) + # Get the name of the library object. + [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'` + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + xform='[cCFSifmso]' + case $libobj in + *.ada) xform=ada ;; + *.adb) xform=adb ;; + *.ads) xform=ads ;; + *.asm) xform=asm ;; + *.c++) xform=c++ ;; + *.cc) xform=cc ;; + *.ii) xform=ii ;; + *.class) xform=class ;; + *.cpp) xform=cpp ;; + *.cxx) xform=cxx ;; + *.[fF][09]?) xform=[fF][09]. ;; + *.for) xform=for ;; + *.java) xform=java ;; + *.obj) xform=obj ;; + esac + + libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"` + + case $libobj in + *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;; + *) + $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -static) + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"` + case $qlibobj in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qlibobj="\"$qlibobj\"" ;; + esac + test "X$libobj" != "X$qlibobj" \ + && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && $echo "$modename: libobj name \`$libobj' may not contain shell special characters." + objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$obj"; then + xdir= + else + xdir=$xdir/ + fi + lobj=${xdir}$objdir/$objname + + if test -z "$base_compile"; then + $echo "$modename: you must specify a compilation command" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + $run $rm $removelist + trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2*) + pic_mode=default + ;; + esac + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test "$compiler_c_o" = no; then + output_obj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + removelist="$removelist $output_obj $lockfile" + trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15 + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then + until $run ln "$progpath" "$lockfile" 2>/dev/null; do + $show "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then + $echo "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + $echo "$srcfile" > "$lockfile" + fi + + if test -n "$fix_srcfile_path"; then + eval srcfile=\"$fix_srcfile_path\" + fi + qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"` + case $qsrcfile in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qsrcfile="\"$qsrcfile\"" ;; + esac + + $run $rm "$libobj" "${libobj}T" + + # Create a libtool object file (analogous to a ".la" file), + # but don't create it if we're doing a dry run. + test -z "$run" && cat > ${libobj}T </dev/null`" != "X$srcfile"; then + $echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + $show "$mv $output_obj $lobj" + if $run $mv $output_obj $lobj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Append the name of the PIC object to the libtool object file. + test -z "$run" && cat >> ${libobj}T <> ${libobj}T </dev/null`" != "X$srcfile"; then + $echo "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $run $rm $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + $show "$mv $output_obj $obj" + if $run $mv $output_obj $obj; then : + else + error=$? + $run $rm $removelist + exit $error + fi + fi + + # Append the name of the non-PIC object the libtool object file. + # Only append if the libtool object file exists. + test -z "$run" && cat >> ${libobj}T <> ${libobj}T <&2 + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + esac + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg="$1" + shift + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test + ;; + *) qarg=$arg ;; + esac + libtool_args="$libtool_args $qarg" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + compile_command="$compile_command @OUTPUT@" + finalize_command="$finalize_command @OUTPUT@" + ;; + esac + + case $prev in + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + compile_command="$compile_command @SYMFILE@" + finalize_command="$finalize_command @SYMFILE@" + preload=yes + fi + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + dlfiles="$dlfiles $arg" + else + dlprefiles="$dlprefiles $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols="$arg" + if test ! -f "$arg"; then + $echo "$modename: symbol file \`$arg' does not exist" + exit $EXIT_FAILURE + fi + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + inst_prefix) + inst_prefix_dir="$arg" + prev= + continue + ;; + precious_regex) + precious_files_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat $save_arg` + do +# moreargs="$moreargs $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + pic_object= + non_pic_object= + + # Read the .lo file + # If there is no directory component, then add one. + case $arg in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + if test -z "$pic_object" || \ + test -z "$non_pic_object" || + test "$pic_object" = none && \ + test "$non_pic_object" = none; then + $echo "$modename: cannot find name of object for \`$arg'" 1>&2 + exit $EXIT_FAILURE + fi + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + libobjs="$libobjs $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects="$non_pic_objects $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if test -z "$run"; then + $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 + exit $EXIT_FAILURE + else + # Dry-run case. + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` + non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` + libobjs="$libobjs $pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + fi + done + else + $echo "$modename: link input file \`$save_arg' does not exist" + exit $EXIT_FAILURE + fi + arg=$save_arg + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit $EXIT_FAILURE + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) rpath="$rpath $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) xrpath="$xrpath $arg" ;; + esac + fi + prev= + continue + ;; + xcompiler) + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + xlinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $wl$qarg" + prev= + compile_command="$compile_command $wl$qarg" + finalize_command="$finalize_command $wl$qarg" + continue + ;; + xcclinker) + linker_flags="$linker_flags $qarg" + compiler_flags="$compiler_flags $qarg" + prev= + compile_command="$compile_command $qarg" + finalize_command="$finalize_command $qarg" + continue + ;; + shrext) + shrext_cmds="$arg" + prev= + continue + ;; + darwin_framework|darwin_framework_skip) + test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + prev= + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg="$arg" + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + compile_command="$compile_command $link_static_flag" + finalize_command="$finalize_command $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2 + continue + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: more than one -exported-symbols argument is not allowed" + exit $EXIT_FAILURE + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework|-arch|-isysroot) + case " $CC " in + *" ${arg} ${1} "* | *" ${arg} ${1} "*) + prev=darwin_framework_skip ;; + *) compiler_flags="$compiler_flags $arg" + prev=darwin_framework ;; + esac + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + ;; + esac + continue + ;; + + -L*) + dir=`$echo "X$arg" | $Xsed -e 's/^-L//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2 + absdir="$dir" + notinst_path="$notinst_path $dir" + fi + dir="$absdir" + ;; + esac + case "$deplibs " in + *" -L$dir "*) ;; + *) + deplibs="$deplibs -L$dir" + lib_search_path="$lib_search_path $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + *) dllsearchpath="$dllsearchpath:$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + *) dllsearchpath="$dllsearchpath:$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + deplibs="$deplibs -framework System" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test "X$arg" = "X-lc" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test "X$arg" = "X-lc" && continue + ;; + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + deplibs="$deplibs $arg" + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + -model) + compile_command="$compile_command $arg" + compiler_flags="$compiler_flags $arg" + finalize_command="$finalize_command $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) + compiler_flags="$compiler_flags $arg" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + continue + ;; + + -module) + module=yes + continue + ;; + + # -64, -mips[0-9] enable 64-bit mode on the SGI compiler + # -r[0-9][0-9]* specifies the processor on the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler + # +DA*, +DD* enable 64-bit mode on the HP compiler + # -q* pass through compiler args for the IBM compiler + # -m* pass through architecture-specific compiler args for GCC + # -m*, -t[45]*, -txscale* pass through architecture-specific + # compiler args for GCC + # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC + # -F/path gives path to uninstalled frameworks, gcc on darwin + # @file GCC response files + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) + + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + compiler_flags="$compiler_flags $arg" + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*) + # The PATH hackery in wrapper scripts is required on Windows + # and Darwin in order for the loader to find any dlls it needs. + $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2 + $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2 + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + dir=`$echo "X$arg" | $Xsed -e 's/^-R//'` + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + $echo "$modename: only absolute run-paths are allowed" 1>&2 + exit $EXIT_FAILURE + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + continue + ;; + + -static | -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -Wc,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Wl,*) + args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'` + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + case $flag in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + flag="\"$flag\"" + ;; + esac + arg="$arg $wl$flag" + compiler_flags="$compiler_flags $wl$flag" + linker_flags="$linker_flags $flag" + done + IFS="$save_ifs" + arg=`$echo "X$arg" | $Xsed -e "s/^ //"` + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # Some other compiler flag. + -* | +*) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + ;; + + *.$objext) + # A standard object. + objs="$objs $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + pic_object= + non_pic_object= + + # Read the .lo file + # If there is no directory component, then add one. + case $arg in + */* | *\\*) . $arg ;; + *) . ./$arg ;; + esac + + if test -z "$pic_object" || \ + test -z "$non_pic_object" || + test "$pic_object" = none && \ + test "$non_pic_object" = none; then + $echo "$modename: cannot find name of object for \`$arg'" 1>&2 + exit $EXIT_FAILURE + fi + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles="$dlfiles $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles="$dlprefiles $pic_object" + prev= + fi + + # A PIC object. + libobjs="$libobjs $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects="$non_pic_objects $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if test -z "$run"; then + $echo "$modename: \`$arg' is not a valid libtool object" 1>&2 + exit $EXIT_FAILURE + else + # Dry-run case. + + # Extract subdirectory from the argument. + xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'` + if test "X$xdir" = "X$arg"; then + xdir= + else + xdir="$xdir/" + fi + + pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"` + non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"` + libobjs="$libobjs $pic_object" + non_pic_objects="$non_pic_objects $non_pic_object" + fi + fi + ;; + + *.$libext) + # An archive. + deplibs="$deplibs $arg" + old_deplibs="$old_deplibs $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + dlfiles="$dlfiles $arg" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + dlprefiles="$dlprefiles $arg" + prev= + else + deplibs="$deplibs $arg" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + done # argument parsing loop + + if test -n "$prev"; then + $echo "$modename: the \`$prevarg' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + compile_command="$compile_command $arg" + finalize_command="$finalize_command $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'` + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'` + if test "X$output_objdir" = "X$output"; then + output_objdir="$objdir" + else + output_objdir="$output_objdir/$objdir" + fi + # Create the object directory. + if test ! -d "$output_objdir"; then + $show "$mkdir $output_objdir" + $run $mkdir $output_objdir + exit_status=$? + if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then + exit $exit_status + fi + fi + + # Determine the type of output + case $output in + "") + $echo "$modename: you must specify an output file" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + case $host in + *cygwin* | *mingw* | *pw32*) + # don't eliminate duplications in $postdeps and $predeps + duplicate_compiler_generated_deps=yes + ;; + *) + duplicate_compiler_generated_deps=$duplicate_deps + ;; + esac + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if test "X$duplicate_deps" = "Xyes" ; then + case "$libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + libs="$libs $deplib" + done + + if test "$linkmode" = lib; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if test "X$duplicate_compiler_generated_deps" = "Xyes" ; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; + esac + pre_post_deps="$pre_post_deps $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + case $linkmode in + lib) + passes="conv link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2 + exit $EXIT_FAILURE + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + for pass in $passes; do + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan"; then + libs="$deplibs" + deplibs= + fi + if test "$linkmode" = prog; then + case $pass in + dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + esac + fi + if test "$pass" = dlopen; then + # Collect dlpreopened libraries + save_deplibs="$deplibs" + deplibs= + fi + for deplib in $libs; do + lib= + found=no + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + compiler_flags="$compiler_flags $deplib" + fi + continue + ;; + -l*) + if test "$linkmode" != lib && test "$linkmode" != prog; then + $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2 + continue + fi + name=`$echo "X$deplib" | $Xsed -e 's/^-l//'` + for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib="$searchdir/lib${name}${search_ext}" + if test -f "$lib"; then + if test "$search_ext" = ".la"; then + found=yes + else + found=no + fi + break 2 + fi + done + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + else # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $deplib "*) + if (${SED} -e '2q' $lib | + grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + library_names= + old_library= + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + for l in $old_library $library_names; do + ll="$l" + done + if test "X$ll" = "X$old_library" ; then # only static version available + found=no + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + lib=$ladir/$old_library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + fi + ;; # -l + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test "$pass" = conv && continue + newdependency_libs="$deplib $newdependency_libs" + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + prog) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test "$pass" = scan; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'` + ;; + *) + $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2 + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test "$pass" = link; then + dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'` + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) xrpath="$xrpath $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) lib="$deplib" ;; + *.$libext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + valid_a_lib=no + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + if eval $echo \"$deplib\" 2>/dev/null \ + | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=yes + fi + ;; + pass_all) + valid_a_lib=yes + ;; + esac + if test "$valid_a_lib" != yes; then + $echo + $echo "*** Warning: Trying to link with static lib archive $deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because the file extensions .$libext of this argument makes me believe" + $echo "*** that it is just a static archive that I should not used here." + else + $echo + $echo "*** Warning: Linking the shared library $output against the" + $echo "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + continue + ;; + prog) + if test "$pass" != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + elif test "$linkmode" = prog; then + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + newdlprefiles="$newdlprefiles $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + newdlfiles="$newdlfiles $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + if test "$found" = yes || test -f "$lib"; then : + else + $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2 + exit $EXIT_FAILURE + fi + + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + + ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'` + test "X$ladir" = "X$lib" && ladir="." + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then + test -n "$dlopen" && dlfiles="$dlfiles $dlopen" + test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" + fi + + if test "$pass" = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + # It is a libtool convenience library, so add in its objects. + convenience="$convenience $ladir/$objdir/$old_library" + old_convenience="$old_convenience $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + elif test "$linkmode" != prog && test "$linkmode" != lib; then + $echo "$modename: \`$lib' is not a convenience library" 1>&2 + exit $EXIT_FAILURE + fi + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + for l in $old_library $library_names; do + linklib="$l" + done + if test -z "$linklib"; then + $echo "$modename: cannot find name of link library for \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + + # This library was specified with -dlopen. + if test "$pass" = dlopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + if test -z "$dlname" || + test "$dlopen_support" != yes || + test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + dlprefiles="$dlprefiles $lib $dependency_libs" + else + newdlfiles="$newdlfiles $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2 + $echo "$modename: passing it literally to the linker, although it might fail" 1>&2 + abs_ladir="$ladir" + fi + ;; + esac + laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + $echo "$modename: warning: library \`$lib' was moved." 1>&2 + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$libdir" + absdir="$libdir" + fi + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir="$ladir" + absdir="$abs_ladir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + notinst_path="$notinst_path $abs_ladir" + fi + fi # $installed = yes + name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + + # This library was specified with -dlpreopen. + if test "$pass" = dlpreopen; then + if test -z "$libdir"; then + $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2 + exit $EXIT_FAILURE + fi + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + newdlprefiles="$newdlprefiles $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + newdlprefiles="$newdlprefiles $dir/$dlname" + else + newdlprefiles="$newdlprefiles $dir/$linklib" + fi + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test "$linkmode" = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test "$linkmode" = prog && test "$pass" != link; then + newlib_search_path="$newlib_search_path $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test + esac + # Need to link against all dependency_libs? + if test "$linkalldeplibs" = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test "$linkmode,$pass" = "prog,link"; then + if test -n "$library_names" && + { { test "$prefer_static_libs" = no || + test "$prefer_static_libs,$installed" = "built,yes"; } || + test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath " in + *" $dir "*) ;; + *" $absdir "*) ;; + *) temp_rpath="$temp_rpath $absdir" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test "$use_static_libs" = built && test "$installed" = yes ; then + use_static_libs=no + fi + if test -n "$library_names" && + { test "$use_static_libs" = no || test -z "$old_library"; }; then + if test "$installed" = no; then + notinst_deplibs="$notinst_deplibs $lib" + need_relink=yes + fi + # This is a shared library + + # Warn about portability, can't link against -module's on + # some systems (darwin) + if test "$shouldnotlink" = yes && test "$pass" = link ; then + $echo + if test "$linkmode" = prog; then + $echo "*** Warning: Linking the executable $output against the loadable module" + else + $echo "*** Warning: Linking the shared library $output against the loadable module" + fi + $echo "*** $linklib is not portable!" + fi + if test "$linkmode" = lib && + test "$hardcode_into_libs" = yes; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath="$compile_rpath $absdir" + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + realname="$2" + shift; shift + libname=`eval \\$echo \"$libname_spec\"` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw*) + major=`expr $current - $age` + versuffix="-$major" + ;; + esac + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + soname=`$echo $soroot | ${SED} -e 's/^.*\///'` + newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a" + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + $show "extracting exported symbol list from \`$soname'" + save_ifs="$IFS"; IFS='~' + cmds=$extract_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + $show "generating import library for \`$soname'" + save_ifs="$IFS"; IFS='~' + cmds=$old_archive_from_expsyms_cmds + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test "$linkmode" = prog || test "$mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + case $host in + *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; + *-*-sysv4*uw2*) add_dir="-L$dir" ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir="-L$dir" ;; + *-*-darwin* ) + # if the lib is a module then we can not link against + # it, someone is ignoring the new warnings I added + if /usr/bin/file -L $add 2> /dev/null | + $EGREP ": [^:]* bundle" >/dev/null ; then + $echo "** Warning, lib $linklib is a module, not a shared library" + if test -z "$old_library" ; then + $echo + $echo "** And there doesn't seem to be a static archive available" + $echo "** The link will probably fail, sorry" + else + add="$dir/$old_library" + fi + fi + esac + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + relink) + if test "$hardcode_direct" = yes; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$dir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test "$lib_linked" != yes; then + $echo "$modename: configuration error: unsupported hardcode properties" + exit $EXIT_FAILURE + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; + esac + fi + if test "$linkmode" = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test "$hardcode_direct" != yes && \ + test "$hardcode_minus_L" != yes && \ + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + fi + fi + fi + + if test "$linkmode" = prog || test "$mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; + esac + add="-l$name" + elif test "$hardcode_automatic" = yes; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib" ; then + add="$inst_prefix_dir$libdir/$linklib" + else + add="$libdir/$linklib" + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir="$add_dir -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + fi + + if test "$linkmode" = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test "$linkmode" = prog; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + $echo + $echo "*** Warning: This system can not link to static lib archive $lib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then + $echo "*** But as you try to build a module library, libtool will still create " + $echo "*** a static module, that should work as long as the dlopening application" + $echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + $echo + $echo "*** However, this would only work if libtool was able to extract symbol" + $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + $echo "*** not find such a program. So, this module is probably useless." + $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test "$linkmode" = lib; then + if test -n "$dependency_libs" && + { test "$hardcode_into_libs" != yes || + test "$build_old_libs" = yes || + test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'` + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) xrpath="$xrpath $temp_xrpath";; + esac;; + *) temp_deplibs="$temp_deplibs $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi + + newlib_search_path="$newlib_search_path $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + if test "X$duplicate_deps" = "Xyes" ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; + esac + fi + tmp_libs="$tmp_libs $deplib" + done + + if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + case $deplib in + -L*) path="$deplib" ;; + *.la) + dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$deplib" && dir="." + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2 + absdir="$dir" + fi + ;; + esac + if grep "^installed=no" $deplib > /dev/null; then + path="$absdir/$objdir" + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + if test "$absdir" != "$libdir"; then + $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2 + fi + path="$absdir" + fi + depdepl= + case $host in + *-*-darwin*) + # we do not want to link against static libs, + # but need to link against shared + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names" ; then + for tmp in $deplibrary_names ; do + depdepl=$tmp + done + if test -f "$path/$depdepl" ; then + depdepl="$path/$depdepl" + fi + # do not add paths which are already there + case " $newlib_search_path " in + *" $path "*) ;; + *) newlib_search_path="$newlib_search_path $path";; + esac + fi + path="" + ;; + *) + path="-L$path" + ;; + esac + ;; + -l*) + case $host in + *-*-darwin*) + # Again, we only want to link against shared libraries + eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"` + for tmp in $newlib_search_path ; do + if test -f "$tmp/lib$tmp_libs.dylib" ; then + eval depdepl="$tmp/lib$tmp_libs.dylib" + break + fi + done + path="" + ;; + *) continue ;; + esac + ;; + *) continue ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + case " $deplibs " in + *" $depdepl "*) ;; + *) deplibs="$depdepl $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + dependency_libs="$newdependency_libs" + if test "$pass" = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test "$pass" != dlopen; then + if test "$pass" != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) lib_search_path="$lib_search_path $dir" ;; + esac + done + newlib_search_path= + fi + + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_deplibs" + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + ;; + *) tmp_libs="$tmp_libs $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs ; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i="" + ;; + esac + if test -n "$i" ; then + tmp_libs="$tmp_libs $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test "$linkmode" = prog; then + dlfiles="$newdlfiles" + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for archives" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for archives" 1>&2 + fi + + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2 + fi + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + objs="$objs$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form `libNAME.la'. + case $outputname in + lib*) + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'` + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + if test "$module" = no; then + $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'` + fi + ;; + esac + + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1 + exit $EXIT_FAILURE + else + $echo + $echo "*** Warning: Linking the shared library $output against the non-libtool" + $echo "*** objects $objs is not portable!" + libobjs="$libobjs $objs" + fi + fi + + if test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2 + fi + + set dummy $rpath + if test "$#" -gt 2; then + $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2 + fi + install_libdir="$2" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + # Some compilers have problems with a `.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2 + fi + else + + # Parse the version information argument. + save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + IFS="$save_ifs" + + if test -n "$8"; then + $echo "$modename: too many parameters to \`-version-info'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major="$2" + number_minor="$3" + number_revision="$4" + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # which has an extra 1 added just for fun + # + case $version_type in + darwin|linux|osf|windows|none) + current=`expr $number_major + $number_minor` + age="$number_minor" + revision="$number_revision" + ;; + freebsd-aout|freebsd-elf|sunos) + current="$number_major" + revision="$number_minor" + age="0" + ;; + irix|nonstopux) + current=`expr $number_major + $number_minor` + age="$number_minor" + revision="$number_minor" + lt_irix_increment=no + ;; + esac + ;; + no) + current="$2" + revision="$3" + age="$4" + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + if test "$age" -gt "$current"; then + $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2 + $echo "$modename: \`$vinfo' is not valid version information" 1>&2 + exit $EXIT_FAILURE + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + minor_current=`expr $current + 1` + xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current"; + ;; + + irix | nonstopux) + if test "X$lt_irix_increment" = "Xno"; then + major=`expr $current - $age` + else + major=`expr $current - $age + 1` + fi + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring="$verstring_prefix$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test "$loop" -ne 0; do + iface=`expr $revision - $loop` + loop=`expr $loop - 1` + verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" + ;; + + linux) + major=.`expr $current - $age` + versuffix="$major.$age.$revision" + ;; + + osf) + major=.`expr $current - $age` + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test "$loop" -ne 0; do + iface=`expr $current - $loop` + loop=`expr $loop - 1` + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + verstring="$verstring:${current}.0" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. + major=`expr $current - $age` + versuffix="-$major" + ;; + + *) + $echo "$modename: unknown library version type \`$version_type'" 1>&2 + $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2 + exit $EXIT_FAILURE + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring="0.0" + ;; + esac + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2 + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + fi + + if test "$mode" != relink; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$echo "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) + if test "X$precious_files_regex" != "X"; then + if echo $p | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + removelist="$removelist $p" + ;; + *) ;; + esac + done + if test -n "$removelist"; then + $show "${rm}r $removelist" + $run ${rm}r $removelist + fi + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + oldlibs="$oldlibs $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + #for path in $notinst_path; do + # lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"` + # deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"` + # dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"` + #done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + temp_xrpath="$temp_xrpath -R$libdir" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles="$dlfiles" + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) dlfiles="$dlfiles $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles="$dlprefiles" + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) dlprefiles="$dlprefiles $lib" ;; + esac + done + + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + deplibs="$deplibs -framework System" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test "$build_libtool_need_lc" = "yes"; then + deplibs="$deplibs -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $rm conftest.c + cat > conftest.c </dev/null` + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null \ + | grep " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$echo "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \ + | ${SED} 10q \ + | $EGREP "$file_magic_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $echo + $echo "*** Warning: linker path does not have real file for library $a_deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $echo "*** with $libname but no candidates were found. (...for file magic test)" + else + $echo "*** with $libname and none of the candidates passed a file format test" + $echo "*** using a file magic. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method + match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"` + for a_deplib in $deplibs; do + name=`expr $a_deplib : '-l\(.*\)'` + # If $name is empty we are operating on a -L argument. + if test -n "$name" && test "$name" != "0"; then + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval \\$echo \"$libname_spec\"` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib="$potent_lib" # see symlink-check above in file_magic test + if eval $echo \"$potent_lib\" 2>/dev/null \ + | ${SED} 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + newdeplibs="$newdeplibs $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + $echo + $echo "*** Warning: linker path does not have real file for library $a_deplib." + $echo "*** I have the capability to make that library automatically link in when" + $echo "*** you link to this library. But I can only do this if you have a" + $echo "*** shared version of the library, which you do not appear to have" + $echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $echo "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $echo "*** with $libname and none of the candidates passed a file format test" + $echo "*** using a regex pattern. Last file checked: $potlib" + fi + fi + else + # Add a -L argument. + newdeplibs="$newdeplibs $a_deplib" + fi + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \ + -e 's/ -[LR][^ ]*//g'` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + for i in $predeps $postdeps ; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$echo "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"` + done + fi + if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \ + | grep . >/dev/null; then + $echo + if test "X$deplibs_check_method" = "Xnone"; then + $echo "*** Warning: inter-library dependencies are not supported in this platform." + else + $echo "*** Warning: inter-library dependencies are not known to be supported." + fi + $echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + fi + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + $echo + $echo "*** Warning: libtool could not satisfy all declared inter-library" + $echo "*** dependencies of module $libname. Therefore, libtool will create" + $echo "*** a static module, that should work as long as the dlopening" + $echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + $echo + $echo "*** However, this would only work if libtool was able to extract symbol" + $echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + $echo "*** not find such a program. So, this module is probably useless." + $echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + $echo "*** The inter-library dependencies that have been dropped here will be" + $echo "*** automatically added whenever a program is linked with this library" + $echo "*** or is declared to -dlopen it." + + if test "$allow_undefined" = no; then + $echo + $echo "*** Since this library must not contain undefined symbols," + $echo "*** because either the platform does not support them or" + $echo "*** it was explicitly requested with -no-undefined," + $echo "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + new_libs="$new_libs -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$new_libs $deplib" ;; + esac + ;; + *) new_libs="$new_libs $deplib" ;; + esac + done + deplibs="$new_libs" + + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + if test "$hardcode_into_libs" = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + dep_rpath="$dep_rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + if test -n "$hardcode_libdir_flag_spec_ld"; then + case $archive_cmds in + *\$LD*) eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" ;; + *) eval dep_rpath=\"$hardcode_libdir_flag_spec\" ;; + esac + else + eval dep_rpath=\"$hardcode_libdir_flag_spec\" + fi + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath="$finalize_shlibpath" + test "$mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + realname="$2" + shift; shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib="$output_objdir/$realname" + linknames= + for link + do + linknames="$linknames $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + cmds=$export_symbols_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + if len=`expr "X$cmd" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + $show "$cmd" + $run eval "$cmd" || exit $? + skipped_export=false + else + # The command line is too long to execute in one step. + $show "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS="$save_ifs" + if test -n "$export_symbols_regex"; then + $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\"" + $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + $show "$mv \"${export_symbols}T\" \"$export_symbols\"" + $run eval '$mv "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"' + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + tmp_deplibs="$tmp_deplibs $test_deplib" + ;; + esac + done + deplibs="$tmp_deplibs" + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + else + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + libobjs="$libobjs $func_extract_archives_result" + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + linker_flags="$linker_flags $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}U && $mv $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test "X$skipped_export" != "X:" && + len=`expr "X$test_cmds" : ".*" 2>/dev/null` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise. + $echo "creating reloadable object files..." + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + output_la=`$echo "X$output" | $Xsed -e "$basename"` + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + delfiles= + last_robj= + k=1 + output=$output_objdir/$output_la-${k}.$objext + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + eval test_cmds=\"$reload_cmds $objlist $last_robj\" + if test "X$objlist" = X || + { len=`expr "X$test_cmds" : ".*" 2>/dev/null` && + test "$len" -le "$max_cmd_len"; }; then + objlist="$objlist $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test "$k" -eq 1 ; then + # The first file doesn't have a previous command to add. + eval concat_cmds=\"$reload_cmds $objlist $last_robj\" + else + # All subsequent reloadable object files will link in + # the last one created. + eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\" + fi + last_robj=$output_objdir/$output_la-${k}.$objext + k=`expr $k + 1` + output=$output_objdir/$output_la-${k}.$objext + objlist=$obj + len=1 + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" + + if ${skipped_export-false}; then + $show "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $run $rm $export_symbols + libobjs=$output + # Append the command to create the export file. + eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\" + fi + + # Set up a command to remove the reloadable object files + # after they are used. + i=0 + while test "$i" -lt "$k" + do + i=`expr $i + 1` + delfiles="$delfiles $output_objdir/$output_la-${i}.$objext" + done + + $echo "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs="$IFS"; IFS='~' + for cmd in $concat_cmds; do + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + + # Append the command to remove the reloadable object files + # to the just-reset $cmds. + eval cmds=\"\$cmds~\$rm $delfiles\" + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv $realname ${realname}T && $mv "$realname"U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)" + $run eval '(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)' || exit $? + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + obj) + if test -n "$deplibs"; then + $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2 + fi + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2 + fi + + if test -n "$rpath"; then + $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2 + fi + + if test -n "$xrpath"; then + $echo "$modename: warning: \`-R' is ignored for objects" 1>&2 + fi + + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for objects" 1>&2 + fi + + case $output in + *.lo) + if test -n "$objs$old_deplibs"; then + $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2 + exit $EXIT_FAILURE + fi + libobj="$output" + obj=`$echo "X$output" | $Xsed -e "$lo2o"` + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $run $rm $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec and hope we can get by with + # turning comma into space.. + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" + reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` + else + gentop="$output_objdir/${obj}x" + generated="$generated $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # Create the old-style object. + reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" + cmds=$reload_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit $EXIT_SUCCESS + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $run eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + cmds=$reload_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + fi + + if test -n "$gentop"; then + $show "${rm}r $gentop" + $run ${rm}r $gentop + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;; + esac + if test -n "$vinfo"; then + $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2 + fi + + if test -n "$release"; then + $echo "$modename: warning: \`-release' is ignored for programs" 1>&2 + fi + + if test "$preload" = yes; then + if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown && + test "$dlopen_self_static" = unknown; then + $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support." + fi + fi + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'` + ;; + esac + + case $host in + *darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + if test "$tagname" = CXX ; then + compile_command="$compile_command ${wl}-bind_at_load" + finalize_command="$finalize_command ${wl}-bind_at_load" + fi + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + new_libs="$new_libs -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$new_libs $deplib" ;; + esac + ;; + *) new_libs="$new_libs $deplib" ;; + esac + done + compile_deplibs="$new_libs" + + + compile_command="$compile_command $compile_deplibs" + finalize_command="$finalize_command $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath="$finalize_rpath $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath="$perm_rpath $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*) + testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + *) dllsearchpath="$dllsearchpath:$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + *) dllsearchpath="$dllsearchpath:$testbindir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath="$rpath $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) finalize_perm_rpath="$finalize_perm_rpath $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + fi + + dlsyms= + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + dlsyms="${outputname}S.c" + else + $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2 + fi + fi + + if test -n "$dlsyms"; then + case $dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${outputname}.nm" + + $show "$rm $nlist ${nlist}S ${nlist}T" + $run $rm "$nlist" "${nlist}S" "${nlist}T" + + # Parse the name list into a source file. + $show "creating $output_objdir/$dlsyms" + + test -z "$run" && $echo > "$output_objdir/$dlsyms" "\ +/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */ +/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +/* Prevent the only kind of declaration conflicts we can make. */ +#define lt_preloaded_symbols some_other_symbol + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + $show "generating symbol list for \`$output'" + + test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` + for arg in $progfiles; do + $show "extracting global C symbols from \`$arg'" + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + if test -n "$export_symbols_regex"; then + $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + $run eval '$mv "$nlist"T "$nlist"' + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$outputname.exp" + $run $rm $export_symbols + $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* ) + $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + else + $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + $run eval 'mv "$nlist"T "$nlist"' + case $host in + *cygwin* | *mingw* ) + $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + fi + fi + + for arg in $dlprefiles; do + $show "extracting global C symbols from \`$arg'" + name=`$echo "$arg" | ${SED} -e 's%^.*/%%'` + $run eval '$echo ": $name " >> "$nlist"' + $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'" + done + + if test -z "$run"; then + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $mv "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if grep -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + grep -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$dlsyms"' + else + $echo '/* NONE */' >> "$output_objdir/$dlsyms" + fi + + $echo >> "$output_objdir/$dlsyms" "\ + +#undef lt_preloaded_symbols + +#if defined (__STDC__) && __STDC__ +# define lt_ptr void * +#else +# define lt_ptr char * +# define const +#endif + +/* The mapping between symbol names and symbols. */ +" + + case $host in + *cygwin* | *mingw* ) + $echo >> "$output_objdir/$dlsyms" "\ +/* DATA imports from DLLs on WIN32 can't be const, because + runtime relocations are performed -- see ld's documentation + on pseudo-relocs */ +struct { +" + ;; + * ) + $echo >> "$output_objdir/$dlsyms" "\ +const struct { +" + ;; + esac + + + $echo >> "$output_objdir/$dlsyms" "\ + const char *name; + lt_ptr address; +} +lt_preloaded_symbols[] = +{\ +" + + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms" + + $echo >> "$output_objdir/$dlsyms" "\ + {0, (lt_ptr) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + fi + + pic_flag_for_symtable= + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";; + esac;; + *-*-hpux*) + case "$compile_command " in + *" -static "*) ;; + *) pic_flag_for_symtable=" $pic_flag";; + esac + esac + + # Now compile the dynamic symbol file. + $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")" + $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $? + + # Clean up the generated files. + $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T" + $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T" + + # Transform the symbol file into the correct name. + case $host in + *cygwin* | *mingw* ) + if test -f "$output_objdir/${outputname}.def" ; then + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP` + else + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` + fi + ;; + * ) + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP` + ;; + esac + ;; + *) + $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2 + exit $EXIT_FAILURE + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` + finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP` + fi + + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + # Replace the output file specification. + compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + $show "$link_command" + $run eval "$link_command" + exit_status=$? + + # Delete the generated files. + if test -n "$dlsyms"; then + $show "$rm $output_objdir/${outputname}S.${objext}" + $run $rm "$output_objdir/${outputname}S.${objext}" + fi + + exit $exit_status + fi + + if test -n "$shlibpath_var"; then + # We should set the shlibpath_var + rpath= + for dir in $temp_rpath; do + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) + # Absolute path. + rpath="$rpath$dir:" + ;; + *) + # Relative path: add a thisdir entry. + rpath="$rpath\$thisdir/$dir:" + ;; + esac + done + temp_rpath="$rpath" + fi + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath="$rpath$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + rpath="$rpath$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$no_install" = yes; then + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $run $rm $output + # Link the executable and exit + $show "$link_command" + $run eval "$link_command" || exit $? + exit $EXIT_SUCCESS + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2 + $echo "$modename: \`$output' will be relinked during installation" 1>&2 + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$echo "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname + + $show "$link_command" + $run eval "$link_command" || exit $? + + # Now create the wrapper script. + $show "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` + fi + + # Quote $echo for shipping. + if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then + case $progpath in + [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; + *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; + esac + qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"` + else + qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"` + fi + + # Only actually do things if our run command is non-null. + if test -z "$run"; then + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + output_name=`basename $output` + output_path=`dirname $output` + cwrappersource="$output_path/$objdir/lt-$output_name.c" + cwrapper="$output_path/$output_name.exe" + $rm $cwrappersource $cwrapper + trap "$rm $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + cat > $cwrappersource <> $cwrappersource<<"EOF" +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if defined(PATH_MAX) +# define LT_PATHMAX PATH_MAX +#elif defined(MAXPATHLEN) +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ + defined (__OS2__) +# define HAVE_DOS_BASED_FILE_SYSTEM +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free ((void *) stale); stale = 0; } \ +} while (0) + +/* -DDEBUG is fairly common in CFLAGS. */ +#undef DEBUG +#if defined DEBUGWRAPPER +# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__) +#else +# define DEBUG(format, ...) +#endif + +const char *program_name = NULL; + +void * xmalloc (size_t num); +char * xstrdup (const char *string); +const char * base_name (const char *name); +char * find_executable(const char *wrapper); +int check_executable(const char *path); +char * strendzap(char *str, const char *pat); +void lt_fatal (const char *message, ...); + +int +main (int argc, char *argv[]) +{ + char **newargz; + int i; + + program_name = (char *) xstrdup (base_name (argv[0])); + DEBUG("(main) argv[0] : %s\n",argv[0]); + DEBUG("(main) program_name : %s\n",program_name); + newargz = XMALLOC(char *, argc+2); +EOF + + cat >> $cwrappersource <> $cwrappersource <<"EOF" + newargz[1] = find_executable(argv[0]); + if (newargz[1] == NULL) + lt_fatal("Couldn't find %s", argv[0]); + DEBUG("(main) found exe at : %s\n",newargz[1]); + /* we know the script has the same name, without the .exe */ + /* so make sure newargz[1] doesn't end in .exe */ + strendzap(newargz[1],".exe"); + for (i = 1; i < argc; i++) + newargz[i+1] = xstrdup(argv[i]); + newargz[argc+1] = NULL; + + for (i=0; i> $cwrappersource <> $cwrappersource <> $cwrappersource <<"EOF" + return 127; +} + +void * +xmalloc (size_t num) +{ + void * p = (void *) malloc (num); + if (!p) + lt_fatal ("Memory exhausted"); + + return p; +} + +char * +xstrdup (const char *string) +{ + return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL +; +} + +const char * +base_name (const char *name) +{ + const char *base; + +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + /* Skip over the disk name in MSDOS pathnames. */ + if (isalpha ((unsigned char)name[0]) && name[1] == ':') + name += 2; +#endif + + for (base = name; *name; name++) + if (IS_DIR_SEPARATOR (*name)) + base = name + 1; + return base; +} + +int +check_executable(const char * path) +{ + struct stat st; + + DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!"); + if ((!path) || (!*path)) + return 0; + + if ((stat (path, &st) >= 0) && + ( + /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */ +#if defined (S_IXOTH) + ((st.st_mode & S_IXOTH) == S_IXOTH) || +#endif +#if defined (S_IXGRP) + ((st.st_mode & S_IXGRP) == S_IXGRP) || +#endif + ((st.st_mode & S_IXUSR) == S_IXUSR)) + ) + return 1; + else + return 0; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise */ +char * +find_executable (const char* wrapper) +{ + int has_slash = 0; + const char* p; + const char* p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + int tmp_len; + char* concat_name; + + DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!"); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + if (isalpha ((unsigned char)wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + } +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char* path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char* q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR(*q)) + break; + p_len = q - p; + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + tmp_len = strlen(tmp); + concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = XMALLOC(char, p_len + 1 + strlen(wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal ("getcwd failed"); + tmp_len = strlen(tmp); + concat_name = XMALLOC(char, tmp_len + 1 + strlen(wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable(concat_name)) + return concat_name; + XFREE(concat_name); + return NULL; +} + +char * +strendzap(char *str, const char *pat) +{ + size_t len, patlen; + + assert(str != NULL); + assert(pat != NULL); + + len = strlen(str); + patlen = strlen(pat); + + if (patlen <= len) + { + str += len - patlen; + if (strcmp(str, pat) == 0) + *str = '\0'; + } + return str; +} + +static void +lt_error_core (int exit_status, const char * mode, + const char * message, va_list ap) +{ + fprintf (stderr, "%s: %s: ", program_name, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, "FATAL", message, ap); + va_end (ap); +} +EOF + # we should really use a build-platform specific compiler + # here, but OTOH, the wrappers (shell script and this C one) + # are only useful if you want to execute the "real" binary. + # Since the "real" binary is built for $host, then this + # wrapper might as well be built for $host, too. + $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource + ;; + esac + $rm $output + trap "$rm $output; exit $EXIT_FAILURE" 1 2 15 + + $echo > $output "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed='${SED} -e 1s/^X//' +sed_quote_subst='$sed_quote_subst' + +# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE). +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variable: + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$echo are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + echo=\"$qecho\" + file=\"\$0\" + # Make sure echo works. + if test \"X\$1\" = X--no-reexec; then + # Discard the --no-reexec flag, and continue. + shift + elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then + # Yippee, \$echo works! + : + else + # Restart under the correct shell, and then maybe \$echo will work. + exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} + fi + fi\ +" + $echo >> $output "\ + + # Find the directory that this script lives in. + thisdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | ${SED} -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$echo \"X\$file\" | \$Xsed -e 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$echo \"X\$file\" | \$Xsed -e 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` + done + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + $echo >> $output "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || \\ + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $mkdir \"\$progdir\" + else + $rm \"\$progdir/\$file\" + fi" + + $echo >> $output "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + $echo \"\$relink_command_output\" >&2 + $rm \"\$progdir/\$file\" + exit $EXIT_FAILURE + fi + fi + + $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $rm \"\$progdir/\$program\"; + $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $rm \"\$progdir/\$file\" + fi" + else + $echo >> $output "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $echo >> $output "\ + + if test -f \"\$progdir/\$program\"; then" + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $echo >> $output "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$echo \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` + + export $shlibpath_var +" + fi + + # fixup the dll searchpath if we need to. + if test -n "$dllsearchpath"; then + $echo >> $output "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + $echo >> $output "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2*) + $echo >> $output "\ + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $echo >> $output "\ + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $echo >> $output "\ + \$echo \"\$0: cannot exec \$program \$*\" + exit $EXIT_FAILURE + fi + else + # The program doesn't exist. + \$echo \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 + \$echo \"This script is just a wrapper for \$program.\" 1>&2 + $echo \"See the $PACKAGE documentation for more information.\" 1>&2 + exit $EXIT_FAILURE + fi +fi\ +" + chmod +x $output + fi + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$old_deplibs $non_pic_objects" + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + func_extract_archives $gentop $addlibs + oldobjs="$oldobjs $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + cmds=$old_archive_from_new_cmds + else + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + $echo "X$obj" | $Xsed -e 's%^.*/%%' + done | sort | sort -uc >/dev/null 2>&1); then + : + else + $echo "copying selected object files to avoid basename conflicts..." + + if test -z "$gentop"; then + gentop="$output_objdir/${outputname}x" + generated="$generated $gentop" + + $show "${rm}r $gentop" + $run ${rm}r "$gentop" + $show "$mkdir $gentop" + $run $mkdir "$gentop" + exit_status=$? + if test "$exit_status" -ne 0 && test ! -d "$gentop"; then + exit $exit_status + fi + fi + + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'` + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + counter=`expr $counter + 1` + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + $run ln "$obj" "$gentop/$newobj" || + $run cp "$obj" "$gentop/$newobj" + oldobjs="$oldobjs $gentop/$newobj" + ;; + *) oldobjs="$oldobjs $obj" ;; + esac + done + fi + + eval cmds=\"$old_archive_cmds\" + + if len=`expr "X$cmds" : ".*"` && + test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + $echo "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + for obj in $save_oldobjs + do + oldobjs="$objlist $obj" + objlist="$objlist $obj" + eval test_cmds=\"$old_archive_cmds\" + if len=`expr "X$test_cmds" : ".*" 2>/dev/null` && + test "$len" -le "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj" ; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + objlist= + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test "X$oldobjs" = "X" ; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + eval cmd=\"$cmd\" + IFS="$save_ifs" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$generated"; then + $show "${rm}r$generated" + $run ${rm}r$generated + fi + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + $show "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"` + relink_command="$var=\"$var_value\"; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP` + if test "$hardcode_automatic" = yes ; then + relink_command= + fi + + + # Only create the output if not a dry run. + if test -z "$run"; then + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + if test -z "$libdir"; then + $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdependency_libs="$newdependency_libs $libdir/$name" + ;; + *) newdependency_libs="$newdependency_libs $deplib" ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + for lib in $dlfiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdlfiles="$newdlfiles $libdir/$name" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'` + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + if test -z "$libdir"; then + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + exit $EXIT_FAILURE + fi + newdlprefiles="$newdlprefiles $libdir/$name" + done + dlprefiles="$newdlprefiles" + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlfiles="$newdlfiles $abs" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlprefiles="$newdlprefiles $abs" + done + dlprefiles="$newdlprefiles" + fi + $rm $output + # place dlname in correct position for cygwin + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; + esac + $echo > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test "$installed" = no && test "$need_relink" = yes; then + $echo >> $output "\ +relink_command=\"$relink_command\"" + fi + done + fi + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)" + $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $? + ;; + esac + exit $EXIT_SUCCESS + ;; + + # libtool install mode + install) + modename="$modename: install" + + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + $echo "X$nonopt" | grep shtool > /dev/null; then + # Aesthetically quote it. + arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + install_prog="$arg " + arg="$1" + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog$arg" + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + for arg + do + if test -n "$dest"; then + files="$files $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=yes ;; + -f) + case " $install_prog " in + *[\\\ /]cp\ *) ;; + *) prev=$arg ;; + esac + ;; + -g | -m | -o) prev=$arg ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"` + case $arg in + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + arg="\"$arg\"" + ;; + esac + install_prog="$install_prog $arg" + done + + if test -z "$install_prog"; then + $echo "$modename: you must specify an install program" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test -n "$prev"; then + $echo "$modename: the \`$prev' option requires an argument" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + if test -z "$files"; then + if test -z "$dest"; then + $echo "$modename: no file or destination specified" 1>&2 + else + $echo "$modename: you must specify a destination" 1>&2 + fi + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Strip any trailing slash from the destination. + dest=`$echo "X$dest" | $Xsed -e 's%/$%%'` + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'` + test "X$destdir" = "X$dest" && destdir=. + destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'` + + # Not a directory, so check to see that there is only one file specified. + set dummy $files + if test "$#" -gt 2; then + $echo "$modename: \`$dest' is not a directory" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + staticlibs="$staticlibs $file" + ;; + + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$file' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + library_names= + old_library= + relink_command= + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) current_libdirs="$current_libdirs $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) future_libdirs="$future_libdirs $libdir" ;; + esac + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/ + test "X$dir" = "X$file/" && dir= + dir="$dir$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$echo "$destdir" | $SED "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + if test "$inst_prefix_dir" = "$destdir"; then + $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2 + exit $EXIT_FAILURE + fi + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP` + else + relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP` + fi + + $echo "$modename: warning: relinking \`$file'" 1>&2 + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + exit $EXIT_FAILURE + fi + fi + + # See the names of the shared library. + set dummy $library_names + if test -n "$2"; then + realname="$2" + shift + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + $show "$install_prog $dir/$srcname $destdir/$realname" + $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $? + if test -n "$stripme" && test -n "$striplib"; then + $show "$striplib $destdir/$realname" + $run eval "$striplib $destdir/$realname" || exit $? + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try `ln -sf' first, because the `ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + if test "$linkname" != "$realname"; then + $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" + $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })" + fi + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + cmds=$postinstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$mode" = relink; then + $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)' + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + fi + + # Install the pseudo-library for information purposes. + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + instname="$dir/$name"i + $show "$install_prog $instname $destdir/$name" + $run eval "$install_prog $instname $destdir/$name" || exit $? + + # Maybe install the static library, too. + test -n "$old_library" && staticlibs="$staticlibs $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"` + ;; + *.$objext) + staticdest="$destfile" + destfile= + ;; + *) + $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + # Install the libtool object if requested. + if test -n "$destfile"; then + $show "$install_prog $file $destfile" + $run eval "$install_prog $file $destfile" || exit $? + fi + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + staticobj=`$echo "X$file" | $Xsed -e "$lo2o"` + + $show "$install_prog $staticobj $staticdest" + $run eval "$install_prog \$staticobj \$staticdest" || exit $? + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + destfile="$destdir/$destfile" + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext="" + case $file in + *.exe) + if test ! -f "$file"; then + file=`$echo $file|${SED} 's,.exe$,,'` + stripped_ext=".exe" + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin*|*mingw*) + wrapper=`$echo $file | ${SED} -e 's,.exe$,,'` + ;; + *) + wrapper=$file + ;; + esac + if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then + notinst_deplibs= + relink_command= + + # Note that it is not necessary on cygwin/mingw to append a dot to + # foo even if both foo and FILE.exe exist: automatic-append-.exe + # behavior happens only for exec(3), not for open(2)! Also, sourcing + # `FILE.' does not work on cygwin managed mounts. + # + # If there is no directory component, then add one. + case $wrapper in + */* | *\\*) . ${wrapper} ;; + *) . ./${wrapper} ;; + esac + + # Check the variables that should have been set. + if test -z "$notinst_deplibs"; then + $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2 + exit $EXIT_FAILURE + fi + + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + # If there is no directory component, then add one. + case $lib in + */* | *\\*) . $lib ;; + *) . ./$lib ;; + esac + fi + libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2 + finalize=no + fi + done + + relink_command= + # Note that it is not necessary on cygwin/mingw to append a dot to + # foo even if both foo and FILE.exe exist: automatic-append-.exe + # behavior happens only for exec(3), not for open(2)! Also, sourcing + # `FILE.' does not work on cygwin managed mounts. + # + # If there is no directory component, then add one. + case $wrapper in + */* | *\\*) . ${wrapper} ;; + *) . ./${wrapper} ;; + esac + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + if test "$finalize" = yes && test -z "$run"; then + tmpdir=`func_mktempdir` + file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'` + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP` + + $show "$relink_command" + if $run eval "$relink_command"; then : + else + $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2 + ${rm}r "$tmpdir" + continue + fi + file="$outputname" + else + $echo "$modename: warning: cannot relink \`$file'" 1>&2 + fi + else + # Install the binary that we compiled earlier. + file=`$echo "X$file$stripped_ext" | $Xsed -e "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'` + ;; + esac + ;; + esac + $show "$install_prog$stripme $file $destfile" + $run eval "$install_prog\$stripme \$file \$destfile" || exit $? + test -n "$outputname" && ${rm}r "$tmpdir" + ;; + esac + done + + for file in $staticlibs; do + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + + $show "$install_prog $file $oldlib" + $run eval "$install_prog \$file \$oldlib" || exit $? + + if test -n "$stripme" && test -n "$old_striplib"; then + $show "$old_striplib $oldlib" + $run eval "$old_striplib $oldlib" || exit $? + fi + + # Do each command in the postinstall commands. + cmds=$old_postinstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || exit $? + done + IFS="$save_ifs" + done + + if test -n "$future_libdirs"; then + $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2 + fi + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + test -n "$run" && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi + ;; + + # libtool finish mode + finish) + modename="$modename: finish" + libdirs="$nonopt" + admincmds= + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for dir + do + libdirs="$libdirs $dir" + done + + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + cmds=$finish_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" || admincmds="$admincmds + $cmd" + done + IFS="$save_ifs" + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $run eval "$cmds" || admincmds="$admincmds + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + test "$show" = : && exit $EXIT_SUCCESS + + $echo "X----------------------------------------------------------------------" | $Xsed + $echo "Libraries have been installed in:" + for libdir in $libdirs; do + $echo " $libdir" + done + $echo + $echo "If you ever happen to want to link against installed libraries" + $echo "in a given directory, LIBDIR, you must either use libtool, and" + $echo "specify the full pathname of the library, or use the \`-LLIBDIR'" + $echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + $echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + $echo " during execution" + fi + if test -n "$runpath_var"; then + $echo " - add LIBDIR to the \`$runpath_var' environment variable" + $echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $echo " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + $echo " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + $echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + $echo + $echo "See any operating system documentation about shared libraries for" + $echo "more information, such as the ld(1) and ld.so(8) manual pages." + $echo "X----------------------------------------------------------------------" | $Xsed + exit $EXIT_SUCCESS + ;; + + # libtool execute mode + execute) + modename="$modename: execute" + + # The first argument is the command name. + cmd="$nonopt" + if test -z "$cmd"; then + $echo "$modename: you must specify a COMMAND" 1>&2 + $echo "$help" + exit $EXIT_FAILURE + fi + + # Handle -dlopen flags immediately. + for file in $execute_dlfiles; do + if test ! -f "$file"; then + $echo "$modename: \`$file' is not a file" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + dir= + case $file in + *.la) + # Check to see that this really is a libtool archive. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then : + else + $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Read the libtool library. + dlname= + library_names= + + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'" + continue + fi + + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + + if test -f "$dir/$objdir/$dlname"; then + dir="$dir/$objdir" + else + if test ! -f "$dir/$dlname"; then + $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2 + exit $EXIT_FAILURE + fi + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + test "X$dir" = "X$file" && dir=. + ;; + + *) + $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2 + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -*) ;; + *) + # Do a test to see if this is really a libtool program. + if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + # If there is no directory component, then add one. + case $file in + */* | *\\*) . $file ;; + *) . ./$file ;; + esac + + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"` + args="$args \"$file\"" + done + + if test -z "$run"; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES + do + eval "if test \"\${save_$lt_var+set}\" = set; then + $lt_var=\$save_$lt_var; export $lt_var + fi" + done + + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$echo \"\$shlibpath_var=\$$shlibpath_var\"" + $echo "export $shlibpath_var" + fi + $echo "$cmd$args" + exit $EXIT_SUCCESS + fi + ;; + + # libtool clean and uninstall mode + clean | uninstall) + modename="$modename: $mode" + rm="$nonopt" + files= + rmforce= + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + for arg + do + case $arg in + -f) rm="$rm $arg"; rmforce=yes ;; + -*) rm="$rm $arg" ;; + *) files="$files $arg" ;; + esac + done + + if test -z "$rm"; then + $echo "$modename: you must specify an RM program" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + fi + + rmdirs= + + origobjdir="$objdir" + for file in $files; do + dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'` + if test "X$dir" = "X$file"; then + dir=. + objdir="$origobjdir" + else + objdir="$dir/$origobjdir" + fi + name=`$echo "X$file" | $Xsed -e 's%^.*/%%'` + test "$mode" = uninstall && objdir="$dir" + + # Remember objdir for removal later, being careful to avoid duplicates + if test "$mode" = clean; then + case " $rmdirs " in + *" $objdir "*) ;; + *) rmdirs="$rmdirs $objdir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if (test -L "$file") >/dev/null 2>&1 \ + || (test -h "$file") >/dev/null 2>&1 \ + || test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif test "$rmforce" = yes; then + continue + fi + + rmfiles="$file" + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + . $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + rmfiles="$rmfiles $objdir/$n" + done + test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" + + case "$mode" in + clean) + case " $library_names " in + # " " in the beginning catches empty $dlname + *" $dlname "*) ;; + *) rmfiles="$rmfiles $objdir/$dlname" ;; + esac + test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + cmds=$postuninstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" + if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + cmds=$old_postuninstall_cmds + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $show "$cmd" + $run eval "$cmd" + if test "$?" -ne 0 && test "$rmforce" != yes; then + exit_status=1 + fi + done + IFS="$save_ifs" + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + + # Read the .lo file + . $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" \ + && test "$pic_object" != none; then + rmfiles="$rmfiles $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" \ + && test "$non_pic_object" != none; then + rmfiles="$rmfiles $dir/$non_pic_object" + fi + fi + ;; + + *) + if test "$mode" = clean ; then + noexename=$name + case $file in + *.exe) + file=`$echo $file|${SED} 's,.exe$,,'` + noexename=`$echo $name|${SED} 's,.exe$,,'` + # $file with .exe has already been added to rmfiles, + # add $file without .exe + rmfiles="$rmfiles $file" + ;; + esac + # Do a test to see if this is a libtool program. + if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then + relink_command= + . $dir/$noexename + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then + rmfiles="$rmfiles $objdir/lt-$name" + fi + if test "X$noexename" != "X$name" ; then + rmfiles="$rmfiles $objdir/lt-${noexename}.c" + fi + fi + fi + ;; + esac + $show "$rm $rmfiles" + $run $rm $rmfiles || exit_status=1 + done + objdir="$origobjdir" + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + $show "rmdir $dir" + $run rmdir $dir >/dev/null 2>&1 + fi + done + + exit $exit_status + ;; + + "") + $echo "$modename: you must specify a MODE" 1>&2 + $echo "$generic_help" 1>&2 + exit $EXIT_FAILURE + ;; + esac + + if test -z "$exec_cmd"; then + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$generic_help" 1>&2 + exit $EXIT_FAILURE + fi +fi # test -z "$show_help" + +if test -n "$exec_cmd"; then + eval exec $exec_cmd + exit $EXIT_FAILURE +fi + +# We need to display help for each of the modes. +case $mode in +"") $echo \ +"Usage: $modename [OPTION]... [MODE-ARG]... + +Provide generalized library-building support services. + + --config show all configuration variables + --debug enable verbose shell tracing +-n, --dry-run display commands without modifying any files + --features display basic configuration information and exit + --finish same as \`--mode=finish' + --help display this help message and exit + --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS] + --quiet same as \`--silent' + --silent don't print informational messages + --tag=TAG use configuration variables from tag TAG + --version print version information + +MODE must be one of the following: + + clean remove files from the build directory + compile compile a source file into a libtool object + execute automatically set library path, then run a program + finish complete the installation of libtool libraries + install install libraries or executables + link create a library or an executable + uninstall remove libraries from an installed directory + +MODE-ARGS vary depending on the MODE. Try \`$modename --help --mode=MODE' for +a more detailed description of MODE. + +Report bugs to ." + exit $EXIT_SUCCESS + ;; + +clean) + $echo \ +"Usage: $modename [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + +compile) + $echo \ +"Usage: $modename [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -prefer-pic try to building PIC objects only + -prefer-non-pic try to building non-PIC objects only + -static always build a \`.o' file suitable for static linking + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + +execute) + $echo \ +"Usage: $modename [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + +finish) + $echo \ +"Usage: $modename [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + +install) + $echo \ +"Usage: $modename [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + +link) + $echo \ +"Usage: $modename [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE Use a list of object files found in FILE to specify objects + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + +uninstall) + $echo \ +"Usage: $modename [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + +*) + $echo "$modename: invalid operation mode \`$mode'" 1>&2 + $echo "$help" 1>&2 + exit $EXIT_FAILURE + ;; +esac + +$echo +$echo "Try \`$modename --help' for more information about other modes." + +exit $? + +# The TAGs below are defined such that we never get into a situation +# in which we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +disable_libs=shared +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +disable_libs=static +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: diff --git a/coregrade/src/libconfig-1.3.1/missing b/coregrade/src/libconfig-1.3.1/missing new file mode 100755 index 0000000..e7ef83a --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/missing @@ -0,0 +1,360 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. + +scriptversion=2003-09-02.23 + +# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003 +# Free Software Foundation, Inc. +# Originally by Fran,cois Pinard , 1996. + +# 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 +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +run=: + +# In the cases where this matters, `missing' is being run in the +# srcdir already. +if test -f configure.ac; then + configure_ac=configure.ac +else + configure_ac=configure.in +fi + +msg="missing on your system" + +case "$1" in +--run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 + # Exit code 63 means version mismatch. This often happens + # when the user try to use an ancient version of a tool on + # a file that requires a minimum version. In this case we + # we should proceed has if the program had been absent, or + # if --run hadn't been passed. + if test $? = 63; then + run=: + msg="probably too old" + fi + ;; +esac + +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. +case "$1" in + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + --run try to run the given command, and emulate it if it fails + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + help2man touch the output file + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + tar try tar, gnutar, gtar, then tar without non-portable flags + yacc create \`y.tab.[ch]', if possible, from existing .[ch] + +Send bug reports to ." + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + + aclocal*) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acinclude.m4' or \`${configure_ac}'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`${configure_ac}'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acconfig.h' or \`${configure_ac}'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` + test -z "$files" && files="config.h" + touch_files= + for f in $files; do + case "$f" in + *:*) touch_files="$touch_files "`echo "$f" | + sed -e 's/^[^:]*://' -e 's/:.*//'`;; + *) touch_files="$touch_files $f.in";; + esac + done + touch $touch_files + ;; + + automake*) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print | + sed 's/\.am$/.in/' | + while read f; do touch "$f"; done + ;; + + autom4te) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is needed, but is $msg. + You might have modified some files without having the + proper tools for further handling them. + You can get \`$1' as part of \`Autoconf' from any GNU + archive site." + + file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'` + test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo "#! /bin/sh" + echo "# Created by GNU Automake missing as a replacement of" + echo "# $ $@" + echo "exit 0" + chmod +x $file + exit 1 + fi + ;; + + bison|yacc) + echo 1>&2 "\ +WARNING: \`$1' $msg. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if [ ! -f y.tab.h ]; then + echo >y.tab.h + fi + if [ ! -f y.tab.c ]; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex|flex) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if [ $# -ne 1 ]; then + eval LASTARG="\${$#}" + case "$LASTARG" in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if [ -f "$SRCFILE" ]; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if [ ! -f lex.yy.c ]; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + help2man) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a dependency of a manual page. You may need the + \`Help2man' package in order for those modifications to take + effect. You can get \`Help2man' from any GNU archive site." + + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'` + fi + if [ -f "$file" ]; then + touch $file + else + test -z "$file" || exec >$file + echo ".ab help2man is required to generate this page" + exit 1 + fi + ;; + + makeinfo) + if test -z "$run" && (makeinfo --version) > /dev/null 2>&1; then + # We have makeinfo, but it failed. + exit 1 + fi + + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'` + if test -z "$file"; then + file=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $file` + fi + touch $file + ;; + + tar) + shift + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + fi + + # We have already tried tar in the generic part. + # Look for gnutar/gtar before invocation to avoid ugly error + # messages. + if (gnutar --version > /dev/null 2>&1); then + gnutar "$@" && exit 0 + fi + if (gtar --version > /dev/null 2>&1); then + gtar "$@" && exit 0 + fi + firstarg="$1" + if shift; then + case "$firstarg" in + *o*) + firstarg=`echo "$firstarg" | sed s/o//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + case "$firstarg" in + *h*) + firstarg=`echo "$firstarg" | sed s/h//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + fi + + echo 1>&2 "\ +WARNING: I can't seem to be able to run \`tar' with the given arguments. + You may want to install GNU tar or Free paxutils, or check the + command line arguments." + exit 1 + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and is $msg. + You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequisites for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/coregrade/src/libconfig-1.3.1/mkinstalldirs b/coregrade/src/libconfig-1.3.1/mkinstalldirs new file mode 100755 index 0000000..5d26a48 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/mkinstalldirs @@ -0,0 +1,150 @@ +#! /bin/sh +# mkinstalldirs --- make directory hierarchy + +scriptversion=2005-02-02.21 + +# Original author: Noah Friedman +# Created: 1993-05-16 +# Public domain. +# +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +errstatus=0 +dirmode="" + +usage="\ +Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... + +Create each directory DIR (with mode MODE, if specified), including all +leading file name components. + +Report bugs to ." + +# process command line arguments +while test $# -gt 0 ; do + case $1 in + -h | --help | --h*) # -h for help + echo "$usage" + exit $? + ;; + -m) # -m PERM arg + shift + test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } + dirmode=$1 + shift + ;; + --version) + echo "$0 $scriptversion" + exit $? + ;; + --) # stop option processing + shift + break + ;; + -*) # unknown option + echo "$usage" 1>&2 + exit 1 + ;; + *) # first non-opt arg + break + ;; + esac +done + +for file +do + if test -d "$file"; then + shift + else + break + fi +done + +case $# in + 0) exit 0 ;; +esac + +# Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and +# mkdir -p a/c at the same time, both will detect that a is missing, +# one will create a, then the other will try to create a and die with +# a "File exists" error. This is a problem when calling mkinstalldirs +# from a parallel make. We use --version in the probe to restrict +# ourselves to GNU mkdir, which is thread-safe. +case $dirmode in + '') + if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then + echo "mkdir -p -- $*" + exec mkdir -p -- "$@" + else + # On NextStep and OpenStep, the `mkdir' command does not + # recognize any option. It will interpret all options as + # directories to create, and then abort because `.' already + # exists. + test -d ./-p && rmdir ./-p + test -d ./--version && rmdir ./--version + fi + ;; + *) + if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && + test ! -d ./--version; then + echo "mkdir -m $dirmode -p -- $*" + exec mkdir -m "$dirmode" -p -- "$@" + else + # Clean up after NextStep and OpenStep mkdir. + for d in ./-m ./-p ./--version "./$dirmode"; + do + test -d $d && rmdir $d + done + fi + ;; +esac + +for file +do + set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'` + shift + + pathcomp= + for d + do + pathcomp="$pathcomp$d" + case $pathcomp in + -*) pathcomp=./$pathcomp ;; + esac + + if test ! -d "$pathcomp"; then + echo "mkdir $pathcomp" + + mkdir "$pathcomp" || lasterr=$? + + if test ! -d "$pathcomp"; then + errstatus=$lasterr + else + if test ! -z "$dirmode"; then + echo "chmod $dirmode $pathcomp" + lasterr="" + chmod "$dirmode" "$pathcomp" || lasterr=$? + + if test ! -z "$lasterr"; then + errstatus=$lasterr + fi + fi + fi + fi + + pathcomp="$pathcomp/" + done +done + +exit $errstatus + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/coregrade/src/libconfig-1.3.1/private.h b/coregrade/src/libconfig-1.3.1/private.h new file mode 100644 index 0000000..a0b1624 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/private.h @@ -0,0 +1,37 @@ +/* ---------------------------------------------------------------------------- + libconfig - A structured configuration file parsing library + Copyright (C) 2005 Mark A Lindner + + This file is part of libconfig. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation; either version 2.1 of + the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + ---------------------------------------------------------------------------- +*/ + +#ifndef __libconfig_private_h +#define __libconfig_private_h + +#include "libconfig.h" + +struct parse_context +{ + config_t *config; + config_setting_t *parent; + config_setting_t *setting; + char *name; +}; + +// --------------------------------------------------------------------------- +#endif // __libconfig_private_h diff --git a/coregrade/src/libconfig-1.3.1/samples/Makefile.am b/coregrade/src/libconfig-1.3.1/samples/Makefile.am new file mode 100644 index 0000000..252e601 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/samples/Makefile.am @@ -0,0 +1,8 @@ + +SUBDIRS = c + +if BUILDCXX + +SUBDIRS += c++ + +endif diff --git a/coregrade/src/libconfig-1.3.1/samples/Makefile.in b/coregrade/src/libconfig-1.3.1/samples/Makefile.in new file mode 100644 index 0000000..5a707fb --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/samples/Makefile.in @@ -0,0 +1,496 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +@BUILDCXX_TRUE@am__append_1 = c++ +subdir = samples +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/ac_config.h +CONFIG_CLEAN_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = c c++ +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LEX = @LEX@ +LEXLIB = @LEXLIB@ +LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +YACC = @YACC@ +YFLAGS = @YFLAGS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = c $(am__append_1) +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu samples/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu samples/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done + list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + distdir=`$(am__cd) $(distdir) && pwd`; \ + top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ + (cd $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$top_distdir" \ + distdir="$$distdir/$$subdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-exec-am: + +install-html: install-html-recursive + +install-info: install-info-recursive + +install-man: + +install-pdf: install-pdf-recursive + +install-ps: install-ps-recursive + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ + install-strip + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am check check-am clean clean-generic clean-libtool \ + ctags ctags-recursive distclean distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ + uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/coregrade/src/libconfig-1.3.1/samples/c++/.deps/sample1.Po b/coregrade/src/libconfig-1.3.1/samples/c++/.deps/sample1.Po new file mode 100644 index 0000000..a1d9813 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/samples/c++/.deps/sample1.Po @@ -0,0 +1,296 @@ +sample1.o: sample1.cpp \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/iostream \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/c++config.h \ + /usr/include/bits/wordsize.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/os_defines.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/cpu_defines.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ostream \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ios \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/iosfwd \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stringfwd.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/postypes.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cwchar \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cstddef \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stddef.h \ + /usr/include/wchar.h /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stdarg.h \ + /usr/include/bits/wchar.h /usr/include/xlocale.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/exception \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/char_traits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_algobase.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/functexcept.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/exception_defines.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/cpp_type_traits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/type_traits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/numeric_traits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_pair.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/move.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/concept_check.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_iterator_base_types.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_iterator_base_funcs.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_iterator.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/debug/debug.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/localefwd.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/c++locale.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/clocale \ + /usr/include/locale.h /usr/include/bits/locale.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cctype \ + /usr/include/ctype.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/ios_base.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/atomicity.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/gthr.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \ + /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/setjmp.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/atomic_word.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_classes.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/string \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/allocator.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/c++allocator.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/new_allocator.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/new \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/ostream_insert.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cxxabi-forced.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_function.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/backward/binders.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_string.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/initializer_list \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_string.tcc \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_classes.tcc \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/streambuf \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/streambuf.tcc \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_ios.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_facets.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cwctype \ + /usr/include/wctype.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/ctype_base.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/streambuf_iterator.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/ctype_inline.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_facets.tcc \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_ios.tcc \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/ostream.tcc \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/istream \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/istream.tcc \ + ../../libconfig.h++ /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/map \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_tree.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_map.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_multimap.h \ + ../../libconfig.h + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/iostream: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/c++config.h: + +/usr/include/bits/wordsize.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/os_defines.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/cpu_defines.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ostream: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ios: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/iosfwd: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stringfwd.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/postypes.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cwchar: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cstddef: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stddef.h: + +/usr/include/wchar.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stdarg.h: + +/usr/include/bits/wchar.h: + +/usr/include/xlocale.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/exception: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/char_traits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_algobase.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/functexcept.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/exception_defines.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/cpp_type_traits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/type_traits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/numeric_traits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_pair.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/move.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/concept_check.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_iterator_base_types.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_iterator_base_funcs.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_iterator.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/debug/debug.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/localefwd.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/c++locale.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/clocale: + +/usr/include/locale.h: + +/usr/include/bits/locale.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cctype: + +/usr/include/ctype.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/ios_base.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/atomicity.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/gthr.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/gthr-default.h: + +/usr/include/pthread.h: + +/usr/include/sched.h: + +/usr/include/time.h: + +/usr/include/bits/sched.h: + +/usr/include/bits/time.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/bits/setjmp.h: + +/usr/include/unistd.h: + +/usr/include/bits/posix_opt.h: + +/usr/include/bits/environments.h: + +/usr/include/bits/confname.h: + +/usr/include/getopt.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/atomic_word.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_classes.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/string: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/allocator.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/c++allocator.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/new_allocator.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/new: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/ostream_insert.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cxxabi-forced.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_function.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/backward/binders.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_string.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/initializer_list: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_string.tcc: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_classes.tcc: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/streambuf: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/streambuf.tcc: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_ios.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_facets.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cwctype: + +/usr/include/wctype.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/ctype_base.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/streambuf_iterator.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/ctype_inline.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_facets.tcc: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_ios.tcc: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/ostream.tcc: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/istream: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/istream.tcc: + +../../libconfig.h++: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/map: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_tree.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_map.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_multimap.h: + +../../libconfig.h: diff --git a/coregrade/src/libconfig-1.3.1/samples/c++/.deps/sample2.Po b/coregrade/src/libconfig-1.3.1/samples/c++/.deps/sample2.Po new file mode 100644 index 0000000..1d4fe9f --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/samples/c++/.deps/sample2.Po @@ -0,0 +1,296 @@ +sample2.o: sample2.cpp \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/iostream \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/c++config.h \ + /usr/include/bits/wordsize.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/os_defines.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/cpu_defines.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ostream \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ios \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/iosfwd \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stringfwd.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/postypes.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cwchar \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cstddef \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stddef.h \ + /usr/include/wchar.h /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stdarg.h \ + /usr/include/bits/wchar.h /usr/include/xlocale.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/exception \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/char_traits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_algobase.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/functexcept.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/exception_defines.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/cpp_type_traits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/type_traits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/numeric_traits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_pair.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/move.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/concept_check.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_iterator_base_types.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_iterator_base_funcs.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_iterator.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/debug/debug.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/localefwd.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/c++locale.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/clocale \ + /usr/include/locale.h /usr/include/bits/locale.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cctype \ + /usr/include/ctype.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/ios_base.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/atomicity.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/gthr.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \ + /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/setjmp.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/atomic_word.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_classes.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/string \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/allocator.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/c++allocator.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/new_allocator.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/new \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/ostream_insert.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cxxabi-forced.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_function.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/backward/binders.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_string.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/initializer_list \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_string.tcc \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_classes.tcc \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/streambuf \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/streambuf.tcc \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_ios.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_facets.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cwctype \ + /usr/include/wctype.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/ctype_base.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/streambuf_iterator.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/ctype_inline.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_facets.tcc \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_ios.tcc \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/ostream.tcc \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/istream \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/istream.tcc \ + ../../libconfig.h++ /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/map \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_tree.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_map.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_multimap.h \ + ../../libconfig.h + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/iostream: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/c++config.h: + +/usr/include/bits/wordsize.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/os_defines.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/cpu_defines.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ostream: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ios: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/iosfwd: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stringfwd.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/postypes.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cwchar: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cstddef: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stddef.h: + +/usr/include/wchar.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stdarg.h: + +/usr/include/bits/wchar.h: + +/usr/include/xlocale.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/exception: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/char_traits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_algobase.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/functexcept.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/exception_defines.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/cpp_type_traits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/type_traits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/numeric_traits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_pair.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/move.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/concept_check.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_iterator_base_types.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_iterator_base_funcs.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_iterator.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/debug/debug.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/localefwd.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/c++locale.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/clocale: + +/usr/include/locale.h: + +/usr/include/bits/locale.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cctype: + +/usr/include/ctype.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/ios_base.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/atomicity.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/gthr.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/gthr-default.h: + +/usr/include/pthread.h: + +/usr/include/sched.h: + +/usr/include/time.h: + +/usr/include/bits/sched.h: + +/usr/include/bits/time.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/bits/setjmp.h: + +/usr/include/unistd.h: + +/usr/include/bits/posix_opt.h: + +/usr/include/bits/environments.h: + +/usr/include/bits/confname.h: + +/usr/include/getopt.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/atomic_word.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_classes.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/string: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/allocator.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/c++allocator.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/new_allocator.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/new: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/ostream_insert.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cxxabi-forced.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_function.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/backward/binders.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_string.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/initializer_list: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_string.tcc: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_classes.tcc: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/streambuf: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/streambuf.tcc: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_ios.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_facets.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cwctype: + +/usr/include/wctype.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/ctype_base.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/streambuf_iterator.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/ctype_inline.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_facets.tcc: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_ios.tcc: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/ostream.tcc: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/istream: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/istream.tcc: + +../../libconfig.h++: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/map: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_tree.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_map.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_multimap.h: + +../../libconfig.h: diff --git a/coregrade/src/libconfig-1.3.1/samples/c++/.deps/sample3.Po b/coregrade/src/libconfig-1.3.1/samples/c++/.deps/sample3.Po new file mode 100644 index 0000000..3ef0a04 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/samples/c++/.deps/sample3.Po @@ -0,0 +1,296 @@ +sample3.o: sample3.cpp \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/iostream \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/c++config.h \ + /usr/include/bits/wordsize.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/os_defines.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/cpu_defines.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ostream \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ios \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/iosfwd \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stringfwd.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/postypes.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cwchar \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cstddef \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stddef.h \ + /usr/include/wchar.h /usr/include/stdio.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stdarg.h \ + /usr/include/bits/wchar.h /usr/include/xlocale.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/exception \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/char_traits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_algobase.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/functexcept.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/exception_defines.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/cpp_type_traits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/type_traits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/numeric_traits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_pair.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/move.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/concept_check.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_iterator_base_types.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_iterator_base_funcs.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_iterator.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/debug/debug.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/localefwd.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/c++locale.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/clocale \ + /usr/include/locale.h /usr/include/bits/locale.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cctype \ + /usr/include/ctype.h /usr/include/bits/types.h \ + /usr/include/bits/typesizes.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/ios_base.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/atomicity.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/gthr.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/time.h \ + /usr/include/bits/sched.h /usr/include/bits/time.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/setjmp.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/getopt.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/atomic_word.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_classes.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/string \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/allocator.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/c++allocator.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/new_allocator.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/new \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/ostream_insert.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cxxabi-forced.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_function.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/backward/binders.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_string.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/initializer_list \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_string.tcc \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_classes.tcc \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/streambuf \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/streambuf.tcc \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_ios.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_facets.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cwctype \ + /usr/include/wctype.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/ctype_base.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/streambuf_iterator.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/ctype_inline.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_facets.tcc \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_ios.tcc \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/ostream.tcc \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/istream \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/istream.tcc \ + ../../libconfig.h++ /usr/include/libio.h /usr/include/_G_config.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/map \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_tree.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_map.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_multimap.h \ + ../../libconfig.h + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/iostream: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/c++config.h: + +/usr/include/bits/wordsize.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/os_defines.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/cpu_defines.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ostream: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ios: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/iosfwd: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stringfwd.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/postypes.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cwchar: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cstddef: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stddef.h: + +/usr/include/wchar.h: + +/usr/include/stdio.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stdarg.h: + +/usr/include/bits/wchar.h: + +/usr/include/xlocale.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/exception: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/char_traits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_algobase.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/functexcept.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/exception_defines.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/cpp_type_traits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/type_traits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/numeric_traits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_pair.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/move.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/concept_check.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_iterator_base_types.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_iterator_base_funcs.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_iterator.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/debug/debug.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/localefwd.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/c++locale.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/clocale: + +/usr/include/locale.h: + +/usr/include/bits/locale.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cctype: + +/usr/include/ctype.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/ios_base.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/atomicity.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/gthr.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/gthr-default.h: + +/usr/include/pthread.h: + +/usr/include/sched.h: + +/usr/include/time.h: + +/usr/include/bits/sched.h: + +/usr/include/bits/time.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/bits/setjmp.h: + +/usr/include/unistd.h: + +/usr/include/bits/posix_opt.h: + +/usr/include/bits/environments.h: + +/usr/include/bits/confname.h: + +/usr/include/getopt.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/atomic_word.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_classes.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/string: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/allocator.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/c++allocator.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/new_allocator.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/new: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/ostream_insert.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cxxabi-forced.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_function.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/backward/binders.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_string.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/initializer_list: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_string.tcc: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_classes.tcc: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/streambuf: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/streambuf.tcc: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_ios.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_facets.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cwctype: + +/usr/include/wctype.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/ctype_base.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/streambuf_iterator.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/ctype_inline.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_facets.tcc: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_ios.tcc: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/ostream.tcc: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/istream: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/istream.tcc: + +../../libconfig.h++: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/map: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_tree.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_map.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_multimap.h: + +../../libconfig.h: diff --git a/coregrade/src/libconfig-1.3.1/samples/c++/.deps/stubcpp.Po b/coregrade/src/libconfig-1.3.1/samples/c++/.deps/stubcpp.Po new file mode 100644 index 0000000..82c2b1c --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/samples/c++/.deps/stubcpp.Po @@ -0,0 +1,318 @@ +stubcpp.o: stubcpp.cpp /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/xlocale.h /usr/include/sys/types.h /usr/include/time.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/sigset.h /usr/include/bits/time.h \ + /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \ + /usr/include/alloca.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/iostream \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/c++config.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/os_defines.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/cpu_defines.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ostream \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ios \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/iosfwd \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stringfwd.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/postypes.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cwchar \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cstddef \ + /usr/include/bits/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/exception \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/char_traits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_algobase.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/functexcept.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/exception_defines.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/cpp_type_traits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/type_traits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/numeric_traits.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_pair.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/move.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/concept_check.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_iterator_base_types.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_iterator_base_funcs.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_iterator.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/debug/debug.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/localefwd.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/c++locale.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/clocale \ + /usr/include/locale.h /usr/include/bits/locale.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cctype \ + /usr/include/ctype.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/ios_base.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/atomicity.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/gthr.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/gthr-default.h \ + /usr/include/pthread.h /usr/include/sched.h /usr/include/bits/sched.h \ + /usr/include/bits/setjmp.h /usr/include/unistd.h \ + /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \ + /usr/include/bits/confname.h /usr/include/getopt.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/atomic_word.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_classes.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/string \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/allocator.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/c++allocator.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/new_allocator.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/new \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/ostream_insert.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cxxabi-forced.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_function.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/backward/binders.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_string.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/initializer_list \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_string.tcc \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_classes.tcc \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/streambuf \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/streambuf.tcc \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_ios.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_facets.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cwctype \ + /usr/include/wctype.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/ctype_base.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/streambuf_iterator.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/ctype_inline.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_facets.tcc \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_ios.tcc \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/ostream.tcc \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/istream \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/istream.tcc \ + ../../libconfig.h++ \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/map \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_tree.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_map.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_multimap.h \ + ../../libconfig.h + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/xlocale.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/iostream: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/c++config.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/os_defines.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/cpu_defines.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ostream: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ios: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/iosfwd: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stringfwd.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/postypes.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cwchar: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cstddef: + +/usr/include/bits/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/exception: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/char_traits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_algobase.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/functexcept.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/exception_defines.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/cpp_type_traits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/type_traits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/numeric_traits.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_pair.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/move.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/concept_check.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_iterator_base_types.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_iterator_base_funcs.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_iterator.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/debug/debug.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/localefwd.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/c++locale.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/clocale: + +/usr/include/locale.h: + +/usr/include/bits/locale.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cctype: + +/usr/include/ctype.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/ios_base.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/atomicity.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/gthr.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/gthr-default.h: + +/usr/include/pthread.h: + +/usr/include/sched.h: + +/usr/include/bits/sched.h: + +/usr/include/bits/setjmp.h: + +/usr/include/unistd.h: + +/usr/include/bits/posix_opt.h: + +/usr/include/bits/environments.h: + +/usr/include/bits/confname.h: + +/usr/include/getopt.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/atomic_word.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_classes.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/string: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/allocator.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/c++allocator.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/ext/new_allocator.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/new: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/ostream_insert.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cxxabi-forced.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_function.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/backward/binders.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_string.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/initializer_list: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_string.tcc: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_classes.tcc: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/streambuf: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/streambuf.tcc: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_ios.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_facets.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/cwctype: + +/usr/include/wctype.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/ctype_base.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/streambuf_iterator.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/x86_64-redhat-linux/bits/ctype_inline.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/locale_facets.tcc: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/basic_ios.tcc: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/ostream.tcc: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/istream: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/istream.tcc: + +../../libconfig.h++: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/map: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_tree.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_map.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_multimap.h: + +../../libconfig.h: diff --git a/coregrade/src/libconfig-1.3.1/samples/c++/Makefile.am b/coregrade/src/libconfig-1.3.1/samples/c++/Makefile.am new file mode 100644 index 0000000..b1cdb9b --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/samples/c++/Makefile.am @@ -0,0 +1,14 @@ + +noinst_PROGRAMS = stubcpp sample1 sample2 sample3 + +stubcpp_SOURCES = stubcpp.cpp + +sample1_SOURCES = sample1.cpp + +sample2_SOURCES = sample2.cpp + +sample3_SOURCES = sample3.cpp + +AM_CPPFLAGS = -I $(top_srcdir) + +LDADD = -L../../.libs -lconfig++ diff --git a/coregrade/src/libconfig-1.3.1/samples/c++/Makefile.in b/coregrade/src/libconfig-1.3.1/samples/c++/Makefile.in new file mode 100644 index 0000000..b84b8dc --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/samples/c++/Makefile.in @@ -0,0 +1,478 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +noinst_PROGRAMS = stubcpp$(EXEEXT) sample1$(EXEEXT) sample2$(EXEEXT) \ + sample3$(EXEEXT) +subdir = samples/c++ +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/ac_config.h +CONFIG_CLEAN_FILES = +PROGRAMS = $(noinst_PROGRAMS) +am_sample1_OBJECTS = sample1.$(OBJEXT) +sample1_OBJECTS = $(am_sample1_OBJECTS) +sample1_LDADD = $(LDADD) +sample1_DEPENDENCIES = +am_sample2_OBJECTS = sample2.$(OBJEXT) +sample2_OBJECTS = $(am_sample2_OBJECTS) +sample2_LDADD = $(LDADD) +sample2_DEPENDENCIES = +am_sample3_OBJECTS = sample3.$(OBJEXT) +sample3_OBJECTS = $(am_sample3_OBJECTS) +sample3_LDADD = $(LDADD) +sample3_DEPENDENCIES = +am_stubcpp_OBJECTS = stubcpp.$(OBJEXT) +stubcpp_OBJECTS = $(am_stubcpp_OBJECTS) +stubcpp_LDADD = $(LDADD) +stubcpp_DEPENDENCIES = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) +CXXLD = $(CXX) +CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(sample1_SOURCES) $(sample2_SOURCES) $(sample3_SOURCES) \ + $(stubcpp_SOURCES) +DIST_SOURCES = $(sample1_SOURCES) $(sample2_SOURCES) \ + $(sample3_SOURCES) $(stubcpp_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LEX = @LEX@ +LEXLIB = @LEXLIB@ +LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +YACC = @YACC@ +YFLAGS = @YFLAGS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +stubcpp_SOURCES = stubcpp.cpp +sample1_SOURCES = sample1.cpp +sample2_SOURCES = sample2.cpp +sample3_SOURCES = sample3.cpp +AM_CPPFLAGS = -I $(top_srcdir) +LDADD = -L../../.libs -lconfig++ +all: all-am + +.SUFFIXES: +.SUFFIXES: .cpp .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu samples/c++/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu samples/c++/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done +sample1$(EXEEXT): $(sample1_OBJECTS) $(sample1_DEPENDENCIES) + @rm -f sample1$(EXEEXT) + $(CXXLINK) $(sample1_OBJECTS) $(sample1_LDADD) $(LIBS) +sample2$(EXEEXT): $(sample2_OBJECTS) $(sample2_DEPENDENCIES) + @rm -f sample2$(EXEEXT) + $(CXXLINK) $(sample2_OBJECTS) $(sample2_LDADD) $(LIBS) +sample3$(EXEEXT): $(sample3_OBJECTS) $(sample3_DEPENDENCIES) + @rm -f sample3$(EXEEXT) + $(CXXLINK) $(sample3_OBJECTS) $(sample3_LDADD) $(LIBS) +stubcpp$(EXEEXT): $(stubcpp_OBJECTS) $(stubcpp_DEPENDENCIES) + @rm -f stubcpp$(EXEEXT) + $(CXXLINK) $(stubcpp_OBJECTS) $(stubcpp_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sample1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sample2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sample3.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stubcpp.Po@am__quote@ + +.cpp.o: +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< + +.cpp.obj: +@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +.cpp.lo: +@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstPROGRAMS ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/coregrade/src/libconfig-1.3.1/samples/c++/sample1.cpp b/coregrade/src/libconfig-1.3.1/samples/c++/sample1.cpp new file mode 100644 index 0000000..7344838 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/samples/c++/sample1.cpp @@ -0,0 +1,47 @@ +/************************************************************************* + ** Sample1 + ** Load sample.cfg and increment the "X" setting + *************************************************************************/ + +#include +#include + +using namespace libconfig; +using namespace std; + +/***************************************************************************/ + +int main() +{ + Config cfg; + + try + { + /* Load the configuration.. */ + cout << "loading [sample.cfg].."; + cfg.readFile("sample.cfg"); + cout << "ok" << endl; + + /* Increment "x" */ + cout << "increment \"x\".."; + Setting& s = cfg.lookup("x"); + long x = s; + s = ++x; + cout << "ok (x=" << x << ")" << endl; + + // Save the configuration + cout << "saving [sample.cfg].."; + cfg.writeFile("sample.cfg"); + cout << "ok" << endl; + + cout << "Done!" << endl; + } + catch (...) + { + cout << "failed" << endl; + } + + return 0; +} + +/***************************************************************************/ diff --git a/coregrade/src/libconfig-1.3.1/samples/c++/sample2.cpp b/coregrade/src/libconfig-1.3.1/samples/c++/sample2.cpp new file mode 100644 index 0000000..defceb8 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/samples/c++/sample2.cpp @@ -0,0 +1,43 @@ +/************************************************************************* + ** Sample2 + ** Load sample.cfg and access the "values" array + *************************************************************************/ + +#include +#include + +using namespace libconfig; +using namespace std; + +/***************************************************************************/ + +int main() +{ + Config cfg; + try + { + /* Load the configuration.. */ + cout << "loading [sample.cfg].."; + cfg.readFile("sample.cfg"); + cout << "ok" << endl; + + // Display the "values" array + cout << "display the \"values\" array.."; + Setting& s = cfg.lookup("values"); + long value1 = s[0]; + long value2 = s[1]; + cout << "[" << value1 << "," << value2 << "].."; + cout << "ok" << endl; + + cout << "Done!" << endl; + } + catch (...) + { + cout << "failed" << endl; + } + + return 0; +} + + +/***************************************************************************/ diff --git a/coregrade/src/libconfig-1.3.1/samples/c++/sample3.cpp b/coregrade/src/libconfig-1.3.1/samples/c++/sample3.cpp new file mode 100644 index 0000000..da1de79 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/samples/c++/sample3.cpp @@ -0,0 +1,54 @@ +/************************************************************************* + ** Sample3 + ** Load sample.cfg and try to add a setting "foo".. + ** on success save to testfoo.cfg + *************************************************************************/ + +#include +#include + +using namespace libconfig; +using namespace std; + +/***************************************************************************/ + +int main() +{ + Config cfg; + try + { + /* Load the configuration.. */ + cout << "loading [sample.cfg]..."; + cfg.readFile("sample.cfg"); + cout << "ok" << endl; + + /* Add setting "foo" */ + cout << "add setting \"foo\"/..."; + Setting &root = cfg.getRoot(); + Setting &foo = root.add("foo", Setting::TypeInt); + foo = 1234; + cout << "ok" << endl; + + /** Look up an array element */ + cout << "looking up array element..."; + Setting &elem = cfg.lookup("arrays.values.[0]"); + int val = elem; + std::cout << "value is: " << val << std::endl; + std::cout << "path is: " << elem.getPath() << std::endl; + + /* Save to "samplefoo.cfg" */ + cout << "saving [samplefoo.cfg]..."; + cfg.writeFile("samplefoo.cfg"); + cout << "ok" << endl; + + cout << "Done!" << endl; + } + catch (...) + { + cout << "failed" << endl; + } + + return 0; +} + +/***************************************************************************/ diff --git a/coregrade/src/libconfig-1.3.1/samples/c++/stubcpp.cpp b/coregrade/src/libconfig-1.3.1/samples/c++/stubcpp.cpp new file mode 100644 index 0000000..59c9769 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/samples/c++/stubcpp.cpp @@ -0,0 +1,161 @@ + +#include +#include +#include + +#include "libconfig.h++" + +using namespace libconfig; + +int main(int argc, char **argv) +{ + Config cfg; + char *locale = NULL; + +#if (defined(WIN32) || defined(_WIN32) || defined(__WIN32__)) \ + && ! defined(__MINGW32__) + + locale = "French"; + +#elif defined(__APPLE__) + + locale = "fr_CA.ISO8859-1"; + +#else + + locale = "fr_FR.ISO-8859-1"; + +#endif + + printf("new locale: %s\n", setlocale(LC_NUMERIC, locale)); + printf("before locale override; pi is: %f\n", 3.141592); + + try + { + FILE *fp = fopen("test.cfg", "r"); + + if(! fp) + { + printf("Unable to open test.cfg\n"); + exit(1); + } + + cfg.read(fp); + fclose(fp); + +// const ConfigSetting& setting = cfg.lookup("application.window.size.w"); +// long val = setting; + + long val = cfg.lookup("application.window.size.w"); + printf("val: %ld\n", val); + + std::string title = cfg.lookup("application.window.title"); + std::cout << "title: " << title << std::endl; + + Setting &ss = cfg.lookup("application.window.title"); + std::string title2 = ss; + std::cout << "title: " << title2 << std::endl; + + std::string rr = "foo"; + + rr = (const char *)cfg.lookup("application.window.title"); +// rr = (std::string)(cfg.lookup("application.window.title")); + std::cout << "rr: " << rr << std::endl; + + const char *rrr = cfg.lookup("application.window.title"); + std::cout << "rrr: " << rrr << std::endl; + + Setting &s = cfg.lookup("application.group1.my_array"); + long val4; + val4 = s[4]; + printf("item #4 is: %ld\n", val4); + printf("location of my_array is %d\n", s.getSourceLine()); + + Setting &grp = cfg.lookup("application.group1.group2"); + + Setting &zzz = cfg.lookup("application.group1.group2.zzz"); + printf("location of zzz is at %d\n", zzz.getSourceLine()); + + Setting &root = cfg.getRoot(); + + Setting &rootn = root.add("new-one-at-top", Setting::TypeGroup); + + Setting &ngp = rootn.add("element", Setting::TypeFloat); + + Setting &misc = root["misc"]; + unsigned int portnum = 0; + misc.lookupValue("port", portnum); + printf("port # is: %d\n", portnum); + + ngp = 1.1234567890123; + +// long val22 = s[22]; +// printf("item #22 is: %d\n", val22); + + Setting &snew = grp.add("foobar", Setting::TypeArray); + + snew.add(Setting::TypeInt); + snew.add(Setting::TypeInt); + + snew.add(Setting::TypeInt); + snew.add(Setting::TypeInt); + + puts("created new array"); + + snew[0] = 55; + puts("elem 0"); + snew[1] = 66; + puts("elem 1"); + + cfg.setAutoConvert(true); + + double dd = cfg.lookup("application.group1.x"); + printf("auto-converted int->double: %f\n", dd); + + int ii = cfg.lookup("misc.pi"); + printf("auto-converted double->int: %d\n", ii); + + Setting &sdel = cfg.lookup("application"); + + sdel.remove("group1"); + + + Setting &books = cfg.lookup("books"); + puts("found books"); + Setting &book = books.add(Setting::TypeGroup); + puts("added book"); + + Setting &sss = book.add("Title", Setting::TypeString); + puts("added title"); + + sss = "Alice in Wonderland"; + + Setting &sss2 = book.add("Price", Setting::TypeFloat); + sss2 = 9.99; + + cfg.write(stdout); + + Setting &good = cfg.lookup("books.[2].author"); + std::string author = good; + std::cout << "author: " << author << std::endl; + + Setting &bad = books[1]["blargh"]; + } + catch(ParseException& ex) + { + printf("error on line %d: %s\n", ex.getLine(), + ex.getError()); + } + catch(SettingNotFoundException nfex) + { + printf("setting not found: %s\n", nfex.getPath()); + } + catch(ConfigException& cex) + { + printf("config exception!\n"); + } + + printf("locale restored; pi is: %f\n", 3.141592); + + return(0); +} diff --git a/coregrade/src/libconfig-1.3.1/samples/c++/test.cfg b/coregrade/src/libconfig-1.3.1/samples/c++/test.cfg new file mode 100644 index 0000000..f08519d --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/samples/c++/test.cfg @@ -0,0 +1,82 @@ +#---------------------------- +# Example Configuration File +#--------------------------- +# + +application: +{ + + /* This section defines some settings for our + * main application window, such as size and + * position. + */ + + window: + { + title = "My Application"; + size = { /* width */ w = 640; /* height */ h = 480; }; + pos = { x = 350; y = 250; }; + }; + + a = 5; + b = 6; + ff = 1E6; + test-comment = "/* hello\n \"there\"*/"; + + test-long-string = "A very long string that spans multiple lines. " + /* but wait, there's more... */ "Adjacent strings are automatically" + " concatenated."; + + test-escaped-string = "\"This is\n a test.\""; + + group1: + { + x = 5; y = 10; + my_array = [ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 ]; + flag = TRUE; + + group2: { zzz = "this is a test"; }; + + states = [ "CT", // Connecticut + "CA", // California + "TX", // Texas + "NV", // Nevada + "FL" // Florida + ]; + }; + + /* this would cause an error */ + // a = "hi!"; +}; + +binary = [ 0xAA, 0xBB, 0xCC ]; + +list = ( ( "abc", 123, true ), 1.234, ( /* an empty list */ ) ,[ 1, 2, 3 ], + { a = (1, 2, true); } ); + +books = ( "inventory", + { title = "Treasure Island"; + author = "Robert Louis Stevenson"; + price = 29.99; + qty = 5; }, + { title = "Snow Crash"; + author = "Neal Stephenson"; + price = 9.99; + qty = 8; }, + { } ); + +# miscellaneous stuff + +misc: +{ + port = 5000; + pi = 3.14159265; + enabled = FALSE; + mask = 0xAABBCCDD; + unicode = "Markus Kuhn [ˈmaʳkÊŠs kuËn]"; // UTF-8 string + bigint = 9223372036854775807L; + bighex = 0x1122334455667788L; +}; + + +### eof diff --git a/coregrade/src/libconfig-1.3.1/samples/c/.deps/sample1.Po b/coregrade/src/libconfig-1.3.1/samples/c/.deps/sample1.Po new file mode 100644 index 0000000..634bc75 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/samples/c/.deps/sample1.Po @@ -0,0 +1,41 @@ +sample1.o: sample1.c /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + ../../libconfig.h + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +../../libconfig.h: diff --git a/coregrade/src/libconfig-1.3.1/samples/c/.deps/sample2.Po b/coregrade/src/libconfig-1.3.1/samples/c/.deps/sample2.Po new file mode 100644 index 0000000..7df6a6d --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/samples/c/.deps/sample2.Po @@ -0,0 +1,41 @@ +sample2.o: sample2.c /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + ../../libconfig.h + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +../../libconfig.h: diff --git a/coregrade/src/libconfig-1.3.1/samples/c/.deps/sample3.Po b/coregrade/src/libconfig-1.3.1/samples/c/.deps/sample3.Po new file mode 100644 index 0000000..ef73cbc --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/samples/c/.deps/sample3.Po @@ -0,0 +1,41 @@ +sample3.o: sample3.c /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + ../../libconfig.h + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +../../libconfig.h: diff --git a/coregrade/src/libconfig-1.3.1/samples/c/.deps/stub.Po b/coregrade/src/libconfig-1.3.1/samples/c/.deps/stub.Po new file mode 100644 index 0000000..0b3e9fe --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/samples/c/.deps/stub.Po @@ -0,0 +1,77 @@ +stub.o: stub.c /usr/include/stdio.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stddef.h \ + /usr/include/bits/types.h /usr/include/bits/typesizes.h \ + /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \ + /usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stdarg.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/byteswap.h \ + /usr/include/sys/types.h /usr/include/time.h /usr/include/sys/select.h \ + /usr/include/bits/select.h /usr/include/bits/sigset.h \ + /usr/include/bits/time.h /usr/include/sys/sysmacros.h \ + /usr/include/bits/pthreadtypes.h /usr/include/alloca.h ../../libconfig.h + +/usr/include/stdio.h: + +/usr/include/features.h: + +/usr/include/sys/cdefs.h: + +/usr/include/bits/wordsize.h: + +/usr/include/gnu/stubs.h: + +/usr/include/gnu/stubs-64.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stddef.h: + +/usr/include/bits/types.h: + +/usr/include/bits/typesizes.h: + +/usr/include/libio.h: + +/usr/include/_G_config.h: + +/usr/include/wchar.h: + +/usr/lib/gcc/x86_64-redhat-linux/4.4.6/include/stdarg.h: + +/usr/include/bits/stdio_lim.h: + +/usr/include/bits/sys_errlist.h: + +/usr/include/stdlib.h: + +/usr/include/bits/waitflags.h: + +/usr/include/bits/waitstatus.h: + +/usr/include/endian.h: + +/usr/include/bits/endian.h: + +/usr/include/bits/byteswap.h: + +/usr/include/sys/types.h: + +/usr/include/time.h: + +/usr/include/sys/select.h: + +/usr/include/bits/select.h: + +/usr/include/bits/sigset.h: + +/usr/include/bits/time.h: + +/usr/include/sys/sysmacros.h: + +/usr/include/bits/pthreadtypes.h: + +/usr/include/alloca.h: + +../../libconfig.h: diff --git a/coregrade/src/libconfig-1.3.1/samples/c/Makefile.am b/coregrade/src/libconfig-1.3.1/samples/c/Makefile.am new file mode 100644 index 0000000..8664b48 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/samples/c/Makefile.am @@ -0,0 +1,15 @@ + +noinst_PROGRAMS = stub sample1 sample2 sample3 + +stub_SOURCES = stub.c + +sample1_SOURCES = sample1.c + +sample2_SOURCES = sample2.c + +sample3_SOURCES = sample3.c + +AM_CPPFLAGS = -I $(top_srcdir) + +LDADD = -L../../.libs -lconfig + diff --git a/coregrade/src/libconfig-1.3.1/samples/c/Makefile.in b/coregrade/src/libconfig-1.3.1/samples/c/Makefile.in new file mode 100644 index 0000000..1aaf2be --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/samples/c/Makefile.in @@ -0,0 +1,478 @@ +# Makefile.in generated by automake 1.10.1 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +pkgdatadir = $(datadir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +noinst_PROGRAMS = stub$(EXEEXT) sample1$(EXEEXT) sample2$(EXEEXT) \ + sample3$(EXEEXT) +subdir = samples/c +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs +CONFIG_HEADER = $(top_builddir)/ac_config.h +CONFIG_CLEAN_FILES = +PROGRAMS = $(noinst_PROGRAMS) +am_sample1_OBJECTS = sample1.$(OBJEXT) +sample1_OBJECTS = $(am_sample1_OBJECTS) +sample1_LDADD = $(LDADD) +sample1_DEPENDENCIES = +am_sample2_OBJECTS = sample2.$(OBJEXT) +sample2_OBJECTS = $(am_sample2_OBJECTS) +sample2_LDADD = $(LDADD) +sample2_DEPENDENCIES = +am_sample3_OBJECTS = sample3.$(OBJEXT) +sample3_OBJECTS = $(am_sample3_OBJECTS) +sample3_LDADD = $(LDADD) +sample3_DEPENDENCIES = +am_stub_OBJECTS = stub.$(OBJEXT) +stub_OBJECTS = $(am_stub_OBJECTS) +stub_LDADD = $(LDADD) +stub_DEPENDENCIES = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ + $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ + $(LDFLAGS) -o $@ +SOURCES = $(sample1_SOURCES) $(sample2_SOURCES) $(sample3_SOURCES) \ + $(stub_SOURCES) +DIST_SOURCES = $(sample1_SOURCES) $(sample2_SOURCES) \ + $(sample3_SOURCES) $(stub_SOURCES) +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +F77 = @F77@ +FFLAGS = @FFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LEX = @LEX@ +LEXLIB = @LEXLIB@ +LEX_OUTPUT_ROOT = @LEX_OUTPUT_ROOT@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +YACC = @YACC@ +YFLAGS = @YFLAGS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_F77 = @ac_ct_F77@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +stub_SOURCES = stub.c +sample1_SOURCES = sample1.c +sample2_SOURCES = sample2.c +sample3_SOURCES = sample3.c +AM_CPPFLAGS = -I $(top_srcdir) +LDADD = -L../../.libs -lconfig +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu samples/c/Makefile'; \ + cd $(top_srcdir) && \ + $(AUTOMAKE) --gnu samples/c/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; for p in $$list; do \ + f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f $$p $$f"; \ + rm -f $$p $$f ; \ + done +sample1$(EXEEXT): $(sample1_OBJECTS) $(sample1_DEPENDENCIES) + @rm -f sample1$(EXEEXT) + $(LINK) $(sample1_OBJECTS) $(sample1_LDADD) $(LIBS) +sample2$(EXEEXT): $(sample2_OBJECTS) $(sample2_DEPENDENCIES) + @rm -f sample2$(EXEEXT) + $(LINK) $(sample2_OBJECTS) $(sample2_LDADD) $(LIBS) +sample3$(EXEEXT): $(sample3_OBJECTS) $(sample3_DEPENDENCIES) + @rm -f sample3$(EXEEXT) + $(LINK) $(sample3_OBJECTS) $(sample3_LDADD) $(LIBS) +stub$(EXEEXT): $(stub_OBJECTS) $(stub_DEPENDENCIES) + @rm -f stub$(EXEEXT) + $(LINK) $(stub_OBJECTS) $(stub_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sample1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sample2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sample3.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stub.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$tags $$unique; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + tags=; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$tags$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$tags $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && cd $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) $$here + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ + fi; \ + cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ + else \ + test -f $(distdir)/$$file \ + || cp -p $$d/$$file $(distdir)/$$file \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + `test -z '$(STRIP)' || \ + echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-exec-am: + +install-html: install-html-am + +install-info: install-info-am + +install-man: + +install-pdf: install-pdf-am + +install-ps: install-ps-am + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstPROGRAMS ctags distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ + pdf pdf-am ps ps-am tags uninstall uninstall-am + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/coregrade/src/libconfig-1.3.1/samples/c/sample1.c b/coregrade/src/libconfig-1.3.1/samples/c/sample1.c new file mode 100644 index 0000000..b3c852f --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/samples/c/sample1.c @@ -0,0 +1,55 @@ +/************************************************************************* + ** Sample1 + ** Load sample.cfg and increment the "X" setting + *************************************************************************/ + +#include +#include + +struct config_t cfg; + +/***************************************************************************/ + +int main() +{ + /* Initialize the configuration */ + config_init(&cfg); + + /* Load the file */ + printf("loading [sample.cfg].."); + if (!config_read_file(&cfg, "sample.cfg")) + printf("failed\n"); + else + { + config_setting_t *setting = NULL; + + printf("ok\n"); + + /* Get the "x" setting from the configuration.. */ + printf("increment \"x\".."); + setting = config_lookup(&cfg, "x"); + if (!setting) + printf("failed\n"); + else + { + long x = config_setting_get_int(setting); + x++; + config_setting_set_int(setting, x); + printf("ok (x=%lu)\n", x); + + /* Save the changes */ + printf("saving [sample.cfg].."); + config_write_file(&cfg, "sample.cfg"); + printf("ok\n"); + + printf("Done!\n"); + } + } + + /* Free the configuration */ + config_destroy(&cfg); + + return 0; +} + +/***************************************************************************/ diff --git a/coregrade/src/libconfig-1.3.1/samples/c/sample2.c b/coregrade/src/libconfig-1.3.1/samples/c/sample2.c new file mode 100644 index 0000000..09c45de --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/samples/c/sample2.c @@ -0,0 +1,52 @@ +/************************************************************************* + ** Sample2 + ** Load sample.cfg and access the "values" array + *************************************************************************/ + +#include +#include + +struct config_t cfg; + +/***************************************************************************/ + +int main() +{ + /* Initialize the configuration */ + config_init(&cfg); + + /* Load the file */ + printf("loading [sample.cfg].."); + if (!config_read_file(&cfg, "sample.cfg")) + printf("failed\n"); + else + { + config_setting_t *array = NULL; + + printf("ok\n"); + + /* Display the "values" array */ + printf("display \"values\".."); + array = config_lookup(&cfg, "values"); + if (!array) + printf("failed\n"); + else + { + long value1,value2; + value1 = config_setting_get_int_elem(array, 0); + value2 = config_setting_get_int_elem(array, 1); + printf("[%lu %lu]..ok\n", value1, value2); + + printf("Done!\n"); + } + + } + + /* Free the configuration */ + config_destroy(&cfg); + + return 0; +} + + +/***************************************************************************/ diff --git a/coregrade/src/libconfig-1.3.1/samples/c/sample3.c b/coregrade/src/libconfig-1.3.1/samples/c/sample3.c new file mode 100644 index 0000000..22f5f36 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/samples/c/sample3.c @@ -0,0 +1,104 @@ +/************************************************************************* + ** Sample3 + ** Load sample.cfg and try to add a setting "foo".. + ** on success save to testfoo.cfg + *************************************************************************/ + +#include +#include + +/***************************************************************************/ + +/* + */ + +int print_path(config_setting_t *setting) +{ + if(setting) + { + const char *name = config_setting_name(setting); + + if(print_path(config_setting_parent(setting))) + putchar('.'); + + if(! config_setting_is_root(setting)) + { + if(! name) + printf("[%d]", config_setting_index(setting)); + else + printf(name); + + return(1); + } + } + + return(0); +} + +/* + */ + +int main() +{ + struct config_t cfg; + config_setting_t *setting = NULL; + int i; + + do + { + /* Initialize the configuration */ + config_init(&cfg); + + /* Load the file */ + printf("loading [sample.cfg]..."); + if (!config_read_file(&cfg, "sample.cfg")) + { + puts("failed"); + break; + } + + puts("ok"); + + /* Add setting "foo" */ + printf("add setting \"foo\"..."); + setting = config_setting_add(cfg.root, "foo", CONFIG_TYPE_INT); + if (!setting) + { + puts("failed"); + break; + } + + config_setting_set_int(setting, 1234); + puts("ok"); + + /** Look up an array element */ + printf("looking up array element..."); + setting = config_lookup(&cfg, "arrays.values.[0]"); + if(! setting) + { + puts("failed"); + break; + } + + printf("value is: %d\n", config_setting_get_int(setting)); + printf("path is: "); + print_path(setting); + putchar('\n'); + + /* Save to "samplefoo.cfg" */ + printf("saving [samplefoo.cfg]..."); + config_write_file(&cfg, "samplefoo.cfg"); + puts("ok"); + + puts("Done!"); + } + while(0); + + /* Free the configuration */ + config_destroy(&cfg); + + return 0; +} + + +/***************************************************************************/ diff --git a/coregrade/src/libconfig-1.3.1/samples/c/stub.c b/coregrade/src/libconfig-1.3.1/samples/c/stub.c new file mode 100644 index 0000000..450b49e --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/samples/c/stub.c @@ -0,0 +1,86 @@ +#ifdef _MSC_VER +#pragma warning (disable: 4996) +#endif + +#include +#include +#include "libconfig.h" + +int main(int argc, char **argv) +{ + config_t cfg; + FILE *fp; + int i, x; + const char *s; + const config_setting_t *array; + config_setting_t *old; + + fp = fopen("test.cfg", "rb"); + + if(! fp) + { + printf("Unable to open test.cfg\n"); + exit(1); + } + + config_init(&cfg); + x = config_read(&cfg, fp); + + fclose(fp); + + if(! x) + { + printf("error on line %d: %s\n", cfg.error_line, cfg.error_text); + exit(1); + } + + s = config_lookup_string(&cfg, "application.group1.group2.zzz"); + + if(! s) + puts("NOT FOUND"); + else + printf("found: %s\n", s); + + array = config_lookup(&cfg, "application.group1.my_array"); + if(array) + { + for(i = 0; i < config_setting_length(array); i++) + { + long val = config_setting_get_int_elem(array, i); + printf("value [%i]: %ld\n", i, val); + } + } + + { + config_setting_t *root = config_root_setting(&cfg); + + config_setting_t *new = config_setting_add(root, "foobar", + CONFIG_TYPE_LIST); + + config_setting_t *newgrp, *newval; + + + if(! config_setting_set_float_elem(new, -1, 3.141592654)) + puts("FAILED"); + + if(! config_setting_set_string_elem(new, -1, "Hello, world!")) + puts("FAILED"); + + newgrp = config_setting_add(new, NULL, CONFIG_TYPE_GROUP); + + newval = config_setting_add(newgrp, "baz", CONFIG_TYPE_INT); + + old = config_lookup(&cfg, "application.group1"); + + printf("old is: %p\n", old); + config_setting_remove(old, "group2"); + } + + config_write(&cfg, stdout); + + + config_destroy(&cfg); + + + return(0); +} diff --git a/coregrade/src/libconfig-1.3.1/scanner.c b/coregrade/src/libconfig-1.3.1/scanner.c new file mode 100644 index 0000000..048ea50 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/scanner.c @@ -0,0 +1,2366 @@ +#line 2 "scanner.c" + +#line 4 "scanner.c" + +#define YY_INT_ALIGNED short int + +/* A lexical scanner generated by flex */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 5 +#define YY_FLEX_SUBMINOR_VERSION 35 +#if YY_FLEX_SUBMINOR_VERSION > 0 +#define FLEX_BETA +#endif + +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ +#include +#include +#include +#include + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have . Non-C99 systems may or may not. */ + +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +typedef int flex_int32_t; +typedef unsigned char flex_uint8_t; +typedef unsigned short int flex_uint16_t; +typedef unsigned int flex_uint32_t; +#endif /* ! C99 */ + +/* Limits of integral types. */ +#ifndef INT8_MIN +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#endif /* ! FLEXINT_H */ + +#ifdef __cplusplus + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +/* C99 requires __STDC__ to be defined as 1. */ +#if defined (__STDC__) + +#define YY_USE_CONST + +#endif /* defined (__STDC__) */ +#endif /* ! __cplusplus */ + +#ifdef YY_USE_CONST +#define yyconst const +#else +#define yyconst +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. + */ +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) + +/* An opaque pointer. */ +#ifndef YY_TYPEDEF_YY_SCANNER_T +#define YY_TYPEDEF_YY_SCANNER_T +typedef void* yyscan_t; +#endif + +/* For convenience, these vars (plus the bison vars far below) + are macros in the reentrant scanner. */ +#define yyin yyg->yyin_r +#define yyout yyg->yyout_r +#define yyextra yyg->yyextra_r +#define yyleng yyg->yyleng_r +#define yytext yyg->yytext_r +#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno) +#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column) +#define yy_flex_debug yyg->yy_flex_debug_r + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN yyg->yy_start = 1 + 2 * + +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START ((yyg->yy_start - 1) / 2) +#define YYSTATE YY_START + +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE libconfig_yyrestart(yyin ,yyscanner ) + +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#ifndef YY_BUF_SIZE +#define YY_BUF_SIZE 16384 +#endif + +/* The state buf must be large enough to hold one state per character in the main buffer. + */ +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + + /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires + * access to the local variable yy_act. Since yyless() is a macro, it would break + * existing scanners that call yyless() from OUTSIDE libconfig_yylex. + * One obvious solution it to make yy_act a global. I tried that, and saw + * a 5% performance hit in a non-yylineno scanner, because yy_act is + * normally declared as a register variable-- so it is not worth it. + */ + #define YY_LESS_LINENO(n) \ + do { \ + int yyl;\ + for ( yyl = n; yyl < yyleng; ++yyl )\ + if ( yytext[yyl] == '\n' )\ + --yylineno;\ + }while(0) + +/* Return all but the first "n" matched characters back to the input stream. */ +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + *yy_cp = yyg->yy_hold_char; \ + YY_RESTORE_YY_MORE_OFFSET \ + yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } \ + while ( 0 ) + +#define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state + { + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + yy_size_t yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + int yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; + +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via libconfig_yyrestart()), so that the user can continue scanning by + * just pointing yyin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + + }; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + * + * Returns the top of the stack, or NULL. + */ +#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \ + ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \ + : NULL) + +/* Same as previous macro, but useful when we know that the buffer stack is not + * NULL or when we need an lvalue. For internal use only. + */ +#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] + +void libconfig_yyrestart (FILE *input_file ,yyscan_t yyscanner ); +void libconfig_yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); +YY_BUFFER_STATE libconfig_yy_create_buffer (FILE *file,int size ,yyscan_t yyscanner ); +void libconfig_yy_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); +void libconfig_yy_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); +void libconfig_yypush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); +void libconfig_yypop_buffer_state (yyscan_t yyscanner ); + +static void libconfig_yyensure_buffer_stack (yyscan_t yyscanner ); +static void libconfig_yy_load_buffer_state (yyscan_t yyscanner ); +static void libconfig_yy_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner ); + +#define YY_FLUSH_BUFFER libconfig_yy_flush_buffer(YY_CURRENT_BUFFER ,yyscanner) + +YY_BUFFER_STATE libconfig_yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner ); +YY_BUFFER_STATE libconfig_yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner ); +YY_BUFFER_STATE libconfig_yy_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner ); + +void *libconfig_yyalloc (yy_size_t ,yyscan_t yyscanner ); +void *libconfig_yyrealloc (void *,yy_size_t ,yyscan_t yyscanner ); +void libconfig_yyfree (void * ,yyscan_t yyscanner ); + +#define yy_new_buffer libconfig_yy_create_buffer + +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! YY_CURRENT_BUFFER ){ \ + libconfig_yyensure_buffer_stack (yyscanner); \ + YY_CURRENT_BUFFER_LVALUE = \ + libconfig_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + } + +#define yy_set_bol(at_bol) \ + { \ + if ( ! YY_CURRENT_BUFFER ){\ + libconfig_yyensure_buffer_stack (yyscanner); \ + YY_CURRENT_BUFFER_LVALUE = \ + libconfig_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + } + +#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) + +#define libconfig_yywrap(n) 1 +#define YY_SKIP_YYWRAP + +typedef unsigned char YY_CHAR; + +typedef int yy_state_type; + +#define yytext_ptr yytext_r + +static yy_state_type yy_get_previous_state (yyscan_t yyscanner ); +static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner); +static int yy_get_next_buffer (yyscan_t yyscanner ); +static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner ); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up yytext. + */ +#define YY_DO_BEFORE_ACTION \ + yyg->yytext_ptr = yy_bp; \ + yyleng = (size_t) (yy_cp - yy_bp); \ + yyg->yy_hold_char = *yy_cp; \ + *yy_cp = '\0'; \ + yyg->yy_c_buf_p = yy_cp; + +#define YY_NUM_RULES 26 +#define YY_END_OF_BUFFER 27 +/* This struct is not used in this scanner, + but its presence is necessary. */ +struct yy_trans_info + { + flex_int32_t yy_verify; + flex_int32_t yy_nxt; + }; +static yyconst flex_int16_t yy_accept[117] = + { 0, + 0, 0, 0, 0, 27, 25, 5, 5, 25, 25, + 21, 22, 12, 25, 7, 13, 25, 14, 14, 6, + 23, 12, 12, 19, 20, 8, 9, 3, 4, 3, + 5, 0, 18, 0, 0, 24, 12, 13, 14, 13, + 0, 1, 0, 13, 0, 15, 0, 12, 12, 2, + 0, 0, 0, 0, 0, 13, 13, 0, 0, 13, + 15, 16, 12, 12, 0, 18, 0, 0, 0, 0, + 0, 13, 17, 12, 10, 0, 0, 17, 11, 0, + 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, + 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, + + 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, + 0, 18, 0, 0, 0, 0 + } ; + +static yyconst flex_int32_t yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 1, 4, 5, 1, 1, 1, 1, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, + 15, 15, 15, 15, 15, 15, 15, 16, 17, 1, + 18, 1, 1, 1, 19, 20, 20, 20, 21, 22, + 23, 23, 23, 23, 23, 24, 23, 23, 23, 23, + 23, 25, 26, 27, 28, 23, 23, 29, 23, 23, + 30, 31, 32, 1, 33, 1, 19, 20, 20, 20, + + 21, 22, 23, 23, 23, 23, 23, 34, 23, 23, + 23, 23, 23, 25, 26, 27, 28, 23, 23, 29, + 23, 23, 35, 1, 36, 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, 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, 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, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 + } ; + +static yyconst flex_int32_t yy_meta[37] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, + 2, 1, 1, 3, 3, 1, 1, 1, 3, 3, + 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, + 1, 1, 2, 2, 1, 1 + } ; + +static yyconst flex_int16_t yy_base[128] = + { 0, + 0, 0, 34, 35, 199, 503, 37, 42, 37, 195, + 503, 503, 0, 34, 503, 36, 39, 57, 41, 503, + 503, 163, 150, 503, 503, 503, 503, 503, 503, 152, + 56, 56, 71, 160, 151, 503, 0, 49, 68, 76, + 84, 503, 150, 86, 94, 128, 0, 43, 118, 503, + 108, 57, 125, 106, 101, 103, 108, 116, 118, 120, + 503, 102, 98, 99, 75, 134, 101, 99, 138, 88, + 130, 134, 70, 64, 0, 58, 142, 503, 0, 154, + 166, 156, 158, 164, 172, 202, 177, 170, 180, 181, + 178, 214, 244, 256, 286, 189, 220, 316, 328, 192, + + 206, 218, 231, 340, 262, 222, 264, 229, 352, 382, + 412, 442, 270, 294, 358, 503, 473, 476, 479, 481, + 51, 484, 487, 490, 493, 496, 499 + } ; + +static yyconst flex_int16_t yy_def[128] = + { 0, + 116, 1, 117, 117, 116, 116, 116, 116, 118, 119, + 116, 116, 120, 116, 116, 116, 116, 116, 116, 116, + 116, 120, 120, 116, 116, 116, 116, 116, 116, 116, + 116, 118, 116, 118, 119, 116, 120, 116, 116, 116, + 116, 116, 119, 116, 116, 116, 121, 120, 120, 116, + 116, 122, 123, 116, 116, 116, 116, 116, 116, 116, + 116, 121, 120, 120, 122, 116, 122, 123, 116, 124, + 116, 116, 116, 120, 120, 124, 124, 116, 120, 124, + 124, 125, 126, 124, 125, 124, 125, 125, 126, 126, + 124, 125, 126, 125, 125, 127, 125, 126, 124, 127, + + 126, 126, 127, 126, 127, 127, 125, 126, 127, 127, + 125, 127, 127, 127, 127, 0, 116, 116, 116, 116, + 116, 116, 116, 116, 116, 116, 116 + } ; + +static yyconst flex_int16_t yy_nxt[540] = + { 0, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 14, 16, 17, 18, 19, 20, 21, 20, 13, 13, + 13, 22, 13, 13, 13, 13, 23, 13, 13, 24, + 6, 25, 6, 13, 26, 27, 29, 29, 31, 31, + 33, 30, 30, 31, 31, 38, 42, 39, 39, 40, + 40, 43, 44, 62, 39, 39, 41, 31, 31, 33, + 66, 45, 40, 40, 46, 77, 63, 34, 44, 41, + 39, 39, 51, 51, 52, 53, 63, 45, 66, 44, + 46, 39, 39, 54, 79, 47, 34, 67, 45, 40, + 40, 46, 55, 78, 55, 77, 41, 56, 56, 57, + + 57, 69, 59, 116, 59, 67, 58, 60, 60, 51, + 51, 52, 53, 70, 56, 56, 56, 56, 53, 75, + 54, 57, 57, 74, 71, 73, 71, 69, 58, 72, + 72, 60, 60, 60, 60, 51, 51, 52, 53, 51, + 51, 52, 53, 72, 72, 64, 54, 72, 72, 77, + 54, 61, 36, 36, 80, 81, 81, 82, 83, 86, + 80, 77, 116, 87, 50, 90, 84, 81, 81, 82, + 83, 91, 76, 77, 49, 86, 83, 87, 84, 87, + 86, 48, 80, 80, 87, 77, 88, 90, 90, 92, + 80, 92, 104, 93, 92, 104, 105, 36, 116, 105, + + 116, 116, 88, 81, 81, 82, 83, 88, 80, 77, + 116, 116, 116, 90, 84, 94, 94, 95, 96, 106, + 80, 87, 106, 86, 80, 108, 97, 107, 116, 105, + 101, 80, 96, 92, 104, 116, 90, 116, 105, 116, + 116, 93, 116, 116, 88, 98, 99, 100, 101, 116, + 88, 90, 116, 116, 116, 116, 102, 94, 94, 95, + 96, 106, 116, 87, 92, 104, 116, 86, 97, 105, + 116, 87, 92, 104, 109, 116, 92, 105, 116, 116, + 116, 116, 116, 116, 116, 116, 88, 94, 94, 95, + 96, 116, 106, 87, 88, 116, 92, 104, 97, 116, + + 106, 115, 116, 116, 116, 116, 113, 116, 116, 116, + 116, 116, 116, 116, 116, 116, 88, 98, 99, 100, + 101, 116, 116, 90, 106, 116, 116, 116, 102, 81, + 81, 82, 83, 116, 116, 77, 116, 116, 116, 116, + 84, 98, 99, 100, 101, 116, 116, 90, 116, 116, + 116, 116, 102, 110, 111, 112, 113, 116, 116, 105, + 92, 104, 116, 116, 114, 105, 116, 116, 116, 116, + 109, 116, 116, 116, 116, 116, 116, 116, 116, 116, + 116, 116, 106, 110, 111, 112, 113, 116, 106, 105, + 116, 116, 116, 116, 114, 116, 116, 116, 116, 116, + + 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, + 116, 116, 106, 94, 94, 95, 96, 116, 116, 87, + 116, 116, 116, 116, 97, 116, 116, 116, 116, 116, + 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, + 116, 116, 88, 110, 111, 112, 113, 116, 116, 105, + 116, 116, 116, 116, 114, 116, 116, 116, 116, 116, + 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, + 116, 116, 106, 28, 28, 28, 32, 32, 32, 35, + 35, 35, 37, 37, 65, 65, 65, 68, 68, 68, + 76, 76, 76, 85, 85, 85, 89, 89, 89, 103, + + 103, 103, 5, 116, 116, 116, 116, 116, 116, 116, + 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, + 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, + 116, 116, 116, 116, 116, 116, 116, 116, 116 + } ; + +static yyconst flex_int16_t yy_chk[540] = + { 0, + 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, 3, 4, 7, 7, + 9, 3, 4, 8, 8, 14, 17, 14, 14, 16, + 16, 17, 19, 121, 19, 19, 16, 31, 31, 32, + 52, 19, 38, 38, 19, 76, 48, 9, 18, 38, + 18, 18, 33, 33, 33, 33, 48, 18, 65, 39, + 18, 39, 39, 33, 74, 18, 32, 52, 39, 40, + 40, 39, 41, 73, 41, 70, 40, 41, 41, 44, + + 44, 68, 45, 67, 45, 65, 44, 45, 45, 51, + 51, 51, 51, 54, 55, 55, 56, 56, 54, 64, + 51, 57, 57, 63, 58, 62, 58, 53, 57, 58, + 58, 59, 59, 60, 60, 66, 66, 66, 66, 69, + 69, 69, 69, 71, 71, 49, 66, 72, 72, 77, + 69, 46, 43, 35, 77, 80, 80, 80, 80, 82, + 83, 80, 34, 82, 30, 83, 80, 81, 81, 81, + 81, 84, 88, 81, 23, 85, 84, 88, 81, 85, + 87, 22, 89, 90, 87, 91, 82, 89, 90, 87, + 91, 96, 96, 90, 100, 100, 96, 10, 5, 100, + + 0, 0, 85, 86, 86, 86, 86, 87, 101, 86, + 0, 0, 0, 101, 86, 92, 92, 92, 92, 96, + 102, 92, 100, 97, 106, 102, 92, 97, 0, 106, + 102, 108, 97, 103, 103, 0, 108, 0, 103, 0, + 0, 108, 0, 0, 92, 93, 93, 93, 93, 0, + 97, 93, 0, 0, 0, 0, 93, 94, 94, 94, + 94, 103, 0, 94, 105, 105, 0, 107, 94, 105, + 0, 107, 113, 113, 105, 0, 107, 113, 0, 0, + 0, 0, 0, 0, 0, 0, 94, 95, 95, 95, + 95, 0, 105, 95, 107, 0, 114, 114, 95, 0, + + 113, 114, 0, 0, 0, 0, 114, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 95, 98, 98, 98, + 98, 0, 0, 98, 114, 0, 0, 0, 98, 99, + 99, 99, 99, 0, 0, 99, 0, 0, 0, 0, + 99, 104, 104, 104, 104, 0, 0, 104, 0, 0, + 0, 0, 104, 109, 109, 109, 109, 0, 0, 109, + 115, 115, 0, 0, 109, 115, 0, 0, 0, 0, + 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 109, 110, 110, 110, 110, 0, 115, 110, + 0, 0, 0, 0, 110, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 110, 111, 111, 111, 111, 0, 0, 111, + 0, 0, 0, 0, 111, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 111, 112, 112, 112, 112, 0, 0, 112, + 0, 0, 0, 0, 112, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 112, 117, 117, 117, 118, 118, 118, 119, + 119, 119, 120, 120, 122, 122, 122, 123, 123, 123, + 124, 124, 124, 125, 125, 125, 126, 126, 126, 127, + + 127, 127, 116, 116, 116, 116, 116, 116, 116, 116, + 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, + 116, 116, 116, 116, 116, 116, 116, 116, 116, 116, + 116, 116, 116, 116, 116, 116, 116, 116, 116 + } ; + +/* Table of booleans, true if rule could match eol. */ +static yyconst flex_int32_t yy_rule_can_match_eol[27] = + { 0, +0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, }; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +#line 1 "scanner.l" +/* -*- mode: C -*- */ +/* -------------------------------------------------------------------------- + libconfig - A library for processing structured configuration files + Copyright (C) 2005-2008 Mark A Lindner + + This file is part of libconfig. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation; either version 2.1 of + the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, see + . + ---------------------------------------------------------------------------- +*/ +#line 25 "scanner.l" +#define YY_EXTRA_TYPE void* +#define YY_NO_UNISTD_H 1 +#line 38 "scanner.l" + +#ifdef _MSC_VER +#pragma warning (disable: 4996) +#endif + +#include +#include +#include +#include "grammar.h" +#include "wincompat.h" + +/* this is somewhat kludgy, but I wanted to avoid building strings + dynamically during scanning */ + +static char *make_string(char *s) +{ + char *r = ++s; + char *p, *q = r; + size_t len = strlen(r); + int esc = 0; + + *(r + --len) = 0; + + for(p = r; *p; p++) + { + if(*p == '\\') + { + if(! esc) + { + esc = 1; + continue; + } + } + + if(esc) + { + if(*p == 'n') + *(q++) = '\n'; + else if(*p == 'r') + *(q++) = '\r'; + else if(*p == 'f') + *(q++) = '\f'; + else if(*p == 't') + *(q++) = '\t'; + else + *(q++) = *p; + + esc = 0; + } + + else if(*p == '\"') /* if we reached the end of a string segment, ... */ + { + /* This construction allows for C-style string concatenation. + We don't bother to check for end-of-string here, as we depend + on the {string} definition to ensure a new opening quote exists. + We do, however, check for and discard all forms of comments + [that is, (#...$|//...$|[/][*]...[*][/])] between string segments. */ + + while (*++p != '\"') /* ... look for the start of the next segment */ + { + if(*p == '#') /* check for #...$ comment */ + { + while(*++p != '\n') + { + /* skip the rest of the line */ + } + } + else if (*p == '/') + { + if(*++p == '/') /* check for //...$ comment */ + { + while (*++p != '\n') + { + /* skip the rest of the line */ + } + } + else /* must be '*', lead-in to an old C-style comment */ + { + while (*++p != '*' || *(p+1) != '/') + { + /* skip all comment content */ + } + ++p; /* step to the trailing slash, to skip it as well */ + } + } + } + } + else + *(q++) = *p; + } + + *q = 0; + + return(r); +} + +static unsigned long long fromhex(const char *s) +{ +#ifdef __MINGW32__ + + // MinGW's strtoull() seems to be broken; it only returns the lower + // 32 bits... + + const char *p = s; + unsigned long long val = 0; + + if(*p != '0') + return(0); + + ++p; + + if(*p != 'x' && *p != 'X') + return(0); + + for(++p; isxdigit(*p); ++p) + { + val <<= 4; + val |= ((*p < 'A') ? (*p & 0xF) : (9 + (*p & 0x7))); + } + + return(val); + +#else // ! __MINGW32__ + + return(strtoull(s, NULL, 16)); + +#endif // __MINGW32__ +} + + +#line 762 "scanner.c" + +#define INITIAL 0 +#define COMMENT 1 + +#ifndef YY_NO_UNISTD_H +/* Special case for "unistd.h", since it is non-ANSI. We include it way + * down here because we want the user's section 1 to have been scanned first. + * The user has a chance to override it with an option. + */ +#include +#endif + +#ifndef YY_EXTRA_TYPE +#define YY_EXTRA_TYPE void * +#endif + +/* Holds the entire state of the reentrant scanner. */ +struct yyguts_t + { + + /* User-defined. Not touched by flex. */ + YY_EXTRA_TYPE yyextra_r; + + /* The rest are the same as the globals declared in the non-reentrant scanner. */ + FILE *yyin_r, *yyout_r; + size_t yy_buffer_stack_top; /**< index of top of stack. */ + size_t yy_buffer_stack_max; /**< capacity of stack. */ + YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */ + char yy_hold_char; + int yy_n_chars; + int yyleng_r; + char *yy_c_buf_p; + int yy_init; + int yy_start; + int yy_did_buffer_switch_on_eof; + int yy_start_stack_ptr; + int yy_start_stack_depth; + int *yy_start_stack; + yy_state_type yy_last_accepting_state; + char* yy_last_accepting_cpos; + + int yylineno_r; + int yy_flex_debug_r; + + char *yytext_r; + int yy_more_flag; + int yy_more_len; + + YYSTYPE * yylval_r; + + }; /* end struct yyguts_t */ + +static int yy_init_globals (yyscan_t yyscanner ); + + /* This must go here because YYSTYPE and YYLTYPE are included + * from bison output in section 1.*/ + # define yylval yyg->yylval_r + +int libconfig_yylex_init (yyscan_t* scanner); + +int libconfig_yylex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner); + +/* Accessor methods to globals. + These are made visible to non-reentrant scanners for convenience. */ + +int libconfig_yylex_destroy (yyscan_t yyscanner ); + +int libconfig_yyget_debug (yyscan_t yyscanner ); + +void libconfig_yyset_debug (int debug_flag ,yyscan_t yyscanner ); + +YY_EXTRA_TYPE libconfig_yyget_extra (yyscan_t yyscanner ); + +void libconfig_yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner ); + +FILE *libconfig_yyget_in (yyscan_t yyscanner ); + +void libconfig_yyset_in (FILE * in_str ,yyscan_t yyscanner ); + +FILE *libconfig_yyget_out (yyscan_t yyscanner ); + +void libconfig_yyset_out (FILE * out_str ,yyscan_t yyscanner ); + +int libconfig_yyget_leng (yyscan_t yyscanner ); + +char *libconfig_yyget_text (yyscan_t yyscanner ); + +int libconfig_yyget_lineno (yyscan_t yyscanner ); + +void libconfig_yyset_lineno (int line_number ,yyscan_t yyscanner ); + +YYSTYPE * libconfig_yyget_lval (yyscan_t yyscanner ); + +void libconfig_yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner ); + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int libconfig_yywrap (yyscan_t yyscanner ); +#else +extern int libconfig_yywrap (yyscan_t yyscanner ); +#endif +#endif + +#ifndef yytext_ptr +static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner); +#endif + +#ifndef YY_NO_INPUT + +#ifdef __cplusplus +static int yyinput (yyscan_t yyscanner ); +#else +static int input (yyscan_t yyscanner ); +#endif + +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#define YY_READ_BUF_SIZE 8192 +#endif + +/* Copy whatever the last rule matched to the standard output. */ +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO fwrite( yytext, yyleng, 1, yyout ) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ + { \ + int c = '*'; \ + unsigned n; \ + for ( n = 0; n < max_size && \ + (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ + if ( c == '\n' ) \ + buf[n++] = (char) c; \ + if ( c == EOF && ferror( yyin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + result = n; \ + } \ + else \ + { \ + errno=0; \ + while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(yyin); \ + } \ + }\ +\ + +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner) +#endif + +/* end tables serialization structures and prototypes */ + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL_IS_OURS 1 + +extern int libconfig_yylex \ + (YYSTYPE * yylval_param ,yyscan_t yyscanner); + +#define YY_DECL int libconfig_yylex \ + (YYSTYPE * yylval_param , yyscan_t yyscanner) +#endif /* !YY_DECL */ + +/* Code executed at the beginning of each rule, after yytext and yyleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +/** The main scanner function which does all the work. + */ +YY_DECL +{ + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + +#line 194 "scanner.l" + + +#line 997 "scanner.c" + + yylval = yylval_param; + + if ( !yyg->yy_init ) + { + yyg->yy_init = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! yyg->yy_start ) + yyg->yy_start = 1; /* first start state */ + + if ( ! yyin ) + yyin = stdin; + + if ( ! yyout ) + yyout = stdout; + + if ( ! YY_CURRENT_BUFFER ) { + libconfig_yyensure_buffer_stack (yyscanner); + YY_CURRENT_BUFFER_LVALUE = + libconfig_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); + } + + libconfig_yy_load_buffer_state(yyscanner ); + } + + while ( 1 ) /* loops until end-of-file is reached */ + { + yy_cp = yyg->yy_c_buf_p; + + /* Support of yytext. */ + *yy_cp = yyg->yy_hold_char; + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = yyg->yy_start; +yy_match: + do + { + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; + if ( yy_accept[yy_current_state] ) + { + yyg->yy_last_accepting_state = yy_current_state; + yyg->yy_last_accepting_cpos = yy_cp; + } + 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 >= 117 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + ++yy_cp; + } + while ( yy_base[yy_current_state] != 503 ); + +yy_find_action: + yy_act = yy_accept[yy_current_state]; + if ( yy_act == 0 ) + { /* have to back up */ + yy_cp = yyg->yy_last_accepting_cpos; + yy_current_state = yyg->yy_last_accepting_state; + yy_act = yy_accept[yy_current_state]; + } + + YY_DO_BEFORE_ACTION; + + if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] ) + { + int yyl; + for ( yyl = 0; yyl < yyleng; ++yyl ) + if ( yytext[yyl] == '\n' ) + + do{ yylineno++; + yycolumn=0; + }while(0) +; + } + +do_action: /* This label is used only to access EOF actions. */ + + switch ( yy_act ) + { /* beginning of action switch */ + case 0: /* must back up */ + /* undo the effects of YY_DO_BEFORE_ACTION */ + *yy_cp = yyg->yy_hold_char; + yy_cp = yyg->yy_last_accepting_cpos; + yy_current_state = yyg->yy_last_accepting_state; + goto yy_find_action; + +case 1: +YY_RULE_SETUP +#line 196 "scanner.l" +{ BEGIN COMMENT; } + YY_BREAK +case 2: +YY_RULE_SETUP +#line 197 "scanner.l" +{ BEGIN INITIAL; } + YY_BREAK +case 3: +YY_RULE_SETUP +#line 198 "scanner.l" +{ /* ignore */ } + YY_BREAK +case 4: +/* rule 4 can match eol */ +YY_RULE_SETUP +#line 199 "scanner.l" +{ } + YY_BREAK +case 5: +/* rule 5 can match eol */ +YY_RULE_SETUP +#line 201 "scanner.l" +{ /* skip */ } + YY_BREAK +case 6: +YY_RULE_SETUP +#line 203 "scanner.l" +{ return(TOK_EQUALS); } + YY_BREAK +case 7: +YY_RULE_SETUP +#line 204 "scanner.l" +{ return(TOK_COMMA); } + YY_BREAK +case 8: +YY_RULE_SETUP +#line 205 "scanner.l" +{ return(TOK_GROUP_START); } + YY_BREAK +case 9: +YY_RULE_SETUP +#line 206 "scanner.l" +{ return(TOK_GROUP_END); } + YY_BREAK +case 10: +YY_RULE_SETUP +#line 207 "scanner.l" +{ yylval->ival = 1; return(TOK_BOOLEAN); } + YY_BREAK +case 11: +YY_RULE_SETUP +#line 208 "scanner.l" +{ yylval->ival = 0; return(TOK_BOOLEAN); } + YY_BREAK +case 12: +YY_RULE_SETUP +#line 209 "scanner.l" +{ yylval->sval = strdup(yytext); return(TOK_NAME); } + YY_BREAK +case 13: +YY_RULE_SETUP +#line 210 "scanner.l" +{ yylval->fval = atof(yytext); return(TOK_FLOAT); } + YY_BREAK +case 14: +YY_RULE_SETUP +#line 211 "scanner.l" +{ yylval->ival = atoi(yytext); return(TOK_INTEGER); } + YY_BREAK +case 15: +YY_RULE_SETUP +#line 212 "scanner.l" +{ yylval->llval = atoll(yytext); return(TOK_INTEGER64); } + YY_BREAK +case 16: +YY_RULE_SETUP +#line 213 "scanner.l" +{ yylval->ival = strtoul(yytext, NULL, 16); return(TOK_HEX); } + YY_BREAK +case 17: +YY_RULE_SETUP +#line 214 "scanner.l" +{ yylval->llval = fromhex(yytext); return(TOK_HEX64); } + YY_BREAK +case 18: +/* rule 18 can match eol */ +YY_RULE_SETUP +#line 215 "scanner.l" +{ yylval->sval = strdup(make_string(yytext)); return(TOK_STRING); } + YY_BREAK +case 19: +YY_RULE_SETUP +#line 216 "scanner.l" +{ return(TOK_ARRAY_START); } + YY_BREAK +case 20: +YY_RULE_SETUP +#line 217 "scanner.l" +{ return(TOK_ARRAY_END); } + YY_BREAK +case 21: +YY_RULE_SETUP +#line 218 "scanner.l" +{ return(TOK_LIST_START); } + YY_BREAK +case 22: +YY_RULE_SETUP +#line 219 "scanner.l" +{ return(TOK_LIST_END); } + YY_BREAK +case 23: +YY_RULE_SETUP +#line 220 "scanner.l" +{ return(TOK_END); } + YY_BREAK +case 24: +*yy_cp = yyg->yy_hold_char; /* undo effects of setting up yytext */ +yyg->yy_c_buf_p = yy_cp -= 1; +YY_DO_BEFORE_ACTION; /* set up yytext again */ +YY_RULE_SETUP +#line 221 "scanner.l" +{ /* ignore */ } + YY_BREAK +case 25: +YY_RULE_SETUP +#line 222 "scanner.l" +{ return(TOK_GARBAGE); } + YY_BREAK +case 26: +YY_RULE_SETUP +#line 223 "scanner.l" +ECHO; + YY_BREAK +#line 1230 "scanner.c" +case YY_STATE_EOF(INITIAL): +case YY_STATE_EOF(COMMENT): + yyterminate(); + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = yyg->yy_hold_char; + YY_RESTORE_YY_MORE_OFFSET + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed yyin at a new source and called + * libconfig_yylex(). If so, then we have to assure + * consistency between YY_CURRENT_BUFFER and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( yyscanner ); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner); + + yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++yyg->yy_c_buf_p; + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = yyg->yy_c_buf_p; + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer( yyscanner ) ) + { + case EOB_ACT_END_OF_FILE: + { + yyg->yy_did_buffer_switch_on_eof = 0; + + if ( libconfig_yywrap(yyscanner ) ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * yytext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! yyg->yy_did_buffer_switch_on_eof ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + yyg->yy_c_buf_p = + yyg->yytext_ptr + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( yyscanner ); + + yy_cp = yyg->yy_c_buf_p; + yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + yyg->yy_c_buf_p = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]; + + yy_current_state = yy_get_previous_state( yyscanner ); + + yy_cp = yyg->yy_c_buf_p; + yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ +} /* end of libconfig_yylex */ + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ +static int yy_get_next_buffer (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + register char *source = yyg->yytext_ptr; + register int number_to_move, i; + int ret_val; + + if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1; + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0; + + else + { + int num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + + int yy_c_buf_p_offset = + (int) (yyg->yy_c_buf_p - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + int new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + libconfig_yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = 0; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + + yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + number_to_move - 1; + + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), + yyg->yy_n_chars, (size_t) num_to_read ); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; + } + + if ( yyg->yy_n_chars == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + libconfig_yyrestart(yyin ,yyscanner); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + /* Extend the array by 50%, plus the number we really need. */ + yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) libconfig_yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner ); + if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); + } + + yyg->yy_n_chars += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; + + yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + + return ret_val; +} + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + + static yy_state_type yy_get_previous_state (yyscan_t yyscanner) +{ + register yy_state_type yy_current_state; + register char *yy_cp; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + yy_current_state = yyg->yy_start; + + for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) + { + register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + if ( yy_accept[yy_current_state] ) + { + yyg->yy_last_accepting_state = yy_current_state; + yyg->yy_last_accepting_cpos = yy_cp; + } + 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 >= 117 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + } + + return yy_current_state; +} + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ + static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner) +{ + register int yy_is_jam; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */ + register char *yy_cp = yyg->yy_c_buf_p; + + register YY_CHAR yy_c = 1; + if ( yy_accept[yy_current_state] ) + { + yyg->yy_last_accepting_state = yy_current_state; + yyg->yy_last_accepting_cpos = yy_cp; + } + 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 >= 117 ) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + yy_is_jam = (yy_current_state == 116); + + return yy_is_jam ? 0 : yy_current_state; +} + +#ifndef YY_NO_INPUT +#ifdef __cplusplus + static int yyinput (yyscan_t yyscanner) +#else + static int input (yyscan_t yyscanner) +#endif + +{ + int c; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + *yyg->yy_c_buf_p = yyg->yy_hold_char; + + if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) + /* This was really a NUL. */ + *yyg->yy_c_buf_p = '\0'; + + else + { /* need more input */ + int offset = yyg->yy_c_buf_p - yyg->yytext_ptr; + ++yyg->yy_c_buf_p; + + switch ( yy_get_next_buffer( yyscanner ) ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + libconfig_yyrestart(yyin ,yyscanner); + + /*FALLTHROUGH*/ + + case EOB_ACT_END_OF_FILE: + { + if ( libconfig_yywrap(yyscanner ) ) + return EOF; + + if ( ! yyg->yy_did_buffer_switch_on_eof ) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput(yyscanner); +#else + return input(yyscanner); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + yyg->yy_c_buf_p = yyg->yytext_ptr + offset; + break; + } + } + } + + c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */ + *yyg->yy_c_buf_p = '\0'; /* preserve yytext */ + yyg->yy_hold_char = *++yyg->yy_c_buf_p; + + if ( c == '\n' ) + + do{ yylineno++; + yycolumn=0; + }while(0) +; + + return c; +} +#endif /* ifndef YY_NO_INPUT */ + +/** Immediately switch to a different input stream. + * @param input_file A readable stream. + * @param yyscanner The scanner object. + * @note This function does not reset the start condition to @c INITIAL . + */ + void libconfig_yyrestart (FILE * input_file , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + if ( ! YY_CURRENT_BUFFER ){ + libconfig_yyensure_buffer_stack (yyscanner); + YY_CURRENT_BUFFER_LVALUE = + libconfig_yy_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); + } + + libconfig_yy_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner); + libconfig_yy_load_buffer_state(yyscanner ); +} + +/** Switch to a different input buffer. + * @param new_buffer The new input buffer. + * @param yyscanner The scanner object. + */ + void libconfig_yy_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + /* TODO. We should be able to replace this entire function body + * with + * libconfig_yypop_buffer_state(); + * libconfig_yypush_buffer_state(new_buffer); + */ + libconfig_yyensure_buffer_stack (yyscanner); + if ( YY_CURRENT_BUFFER == new_buffer ) + return; + + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *yyg->yy_c_buf_p = yyg->yy_hold_char; + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; + } + + YY_CURRENT_BUFFER_LVALUE = new_buffer; + libconfig_yy_load_buffer_state(yyscanner ); + + /* We don't actually know whether we did this switch during + * EOF (libconfig_yywrap()) processing, but the only time this flag + * is looked at is after libconfig_yywrap() is called, so it's safe + * to go ahead and always set it. + */ + yyg->yy_did_buffer_switch_on_eof = 1; +} + +static void libconfig_yy_load_buffer_state (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; + yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; + yyg->yy_hold_char = *yyg->yy_c_buf_p; +} + +/** Allocate and initialize an input buffer state. + * @param file A readable stream. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. + * @param yyscanner The scanner object. + * @return the allocated buffer state. + */ + YY_BUFFER_STATE libconfig_yy_create_buffer (FILE * file, int size , yyscan_t yyscanner) +{ + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) libconfig_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in libconfig_yy_create_buffer()" ); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) libconfig_yyalloc(b->yy_buf_size + 2 ,yyscanner ); + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in libconfig_yy_create_buffer()" ); + + b->yy_is_our_buffer = 1; + + libconfig_yy_init_buffer(b,file ,yyscanner); + + return b; +} + +/** Destroy the buffer. + * @param b a buffer created with libconfig_yy_create_buffer() + * @param yyscanner The scanner object. + */ + void libconfig_yy_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + if ( ! b ) + return; + + if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) + libconfig_yyfree((void *) b->yy_ch_buf ,yyscanner ); + + libconfig_yyfree((void *) b ,yyscanner ); +} + +#ifndef __cplusplus +extern int isatty (int ); +#endif /* __cplusplus */ + +/* Initializes or reinitializes a buffer. + * This function is sometimes called more than once on the same buffer, + * such as during a libconfig_yyrestart() or at EOF. + */ + static void libconfig_yy_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner) + +{ + int oerrno = errno; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + libconfig_yy_flush_buffer(b ,yyscanner); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + + /* If b is the current buffer, then libconfig_yy_init_buffer was _probably_ + * called from libconfig_yyrestart() or through yy_get_next_buffer. + * In that case, we don't want to reset the lineno or column. + */ + if (b != YY_CURRENT_BUFFER){ + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } + + b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; + + errno = oerrno; +} + +/** Discard all buffered characters. On the next scan, YY_INPUT will be called. + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. + * @param yyscanner The scanner object. + */ + void libconfig_yy_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + if ( ! b ) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == YY_CURRENT_BUFFER ) + libconfig_yy_load_buffer_state(yyscanner ); +} + +/** Pushes the new state onto the stack. The new state becomes + * the current state. This function will allocate the stack + * if necessary. + * @param new_buffer The new state. + * @param yyscanner The scanner object. + */ +void libconfig_yypush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + if (new_buffer == NULL) + return; + + libconfig_yyensure_buffer_stack(yyscanner); + + /* This block is copied from libconfig_yy_switch_to_buffer. */ + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *yyg->yy_c_buf_p = yyg->yy_hold_char; + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; + } + + /* Only push if top exists. Otherwise, replace top. */ + if (YY_CURRENT_BUFFER) + yyg->yy_buffer_stack_top++; + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from libconfig_yy_switch_to_buffer. */ + libconfig_yy_load_buffer_state(yyscanner ); + yyg->yy_did_buffer_switch_on_eof = 1; +} + +/** Removes and deletes the top of the stack, if present. + * The next element becomes the new top. + * @param yyscanner The scanner object. + */ +void libconfig_yypop_buffer_state (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + if (!YY_CURRENT_BUFFER) + return; + + libconfig_yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner); + YY_CURRENT_BUFFER_LVALUE = NULL; + if (yyg->yy_buffer_stack_top > 0) + --yyg->yy_buffer_stack_top; + + if (YY_CURRENT_BUFFER) { + libconfig_yy_load_buffer_state(yyscanner ); + yyg->yy_did_buffer_switch_on_eof = 1; + } +} + +/* Allocates the stack if it does not exist. + * Guarantees space for at least one push. + */ +static void libconfig_yyensure_buffer_stack (yyscan_t yyscanner) +{ + int num_to_alloc; + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + if (!yyg->yy_buffer_stack) { + + /* First allocation is just for 2 elements, since we don't know if this + * scanner will even need a stack. We use 2 instead of 1 to avoid an + * immediate realloc on the next call. + */ + num_to_alloc = 1; + yyg->yy_buffer_stack = (struct yy_buffer_state**)libconfig_yyalloc + (num_to_alloc * sizeof(struct yy_buffer_state*) + , yyscanner); + if ( ! yyg->yy_buffer_stack ) + YY_FATAL_ERROR( "out of dynamic memory in libconfig_yyensure_buffer_stack()" ); + + memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*)); + + yyg->yy_buffer_stack_max = num_to_alloc; + yyg->yy_buffer_stack_top = 0; + return; + } + + if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){ + + /* Increase the buffer to prepare for a possible push. */ + int grow_size = 8 /* arbitrary grow size */; + + num_to_alloc = yyg->yy_buffer_stack_max + grow_size; + yyg->yy_buffer_stack = (struct yy_buffer_state**)libconfig_yyrealloc + (yyg->yy_buffer_stack, + num_to_alloc * sizeof(struct yy_buffer_state*) + , yyscanner); + if ( ! yyg->yy_buffer_stack ) + YY_FATAL_ERROR( "out of dynamic memory in libconfig_yyensure_buffer_stack()" ); + + /* zero only the new slots.*/ + memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*)); + yyg->yy_buffer_stack_max = num_to_alloc; + } +} + +/** Setup the input buffer state to scan directly from a user-specified character buffer. + * @param base the character buffer + * @param size the size in bytes of the character buffer + * @param yyscanner The scanner object. + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE libconfig_yy_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner) +{ + YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return 0; + + b = (YY_BUFFER_STATE) libconfig_yyalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in libconfig_yy_scan_buffer()" ); + + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = 0; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + libconfig_yy_switch_to_buffer(b ,yyscanner ); + + return b; +} + +/** Setup the input buffer state to scan a string. The next call to libconfig_yylex() will + * scan from a @e copy of @a str. + * @param yystr a NUL-terminated string to scan + * @param yyscanner The scanner object. + * @return the newly allocated buffer state object. + * @note If you want to scan bytes that may contain NUL values, then use + * libconfig_yy_scan_bytes() instead. + */ +YY_BUFFER_STATE libconfig_yy_scan_string (yyconst char * yystr , yyscan_t yyscanner) +{ + + return libconfig_yy_scan_bytes(yystr,strlen(yystr) ,yyscanner); +} + +/** Setup the input buffer state to scan the given bytes. The next call to libconfig_yylex() will + * scan from a @e copy of @a bytes. + * @param bytes the byte buffer to scan + * @param len the number of bytes in the buffer pointed to by @a bytes. + * @param yyscanner The scanner object. + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE libconfig_yy_scan_bytes (yyconst char * yybytes, int _yybytes_len , yyscan_t yyscanner) +{ + YY_BUFFER_STATE b; + char *buf; + yy_size_t n; + int i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = _yybytes_len + 2; + buf = (char *) libconfig_yyalloc(n ,yyscanner ); + if ( ! buf ) + YY_FATAL_ERROR( "out of dynamic memory in libconfig_yy_scan_bytes()" ); + + for ( i = 0; i < _yybytes_len; ++i ) + buf[i] = yybytes[i]; + + buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; + + b = libconfig_yy_scan_buffer(buf,n ,yyscanner); + if ( ! b ) + YY_FATAL_ERROR( "bad buffer in libconfig_yy_scan_bytes()" ); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; +} + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner) +{ + (void) fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); +} + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + yytext[yyleng] = yyg->yy_hold_char; \ + yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ + yyg->yy_hold_char = *yyg->yy_c_buf_p; \ + *yyg->yy_c_buf_p = '\0'; \ + yyleng = yyless_macro_arg; \ + } \ + while ( 0 ) + +/* Accessor methods (get/set functions) to struct members. */ + +/** Get the user-defined data for this scanner. + * @param yyscanner The scanner object. + */ +YY_EXTRA_TYPE libconfig_yyget_extra (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yyextra; +} + +/** Get the current line number. + * @param yyscanner The scanner object. + */ +int libconfig_yyget_lineno (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + if (! YY_CURRENT_BUFFER) + return 0; + + return yylineno; +} + +/** Get the current column number. + * @param yyscanner The scanner object. + */ +int libconfig_yyget_column (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + if (! YY_CURRENT_BUFFER) + return 0; + + return yycolumn; +} + +/** Get the input stream. + * @param yyscanner The scanner object. + */ +FILE *libconfig_yyget_in (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yyin; +} + +/** Get the output stream. + * @param yyscanner The scanner object. + */ +FILE *libconfig_yyget_out (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yyout; +} + +/** Get the length of the current token. + * @param yyscanner The scanner object. + */ +int libconfig_yyget_leng (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yyleng; +} + +/** Get the current token. + * @param yyscanner The scanner object. + */ + +char *libconfig_yyget_text (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yytext; +} + +/** Set the user-defined data. This data is never touched by the scanner. + * @param user_defined The data to be associated with this scanner. + * @param yyscanner The scanner object. + */ +void libconfig_yyset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + yyextra = user_defined ; +} + +/** Set the current line number. + * @param line_number + * @param yyscanner The scanner object. + */ +void libconfig_yyset_lineno (int line_number , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + /* lineno is only valid if an input buffer exists. */ + if (! YY_CURRENT_BUFFER ) + yy_fatal_error( "libconfig_yyset_lineno called with no buffer" , yyscanner); + + yylineno = line_number; +} + +/** Set the current column. + * @param line_number + * @param yyscanner The scanner object. + */ +void libconfig_yyset_column (int column_no , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + /* column is only valid if an input buffer exists. */ + if (! YY_CURRENT_BUFFER ) + yy_fatal_error( "libconfig_yyset_column called with no buffer" , yyscanner); + + yycolumn = column_no; +} + +/** Set the input stream. This does not discard the current + * input buffer. + * @param in_str A readable stream. + * @param yyscanner The scanner object. + * @see libconfig_yy_switch_to_buffer + */ +void libconfig_yyset_in (FILE * in_str , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + yyin = in_str ; +} + +void libconfig_yyset_out (FILE * out_str , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + yyout = out_str ; +} + +int libconfig_yyget_debug (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yy_flex_debug; +} + +void libconfig_yyset_debug (int bdebug , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + yy_flex_debug = bdebug ; +} + +/* Accessor methods for yylval and yylloc */ + +YYSTYPE * libconfig_yyget_lval (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + return yylval; +} + +void libconfig_yyset_lval (YYSTYPE * yylval_param , yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + yylval = yylval_param; +} + +/* User-visible API */ + +/* libconfig_yylex_init is special because it creates the scanner itself, so it is + * the ONLY reentrant function that doesn't take the scanner as the last argument. + * That's why we explicitly handle the declaration, instead of using our macros. + */ + +int libconfig_yylex_init(yyscan_t* ptr_yy_globals) + +{ + if (ptr_yy_globals == NULL){ + errno = EINVAL; + return 1; + } + + *ptr_yy_globals = (yyscan_t) libconfig_yyalloc ( sizeof( struct yyguts_t ), NULL ); + + if (*ptr_yy_globals == NULL){ + errno = ENOMEM; + return 1; + } + + /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ + memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); + + return yy_init_globals ( *ptr_yy_globals ); +} + +/* libconfig_yylex_init_extra has the same functionality as libconfig_yylex_init, but follows the + * convention of taking the scanner as the last argument. Note however, that + * this is a *pointer* to a scanner, as it will be allocated by this call (and + * is the reason, too, why this function also must handle its own declaration). + * The user defined value in the first argument will be available to libconfig_yyalloc in + * the yyextra field. + */ + +int libconfig_yylex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals ) + +{ + struct yyguts_t dummy_yyguts; + + libconfig_yyset_extra (yy_user_defined, &dummy_yyguts); + + if (ptr_yy_globals == NULL){ + errno = EINVAL; + return 1; + } + + *ptr_yy_globals = (yyscan_t) libconfig_yyalloc ( sizeof( struct yyguts_t ), &dummy_yyguts ); + + if (*ptr_yy_globals == NULL){ + errno = ENOMEM; + return 1; + } + + /* By setting to 0xAA, we expose bugs in + yy_init_globals. Leave at 0x00 for releases. */ + memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); + + libconfig_yyset_extra (yy_user_defined, *ptr_yy_globals); + + return yy_init_globals ( *ptr_yy_globals ); +} + +static int yy_init_globals (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + /* Initialization is the same as for the non-reentrant scanner. + * This function is called from libconfig_yylex_destroy(), so don't allocate here. + */ + + yyg->yy_buffer_stack = 0; + yyg->yy_buffer_stack_top = 0; + yyg->yy_buffer_stack_max = 0; + yyg->yy_c_buf_p = (char *) 0; + yyg->yy_init = 0; + yyg->yy_start = 0; + + yyg->yy_start_stack_ptr = 0; + yyg->yy_start_stack_depth = 0; + yyg->yy_start_stack = NULL; + +/* Defined in main.c */ +#ifdef YY_STDINIT + yyin = stdin; + yyout = stdout; +#else + yyin = (FILE *) 0; + yyout = (FILE *) 0; +#endif + + /* For future reference: Set errno on error, since we are called by + * libconfig_yylex_init() + */ + return 0; +} + +/* libconfig_yylex_destroy is for both reentrant and non-reentrant scanners. */ +int libconfig_yylex_destroy (yyscan_t yyscanner) +{ + struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; + + /* Pop the buffer stack, destroying each element. */ + while(YY_CURRENT_BUFFER){ + libconfig_yy_delete_buffer(YY_CURRENT_BUFFER ,yyscanner ); + YY_CURRENT_BUFFER_LVALUE = NULL; + libconfig_yypop_buffer_state(yyscanner); + } + + /* Destroy the stack itself. */ + libconfig_yyfree(yyg->yy_buffer_stack ,yyscanner); + yyg->yy_buffer_stack = NULL; + + /* Destroy the start condition stack. */ + libconfig_yyfree(yyg->yy_start_stack ,yyscanner ); + yyg->yy_start_stack = NULL; + + /* Reset the globals. This is important in a non-reentrant scanner so the next time + * libconfig_yylex() is called, initialization will occur. */ + yy_init_globals( yyscanner); + + /* Destroy the main struct (reentrant only). */ + libconfig_yyfree ( yyscanner , yyscanner ); + yyscanner = NULL; + return 0; +} + +/* + * Internal utility routines. + */ + +#ifndef yytext_ptr +static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner) +{ + register int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; +} +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner) +{ + register int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; +} +#endif + +void *libconfig_yyalloc (yy_size_t size , yyscan_t yyscanner) +{ + return (void *) malloc( size ); +} + +void *libconfig_yyrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner) +{ + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return (void *) realloc( (char *) ptr, size ); +} + +void libconfig_yyfree (void * ptr , yyscan_t yyscanner) +{ + free( (char *) ptr ); /* see libconfig_yyrealloc() for (char *) cast */ +} + +#define YYTABLES_NAME "yytables" + +#line 223 "scanner.l" diff --git a/coregrade/src/libconfig-1.3.1/scanner.h b/coregrade/src/libconfig-1.3.1/scanner.h new file mode 100644 index 0000000..baa6f77 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/scanner.h @@ -0,0 +1,326 @@ +#ifndef libconfig_yyHEADER_H +#define libconfig_yyHEADER_H 1 +#define libconfig_yyIN_HEADER 1 + +#line 6 "scanner.h" + +#line 8 "scanner.h" + +#define YY_INT_ALIGNED short int + +/* A lexical scanner generated by flex */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 5 +#define YY_FLEX_SUBMINOR_VERSION 33 +#if YY_FLEX_SUBMINOR_VERSION > 0 +#define FLEX_BETA +#endif + +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ +#include +#include +#include +#include + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have . Non-C99 systems may or may not. */ + +#if __STDC_VERSION__ >= 199901L + +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +typedef int flex_int32_t; +typedef unsigned char flex_uint8_t; +typedef unsigned short int flex_uint16_t; +typedef unsigned int flex_uint32_t; +#endif /* ! C99 */ + +/* Limits of integral types. */ +#ifndef INT8_MIN +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#endif /* ! FLEXINT_H */ + +#ifdef __cplusplus + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +#if __STDC__ + +#define YY_USE_CONST + +#endif /* __STDC__ */ +#endif /* ! __cplusplus */ + +#ifdef YY_USE_CONST +#define yyconst const +#else +#define yyconst +#endif + +/* An opaque pointer. */ +#ifndef YY_TYPEDEF_YY_SCANNER_T +#define YY_TYPEDEF_YY_SCANNER_T +typedef void* yyscan_t; +#endif + +/* For convenience, these vars (plus the bison vars far below) + are macros in the reentrant scanner. */ +#define yyin yyg->yyin_r +#define yyout yyg->yyout_r +#define yyextra yyg->yyextra_r +#define yyleng yyg->yyleng_r +#define yytext yyg->yytext_r +#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno) +#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column) +#define yy_flex_debug yyg->yy_flex_debug_r + +int libconfig_yylex_init (yyscan_t* scanner); + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +/* The following is because we cannot portably get our hands on size_t + * (without autoconf's help, which isn't available because we want + * flex-generated scanners to compile on their own). + */ + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef unsigned int yy_size_t; +#endif + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state + { + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + yy_size_t yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + int yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; + + }; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +void libconfig_yyrestart (FILE *input_file ,yyscan_t yyscanner ); +void libconfig_yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); +YY_BUFFER_STATE libconfig_yy_create_buffer (FILE *file,int size ,yyscan_t yyscanner ); +void libconfig_yy_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); +void libconfig_yy_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); +void libconfig_yypush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); +void libconfig_yypop_buffer_state (yyscan_t yyscanner ); + +YY_BUFFER_STATE libconfig_yy_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner ); +YY_BUFFER_STATE libconfig_yy_scan_string (yyconst char *yy_str ,yyscan_t yyscanner ); +YY_BUFFER_STATE libconfig_yy_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner ); + +void *libconfig_yyalloc (yy_size_t ,yyscan_t yyscanner ); +void *libconfig_yyrealloc (void *,yy_size_t ,yyscan_t yyscanner ); +void libconfig_yyfree (void * ,yyscan_t yyscanner ); + +#define libconfig_yywrap(n) 1 +#define YY_SKIP_YYWRAP + +#define yytext_ptr yytext_r + +#ifdef YY_HEADER_EXPORT_START_CONDITIONS +#define INITIAL 0 +#define COMMENT 1 + +#endif + +#ifndef YY_EXTRA_TYPE +#define YY_EXTRA_TYPE void * +#endif + +/* Accessor methods to globals. + These are made visible to non-reentrant scanners for convenience. */ + +int libconfig_yylex_destroy (yyscan_t yyscanner ); + +int libconfig_yyget_debug (yyscan_t yyscanner ); + +void libconfig_yyset_debug (int debug_flag ,yyscan_t yyscanner ); + +YY_EXTRA_TYPE libconfig_yyget_extra (yyscan_t yyscanner ); + +void libconfig_yyset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner ); + +FILE *libconfig_yyget_in (yyscan_t yyscanner ); + +void libconfig_yyset_in (FILE * in_str ,yyscan_t yyscanner ); + +FILE *libconfig_yyget_out (yyscan_t yyscanner ); + +void libconfig_yyset_out (FILE * out_str ,yyscan_t yyscanner ); + +int libconfig_yyget_leng (yyscan_t yyscanner ); + +char *libconfig_yyget_text (yyscan_t yyscanner ); + +int libconfig_yyget_lineno (yyscan_t yyscanner ); + +void libconfig_yyset_lineno (int line_number ,yyscan_t yyscanner ); + +YYSTYPE * libconfig_yyget_lval (yyscan_t yyscanner ); + +void libconfig_yyset_lval (YYSTYPE * yylval_param ,yyscan_t yyscanner ); + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int libconfig_yywrap (yyscan_t yyscanner ); +#else +extern int libconfig_yywrap (yyscan_t yyscanner ); +#endif +#endif + +#ifndef yytext_ptr +static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner); +#endif + +#ifndef YY_NO_INPUT + +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#define YY_READ_BUF_SIZE 8192 +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL_IS_OURS 1 + +extern int libconfig_yylex (YYSTYPE * yylval_param ,yyscan_t yyscanner); + +#define YY_DECL int libconfig_yylex (YYSTYPE * yylval_param , yyscan_t yyscanner) +#endif /* !YY_DECL */ + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + +#undef YY_NEW_FILE +#undef YY_FLUSH_BUFFER +#undef yy_set_bol +#undef yy_new_buffer +#undef yy_set_interactive +#undef YY_DO_BEFORE_ACTION + +#ifdef YY_DECL_IS_OURS +#undef YY_DECL_IS_OURS +#undef YY_DECL +#endif + +#line 130 "scanner.l" + +#line 325 "scanner.h" +#undef libconfig_yyIN_HEADER +#endif /* libconfig_yyHEADER_H */ diff --git a/coregrade/src/libconfig-1.3.1/scanner.l b/coregrade/src/libconfig-1.3.1/scanner.l new file mode 100644 index 0000000..b6011b5 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/scanner.l @@ -0,0 +1,222 @@ +/* -*- mode: C -*- */ +/* -------------------------------------------------------------------------- + libconfig - A library for processing structured configuration files + Copyright (C) 2005-2008 Mark A Lindner + + This file is part of libconfig. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation; either version 2.1 of + the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, see + . + ---------------------------------------------------------------------------- +*/ + +%{ +#define YY_EXTRA_TYPE void* +%} + +%option nounistd +%option reentrant +%option noyywrap +%option yylineno +%option nounput +%option bison-bridge +%option header-file="scanner.h" +%option outfile="lex.yy.c" + +%{ + +#ifdef _MSC_VER +#pragma warning (disable: 4996) +#endif + +#include +#include +#include +#include "grammar.h" +#include "wincompat.h" + +/* this is somewhat kludgy, but I wanted to avoid building strings + dynamically during scanning */ + +static char *make_string(char *s) +{ + char *r = ++s; + char *p, *q = r; + size_t len = strlen(r); + int esc = 0; + + *(r + --len) = 0; + + for(p = r; *p; p++) + { + if(*p == '\\') + { + if(! esc) + { + esc = 1; + continue; + } + } + + if(esc) + { + if(*p == 'n') + *(q++) = '\n'; + else if(*p == 'r') + *(q++) = '\r'; + else if(*p == 'f') + *(q++) = '\f'; + else if(*p == 't') + *(q++) = '\t'; + else + *(q++) = *p; + + esc = 0; + } + + else if(*p == '\"') /* if we reached the end of a string segment, ... */ + { + /* This construction allows for C-style string concatenation. + We don't bother to check for end-of-string here, as we depend + on the {string} definition to ensure a new opening quote exists. + We do, however, check for and discard all forms of comments + [that is, (#...$|//...$|[/][*]...[*][/])] between string segments. */ + + while (*++p != '\"') /* ... look for the start of the next segment */ + { + if(*p == '#') /* check for #...$ comment */ + { + while(*++p != '\n') + { + /* skip the rest of the line */ + } + } + else if (*p == '/') + { + if(*++p == '/') /* check for //...$ comment */ + { + while (*++p != '\n') + { + /* skip the rest of the line */ + } + } + else /* must be '*', lead-in to an old C-style comment */ + { + while (*++p != '*' || *(p+1) != '/') + { + /* skip all comment content */ + } + ++p; /* step to the trailing slash, to skip it as well */ + } + } + } + } + else + *(q++) = *p; + } + + *q = 0; + + return(r); +} + +static unsigned long long fromhex(const char *s) +{ +#ifdef __MINGW32__ + + // MinGW's strtoull() seems to be broken; it only returns the lower + // 32 bits... + + const char *p = s; + unsigned long long val = 0; + + if(*p != '0') + return(0); + + ++p; + + if(*p != 'x' && *p != 'X') + return(0); + + for(++p; isxdigit(*p); ++p) + { + val <<= 4; + val |= ((*p < 'A') ? (*p & 0xF) : (9 + (*p & 0x7))); + } + + return(val); + +#else // ! __MINGW32__ + + return(strtoull(s, NULL, 16)); + +#endif // __MINGW32__ +} + +%} + +ws [ \t\f\r\n]+ +equals \=|\: +comma , +group_start \{ +group_end \} +true [Tt][Rr][Uu][Ee] +false [Ff][Aa][Ll][Ss][Ee] +name [A-Za-z\*][-A-Za-z0-9_\*]* +quote \" +integer [-+]?[0-9]+ +integer64 [-+]?[0-9]+L(L)? +hex 0[Xx][0-9A-Fa-f]+ +hex64 0[Xx][0-9A-Fa-f]+L(L)? +float ([-+]?([0-9]*)?\.[0-9]*([eE][-+]?[0-9]+)?)|([-+]?([0-9]+)(\.[0-9]*)?[eE][-+]?[0-9]+) +segment {quote}([^\"\\]|\\.)*{quote} +string {segment}(([ \t\f\r\n]*((#|\/\/).*\n|\/\*(.|\n)*\*\/)*)*{segment})* +end ; +array_start \[ +array_end \] +list_start \( +list_end \) +comment (#|\/\/).*$ + +%x COMMENT + +%% + +\/\* { BEGIN COMMENT; } +\*\/ { BEGIN INITIAL; } +. { /* ignore */ } +\n { } + +{ws} { /* skip */ } + +{equals} { return(TOK_EQUALS); } +{comma} { return(TOK_COMMA); } +{group_start} { return(TOK_GROUP_START); } +{group_end} { return(TOK_GROUP_END); } +{true} { yylval->ival = 1; return(TOK_BOOLEAN); } +{false} { yylval->ival = 0; return(TOK_BOOLEAN); } +{name} { yylval->sval = strdup(yytext); return(TOK_NAME); } +{float} { yylval->fval = atof(yytext); return(TOK_FLOAT); } +{integer} { yylval->ival = atoi(yytext); return(TOK_INTEGER); } +{integer64} { yylval->llval = atoll(yytext); return(TOK_INTEGER64); } +{hex} { yylval->ival = strtoul(yytext, NULL, 16); return(TOK_HEX); } +{hex64} { yylval->llval = fromhex(yytext); return(TOK_HEX64); } +{string} { yylval->sval = strdup(make_string(yytext)); return(TOK_STRING); } +{array_start} { return(TOK_ARRAY_START); } +{array_end} { return(TOK_ARRAY_END); } +{list_start} { return(TOK_LIST_START); } +{list_end} { return(TOK_LIST_END); } +{end} { return(TOK_END); } +{comment} { /* ignore */ } +. { return(TOK_GARBAGE); } diff --git a/coregrade/src/libconfig-1.3.1/stamp-h1 b/coregrade/src/libconfig-1.3.1/stamp-h1 new file mode 100644 index 0000000..eacafcf --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/stamp-h1 @@ -0,0 +1 @@ +timestamp for ac_config.h diff --git a/coregrade/src/libconfig-1.3.1/test.cfg b/coregrade/src/libconfig-1.3.1/test.cfg new file mode 100644 index 0000000..66a4fa9 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/test.cfg @@ -0,0 +1,82 @@ +#---------------------------- +# Example Configuration File +#--------------------------- +# + +application: +{ + + /* This section defines some settings for our + * main application window, such as size and + * position. + */ + + window: + { + title = "My Application"; + size = { /* width */ w = 640; /* height */ h = 480; }; + pos = { x = 350; y = 250; }; + }; + + a = 5; + b = 6; + ff = 1E6; + test-comment = "/* hello\n \"there\"*/"; + + test-long-string = "A very long string that spans multiple lines. " + /* but wait, there's more... */ "Adjacent strings are automatically" + " concatenated."; + + test-escaped-string = "\"This is\n a test.\""; + + group1: + { + x = 5; y = 10; + my_array = [ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22 ]; + flag = TRUE; + + group2: { zzz = "this is a test"; }; + + states = [ "CT", // Connecticut + "CA", // California + "TX", // Texas + "NV", // Nevada + "FL" // Florida + ]; + }; + + /* this would cause an error */ + // a = "hi!"; +}; + +binary = [ 0xAA, 0xBB, 0xCC ]; + +list = ( ( "abc", 123, true ), 1.234, ( /* an empty list */ ) ,[ 1, 2, 3 ], + { a = (1, 2, true); } ); + +books = ( "inventory", + { title = "Treasure Island"; + author = "Robert Louis Stevenson"; + price = 29.99; + qty = 5; }, + { title = "Snow Crash"; + author = "Neal Stephenson"; + price = 9.99; + qty = 8; }, + { } ); + +# miscellaneous stuff + +misc: +{ + port = 5000; + pi = 3.14159265; + enabled = FALSE; + mask = 0xAABBCCDD; + unicode = "STARGΛ̊TE SG-1"; // UTF-8 string + bigint = 9223372036854775807L; + bighex = 0x1122334455667788L; +}; + + +### eof diff --git a/coregrade/src/libconfig-1.3.1/wincompat.h b/coregrade/src/libconfig-1.3.1/wincompat.h new file mode 100644 index 0000000..fcc6e36 --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/wincompat.h @@ -0,0 +1,85 @@ +/* ---------------------------------------------------------------------------- + libconfig - A library for processing structured configuration files + Copyright (C) 2005-2008 Mark A Lindner + + This file is part of libconfig. + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public License + as published by the Free Software Foundation; either version 2.1 of + the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with this library; if not, see + . + ---------------------------------------------------------------------------- +*/ + +#ifndef __wincompat_h +#define __wincompat_h + +#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__) + +#ifdef _MSC_VER +#pragma warning (disable: 4996) +#endif + +#define WIN32_LEAN_AND_MEAN +#include + +#define atoll _atoi64 +#define snprintf _snprintf + +#ifndef __MINGW32__ +#define strtoull _strtoui64 +#endif // __MINGW32__ + +#endif + +#if (defined(WIN32) || defined(_WIN32) || defined(__WIN32__) \ + || defined(__MINGW32__)) + +// Why does gcc on MinGW use the Visual C++ style format directives +// for 64-bit integers? Inquiring minds want to know.... + +#define INT64_FMT "%I64d" +#define UINT64_FMT "%I64u" + +#define INT64_HEX_FMT "%I64X" + +#else // defined(WIN32) || defined(__MINGW32__) + +#define INT64_FMT "%lld" +#define UINT64_FMT "%llu" + +#define INT64_HEX_FMT "%llX" + +#endif // defined(WIN32) || defined(__MINGW32__) + +#if (defined(WIN32) || defined(_WIN32) || defined(__WIN32__)) \ + && ! defined(__MINGW32__) + +#define INT64_CONST(I) (I ## i64) +#define UINT64_CONST(I) (I ## Ui64) + +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif + +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif + +#else // defined(WIN32) && ! defined(__MINGW32__) + +#define INT64_CONST(I) (I ## LL) +#define UINT64_CONST(I) (I ## ULL) + +#endif // defined(WIN32) && ! defined(__MINGW32__) + +#endif // __wincompat_h diff --git a/coregrade/src/libconfig-1.3.1/ylwrap b/coregrade/src/libconfig-1.3.1/ylwrap new file mode 100755 index 0000000..e66a95b --- /dev/null +++ b/coregrade/src/libconfig-1.3.1/ylwrap @@ -0,0 +1,222 @@ +#! /bin/sh +# ylwrap - wrapper for lex/yacc invocations. + +scriptversion=2004-09-10.20 + +# Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004 +# Free Software Foundation, Inc. +# +# Written by Tom Tromey . +# +# 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 +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +case "$1" in + '') + echo "$0: No files given. Try \`$0 --help' for more information." 1>&2 + exit 1 + ;; + --basedir) + basedir=$2 + shift 2 + ;; + -h|--h*) + cat <<\EOF +Usage: ylwrap [--help|--version] INPUT [OUTPUT DESIRED]... -- PROGRAM [ARGS]... + +Wrapper for lex/yacc invocations, renaming files as desired. + + INPUT is the input file + OUTPUT is one file PROG generates + DESIRED is the file we actually want instead of OUTPUT + PROGRAM is program to run + ARGS are passed to PROG + +Any number of OUTPUT,DESIRED pairs may be used. + +Report bugs to . +EOF + exit 0 + ;; + -v|--v*) + echo "ylwrap $scriptversion" + exit 0 + ;; +esac + + +# The input. +input="$1" +shift +case "$input" in + [\\/]* | ?:[\\/]*) + # Absolute path; do nothing. + ;; + *) + # Relative path. Make it absolute. + input="`pwd`/$input" + ;; +esac + +pairlist= +while test "$#" -ne 0; do + if test "$1" = "--"; then + shift + break + fi + pairlist="$pairlist $1" + shift +done + +# The program to run. +prog="$1" +shift +# Make any relative path in $prog absolute. +case "$prog" in + [\\/]* | ?:[\\/]*) ;; + *[\\/]*) prog="`pwd`/$prog" ;; +esac + +# FIXME: add hostname here for parallel makes that run commands on +# other machines. But that might take us over the 14-char limit. +dirname=ylwrap$$ +trap "cd `pwd`; rm -rf $dirname > /dev/null 2>&1" 1 2 3 15 +mkdir $dirname || exit 1 + +cd $dirname + +case $# in + 0) $prog "$input" ;; + *) $prog "$@" "$input" ;; +esac +ret=$? + +if test $ret -eq 0; then + set X $pairlist + shift + first=yes + # Since DOS filename conventions don't allow two dots, + # the DOS version of Bison writes out y_tab.c instead of y.tab.c + # and y_tab.h instead of y.tab.h. Test to see if this is the case. + y_tab_nodot="no" + if test -f y_tab.c || test -f y_tab.h; then + y_tab_nodot="yes" + fi + + # The directory holding the input. + input_dir=`echo "$input" | sed -e 's,\([\\/]\)[^\\/]*$,\1,'` + # Quote $INPUT_DIR so we can use it in a regexp. + # FIXME: really we should care about more than `.' and `\'. + input_rx=`echo "$input_dir" | sed 's,\\\\,\\\\\\\\,g;s,\\.,\\\\.,g'` + + while test "$#" -ne 0; do + from="$1" + # Handle y_tab.c and y_tab.h output by DOS + if test $y_tab_nodot = "yes"; then + if test $from = "y.tab.c"; then + from="y_tab.c" + else + if test $from = "y.tab.h"; then + from="y_tab.h" + fi + fi + fi + if test -f "$from"; then + # If $2 is an absolute path name, then just use that, + # otherwise prepend `../'. + case "$2" in + [\\/]* | ?:[\\/]*) target="$2";; + *) target="../$2";; + esac + + # We do not want to overwrite a header file if it hasn't + # changed. This avoid useless recompilations. However the + # parser itself (the first file) should always be updated, + # because it is the destination of the .y.c rule in the + # Makefile. Divert the output of all other files to a temporary + # file so we can compare them to existing versions. + if test $first = no; then + realtarget="$target" + target="tmp-`echo $target | sed s/.*[\\/]//g`" + fi + # Edit out `#line' or `#' directives. + # + # We don't want the resulting debug information to point at + # an absolute srcdir; it is better for it to just mention the + # .y file with no path. + # + # We want to use the real output file name, not yy.lex.c for + # instance. + # + # We want the include guards to be adjusted too. + FROM=`echo "$from" | sed \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\ + -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'` + TARGET=`echo "$2" | sed \ + -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\ + -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'` + + sed -e "/^#/!b" -e "s,$input_rx,," -e "s,$from,$2," \ + -e "s,$FROM,$TARGET," "$from" >"$target" || ret=$? + + # Check whether header files must be updated. + if test $first = no; then + if test -f "$realtarget" && cmp -s "$realtarget" "$target"; then + echo "$2" is unchanged + rm -f "$target" + else + echo updating "$2" + mv -f "$target" "$realtarget" + fi + fi + else + # A missing file is only an error for the first file. This + # is a blatant hack to let us support using "yacc -d". If -d + # is not specified, we don't want an error when the header + # file is "missing". + if test $first = yes; then + ret=1 + fi + fi + shift + shift + first=no + done +else + ret=$? +fi + +# Remove the directory. +cd .. +rm -rf $dirname + +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-end: "$" +# End: diff --git a/coregrade/src/libtool b/coregrade/src/libtool new file mode 100755 index 0000000..acfd3b8 --- /dev/null +++ b/coregrade/src/libtool @@ -0,0 +1,10240 @@ +#! /bin/sh + +# libtool - Provide generalized library-building support services. +# Generated automatically by config.status () +# Libtool was configured on host localhost.localdomain: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + +# The names of the tagged configurations supported by this script. +available_tags="CXX " + +# ### BEGIN LIBTOOL CONFIG + +# Which release of libtool.m4 was used? +macro_version=2.4.2 +macro_revision=1.3337 + +# Whether or not to build shared libraries. +build_libtool_libs=yes + +# Whether or not to build static libraries. +build_old_libs=no + +# What type of objects to build. +pic_mode=default + +# Whether or not to optimize for fast installation. +fast_install=yes + +# Shell to use when invoking shell scripts. +SHELL="/bin/sh" + +# An echo program that protects backslashes. +ECHO="printf %s\\n" + +# The PATH separator for the build system. +PATH_SEPARATOR=":" + +# The host system. +host_alias=x86_64-unknown-linux-gnu +host=x86_64-unknown-linux-gnu +host_os=linux-gnu + +# The build system. +build_alias= +build=x86_64-unknown-linux-gnu +build_os=linux-gnu + +# A sed program that does not truncate output. +SED="/bin/sed" + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP="/bin/grep" + +# An ERE matcher. +EGREP="/bin/grep -E" + +# A literal string matcher. +FGREP="/bin/grep -F" + +# A BSD- or MS-compatible name lister. +NM="/bin/nm -B" + +# Whether we need soft or hard links. +LN_S="ln -s" + +# What is the maximum length of a command? +max_cmd_len=1572864 + +# Object file suffix (normally "o"). +objext=o + +# Executable file suffix (normally ""). +exeext= + +# whether the shell understands "unset". +lt_unset=unset + +# turn spaces into newlines. +SP2NL="tr \\040 \\012" + +# turn newlines into spaces. +NL2SP="tr \\015\\012 \\040\\040" + +# convert $build file names to $host format. +to_host_file_cmd=func_convert_file_noop + +# convert $build files to toolchain format. +to_tool_file_cmd=func_convert_file_noop + +# An object symbol dumper. +OBJDUMP="objdump" + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method="pass_all" + +# Command to use when deplibs_check_method = "file_magic". +file_magic_cmd="\$MAGIC_CMD" + +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob="" + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob="no" + +# DLL creation program. +DLLTOOL="false" + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd="printf %s\\n" + +# The archiver. +AR="ar" + +# Flags to create an archive. +AR_FLAGS="cru" + +# How to feed a file listing to the archiver. +archiver_list_spec="@" + +# A symbol stripping program. +STRIP="strip" + +# Commands used to install an old-style archive. +RANLIB="ranlib" +old_postinstall_cmds="chmod 644 \$oldlib~\$RANLIB \$tool_oldlib" +old_postuninstall_cmds="" + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=no + +# A C compiler. +LTCC="cc" + +# LTCC compiler flags. +LTCFLAGS="-g -O2" + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe="sed -n -e 's/^.*[ ]\\([ABCDGIRSTW][ABCDGIRSTW]*\\)[ ][ ]*\\([_A-Za-z][_A-Za-z0-9]*\\)\$/\\1 \\2 \\2/p' | sed '/ __gnu_lto/d'" + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl="sed -n -e 's/^T .* \\(.*\\)\$/extern int \\1();/p' -e 's/^[ABCDGIRSTW]* .* \\(.*\\)\$/extern char \\1;/p'" + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address="sed -n -e 's/^: \\([^ ]*\\)[ ]*\$/ {\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/ {\"\\2\", (void *) \\&\\2},/p'" + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \\([^ ]*\\)[ ]*\$/ {\\\"\\1\\\", (void *) 0},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\(lib[^ ]*\\)\$/ {\"\\2\", (void *) \\&\\2},/p' -e 's/^[ABCDGIRSTW]* \\([^ ]*\\) \\([^ ]*\\)\$/ {\"lib\\2\", (void *) \\&\\2},/p'" + +# Specify filename containing input files for $NM. +nm_file_list_spec="@" + +# The root where to search for dependent libraries,and in which our libraries should be installed. +lt_sysroot= + +# The name of the directory that contains temporary libtool files. +objdir=.libs + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=file + +# Must we lock files when doing compilation? +need_locks="no" + +# Manifest tool. +MANIFEST_TOOL=":" + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL="" + +# Tool to change global to local symbols on Mac OS X. +NMEDIT="" + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO="" + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL="" + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64="" + +# Old archive suffix (normally "a"). +libext=a + +# Shared library suffix (normally ".so"). +shrext_cmds=".so" + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds="" + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink="PATH LD_LIBRARY_PATH LD_RUN_PATH GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" + +# Do we need the "lib" prefix for modules? +need_lib_prefix=no + +# Do we need a version for libraries? +need_version=no + +# Library versioning type. +version_type=linux + +# Shared library runtime path variable. +runpath_var=LD_RUN_PATH + +# Shared library path variable. +shlibpath_var=LD_LIBRARY_PATH + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=no + +# Format of library name prefix. +libname_spec="lib\$name" + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec="\${libname}\${release}\${shared_ext}\$versuffix \${libname}\${release}\${shared_ext}\$major \$libname\${shared_ext}" + +# The coded name of the library, if different from the real name. +soname_spec="\${libname}\${release}\${shared_ext}\$major" + +# Permission mode override for installation of shared libraries. +install_override_mode="" + +# Command to use after installation of a shared archive. +postinstall_cmds="" + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds="" + +# Commands used to finish a libtool library installation in a directory. +finish_cmds="PATH=\\\"\\\$PATH:/sbin\\\" ldconfig -n \$libdir" + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval="" + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=yes + +# Compile-time system search path for libraries. +sys_lib_search_path_spec="/usr/lib/gcc/x86_64-redhat-linux/4.8.5 /usr/lib64 /lib64 " + +# Run-time system search path for libraries. +sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib /usr/lib64//bind9-export/ /usr/lib64/dyninst /usr/lib64/mysql " + +# Whether dlopen is supported. +dlopen_support=unknown + +# Whether dlopen of programs is supported. +dlopen_self=unknown + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=unknown + +# Commands to strip libraries. +old_striplib="strip --strip-debug" +striplib="strip --strip-unneeded" + + +# The linker used to build libraries. +LD="/bin/ld -m elf_x86_64" + +# How to create reloadable object files. +reload_flag=" -r" +reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs" + +# Commands used to build an old-style archive. +old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$tool_oldlib" + +# A language specific compiler. +CC="cc" + +# Is the compiler the GNU compiler? +with_gcc=yes + +# Compiler flag to turn off builtin functions. +no_builtin_flag=" -fno-builtin" + +# Additional compiler flags for building library objects. +pic_flag=" -fPIC -DPIC" + +# How to pass a linker flag through the compiler. +wl="-Wl," + +# Compiler flag to prevent dynamic linking. +link_static_flag="" + +# Does compiler simultaneously support -c and -o options? +compiler_c_o="yes" + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=no + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=no + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec="\${wl}--export-dynamic" + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive" + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object="no" + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds="" + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds="" + +# Commands used to build a shared archive. +archive_cmds="\$CC -shared \$pic_flag \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib" +archive_expsym_cmds="echo \\\"{ global:\\\" > \$output_objdir/\$libname.ver~ + cat \$export_symbols | sed -e \\\"s/\\\\(.*\\\\)/\\\\1;/\\\" >> \$output_objdir/\$libname.ver~ + echo \\\"local: *; };\\\" >> \$output_objdir/\$libname.ver~ + \$CC -shared \$pic_flag \$libobjs \$deplibs \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-version-script \${wl}\$output_objdir/\$libname.ver -o \$lib" + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds="" +module_expsym_cmds="" + +# Whether we are building with GNU ld or not. +with_gnu_ld="yes" + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag="" + +# Flag that enforces no undefined symbols. +no_undefined_flag="" + +# Flag to hardcode $libdir into a binary during linking. +# This must work even if $libdir does not exist +hardcode_libdir_flag_spec="\${wl}-rpath \${wl}\$libdir" + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator="" + +# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=no + +# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting ${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=no + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=no + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=unsupported + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=no + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=no + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=unknown + +# Set to "yes" if exported symbols are required. +always_export_symbols=no + +# The commands to list exported symbols. +export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols" + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*" + +# Symbols that must always be exported. +include_expsyms="" + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds="" + +# Commands necessary for finishing linking programs. +postlink_cmds="" + +# Specify filename containing input files. +file_list_spec="" + +# How to hardcode a shared library path into an executable. +hardcode_action=immediate + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs="" + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects="" +postdep_objects="" +predeps="" +postdeps="" + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path="" + +# ### END LIBTOOL CONFIG + + +# libtool (GNU libtool) 2.4.2 +# Written by Gordon Matzigkeit , 1996 + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, +# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, +# or obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +# Usage: $progname [OPTION]... [MODE-ARG]... +# +# Provide generalized library-building support services. +# +# --config show all configuration variables +# --debug enable verbose shell tracing +# -n, --dry-run display commands without modifying any files +# --features display basic configuration information and exit +# --mode=MODE use operation mode MODE +# --preserve-dup-deps don't remove duplicate dependency libraries +# --quiet, --silent don't print informational messages +# --no-quiet, --no-silent +# print informational messages (default) +# --no-warn don't display warning messages +# --tag=TAG use configuration variables from tag TAG +# -v, --verbose print more informational messages than default +# --no-verbose don't print the extra informational messages +# --version print version information +# -h, --help, --help-all print short, long, or detailed help message +# +# MODE must be one of the following: +# +# clean remove files from the build directory +# compile compile a source file into a libtool object +# execute automatically set library path, then run a program +# finish complete the installation of libtool libraries +# install install libraries or executables +# link create a library or an executable +# uninstall remove libraries from an installed directory +# +# MODE-ARGS vary depending on the MODE. When passed as first option, +# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. +# Try `$progname --help --mode=MODE' for a more detailed description of MODE. +# +# When reporting a bug, please describe a test case to reproduce it and +# include the following information: +# +# host-triplet: $host +# shell: $SHELL +# compiler: $LTCC +# compiler flags: $LTCFLAGS +# linker: $LD (gnu? $with_gnu_ld) +# $progname: (GNU libtool) 2.4.2 +# automake: $automake_version +# autoconf: $autoconf_version +# +# Report bugs to . +# GNU libtool home page: . +# General help using GNU software: . + +PROGRAM=libtool +PACKAGE=libtool +VERSION=2.4.2 +TIMESTAMP="" +package_revision=1.3337 + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + +# NLS nuisances: We save the old values to restore during execute mode. +lt_user_locale= +lt_safe_locale= +for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES +do + eval "if test \"\${$lt_var+set}\" = set; then + save_$lt_var=\$$lt_var + $lt_var=C + export $lt_var + lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" + lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" + fi" +done +LC_ALL=C +LANGUAGE=C +export LANGUAGE LC_ALL + +$lt_unset CDPATH + + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" + + + +: ${CP="cp -f"} +test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} +: ${MAKE="make"} +: ${MKDIR="mkdir"} +: ${MV="mv -f"} +: ${RM="rm -f"} +: ${SHELL="${CONFIG_SHELL-/bin/sh}"} +: ${Xsed="$SED -e 1s/^X//"} + +# Global variables: +EXIT_SUCCESS=0 +EXIT_FAILURE=1 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. + +exit_status=$EXIT_SUCCESS + +# Make sure IFS has a sensible default +lt_nl=' +' +IFS=" $lt_nl" + +dirname="s,/[^/]*$,," +basename="s,^.*/,," + +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac +} # Extended-shell func_dirname implementation + + +# func_basename file +func_basename () +{ + func_basename_result="${1##*/}" +} # Extended-shell func_basename implementation + + +# func_dirname_and_basename file append nondir_replacement +# perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# Implementation must be kept synchronized with func_dirname +# and func_basename. For efficiency, we do not delegate to +# those functions but instead duplicate the functionality here. +func_dirname_and_basename () +{ + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac + func_basename_result="${1##*/}" +} # Extended-shell func_dirname_and_basename implementation + + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# func_strip_suffix prefix name +func_stripname () +{ + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary parameter first. + func_stripname_result=${3} + func_stripname_result=${func_stripname_result#"${1}"} + func_stripname_result=${func_stripname_result%"${2}"} +} # Extended-shell func_stripname implementation + + +# These SED scripts presuppose an absolute path with a trailing slash. +pathcar='s,^/\([^/]*\).*$,\1,' +pathcdr='s,^/[^/]*,,' +removedotparts=':dotsl + s@/\./@/@g + t dotsl + s,/\.$,/,' +collapseslashes='s@/\{1,\}@/@g' +finalslash='s,/*$,/,' + +# func_normal_abspath PATH +# Remove doubled-up and trailing slashes, "." path components, +# and cancel out any ".." path components in PATH after making +# it an absolute path. +# value returned in "$func_normal_abspath_result" +func_normal_abspath () +{ + # Start from root dir and reassemble the path. + func_normal_abspath_result= + func_normal_abspath_tpath=$1 + func_normal_abspath_altnamespace= + case $func_normal_abspath_tpath in + "") + # Empty path, that just means $cwd. + func_stripname '' '/' "`pwd`" + func_normal_abspath_result=$func_stripname_result + return + ;; + # The next three entries are used to spot a run of precisely + # two leading slashes without using negated character classes; + # we take advantage of case's first-match behaviour. + ///*) + # Unusual form of absolute path, do nothing. + ;; + //*) + # Not necessarily an ordinary path; POSIX reserves leading '//' + # and for example Cygwin uses it to access remote file shares + # over CIFS/SMB, so we conserve a leading double slash if found. + func_normal_abspath_altnamespace=/ + ;; + /*) + # Absolute path, do nothing. + ;; + *) + # Relative path, prepend $cwd. + func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath + ;; + esac + # Cancel out all the simple stuff to save iterations. We also want + # the path to end with a slash for ease of parsing, so make sure + # there is one (and only one) here. + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` + while :; do + # Processed it all yet? + if test "$func_normal_abspath_tpath" = / ; then + # If we ascended to the root using ".." the result may be empty now. + if test -z "$func_normal_abspath_result" ; then + func_normal_abspath_result=/ + fi + break + fi + func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$pathcar"` + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$pathcdr"` + # Figure out what to do with it + case $func_normal_abspath_tcomponent in + "") + # Trailing empty path component, ignore it. + ;; + ..) + # Parent dir; strip last assembled component from result. + func_dirname "$func_normal_abspath_result" + func_normal_abspath_result=$func_dirname_result + ;; + *) + # Actual path component, append it. + func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent + ;; + esac + done + # Restore leading double-slash if one was found on entry. + func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result +} + +# func_relative_path SRCDIR DSTDIR +# generates a relative path from SRCDIR to DSTDIR, with a trailing +# slash if non-empty, suitable for immediately appending a filename +# without needing to append a separator. +# value returned in "$func_relative_path_result" +func_relative_path () +{ + func_relative_path_result= + func_normal_abspath "$1" + func_relative_path_tlibdir=$func_normal_abspath_result + func_normal_abspath "$2" + func_relative_path_tbindir=$func_normal_abspath_result + + # Ascend the tree starting from libdir + while :; do + # check if we have found a prefix of bindir + case $func_relative_path_tbindir in + $func_relative_path_tlibdir) + # found an exact match + func_relative_path_tcancelled= + break + ;; + $func_relative_path_tlibdir*) + # found a matching prefix + func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" + func_relative_path_tcancelled=$func_stripname_result + if test -z "$func_relative_path_result"; then + func_relative_path_result=. + fi + break + ;; + *) + func_dirname $func_relative_path_tlibdir + func_relative_path_tlibdir=${func_dirname_result} + if test "x$func_relative_path_tlibdir" = x ; then + # Have to descend all the way to the root! + func_relative_path_result=../$func_relative_path_result + func_relative_path_tcancelled=$func_relative_path_tbindir + break + fi + func_relative_path_result=../$func_relative_path_result + ;; + esac + done + + # Now calculate path; take care to avoid doubling-up slashes. + func_stripname '' '/' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + func_stripname '/' '/' "$func_relative_path_tcancelled" + if test "x$func_stripname_result" != x ; then + func_relative_path_result=${func_relative_path_result}/${func_stripname_result} + fi + + # Normalisation. If bindir is libdir, return empty string, + # else relative path ending with a slash; either way, target + # file name can be directly appended. + if test ! -z "$func_relative_path_result"; then + func_stripname './' '' "$func_relative_path_result/" + func_relative_path_result=$func_stripname_result + fi +} + +# The name of this program: +func_dirname_and_basename "$progpath" +progname=$func_basename_result + +# Make sure we have an absolute path for reexecution: +case $progpath in + [\\/]*|[A-Za-z]:\\*) ;; + *[\\/]*) + progdir=$func_dirname_result + progdir=`cd "$progdir" && pwd` + progpath="$progdir/$progname" + ;; + *) + save_IFS="$IFS" + IFS=${PATH_SEPARATOR-:} + for progdir in $PATH; do + IFS="$save_IFS" + test -x "$progdir/$progname" && break + done + IFS="$save_IFS" + test -n "$progdir" || progdir=`pwd` + progpath="$progdir/$progname" + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed="${SED}"' -e 1s/^X//' +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution that turns a string into a regex matching for the +# string literally. +sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' + +# Sed substitution that converts a w32 file name or path +# which contains forward slashes, into one that contains +# (escaped) backslashes. A very naive implementation. +lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + +# Re-`\' parameter expansions in output of double_quote_subst that were +# `\'-ed in input to the same. If an odd number of `\' preceded a '$' +# in input to double_quote_subst, that '$' was protected from expansion. +# Since each input `\' is now two `\'s, look for any number of runs of +# four `\'s followed by two `\'s and then a '$'. `\' that '$'. +bs='\\' +bs2='\\\\' +bs4='\\\\\\\\' +dollar='\$' +sed_double_backslash="\ + s/$bs4/&\\ +/g + s/^$bs2$dollar/$bs&/ + s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g + s/\n//g" + +# Standard options: +opt_dry_run=false +opt_help=false +opt_quiet=false +opt_verbose=false +opt_warning=: + +# func_echo arg... +# Echo program name prefixed message, along with the current mode +# name if it has been set yet. +func_echo () +{ + $ECHO "$progname: ${opt_mode+$opt_mode: }$*" +} + +# func_verbose arg... +# Echo program name prefixed message in verbose mode only. +func_verbose () +{ + $opt_verbose && func_echo ${1+"$@"} + + # A bug in bash halts the script if the last line of a function + # fails when set -e is in force, so we need another command to + # work around that: + : +} + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + +# func_error arg... +# Echo program name prefixed message to standard error. +func_error () +{ + $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 +} + +# func_warning arg... +# Echo program name prefixed warning message to standard error. +func_warning () +{ + $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 + + # bash bug again: + : +} + +# func_fatal_error arg... +# Echo program name prefixed message to standard error, and exit. +func_fatal_error () +{ + func_error ${1+"$@"} + exit $EXIT_FAILURE +} + +# func_fatal_help arg... +# Echo program name prefixed message to standard error, followed by +# a help hint, and exit. +func_fatal_help () +{ + func_error ${1+"$@"} + func_fatal_error "$help" +} +help="Try \`$progname --help' for more information." ## default + + +# func_grep expression filename +# Check whether EXPRESSION matches any line of FILENAME, without output. +func_grep () +{ + $GREP "$1" "$2" >/dev/null 2>&1 +} + + +# func_mkdir_p directory-path +# Make sure the entire path to DIRECTORY-PATH is available. +func_mkdir_p () +{ + my_directory_path="$1" + my_dir_list= + + if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then + + # Protect directory names starting with `-' + case $my_directory_path in + -*) my_directory_path="./$my_directory_path" ;; + esac + + # While some portion of DIR does not yet exist... + while test ! -d "$my_directory_path"; do + # ...make a list in topmost first order. Use a colon delimited + # list incase some portion of path contains whitespace. + my_dir_list="$my_directory_path:$my_dir_list" + + # If the last portion added has no slash in it, the list is done + case $my_directory_path in */*) ;; *) break ;; esac + + # ...otherwise throw away the child directory and loop + my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` + done + my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` + + save_mkdir_p_IFS="$IFS"; IFS=':' + for my_dir in $my_dir_list; do + IFS="$save_mkdir_p_IFS" + # mkdir can fail with a `File exist' error if two processes + # try to create one of the directories concurrently. Don't + # stop in that case! + $MKDIR "$my_dir" 2>/dev/null || : + done + IFS="$save_mkdir_p_IFS" + + # Bail out if we (or some other process) failed to create a directory. + test -d "$my_directory_path" || \ + func_fatal_error "Failed to create \`$1'" + fi +} + + +# func_mktempdir [string] +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, STRING is the basename for that directory. +func_mktempdir () +{ + my_template="${TMPDIR-/tmp}/${1-$progname}" + + if test "$opt_dry_run" = ":"; then + # Return a directory name, but don't create it in dry-run mode + my_tmpdir="${my_template}-$$" + else + + # If mktemp works, use that first and foremost + my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` + + if test ! -d "$my_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + my_tmpdir="${my_template}-${RANDOM-0}$$" + + save_mktempdir_umask=`umask` + umask 0077 + $MKDIR "$my_tmpdir" + umask $save_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$my_tmpdir" || \ + func_fatal_error "cannot create temporary directory \`$my_tmpdir'" + fi + + $ECHO "$my_tmpdir" +} + + +# func_quote_for_eval arg +# Aesthetically quote ARG to be evaled later. +# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT +# is double-quoted, suitable for a subsequent eval, whereas +# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters +# which are still active within double quotes backslashified. +func_quote_for_eval () +{ + case $1 in + *[\\\`\"\$]*) + func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; + *) + func_quote_for_eval_unquoted_result="$1" ;; + esac + + case $func_quote_for_eval_unquoted_result in + # Double-quote args containing shell metacharacters to delay + # word splitting, command substitution and and variable + # expansion for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" + ;; + *) + func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" + esac +} + + +# func_quote_for_expand arg +# Aesthetically quote ARG to be evaled later; same as above, +# but do not quote variable references. +func_quote_for_expand () +{ + case $1 in + *[\\\`\"]*) + my_arg=`$ECHO "$1" | $SED \ + -e "$double_quote_subst" -e "$sed_double_backslash"` ;; + *) + my_arg="$1" ;; + esac + + case $my_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting and command substitution for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + my_arg="\"$my_arg\"" + ;; + esac + + func_quote_for_expand_result="$my_arg" +} + + +# func_show_eval cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. +func_show_eval () +{ + my_cmd="$1" + my_fail_exp="${2-:}" + + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + if ${opt_dry_run-false}; then :; else + eval "$my_cmd" + my_status=$? + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi + fi +} + + +# func_show_eval_locale cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. Use the saved locale for evaluation. +func_show_eval_locale () +{ + my_cmd="$1" + my_fail_exp="${2-:}" + + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + if ${opt_dry_run-false}; then :; else + eval "$lt_user_locale + $my_cmd" + my_status=$? + eval "$lt_safe_locale" + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi + fi +} + +# func_tr_sh +# Turn $1 into a string suitable for a shell variable name. +# Result is stored in $func_tr_sh_result. All characters +# not in the set a-zA-Z0-9_ are replaced with '_'. Further, +# if $1 begins with a digit, a '_' is prepended as well. +func_tr_sh () +{ + case $1 in + [0-9]* | *[!a-zA-Z0-9_]*) + func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` + ;; + * ) + func_tr_sh_result=$1 + ;; + esac +} + + +# func_version +# Echo version message to standard output and exit. +func_version () +{ + $opt_debug + + $SED -n '/(C)/!b go + :more + /\./!{ + N + s/\n# / / + b more + } + :go + /^# '$PROGRAM' (GNU /,/# warranty; / { + s/^# // + s/^# *$// + s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ + p + }' < "$progpath" + exit $? +} + +# func_usage +# Echo short help message to standard output and exit. +func_usage () +{ + $opt_debug + + $SED -n '/^# Usage:/,/^# *.*--help/ { + s/^# // + s/^# *$// + s/\$progname/'$progname'/ + p + }' < "$progpath" + echo + $ECHO "run \`$progname --help | more' for full usage" + exit $? +} + +# func_help [NOEXIT] +# Echo long help message to standard output and exit, +# unless 'noexit' is passed as argument. +func_help () +{ + $opt_debug + + $SED -n '/^# Usage:/,/# Report bugs to/ { + :print + s/^# // + s/^# *$// + s*\$progname*'$progname'* + s*\$host*'"$host"'* + s*\$SHELL*'"$SHELL"'* + s*\$LTCC*'"$LTCC"'* + s*\$LTCFLAGS*'"$LTCFLAGS"'* + s*\$LD*'"$LD"'* + s/\$with_gnu_ld/'"$with_gnu_ld"'/ + s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ + s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ + p + d + } + /^# .* home page:/b print + /^# General help using/b print + ' < "$progpath" + ret=$? + if test -z "$1"; then + exit $ret + fi +} + +# func_missing_arg argname +# Echo program name prefixed message to standard error and set global +# exit_cmd. +func_missing_arg () +{ + $opt_debug + + func_error "missing argument for $1." + exit_cmd=exit +} + + +# func_split_short_opt shortopt +# Set func_split_short_opt_name and func_split_short_opt_arg shell +# variables after splitting SHORTOPT after the 2nd character. +func_split_short_opt () +{ + func_split_short_opt_arg=${1#??} + func_split_short_opt_name=${1%"$func_split_short_opt_arg"} +} # Extended-shell func_split_short_opt implementation + + +# func_split_long_opt longopt +# Set func_split_long_opt_name and func_split_long_opt_arg shell +# variables after splitting LONGOPT at the `=' sign. +func_split_long_opt () +{ + func_split_long_opt_name=${1%%=*} + func_split_long_opt_arg=${1#*=} +} # Extended-shell func_split_long_opt implementation + +exit_cmd=: + + + + + +magic="%%%MAGIC variable%%%" +magic_exe="%%%MAGIC EXE variable%%%" + +# Global variables. +nonopt= +preserve_args= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" +extracted_archives= +extracted_serial=0 + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "${1}+=\${2}" +} # Extended-shell func_append implementation + +# func_append_quoted var value +# Quote VALUE and append to the end of shell variable VAR, separated +# by a space. +func_append_quoted () +{ + func_quote_for_eval "${2}" + eval "${1}+=\\ \$func_quote_for_eval_result" +} # Extended-shell func_append_quoted implementation + + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=$(( $* )) +} # Extended-shell func_arith implementation + + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=${#1} +} # Extended-shell func_len implementation + + +# func_lo2o object +func_lo2o () +{ + case ${1} in + *.lo) func_lo2o_result=${1%.lo}.${objext} ;; + *) func_lo2o_result=${1} ;; + esac +} # Extended-shell func_lo2o implementation + + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=${1%.*}.lo +} # Extended-shell func_xform implementation + + +# func_fatal_configuration arg... +# Echo program name prefixed message to standard error, followed by +# a configuration failure hint, and exit. +func_fatal_configuration () +{ + func_error ${1+"$@"} + func_error "See the $PACKAGE documentation for more information." + func_fatal_error "Fatal configuration error." +} + + +# func_config +# Display the configuration for all the tags in this script. +func_config () +{ + re_begincf='^# ### BEGIN LIBTOOL' + re_endcf='^# ### END LIBTOOL' + + # Default configuration. + $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" + + # Now print the configurations for the tags. + for tagname in $taglist; do + $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" + done + + exit $? +} + +# func_features +# Display the features supported by this script. +func_features () +{ + echo "host: $host" + if test "$build_libtool_libs" = yes; then + echo "enable shared libraries" + else + echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then + echo "enable static libraries" + else + echo "disable static libraries" + fi + + exit $? +} + +# func_enable_tag tagname +# Verify that TAGNAME is valid, and either flag an error and exit, or +# enable the TAGNAME tag. We also add TAGNAME to the global $taglist +# variable here. +func_enable_tag () +{ + # Global variable: + tagname="$1" + + re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" + re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" + sed_extractcf="/$re_begincf/,/$re_endcf/p" + + # Validate tagname. + case $tagname in + *[!-_A-Za-z0-9,/]*) + func_fatal_error "invalid tag name: $tagname" + ;; + esac + + # Don't test for the "default" C tag, as we know it's + # there but not specially marked. + case $tagname in + CC) ;; + *) + if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then + taglist="$taglist $tagname" + + # Evaluate the configuration. Be careful to quote the path + # and the sed script, to avoid splitting on whitespace, but + # also don't use non-portable quotes within backquotes within + # quotes we have to do it in 2 steps: + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` + eval "$extractedcf" + else + func_error "ignoring unknown tag $tagname" + fi + ;; + esac +} + +# func_check_version_match +# Ensure that we are using m4 macros, and libtool script from the same +# release of libtool. +func_check_version_match () +{ + if test "$package_revision" != "$macro_revision"; then + if test "$VERSION" != "$macro_version"; then + if test -z "$macro_version"; then + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from an older release. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + fi + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, +$progname: but the definition of this LT_INIT comes from revision $macro_revision. +$progname: You should recreate aclocal.m4 with macros from revision $package_revision +$progname: of $PACKAGE $VERSION and run autoconf again. +_LT_EOF + fi + + exit $EXIT_MISMATCH + fi +} + + +# Shorthand for --mode=foo, only valid as the first argument +case $1 in +clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; +compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; +execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; +finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; +install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; +link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; +uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; +esac + + + +# Option defaults: +opt_debug=: +opt_dry_run=false +opt_config=false +opt_preserve_dup_deps=false +opt_features=false +opt_finish=false +opt_help=false +opt_help_all=false +opt_silent=: +opt_warning=: +opt_verbose=: +opt_silent=false +opt_verbose=false + + +# Parse options once, thoroughly. This comes as soon as possible in the +# script to make things like `--version' happen as quickly as we can. +{ + # this just eases exit handling + while test $# -gt 0; do + opt="$1" + shift + case $opt in + --debug|-x) opt_debug='set -x' + func_echo "enabling shell trace mode" + $opt_debug + ;; + --dry-run|--dryrun|-n) + opt_dry_run=: + ;; + --config) + opt_config=: +func_config + ;; + --dlopen|-dlopen) + optarg="$1" + opt_dlopen="${opt_dlopen+$opt_dlopen +}$optarg" + shift + ;; + --preserve-dup-deps) + opt_preserve_dup_deps=: + ;; + --features) + opt_features=: +func_features + ;; + --finish) + opt_finish=: +set dummy --mode finish ${1+"$@"}; shift + ;; + --help) + opt_help=: + ;; + --help-all) + opt_help_all=: +opt_help=': help-all' + ;; + --mode) + test $# = 0 && func_missing_arg $opt && break + optarg="$1" + opt_mode="$optarg" +case $optarg in + # Valid mode arguments: + clean|compile|execute|finish|install|link|relink|uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument for $opt" + exit_cmd=exit + break + ;; +esac + shift + ;; + --no-silent|--no-quiet) + opt_silent=false +preserve_args+=" $opt" + ;; + --no-warning|--no-warn) + opt_warning=false +preserve_args+=" $opt" + ;; + --no-verbose) + opt_verbose=false +preserve_args+=" $opt" + ;; + --silent|--quiet) + opt_silent=: +preserve_args+=" $opt" + opt_verbose=false + ;; + --verbose|-v) + opt_verbose=: +preserve_args+=" $opt" +opt_silent=false + ;; + --tag) + test $# = 0 && func_missing_arg $opt && break + optarg="$1" + opt_tag="$optarg" +preserve_args+=" $opt $optarg" +func_enable_tag "$optarg" + shift + ;; + + -\?|-h) func_usage ;; + --help) func_help ;; + --version) func_version ;; + + # Separate optargs to long options: + --*=*) + func_split_long_opt "$opt" + set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} + shift + ;; + + # Separate non-argument short options: + -\?*|-h*|-n*|-v*) + func_split_short_opt "$opt" + set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + --) break ;; + -*) func_fatal_help "unrecognized option \`$opt'" ;; + *) set dummy "$opt" ${1+"$@"}; shift; break ;; + esac + done + + # Validate options: + + # save first non-option argument + if test "$#" -gt 0; then + nonopt="$opt" + shift + fi + + # preserve --debug + test "$opt_debug" = : || preserve_args+=" --debug" + + case $host in + *cygwin* | *mingw* | *pw32* | *cegcc*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps + ;; + esac + + $opt_help || { + # Sanity checks first: + func_check_version_match + + if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then + func_fatal_configuration "not configured to build any kind of library" + fi + + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$opt_dlopen" && test "$opt_mode" != execute; then + func_error "unrecognized option \`-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$progname --help --mode=$opt_mode' for more information." + } + + + # Bail if the options were screwed + $exit_cmd $EXIT_FAILURE +} + + + + +## ----------- ## +## Main. ## +## ----------- ## + +# func_lalib_p file +# True iff FILE is a libtool `.la' library or `.lo' object file. +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_lalib_p () +{ + test -f "$1" && + $SED -e 4q "$1" 2>/dev/null \ + | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 +} + +# func_lalib_unsafe_p file +# True iff FILE is a libtool `.la' library or `.lo' object file. +# This function implements the same check as func_lalib_p without +# resorting to external programs. To this end, it redirects stdin and +# closes it afterwards, without saving the original file descriptor. +# As a safety measure, use it only where a negative result would be +# fatal anyway. Works if `file' does not exist. +func_lalib_unsafe_p () +{ + lalib_p=no + if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then + for lalib_p_l in 1 2 3 4 + do + read lalib_p_line + case "$lalib_p_line" in + \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; + esac + done + exec 0<&5 5<&- + fi + test "$lalib_p" = yes +} + +# func_ltwrapper_script_p file +# True iff FILE is a libtool wrapper script +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_script_p () +{ + func_lalib_p "$1" +} + +# func_ltwrapper_executable_p file +# True iff FILE is a libtool wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_executable_p () +{ + func_ltwrapper_exec_suffix= + case $1 in + *.exe) ;; + *) func_ltwrapper_exec_suffix=.exe ;; + esac + $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 +} + +# func_ltwrapper_scriptname file +# Assumes file is an ltwrapper_executable +# uses $file to determine the appropriate filename for a +# temporary ltwrapper_script. +func_ltwrapper_scriptname () +{ + func_dirname_and_basename "$1" "" "." + func_stripname '' '.exe' "$func_basename_result" + func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" +} + +# func_ltwrapper_p file +# True iff FILE is a libtool wrapper script or wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_p () +{ + func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" +} + + +# func_execute_cmds commands fail_cmd +# Execute tilde-delimited COMMANDS. +# If FAIL_CMD is given, eval that upon failure. +# FAIL_CMD may read-access the current command in variable CMD! +func_execute_cmds () +{ + $opt_debug + save_ifs=$IFS; IFS='~' + for cmd in $1; do + IFS=$save_ifs + eval cmd=\"$cmd\" + func_show_eval "$cmd" "${2-:}" + done + IFS=$save_ifs +} + + +# func_source file +# Source FILE, adding directory component if necessary. +# Note that it is not necessary on cygwin/mingw to append a dot to +# FILE even if both FILE and FILE.exe exist: automatic-append-.exe +# behavior happens only for exec(3), not for open(2)! Also, sourcing +# `FILE.' does not work on cygwin managed mounts. +func_source () +{ + $opt_debug + case $1 in + */* | *\\*) . "$1" ;; + *) . "./$1" ;; + esac +} + + +# func_resolve_sysroot PATH +# Replace a leading = in PATH with a sysroot. Store the result into +# func_resolve_sysroot_result +func_resolve_sysroot () +{ + func_resolve_sysroot_result=$1 + case $func_resolve_sysroot_result in + =*) + func_stripname '=' '' "$func_resolve_sysroot_result" + func_resolve_sysroot_result=$lt_sysroot$func_stripname_result + ;; + esac +} + +# func_replace_sysroot PATH +# If PATH begins with the sysroot, replace it with = and +# store the result into func_replace_sysroot_result. +func_replace_sysroot () +{ + case "$lt_sysroot:$1" in + ?*:"$lt_sysroot"*) + func_stripname "$lt_sysroot" '' "$1" + func_replace_sysroot_result="=$func_stripname_result" + ;; + *) + # Including no sysroot. + func_replace_sysroot_result=$1 + ;; + esac +} + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + $opt_debug + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case "$@ " in + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + func_echo "unable to infer tagged configuration" + func_fatal_error "specify a tag with \`--tag'" +# else +# func_verbose "using $tagname tagged configuration" + fi + ;; + esac + fi +} + + + +# func_write_libtool_object output_name pic_name nonpic_name +# Create a libtool object file (analogous to a ".la" file), +# but don't create it if we're doing a dry run. +func_write_libtool_object () +{ + write_libobj=${1} + if test "$build_libtool_libs" = yes; then + write_lobj=\'${2}\' + else + write_lobj=none + fi + + if test "$build_old_libs" = yes; then + write_oldobj=\'${3}\' + else + write_oldobj=none + fi + + $opt_dry_run || { + cat >${write_libobj}T </dev/null` + if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then + func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | + $SED -e "$lt_sed_naive_backslashify"` + else + func_convert_core_file_wine_to_w32_result= + fi + fi +} +# end: func_convert_core_file_wine_to_w32 + + +# func_convert_core_path_wine_to_w32 ARG +# Helper function used by path conversion functions when $build is *nix, and +# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly +# configured wine environment available, with the winepath program in $build's +# $PATH. Assumes ARG has no leading or trailing path separator characters. +# +# ARG is path to be converted from $build format to win32. +# Result is available in $func_convert_core_path_wine_to_w32_result. +# Unconvertible file (directory) names in ARG are skipped; if no directory names +# are convertible, then the result may be empty. +func_convert_core_path_wine_to_w32 () +{ + $opt_debug + # unfortunately, winepath doesn't convert paths, only file names + func_convert_core_path_wine_to_w32_result="" + if test -n "$1"; then + oldIFS=$IFS + IFS=: + for func_convert_core_path_wine_to_w32_f in $1; do + IFS=$oldIFS + func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" + if test -n "$func_convert_core_file_wine_to_w32_result" ; then + if test -z "$func_convert_core_path_wine_to_w32_result"; then + func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" + else + func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" + fi + fi + done + IFS=$oldIFS + fi +} +# end: func_convert_core_path_wine_to_w32 + + +# func_cygpath ARGS... +# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when +# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) +# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or +# (2), returns the Cygwin file name or path in func_cygpath_result (input +# file name or path is assumed to be in w32 format, as previously converted +# from $build's *nix or MSYS format). In case (3), returns the w32 file name +# or path in func_cygpath_result (input file name or path is assumed to be in +# Cygwin format). Returns an empty string on error. +# +# ARGS are passed to cygpath, with the last one being the file name or path to +# be converted. +# +# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH +# environment variable; do not put it in $PATH. +func_cygpath () +{ + $opt_debug + if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then + func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` + if test "$?" -ne 0; then + # on failure, ensure result is empty + func_cygpath_result= + fi + else + func_cygpath_result= + func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" + fi +} +#end: func_cygpath + + +# func_convert_core_msys_to_w32 ARG +# Convert file name or path ARG from MSYS format to w32 format. Return +# result in func_convert_core_msys_to_w32_result. +func_convert_core_msys_to_w32 () +{ + $opt_debug + # awkward: cmd appends spaces to result + func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | + $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` +} +#end: func_convert_core_msys_to_w32 + + +# func_convert_file_check ARG1 ARG2 +# Verify that ARG1 (a file name in $build format) was converted to $host +# format in ARG2. Otherwise, emit an error message, but continue (resetting +# func_to_host_file_result to ARG1). +func_convert_file_check () +{ + $opt_debug + if test -z "$2" && test -n "$1" ; then + func_error "Could not determine host file name corresponding to" + func_error " \`$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback: + func_to_host_file_result="$1" + fi +} +# end func_convert_file_check + + +# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH +# Verify that FROM_PATH (a path in $build format) was converted to $host +# format in TO_PATH. Otherwise, emit an error message, but continue, resetting +# func_to_host_file_result to a simplistic fallback value (see below). +func_convert_path_check () +{ + $opt_debug + if test -z "$4" && test -n "$3"; then + func_error "Could not determine the host path corresponding to" + func_error " \`$3'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback. This is a deliberately simplistic "conversion" and + # should not be "improved". See libtool.info. + if test "x$1" != "x$2"; then + lt_replace_pathsep_chars="s|$1|$2|g" + func_to_host_path_result=`echo "$3" | + $SED -e "$lt_replace_pathsep_chars"` + else + func_to_host_path_result="$3" + fi + fi +} +# end func_convert_path_check + + +# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG +# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT +# and appending REPL if ORIG matches BACKPAT. +func_convert_path_front_back_pathsep () +{ + $opt_debug + case $4 in + $1 ) func_to_host_path_result="$3$func_to_host_path_result" + ;; + esac + case $4 in + $2 ) func_to_host_path_result+="$3" + ;; + esac +} +# end func_convert_path_front_back_pathsep + + +################################################## +# $build to $host FILE NAME CONVERSION FUNCTIONS # +################################################## +# invoked via `$to_host_file_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# Result will be available in $func_to_host_file_result. + + +# func_to_host_file ARG +# Converts the file name ARG from $build format to $host format. Return result +# in func_to_host_file_result. +func_to_host_file () +{ + $opt_debug + $to_host_file_cmd "$1" +} +# end func_to_host_file + + +# func_to_tool_file ARG LAZY +# converts the file name ARG from $build format to toolchain format. Return +# result in func_to_tool_file_result. If the conversion in use is listed +# in (the comma separated) LAZY, no conversion takes place. +func_to_tool_file () +{ + $opt_debug + case ,$2, in + *,"$to_tool_file_cmd",*) + func_to_tool_file_result=$1 + ;; + *) + $to_tool_file_cmd "$1" + func_to_tool_file_result=$func_to_host_file_result + ;; + esac +} +# end func_to_tool_file + + +# func_convert_file_noop ARG +# Copy ARG to func_to_host_file_result. +func_convert_file_noop () +{ + func_to_host_file_result="$1" +} +# end func_convert_file_noop + + +# func_convert_file_msys_to_w32 ARG +# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_file_result. +func_convert_file_msys_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_to_host_file_result="$func_convert_core_msys_to_w32_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_w32 + + +# func_convert_file_cygwin_to_w32 ARG +# Convert file name ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_file_cygwin_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + # because $build is cygwin, we call "the" cygpath in $PATH; no need to use + # LT_CYGPATH in this case. + func_to_host_file_result=`cygpath -m "$1"` + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_cygwin_to_w32 + + +# func_convert_file_nix_to_w32 ARG +# Convert file name ARG from *nix to w32 format. Requires a wine environment +# and a working winepath. Returns result in func_to_host_file_result. +func_convert_file_nix_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_file_wine_to_w32 "$1" + func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_w32 + + +# func_convert_file_msys_to_cygwin ARG +# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_file_msys_to_cygwin () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_cygpath -u "$func_convert_core_msys_to_w32_result" + func_to_host_file_result="$func_cygpath_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_cygwin + + +# func_convert_file_nix_to_cygwin ARG +# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed +# in a wine environment, working winepath, and LT_CYGPATH set. Returns result +# in func_to_host_file_result. +func_convert_file_nix_to_cygwin () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. + func_convert_core_file_wine_to_w32 "$1" + func_cygpath -u "$func_convert_core_file_wine_to_w32_result" + func_to_host_file_result="$func_cygpath_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_cygwin + + +############################################# +# $build to $host PATH CONVERSION FUNCTIONS # +############################################# +# invoked via `$to_host_path_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# The result will be available in $func_to_host_path_result. +# +# Path separators are also converted from $build format to $host format. If +# ARG begins or ends with a path separator character, it is preserved (but +# converted to $host format) on output. +# +# All path conversion functions are named using the following convention: +# file name conversion function : func_convert_file_X_to_Y () +# path conversion function : func_convert_path_X_to_Y () +# where, for any given $build/$host combination the 'X_to_Y' value is the +# same. If conversion functions are added for new $build/$host combinations, +# the two new functions must follow this pattern, or func_init_to_host_path_cmd +# will break. + + +# func_init_to_host_path_cmd +# Ensures that function "pointer" variable $to_host_path_cmd is set to the +# appropriate value, based on the value of $to_host_file_cmd. +to_host_path_cmd= +func_init_to_host_path_cmd () +{ + $opt_debug + if test -z "$to_host_path_cmd"; then + func_stripname 'func_convert_file_' '' "$to_host_file_cmd" + to_host_path_cmd="func_convert_path_${func_stripname_result}" + fi +} + + +# func_to_host_path ARG +# Converts the path ARG from $build format to $host format. Return result +# in func_to_host_path_result. +func_to_host_path () +{ + $opt_debug + func_init_to_host_path_cmd + $to_host_path_cmd "$1" +} +# end func_to_host_path + + +# func_convert_path_noop ARG +# Copy ARG to func_to_host_path_result. +func_convert_path_noop () +{ + func_to_host_path_result="$1" +} +# end func_convert_path_noop + + +# func_convert_path_msys_to_w32 ARG +# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_path_result. +func_convert_path_msys_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # Remove leading and trailing path separator characters from ARG. MSYS + # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; + # and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result="$func_convert_core_msys_to_w32_result" + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_msys_to_w32 + + +# func_convert_path_cygwin_to_w32 ARG +# Convert path ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_path_cygwin_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_cygwin_to_w32 + + +# func_convert_path_nix_to_w32 ARG +# Convert path ARG from *nix to w32 format. Requires a wine environment and +# a working winepath. Returns result in func_to_host_file_result. +func_convert_path_nix_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_nix_to_w32 + + +# func_convert_path_msys_to_cygwin ARG +# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_path_msys_to_cygwin () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_msys_to_w32_result" + func_to_host_path_result="$func_cygpath_result" + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_msys_to_cygwin + + +# func_convert_path_nix_to_cygwin ARG +# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a +# a wine environment, working winepath, and LT_CYGPATH set. Returns result in +# func_to_host_file_result. +func_convert_path_nix_to_cygwin () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # Remove leading and trailing path separator characters from + # ARG. msys behavior is inconsistent here, cygpath turns them + # into '.;' and ';.', and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" + func_to_host_path_result="$func_cygpath_result" + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_nix_to_cygwin + + +# func_mode_compile arg... +func_mode_compile () +{ + $opt_debug + # Get the compilation command and the source file. + base_compile= + srcfile="$nonopt" # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + pie_flag= + + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg="$arg" + arg_mode=normal + ;; + + target ) + libobj="$arg" + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + test -n "$libobj" && \ + func_fatal_error "you cannot specify \`-o' more than once" + arg_mode=target + continue + ;; + + -pie | -fpie | -fPIE) + pie_flag+=" $arg" + continue + ;; + + -shared | -static | -prefer-pic | -prefer-non-pic) + later+=" $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + lastarg= + save_ifs="$IFS"; IFS=',' + for arg in $args; do + IFS="$save_ifs" + func_append_quoted lastarg "$arg" + done + IFS="$save_ifs" + func_stripname ' ' '' "$lastarg" + lastarg=$func_stripname_result + + # Add the arguments to base_compile. + base_compile+=" $lastarg" + continue + ;; + + *) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg="$srcfile" + srcfile="$arg" + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + func_append_quoted base_compile "$lastarg" + done # for arg + + case $arg_mode in + arg) + func_fatal_error "you must specify an argument for -Xcompile" + ;; + target) + func_fatal_error "you must specify a target with \`-o'" + ;; + *) + # Get the name of the library object. + test -z "$libobj" && { + func_basename "$srcfile" + libobj="$func_basename_result" + } + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + case $libobj in + *.[cCFSifmso] | \ + *.ada | *.adb | *.ads | *.asm | \ + *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ + *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) + func_xform "$libobj" + libobj=$func_xform_result + ;; + esac + + case $libobj in + *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; + *) + func_fatal_error "cannot determine name of library object from \`$libobj'" + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -shared) + test "$build_libtool_libs" != yes && \ + func_fatal_configuration "can not build a shared library" + build_old_libs=no + continue + ;; + + -static) + build_libtool_libs=no + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + func_quote_for_eval "$libobj" + test "X$libobj" != "X$func_quote_for_eval_result" \ + && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && func_warning "libobj name \`$libobj' may not contain shell special characters." + func_dirname_and_basename "$obj" "/" "" + objname="$func_basename_result" + xdir="$func_dirname_result" + lobj=${xdir}$objdir/$objname + + test -z "$base_compile" && \ + func_fatal_help "you must specify a compilation command" + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2* | cegcc*) + pic_mode=default + ;; + esac + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test "$compiler_c_o" = no; then + output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then + $ECHO "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + removelist+=" $output_obj" + $ECHO "$srcfile" > "$lockfile" + fi + + $opt_dry_run || $RM $removelist + removelist+=" $lockfile" + trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 + + func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 + srcfile=$func_to_tool_file_result + func_quote_for_eval "$srcfile" + qsrcfile=$func_quote_for_eval_result + + # Only build a PIC object if we are building libtool libraries. + if test "$build_libtool_libs" = yes; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + if test "$pic_mode" != no; then + command="$base_compile $qsrcfile $pic_flag" + else + # Don't build PIC code + command="$base_compile $qsrcfile" + fi + + func_mkdir_p "$xdir$objdir" + + if test -z "$output_obj"; then + # Place PIC objects in $objdir + command+=" -o $lobj" + fi + + func_show_eval_locale "$command" \ + 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' + + if test "$need_locks" = warn && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + func_show_eval '$MV "$output_obj" "$lobj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + + # Allow error messages only from the first compilation. + if test "$suppress_opt" = yes; then + suppress_output=' >/dev/null 2>&1' + fi + fi + + # Only build a position-dependent object if we build old libraries. + if test "$build_old_libs" = yes; then + if test "$pic_mode" != yes; then + # Don't build PIC code + command="$base_compile $qsrcfile$pie_flag" + else + command="$base_compile $qsrcfile $pic_flag" + fi + if test "$compiler_c_o" = yes; then + command+=" -o $obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + command+="$suppress_output" + func_show_eval_locale "$command" \ + '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' + + if test "$need_locks" = warn && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + func_show_eval '$MV "$output_obj" "$obj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + fi + + $opt_dry_run || { + func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" + + # Unlock the critical section if it was locked + if test "$need_locks" != no; then + removelist=$lockfile + $RM "$lockfile" + fi + } + + exit $EXIT_SUCCESS +} + +$opt_help || { + test "$opt_mode" = compile && func_mode_compile ${1+"$@"} +} + +func_mode_help () +{ + # We need to display help for each of the modes. + case $opt_mode in + "") + # Generic help is extracted from the usage comments + # at the start of this file. + func_help + ;; + + clean) + $ECHO \ +"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + + compile) + $ECHO \ +"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -no-suppress do not suppress compiler output for multiple passes + -prefer-pic try to build PIC objects only + -prefer-non-pic try to build non-PIC objects only + -shared do not build a \`.o' file suitable for static linking + -static only build a \`.o' file suitable for static linking + -Wc,FLAG pass FLAG directly to the compiler + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + + execute) + $ECHO \ +"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + + finish) + $ECHO \ +"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + + install) + $ECHO \ +"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The following components of INSTALL-COMMAND are treated specially: + + -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + + link) + $ECHO \ +"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -bindir BINDIR specify path to binaries directory (for systems where + libraries must be found in the PATH setting at runtime) + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE Use a list of object files found in FILE to specify objects + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -shared only do dynamic linking of libtool libraries + -shrext SUFFIX override the standard shared library file extension + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + -weak LIBNAME declare that the target provides the LIBNAME interface + -Wc,FLAG + -Xcompiler FLAG pass linker-specific FLAG directly to the compiler + -Wl,FLAG + -Xlinker FLAG pass linker-specific FLAG directly to the linker + -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + + uninstall) + $ECHO \ +"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + + *) + func_fatal_help "invalid operation mode \`$opt_mode'" + ;; + esac + + echo + $ECHO "Try \`$progname --help' for more information about other modes." +} + +# Now that we've collected a possible --mode arg, show help if necessary +if $opt_help; then + if test "$opt_help" = :; then + func_mode_help + else + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + func_mode_help + done + } | sed -n '1p; 2,$s/^Usage:/ or: /p' + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + echo + func_mode_help + done + } | + sed '1d + /^When reporting/,/^Report/{ + H + d + } + $x + /information about other modes/d + /more detailed .*MODE/d + s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' + fi + exit $? +fi + + +# func_mode_execute arg... +func_mode_execute () +{ + $opt_debug + # The first argument is the command name. + cmd="$nonopt" + test -z "$cmd" && \ + func_fatal_help "you must specify a COMMAND" + + # Handle -dlopen flags immediately. + for file in $opt_dlopen; do + test -f "$file" \ + || func_fatal_help "\`$file' is not a file" + + dir= + case $file in + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "\`$lib' is not a valid libtool archive" + + # Read the libtool library. + dlname= + library_names= + func_source "$file" + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && \ + func_warning "\`$file' was not linked with \`-export-dynamic'" + continue + fi + + func_dirname "$file" "" "." + dir="$func_dirname_result" + + if test -f "$dir/$objdir/$dlname"; then + dir+="/$objdir" + else + if test ! -f "$dir/$dlname"; then + func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" + fi + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + func_dirname "$file" "" "." + dir="$func_dirname_result" + ;; + + *) + func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -* | *.la | *.lo ) ;; + *) + # Do a test to see if this is really a libtool program. + if func_ltwrapper_script_p "$file"; then + func_source "$file" + # Transform arg to wrapped name. + file="$progdir/$program" + elif func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + func_source "$func_ltwrapper_scriptname_result" + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + func_append_quoted args "$file" + done + + if test "X$opt_dry_run" = Xfalse; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES + do + eval "if test \"\${save_$lt_var+set}\" = set; then + $lt_var=\$save_$lt_var; export $lt_var + else + $lt_unset $lt_var + fi" + done + + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" + echo "export $shlibpath_var" + fi + $ECHO "$cmd$args" + exit $EXIT_SUCCESS + fi +} + +test "$opt_mode" = execute && func_mode_execute ${1+"$@"} + + +# func_mode_finish arg... +func_mode_finish () +{ + $opt_debug + libs= + libdirs= + admincmds= + + for opt in "$nonopt" ${1+"$@"} + do + if test -d "$opt"; then + libdirs+=" $opt" + + elif test -f "$opt"; then + if func_lalib_unsafe_p "$opt"; then + libs+=" $opt" + else + func_warning "\`$opt' is not a valid libtool archive" + fi + + else + func_fatal_error "invalid argument \`$opt'" + fi + done + + if test -n "$libs"; then + if test -n "$lt_sysroot"; then + sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` + sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" + else + sysroot_cmd= + fi + + # Remove sysroot references + if $opt_dry_run; then + for lib in $libs; do + echo "removing references to $lt_sysroot and \`=' prefixes from $lib" + done + else + tmpdir=`func_mktempdir` + for lib in $libs; do + sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ + > $tmpdir/tmp-la + mv -f $tmpdir/tmp-la $lib + done + ${RM}r "$tmpdir" + fi + fi + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + func_execute_cmds "$finish_cmds" 'admincmds="$admincmds +'"$cmd"'"' + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $opt_dry_run || eval "$cmds" || admincmds+=" + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + $opt_silent && exit $EXIT_SUCCESS + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + echo "----------------------------------------------------------------------" + echo "Libraries have been installed in:" + for libdir in $libdirs; do + $ECHO " $libdir" + done + echo + echo "If you ever happen to want to link against installed libraries" + echo "in a given directory, LIBDIR, you must either use libtool, and" + echo "specify the full pathname of the library, or use the \`-LLIBDIR'" + echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + echo " during execution" + fi + if test -n "$runpath_var"; then + echo " - add LIBDIR to the \`$runpath_var' environment variable" + echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $ECHO " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + $ECHO " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + echo + + echo "See any operating system documentation about shared libraries for" + case $host in + solaris2.[6789]|solaris2.1[0-9]) + echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" + echo "pages." + ;; + *) + echo "more information, such as the ld(1) and ld.so(8) manual pages." + ;; + esac + echo "----------------------------------------------------------------------" + fi + exit $EXIT_SUCCESS +} + +test "$opt_mode" = finish && func_mode_finish ${1+"$@"} + + +# func_mode_install arg... +func_mode_install () +{ + $opt_debug + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + case $nonopt in *shtool*) :;; *) false;; esac; then + # Aesthetically quote it. + func_quote_for_eval "$nonopt" + install_prog="$func_quote_for_eval_result " + arg=$1 + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + func_quote_for_eval "$arg" + install_prog+="$func_quote_for_eval_result" + install_shared_prog=$install_prog + case " $install_prog " in + *[\\\ /]cp\ *) install_cp=: ;; + *) install_cp=false ;; + esac + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + no_mode=: + for arg + do + arg2= + if test -n "$dest"; then + files+=" $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=yes ;; + -f) + if $install_cp; then :; else + prev=$arg + fi + ;; + -g | -m | -o) + prev=$arg + ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + if test "x$prev" = x-m && test -n "$install_override_mode"; then + arg2=$install_override_mode + no_mode=false + fi + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + func_quote_for_eval "$arg" + install_prog+=" $func_quote_for_eval_result" + if test -n "$arg2"; then + func_quote_for_eval "$arg2" + fi + install_shared_prog+=" $func_quote_for_eval_result" + done + + test -z "$install_prog" && \ + func_fatal_help "you must specify an install program" + + test -n "$prev" && \ + func_fatal_help "the \`$prev' option requires an argument" + + if test -n "$install_override_mode" && $no_mode; then + if $install_cp; then :; else + func_quote_for_eval "$install_override_mode" + install_shared_prog+=" -m $func_quote_for_eval_result" + fi + fi + + if test -z "$files"; then + if test -z "$dest"; then + func_fatal_help "no file or destination specified" + else + func_fatal_help "you must specify a destination" + fi + fi + + # Strip any trailing slash from the destination. + func_stripname '' '/' "$dest" + dest=$func_stripname_result + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + func_dirname_and_basename "$dest" "" "." + destdir="$func_dirname_result" + destname="$func_basename_result" + + # Not a directory, so check to see that there is only one file specified. + set dummy $files; shift + test "$#" -gt 1 && \ + func_fatal_help "\`$dest' is not a directory" + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + func_fatal_help "\`$destdir' must be an absolute directory name" + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + staticlibs+=" $file" + ;; + + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "\`$file' is not a valid libtool archive" + + library_names= + old_library= + relink_command= + func_source "$file" + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) current_libdirs+=" $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) future_libdirs+=" $libdir" ;; + esac + fi + + func_dirname "$file" "/" "" + dir="$func_dirname_result" + dir+="$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + test "$inst_prefix_dir" = "$destdir" && \ + func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + func_warning "relinking \`$file'" + func_show_eval "$relink_command" \ + 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' + fi + + # See the names of the shared library. + set dummy $library_names; shift + if test -n "$1"; then + realname="$1" + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ + 'exit $?' + tstripme="$stripme" + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + case $realname in + *.dll.a) + tstripme="" + ;; + esac + ;; + esac + if test -n "$tstripme" && test -n "$striplib"; then + func_show_eval "$striplib $destdir/$realname" 'exit $?' + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try `ln -sf' first, because the `ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + test "$linkname" != "$realname" \ + && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + func_execute_cmds "$postinstall_cmds" 'exit $?' + fi + + # Install the pseudo-library for information purposes. + func_basename "$file" + name="$func_basename_result" + instname="$dir/$name"i + func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' + + # Maybe install the static library, too. + test -n "$old_library" && staticlibs+=" $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + func_basename "$file" + destfile="$func_basename_result" + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + func_lo2o "$destfile" + staticdest=$func_lo2o_result + ;; + *.$objext) + staticdest="$destfile" + destfile= + ;; + *) + func_fatal_help "cannot copy a libtool object to \`$destfile'" + ;; + esac + + # Install the libtool object if requested. + test -n "$destfile" && \ + func_show_eval "$install_prog $file $destfile" 'exit $?' + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + func_lo2o "$file" + staticobj=$func_lo2o_result + func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + func_basename "$file" + destfile="$func_basename_result" + destfile="$destdir/$destfile" + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext="" + case $file in + *.exe) + if test ! -f "$file"; then + func_stripname '' '.exe' "$file" + file=$func_stripname_result + stripped_ext=".exe" + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin* | *mingw*) + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + wrapper=$func_ltwrapper_scriptname_result + else + func_stripname '' '.exe' "$file" + wrapper=$func_stripname_result + fi + ;; + *) + wrapper=$file + ;; + esac + if func_ltwrapper_script_p "$wrapper"; then + notinst_deplibs= + relink_command= + + func_source "$wrapper" + + # Check the variables that should have been set. + test -z "$generated_by_libtool_version" && \ + func_fatal_error "invalid libtool wrapper script \`$wrapper'" + + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + func_source "$lib" + fi + libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + func_warning "\`$lib' has not been installed in \`$libdir'" + finalize=no + fi + done + + relink_command= + func_source "$wrapper" + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + $opt_dry_run || { + if test "$finalize" = yes; then + tmpdir=`func_mktempdir` + func_basename "$file$stripped_ext" + file="$func_basename_result" + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` + + $opt_silent || { + func_quote_for_expand "$relink_command" + eval "func_echo $func_quote_for_expand_result" + } + if eval "$relink_command"; then : + else + func_error "error: relink \`$file' with the above command before installing it" + $opt_dry_run || ${RM}r "$tmpdir" + continue + fi + file="$outputname" + else + func_warning "cannot relink \`$file'" + fi + } + else + # Install the binary that we compiled earlier. + file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + func_stripname '' '.exe' "$destfile" + destfile=$func_stripname_result + ;; + esac + ;; + esac + func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' + $opt_dry_run || if test -n "$outputname"; then + ${RM}r "$tmpdir" + fi + ;; + esac + done + + for file in $staticlibs; do + func_basename "$file" + name="$func_basename_result" + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + + func_show_eval "$install_prog \$file \$oldlib" 'exit $?' + + if test -n "$stripme" && test -n "$old_striplib"; then + func_show_eval "$old_striplib $tool_oldlib" 'exit $?' + fi + + # Do each command in the postinstall commands. + func_execute_cmds "$old_postinstall_cmds" 'exit $?' + done + + test -n "$future_libdirs" && \ + func_warning "remember to run \`$progname --finish$future_libdirs'" + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + $opt_dry_run && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi +} + +test "$opt_mode" = install && func_mode_install ${1+"$@"} + + +# func_generate_dlsyms outputname originator pic_p +# Extract symbols from dlprefiles and create ${outputname}S.o with +# a dlpreopen symbol table. +func_generate_dlsyms () +{ + $opt_debug + my_outputname="$1" + my_originator="$2" + my_pic_p="${3-no}" + my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` + my_dlsyms= + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + my_dlsyms="${my_outputname}S.c" + else + func_error "not configured to extract global symbols from dlpreopened files" + fi + fi + + if test -n "$my_dlsyms"; then + case $my_dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${my_outputname}.nm" + + func_show_eval "$RM $nlist ${nlist}S ${nlist}T" + + # Parse the name list into a source file. + func_verbose "creating $output_objdir/$my_dlsyms" + + $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ +/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ +/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) +#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" +#endif + +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + func_verbose "generating symbol list for \`$output'" + + $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` + for progfile in $progfiles; do + func_to_tool_file "$progfile" func_convert_file_msys_to_w32 + func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" + $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $opt_dry_run || { + eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + if test -n "$export_symbols_regex"; then + $opt_dry_run || { + eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$outputname.exp" + $opt_dry_run || { + $RM $export_symbols + eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + } + else + $opt_dry_run || { + eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + } + fi + fi + + for dlprefile in $dlprefiles; do + func_verbose "extracting global C symbols from \`$dlprefile'" + func_basename "$dlprefile" + name="$func_basename_result" + case $host in + *cygwin* | *mingw* | *cegcc* ) + # if an import library, we need to obtain dlname + if func_win32_import_lib_p "$dlprefile"; then + func_tr_sh "$dlprefile" + eval "curr_lafile=\$libfile_$func_tr_sh_result" + dlprefile_dlbasename="" + if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then + # Use subshell, to avoid clobbering current variable values + dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` + if test -n "$dlprefile_dlname" ; then + func_basename "$dlprefile_dlname" + dlprefile_dlbasename="$func_basename_result" + else + # no lafile. user explicitly requested -dlpreopen . + $sharedlib_from_linklib_cmd "$dlprefile" + dlprefile_dlbasename=$sharedlib_from_linklib_result + fi + fi + $opt_dry_run || { + if test -n "$dlprefile_dlbasename" ; then + eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' + else + func_warning "Could not compute DLL name from $name" + eval '$ECHO ": $name " >> "$nlist"' + fi + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | + $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" + } + else # not an import lib + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + fi + ;; + *) + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + ;; + esac + done + + $opt_dry_run || { + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $MV "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if $GREP -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + $GREP -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' + else + echo '/* NONE */' >> "$output_objdir/$my_dlsyms" + fi + + echo >> "$output_objdir/$my_dlsyms" "\ + +/* The mapping between symbol names and symbols. */ +typedef struct { + const char *name; + void *address; +} lt_dlsymlist; +extern LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[]; +LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[] = +{\ + { \"$my_originator\", (void *) 0 }," + + case $need_lib_prefix in + no) + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + *) + eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + esac + echo >> "$output_objdir/$my_dlsyms" "\ + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_${my_prefix}_LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + } # !$opt_dry_run + + pic_flag_for_symtable= + case "$compile_command " in + *" -static "*) ;; + *) + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; + *-*-hpux*) + pic_flag_for_symtable=" $pic_flag" ;; + *) + if test "X$my_pic_p" != Xno; then + pic_flag_for_symtable=" $pic_flag" + fi + ;; + esac + ;; + esac + symtab_cflags= + for arg in $LTCFLAGS; do + case $arg in + -pie | -fpie | -fPIE) ;; + *) symtab_cflags+=" $arg" ;; + esac + done + + # Now compile the dynamic symbol file. + func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' + + # Clean up the generated files. + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' + + # Transform the symbol file into the correct name. + symfileobj="$output_objdir/${my_outputname}S.$objext" + case $host in + *cygwin* | *mingw* | *cegcc* ) + if test -f "$output_objdir/$my_outputname.def"; then + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + else + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + fi + ;; + *) + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + ;; + esac + ;; + *) + func_fatal_error "unknown suffix for \`$my_dlsyms'" + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` + fi +} + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +# Despite the name, also deal with 64 bit binaries. +func_win32_libid () +{ + $opt_debug + win32_libid_type="unknown" + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | + $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then + func_to_tool_file "$1" func_convert_file_msys_to_w32 + win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | + $SED -n -e ' + 1,100{ + / I /{ + s,.*,import, + p + q + } + }'` + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $ECHO "$win32_libid_type" +} + +# func_cygming_dll_for_implib ARG +# +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib () +{ + $opt_debug + sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` +} + +# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs +# +# The is the core of a fallback implementation of a +# platform-specific function to extract the name of the +# DLL associated with the specified import library LIBNAME. +# +# SECTION_NAME is either .idata$6 or .idata$7, depending +# on the platform and compiler that created the implib. +# +# Echos the name of the DLL associated with the +# specified import library. +func_cygming_dll_for_implib_fallback_core () +{ + $opt_debug + match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` + $OBJDUMP -s --section "$1" "$2" 2>/dev/null | + $SED '/^Contents of section '"$match_literal"':/{ + # Place marker at beginning of archive member dllname section + s/.*/====MARK====/ + p + d + } + # These lines can sometimes be longer than 43 characters, but + # are always uninteresting + /:[ ]*file format pe[i]\{,1\}-/d + /^In archive [^:]*:/d + # Ensure marker is printed + /^====MARK====/p + # Remove all lines with less than 43 characters + /^.\{43\}/!d + # From remaining lines, remove first 43 characters + s/^.\{43\}//' | + $SED -n ' + # Join marker and all lines until next marker into a single line + /^====MARK====/ b para + H + $ b para + b + :para + x + s/\n//g + # Remove the marker + s/^====MARK====// + # Remove trailing dots and whitespace + s/[\. \t]*$// + # Print + /./p' | + # we now have a list, one entry per line, of the stringified + # contents of the appropriate section of all members of the + # archive which possess that section. Heuristic: eliminate + # all those which have a first or second character that is + # a '.' (that is, objdump's representation of an unprintable + # character.) This should work for all archives with less than + # 0x302f exports -- but will fail for DLLs whose name actually + # begins with a literal '.' or a single character followed by + # a '.'. + # + # Of those that remain, print the first one. + $SED -e '/^\./d;/^.\./d;q' +} + +# func_cygming_gnu_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is a GNU/binutils-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_gnu_implib_p () +{ + $opt_debug + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` + test -n "$func_cygming_gnu_implib_tmp" +} + +# func_cygming_ms_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is an MS-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_ms_implib_p () +{ + $opt_debug + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` + test -n "$func_cygming_ms_implib_tmp" +} + +# func_cygming_dll_for_implib_fallback ARG +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# +# This fallback implementation is for use when $DLLTOOL +# does not support the --identify-strict option. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib_fallback () +{ + $opt_debug + if func_cygming_gnu_implib_p "$1" ; then + # binutils import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` + elif func_cygming_ms_implib_p "$1" ; then + # ms-generated import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` + else + # unknown + sharedlib_from_linklib_result="" + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + $opt_debug + f_ex_an_ar_dir="$1"; shift + f_ex_an_ar_oldlib="$1" + if test "$lock_old_archive_extraction" = yes; then + lockfile=$f_ex_an_ar_oldlib.lock + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + fi + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ + 'stat=$?; rm -f "$lockfile"; exit $stat' + if test "$lock_old_archive_extraction" = yes; then + $opt_dry_run || rm -f "$lockfile" + fi + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" + fi +} + + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + $opt_debug + my_gentop="$1"; shift + my_oldlibs=${1+"$@"} + my_oldobjs="" + my_xlib="" + my_xabs="" + my_xdir="" + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + func_basename "$my_xlib" + my_xlib="$func_basename_result" + my_xlib_u=$my_xlib + while :; do + case " $extracted_archives " in + *" $my_xlib_u "*) + func_arith $extracted_serial + 1 + extracted_serial=$func_arith_result + my_xlib_u=lt$extracted_serial-$my_xlib ;; + *) break ;; + esac + done + extracted_archives="$extracted_archives $my_xlib_u" + my_xdir="$my_gentop/$my_xlib_u" + + func_mkdir_p "$my_xdir" + + case $host in + *-darwin*) + func_verbose "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + $opt_dry_run || { + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + darwin_base_archive=`basename "$darwin_archive"` + darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` + if test -n "$darwin_arches"; then + darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches ; do + func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" + $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" + func_extract_an_archive "`pwd`" "${darwin_base_archive}" + cd "$darwin_curdir" + $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" + done # $darwin_arches + ## Okay now we've a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` + $LIPO -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + $RM -rf unfat-$$ + cd "$darwin_orig_dir" + else + cd $darwin_orig_dir + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + } # !$opt_dry_run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` + done + + func_extract_archives_result="$my_oldobjs" +} + + +# func_emit_wrapper [arg=no] +# +# Emit a libtool wrapper script on stdout. +# Don't directly open a file because we may want to +# incorporate the script contents within a cygwin/mingw +# wrapper executable. Must ONLY be called from within +# func_mode_link because it depends on a number of variables +# set therein. +# +# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +# variable will take. If 'yes', then the emitted script +# will assume that the directory in which it is stored is +# the $objdir directory. This is a cygwin/mingw-specific +# behavior. +func_emit_wrapper () +{ + func_emit_wrapper_arg1=${1-no} + + $ECHO "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='$sed_quote_subst' + +# Be Bourne compatible +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variables: + generated_by_libtool_version='$macro_version' + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$ECHO are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + file=\"\$0\"" + + qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` + $ECHO "\ + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + ECHO=\"$qECHO\" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string "--lt-" +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's $0 value, followed by "$@". +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=\$0 + shift + for lt_opt + do + case \"\$lt_opt\" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` + test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. + lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` + cat \"\$lt_dump_D/\$lt_dump_F\" + exit 0 + ;; + --lt-*) + \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n \"\$lt_option_debug\"; then + echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" + lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2* | *-cegcc*) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $ECHO "\ + \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from \$@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case \" \$* \" in + *\\ --lt-*) + for lt_wr_arg + do + case \$lt_wr_arg in + --lt-*) ;; + *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; + esac + shift + done ;; + esac + func_exec_program_core \${1+\"\$@\"} +} + + # Parse options + func_parse_lt_options \"\$0\" \${1+\"\$@\"} + + # Find the directory that this script lives in. + thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 + if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then + # special case for '.' + if test \"\$thisdir\" = \".\"; then + thisdir=\`pwd\` + fi + # remove .libs from thisdir + case \"\$thisdir\" in + *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; + $objdir ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + $ECHO "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $MKDIR \"\$progdir\" + else + $RM \"\$progdir/\$file\" + fi" + + $ECHO "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + $ECHO \"\$relink_command_output\" >&2 + $RM \"\$progdir/\$file\" + exit 1 + fi + fi + + $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $RM \"\$progdir/\$program\"; + $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $RM \"\$progdir/\$file\" + fi" + else + $ECHO "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $ECHO "\ + + if test -f \"\$progdir/\$program\"; then" + + # fixup the dll searchpath if we need to. + # + # Fix the DLL searchpath if we need to. Do this before prepending + # to shlibpath, because on Windows, both are PATH and uninstalled + # libraries must come first. + if test -n "$dllsearchpath"; then + $ECHO "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $ECHO "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` + + export $shlibpath_var +" + fi + + $ECHO "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. + func_exec_program \${1+\"\$@\"} + fi + else + # The program doesn't exist. + \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 + \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 + \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi +fi\ +" +} + + +# func_emit_cwrapperexe_src +# emit the source code for a wrapper executable on stdout +# Must ONLY be called from within func_mode_link because +# it depends on a number of variable set therein. +func_emit_cwrapperexe_src () +{ + cat < +#include +#ifdef _MSC_VER +# include +# include +# include +#else +# include +# include +# ifdef __CYGWIN__ +# include +# endif +#endif +#include +#include +#include +#include +#include +#include +#include +#include + +/* declarations of non-ANSI functions */ +#if defined(__MINGW32__) +# ifdef __STRICT_ANSI__ +int _putenv (const char *); +# endif +#elif defined(__CYGWIN__) +# ifdef __STRICT_ANSI__ +char *realpath (const char *, char *); +int putenv (char *); +int setenv (const char *, const char *, int); +# endif +/* #elif defined (other platforms) ... */ +#endif + +/* portability defines, excluding path handling macros */ +#if defined(_MSC_VER) +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +# define S_IXUSR _S_IEXEC +# ifndef _INTPTR_T_DEFINED +# define _INTPTR_T_DEFINED +# define intptr_t int +# endif +#elif defined(__MINGW32__) +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +#elif defined(__CYGWIN__) +# define HAVE_SETENV +# define FOPEN_WB "wb" +/* #elif defined (other platforms) ... */ +#endif + +#if defined(PATH_MAX) +# define LT_PATHMAX PATH_MAX +#elif defined(MAXPATHLEN) +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef S_IXOTH +# define S_IXOTH 0 +#endif +#ifndef S_IXGRP +# define S_IXGRP 0 +#endif + +/* path handling portability macros */ +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ + defined (__OS2__) +# define HAVE_DOS_BASED_FILE_SYSTEM +# define FOPEN_WB "wb" +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#ifndef FOPEN_WB +# define FOPEN_WB "w" +#endif +#ifndef _O_BINARY +# define _O_BINARY 0 +#endif + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free ((void *) stale); stale = 0; } \ +} while (0) + +#if defined(LT_DEBUGWRAPPER) +static int lt_debug = 1; +#else +static int lt_debug = 0; +#endif + +const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ + +void *xmalloc (size_t num); +char *xstrdup (const char *string); +const char *base_name (const char *name); +char *find_executable (const char *wrapper); +char *chase_symlinks (const char *pathspec); +int make_executable (const char *path); +int check_executable (const char *path); +char *strendzap (char *str, const char *pat); +void lt_debugprintf (const char *file, int line, const char *fmt, ...); +void lt_fatal (const char *file, int line, const char *message, ...); +static const char *nonnull (const char *s); +static const char *nonempty (const char *s); +void lt_setenv (const char *name, const char *value); +char *lt_extend_str (const char *orig_value, const char *add, int to_end); +void lt_update_exe_path (const char *name, const char *value); +void lt_update_lib_path (const char *name, const char *value); +char **prepare_spawn (char **argv); +void lt_dump_script (FILE *f); +EOF + + cat <= 0) + && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) + return 1; + else + return 0; +} + +int +make_executable (const char *path) +{ + int rval = 0; + struct stat st; + + lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", + nonempty (path)); + if ((!path) || (!*path)) + return 0; + + if (stat (path, &st) >= 0) + { + rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); + } + return rval; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise + Does not chase symlinks, even on platforms that support them. +*/ +char * +find_executable (const char *wrapper) +{ + int has_slash = 0; + const char *p; + const char *p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + int tmp_len; + char *concat_name; + + lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", + nonempty (wrapper)); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char *path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char *q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR (*q)) + break; + p_len = q - p; + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = + XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = + XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + return NULL; +} + +char * +chase_symlinks (const char *pathspec) +{ +#ifndef S_ISLNK + return xstrdup (pathspec); +#else + char buf[LT_PATHMAX]; + struct stat s; + char *tmp_pathspec = xstrdup (pathspec); + char *p; + int has_symlinks = 0; + while (strlen (tmp_pathspec) && !has_symlinks) + { + lt_debugprintf (__FILE__, __LINE__, + "checking path component for symlinks: %s\n", + tmp_pathspec); + if (lstat (tmp_pathspec, &s) == 0) + { + if (S_ISLNK (s.st_mode) != 0) + { + has_symlinks = 1; + break; + } + + /* search backwards for last DIR_SEPARATOR */ + p = tmp_pathspec + strlen (tmp_pathspec) - 1; + while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + p--; + if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + { + /* no more DIR_SEPARATORS left */ + break; + } + *p = '\0'; + } + else + { + lt_fatal (__FILE__, __LINE__, + "error accessing file \"%s\": %s", + tmp_pathspec, nonnull (strerror (errno))); + } + } + XFREE (tmp_pathspec); + + if (!has_symlinks) + { + return xstrdup (pathspec); + } + + tmp_pathspec = realpath (pathspec, buf); + if (tmp_pathspec == 0) + { + lt_fatal (__FILE__, __LINE__, + "could not follow symlinks for %s", pathspec); + } + return xstrdup (tmp_pathspec); +#endif +} + +char * +strendzap (char *str, const char *pat) +{ + size_t len, patlen; + + assert (str != NULL); + assert (pat != NULL); + + len = strlen (str); + patlen = strlen (pat); + + if (patlen <= len) + { + str += len - patlen; + if (strcmp (str, pat) == 0) + *str = '\0'; + } + return str; +} + +void +lt_debugprintf (const char *file, int line, const char *fmt, ...) +{ + va_list args; + if (lt_debug) + { + (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); + va_start (args, fmt); + (void) vfprintf (stderr, fmt, args); + va_end (args); + } +} + +static void +lt_error_core (int exit_status, const char *file, + int line, const char *mode, + const char *message, va_list ap) +{ + fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *file, int line, const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); + va_end (ap); +} + +static const char * +nonnull (const char *s) +{ + return s ? s : "(null)"; +} + +static const char * +nonempty (const char *s) +{ + return (s && !*s) ? "(empty)" : nonnull (s); +} + +void +lt_setenv (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_setenv) setting '%s' to '%s'\n", + nonnull (name), nonnull (value)); + { +#ifdef HAVE_SETENV + /* always make a copy, for consistency with !HAVE_SETENV */ + char *str = xstrdup (value); + setenv (name, str, 1); +#else + int len = strlen (name) + 1 + strlen (value) + 1; + char *str = XMALLOC (char, len); + sprintf (str, "%s=%s", name, value); + if (putenv (str) != EXIT_SUCCESS) + { + XFREE (str); + } +#endif + } +} + +char * +lt_extend_str (const char *orig_value, const char *add, int to_end) +{ + char *new_value; + if (orig_value && *orig_value) + { + int orig_value_len = strlen (orig_value); + int add_len = strlen (add); + new_value = XMALLOC (char, add_len + orig_value_len + 1); + if (to_end) + { + strcpy (new_value, orig_value); + strcpy (new_value + orig_value_len, add); + } + else + { + strcpy (new_value, add); + strcpy (new_value + add_len, orig_value); + } + } + else + { + new_value = xstrdup (add); + } + return new_value; +} + +void +lt_update_exe_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + /* some systems can't cope with a ':'-terminated path #' */ + int len = strlen (new_value); + while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) + { + new_value[len-1] = '\0'; + } + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +void +lt_update_lib_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +EOF + case $host_os in + mingw*) + cat <<"EOF" + +/* Prepares an argument vector before calling spawn(). + Note that spawn() does not by itself call the command interpreter + (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : + ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&v); + v.dwPlatformId == VER_PLATFORM_WIN32_NT; + }) ? "cmd.exe" : "command.com"). + Instead it simply concatenates the arguments, separated by ' ', and calls + CreateProcess(). We must quote the arguments since Win32 CreateProcess() + interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a + special way: + - Space and tab are interpreted as delimiters. They are not treated as + delimiters if they are surrounded by double quotes: "...". + - Unescaped double quotes are removed from the input. Their only effect is + that within double quotes, space and tab are treated like normal + characters. + - Backslashes not followed by double quotes are not special. + - But 2*n+1 backslashes followed by a double quote become + n backslashes followed by a double quote (n >= 0): + \" -> " + \\\" -> \" + \\\\\" -> \\" + */ +#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +char ** +prepare_spawn (char **argv) +{ + size_t argc; + char **new_argv; + size_t i; + + /* Count number of arguments. */ + for (argc = 0; argv[argc] != NULL; argc++) + ; + + /* Allocate new argument vector. */ + new_argv = XMALLOC (char *, argc + 1); + + /* Put quoted arguments into the new argument vector. */ + for (i = 0; i < argc; i++) + { + const char *string = argv[i]; + + if (string[0] == '\0') + new_argv[i] = xstrdup ("\"\""); + else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) + { + int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); + size_t length; + unsigned int backslashes; + const char *s; + char *quoted_string; + char *p; + + length = 0; + backslashes = 0; + if (quote_around) + length++; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + length += backslashes + 1; + length++; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + length += backslashes + 1; + + quoted_string = XMALLOC (char, length + 1); + + p = quoted_string; + backslashes = 0; + if (quote_around) + *p++ = '"'; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + { + unsigned int j; + for (j = backslashes + 1; j > 0; j--) + *p++ = '\\'; + } + *p++ = c; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + { + unsigned int j; + for (j = backslashes; j > 0; j--) + *p++ = '\\'; + *p++ = '"'; + } + *p = '\0'; + + new_argv[i] = quoted_string; + } + else + new_argv[i] = (char *) string; + } + new_argv[argc] = NULL; + + return new_argv; +} +EOF + ;; + esac + + cat <<"EOF" +void lt_dump_script (FILE* f) +{ +EOF + func_emit_wrapper yes | + $SED -n -e ' +s/^\(.\{79\}\)\(..*\)/\1\ +\2/ +h +s/\([\\"]\)/\\\1/g +s/$/\\n/ +s/\([^\n]*\).*/ fputs ("\1", f);/p +g +D' + cat <<"EOF" +} +EOF +} +# end: func_emit_cwrapperexe_src + +# func_win32_import_lib_p ARG +# True if ARG is an import lib, as indicated by $file_magic_cmd +func_win32_import_lib_p () +{ + $opt_debug + case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in + *import*) : ;; + *) false ;; + esac +} + +# func_mode_link arg... +func_mode_link () +{ + $opt_debug + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # which system we are compiling for in order to pass an extra + # flag for every libtool invocation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll which has undefined symbols, in which case not + # even a static library is built. For now, we need to specify + # -no-undefined on the libtool link line when we can be certain + # that all symbols are satisfied, otherwise we get a static library. + allow_undefined=yes + ;; + *) + allow_undefined=yes + ;; + esac + libtool_args=$nonopt + base_compile="$nonopt $@" + compile_command=$nonopt + finalize_command=$nonopt + + compile_rpath= + finalize_rpath= + compile_shlibpath= + finalize_shlibpath= + convenience= + old_convenience= + deplibs= + old_deplibs= + compiler_flags= + linker_flags= + dllsearchpath= + lib_search_path=`pwd` + inst_prefix_dir= + new_inherited_linker_flags= + + avoid_version=no + bindir= + dlfiles= + dlprefiles= + dlself=no + export_dynamic=no + export_symbols= + export_symbols_regex= + generated= + libobjs= + ltlibs= + module=no + no_install=no + objs= + non_pic_objects= + precious_files_regex= + prefer_static_libs=no + preload=no + prev= + prevarg= + release= + rpath= + xrpath= + perm_rpath= + temp_rpath= + thread_safe=no + vinfo= + vinfo_number=no + weak_libs= + single_module="${wl}-single_module" + func_infer_tag $base_compile + + # We need to know -static, to get the right output filenames. + for arg + do + case $arg in + -shared) + test "$build_libtool_libs" != yes && \ + func_fatal_configuration "can not build a shared library" + build_old_libs=no + break + ;; + -all-static | -static | -static-libtool-libs) + case $arg in + -all-static) + if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then + func_warning "complete static linking is impossible in this configuration" + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + esac + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg="$1" + shift + func_quote_for_eval "$arg" + qarg=$func_quote_for_eval_unquoted_result + libtool_args+=" $func_quote_for_eval_result" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + compile_command+=" @OUTPUT@" + finalize_command+=" @OUTPUT@" + ;; + esac + + case $prev in + bindir) + bindir="$arg" + prev= + continue + ;; + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + compile_command+=" @SYMFILE@" + finalize_command+=" @SYMFILE@" + preload=yes + fi + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + dlfiles+=" $arg" + else + dlprefiles+=" $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols="$arg" + test -f "$arg" \ + || func_fatal_error "symbol file \`$arg' does not exist" + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + framework) + case $host in + *-*-darwin*) + case "$deplibs " in + *" $qarg.ltframework "*) ;; + *) deplibs+=" $qarg.ltframework" # this is fixed later + ;; + esac + ;; + esac + prev= + continue + ;; + inst_prefix) + inst_prefix_dir="$arg" + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat "$save_arg"` + do +# moreargs+=" $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test "$pic_object" = none && + test "$non_pic_object" = none; then + func_fatal_error "cannot find name of object for \`$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles+=" $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles+=" $pic_object" + prev= + fi + + # A PIC object. + libobjs+=" $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects+=" $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + non_pic_objects+=" $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + libobjs+=" $pic_object" + non_pic_objects+=" $non_pic_object" + else + func_fatal_error "\`$arg' is not a valid libtool object" + fi + fi + done + else + func_fatal_error "link input file \`$arg' does not exist" + fi + arg=$save_arg + prev= + continue + ;; + precious_regex) + precious_files_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) rpath+=" $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) xrpath+=" $arg" ;; + esac + fi + prev= + continue + ;; + shrext) + shrext_cmds="$arg" + prev= + continue + ;; + weak) + weak_libs+=" $arg" + prev= + continue + ;; + xcclinker) + linker_flags+=" $qarg" + compiler_flags+=" $qarg" + prev= + compile_command+=" $qarg" + finalize_command+=" $qarg" + continue + ;; + xcompiler) + compiler_flags+=" $qarg" + prev= + compile_command+=" $qarg" + finalize_command+=" $qarg" + continue + ;; + xlinker) + linker_flags+=" $qarg" + compiler_flags+=" $wl$qarg" + prev= + compile_command+=" $wl$qarg" + finalize_command+=" $wl$qarg" + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg="$arg" + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + # See comment for -static flag below, for more details. + compile_command+=" $link_static_flag" + finalize_command+=" $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + func_fatal_error "\`-allow-undefined' must not be used because it is the default" + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -bindir) + prev=bindir + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + func_fatal_error "more than one -exported-symbols argument is not allowed" + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework) + prev=framework + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + compile_command+=" $arg" + finalize_command+=" $arg" + ;; + esac + continue + ;; + + -L*) + func_stripname "-L" '' "$arg" + if test -z "$func_stripname_result"; then + if test "$#" -gt 0; then + func_fatal_error "require no space between \`-L' and \`$1'" + else + func_fatal_error "need path for \`-L' option" + fi + fi + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + test -z "$absdir" && \ + func_fatal_error "cannot determine absolute directory name of \`$dir'" + dir="$absdir" + ;; + esac + case "$deplibs " in + *" -L$dir "* | *" $arg "*) + # Will only happen for absolute or sysroot arguments + ;; + *) + # Preserve sysroot, but never include relative directories + case $dir in + [\\/]* | [A-Za-z]:[\\/]* | =*) deplibs+=" $arg" ;; + *) deplibs+=" -L$dir" ;; + esac + lib_search_path+=" $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + ::) dllsearchpath=$dir;; + *) dllsearchpath+=":$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) dllsearchpath+=":$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + deplibs+=" System.ltframework" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test "X$arg" = "X-lc" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test "X$arg" = "X-lc" && continue + ;; + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + deplibs+=" $arg" + continue + ;; + + -module) + module=yes + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + # Darwin uses the -arch flag to determine output architecture. + -model|-arch|-isysroot|--sysroot) + compiler_flags+=" $arg" + compile_command+=" $arg" + finalize_command+=" $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + compiler_flags+=" $arg" + compile_command+=" $arg" + finalize_command+=" $arg" + case "$new_inherited_linker_flags " in + *" $arg "*) ;; + * ) new_inherited_linker_flags+=" $arg" ;; + esac + continue + ;; + + -multi_module) + single_module="${wl}-multi_module" + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) + # The PATH hackery in wrapper scripts is required on Windows + # and Darwin in order for the loader to find any dlls it needs. + func_warning "\`-no-install' is ignored for $host" + func_warning "assuming \`-no-fast-install' instead" + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + func_stripname '-R' '' "$arg" + dir=$func_stripname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + =*) + func_stripname '=' '' "$dir" + dir=$lt_sysroot$func_stripname_result + ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) xrpath+=" $dir" ;; + esac + continue + ;; + + -shared) + # The effects of -shared are defined in a previous loop. + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -static | -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -weak) + prev=weak + continue + ;; + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + func_quote_for_eval "$flag" + arg+=" $func_quote_for_eval_result" + compiler_flags+=" $func_quote_for_eval_result" + done + IFS="$save_ifs" + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Wl,*) + func_stripname '-Wl,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + func_quote_for_eval "$flag" + arg+=" $wl$func_quote_for_eval_result" + compiler_flags+=" $wl$func_quote_for_eval_result" + linker_flags+=" $func_quote_for_eval_result" + done + IFS="$save_ifs" + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # -msg_* for osf cc + -msg_*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + + # Flags to be passed through unchanged, with rationale: + # -64, -mips[0-9] enable 64-bit mode for the SGI compiler + # -r[0-9][0-9]* specify processor for the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler + # +DA*, +DD* enable 64-bit mode for the HP compiler + # -q* compiler args for the IBM compiler + # -m*, -t[45]*, -txscale* architecture-specific flags for GCC + # -F/path path to uninstalled frameworks, gcc on darwin + # -p, -pg, --coverage, -fprofile-* profiling flags for GCC + # @file GCC response files + # -tp=* Portland pgcc target processor selection + # --sysroot=* for sysroot support + # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ + -O*|-flto*|-fwhopr*|-fuse-linker-plugin) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + compile_command+=" $arg" + finalize_command+=" $arg" + compiler_flags+=" $arg" + continue + ;; + + # Some other compiler flag. + -* | +*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + + *.$objext) + # A standard object. + objs+=" $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test "$pic_object" = none && + test "$non_pic_object" = none; then + func_fatal_error "cannot find name of object for \`$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + dlfiles+=" $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + dlprefiles+=" $pic_object" + prev= + fi + + # A PIC object. + libobjs+=" $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + non_pic_objects+=" $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + non_pic_objects+=" $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + libobjs+=" $pic_object" + non_pic_objects+=" $non_pic_object" + else + func_fatal_error "\`$arg' is not a valid libtool object" + fi + fi + ;; + + *.$libext) + # An archive. + deplibs+=" $arg" + old_deplibs+=" $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + func_resolve_sysroot "$arg" + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + dlfiles+=" $func_resolve_sysroot_result" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + dlprefiles+=" $func_resolve_sysroot_result" + prev= + else + deplibs+=" $func_resolve_sysroot_result" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + compile_command+=" $arg" + finalize_command+=" $arg" + fi + done # argument parsing loop + + test -n "$prev" && \ + func_fatal_help "the \`$prevarg' option requires an argument" + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + compile_command+=" $arg" + finalize_command+=" $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + func_basename "$output" + outputname="$func_basename_result" + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + func_dirname "$output" "/" "" + output_objdir="$func_dirname_result$objdir" + func_to_tool_file "$output_objdir/" + tool_output_objdir=$func_to_tool_file_result + # Create the object directory. + func_mkdir_p "$output_objdir" + + # Determine the type of output + case $output in + "") + func_fatal_help "you must specify an output file" + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if $opt_preserve_dup_deps ; then + case "$libs " in + *" $deplib "*) specialdeplibs+=" $deplib" ;; + esac + fi + libs+=" $deplib" + done + + if test "$linkmode" = lib; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if $opt_duplicate_compiler_generated_deps; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) specialdeplibs+=" $pre_post_deps" ;; + esac + pre_post_deps+=" $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + + case $linkmode in + lib) + passes="conv dlpreopen link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + + for pass in $passes; do + # The preopen pass in lib mode reverses $deplibs; put it back here + # so that -L comes before libs that need it for instance... + if test "$linkmode,$pass" = "lib,link"; then + ## FIXME: Find the place where the list is rebuilt in the wrong + ## order, and fix it there properly + tmp_deplibs= + for deplib in $deplibs; do + tmp_deplibs="$deplib $tmp_deplibs" + done + deplibs="$tmp_deplibs" + fi + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan"; then + libs="$deplibs" + deplibs= + fi + if test "$linkmode" = prog; then + case $pass in + dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + esac + fi + if test "$linkmode,$pass" = "lib,dlpreopen"; then + # Collect and forward deplibs of preopened libtool libs + for lib in $dlprefiles; do + # Ignore non-libtool-libs + dependency_libs= + func_resolve_sysroot "$lib" + case $lib in + *.la) func_source "$func_resolve_sysroot_result" ;; + esac + + # Collect preopened libtool deplibs, except any this library + # has declared as weak libs + for deplib in $dependency_libs; do + func_basename "$deplib" + deplib_base=$func_basename_result + case " $weak_libs " in + *" $deplib_base "*) ;; + *) deplibs+=" $deplib" ;; + esac + done + done + libs="$dlprefiles" + fi + if test "$pass" = dlopen; then + # Collect dlpreopened libraries + save_deplibs="$deplibs" + deplibs= + fi + + for deplib in $libs; do + lib= + found=no + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + compiler_flags+=" $deplib" + if test "$linkmode" = lib ; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) new_inherited_linker_flags+=" $deplib" ;; + esac + fi + fi + continue + ;; + -l*) + if test "$linkmode" != lib && test "$linkmode" != prog; then + func_warning "\`-l' is ignored for archives/objects" + continue + fi + func_stripname '-l' '' "$deplib" + name=$func_stripname_result + if test "$linkmode" = lib; then + searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" + else + searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" + fi + for searchdir in $searchdirs; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib="$searchdir/lib${name}${search_ext}" + if test -f "$lib"; then + if test "$search_ext" = ".la"; then + found=yes + else + found=no + fi + break 2 + fi + done + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + else # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $deplib "*) + if func_lalib_p "$lib"; then + library_names= + old_library= + func_source "$lib" + for l in $old_library $library_names; do + ll="$l" + done + if test "X$ll" = "X$old_library" ; then # only static version available + found=no + func_dirname "$lib" "" "." + ladir="$func_dirname_result" + lib=$ladir/$old_library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + fi + ;; # -l + *.ltframework) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + if test "$linkmode" = lib ; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) new_inherited_linker_flags+=" $deplib" ;; + esac + fi + fi + continue + ;; + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test "$pass" = conv && continue + newdependency_libs="$deplib $newdependency_libs" + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + newlib_search_path+=" $func_resolve_sysroot_result" + ;; + prog) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test "$pass" = scan; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + newlib_search_path+=" $func_resolve_sysroot_result" + ;; + *) + func_warning "\`-L' is ignored for archives/objects" + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test "$pass" = link; then + func_stripname '-R' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) xrpath+=" $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) + func_resolve_sysroot "$deplib" + lib=$func_resolve_sysroot_result + ;; + *.$libext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + # Linking convenience modules into shared libraries is allowed, + # but linking other static libraries is non-portable. + case " $dlpreconveniencelibs " in + *" $deplib "*) ;; + *) + valid_a_lib=no + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=yes + fi + ;; + pass_all) + valid_a_lib=yes + ;; + esac + if test "$valid_a_lib" != yes; then + echo + $ECHO "*** Warning: Trying to link with static lib archive $deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because the file extensions .$libext of this argument makes me believe" + echo "*** that it is just a static archive that I should not use here." + else + echo + $ECHO "*** Warning: Linking the shared library $output against the" + $ECHO "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + ;; + esac + continue + ;; + prog) + if test "$pass" != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + elif test "$linkmode" = prog; then + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + newdlprefiles+=" $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + newdlfiles+=" $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + + if test "$found" = yes || test -f "$lib"; then : + else + func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" + fi + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$lib" \ + || func_fatal_error "\`$lib' is not a valid libtool archive" + + func_dirname "$lib" "" "." + ladir="$func_dirname_result" + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + inherited_linker_flags= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + func_source "$lib" + + # Convert "-framework foo" to "foo.ltframework" + if test -n "$inherited_linker_flags"; then + tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` + for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do + case " $new_inherited_linker_flags " in + *" $tmp_inherited_linker_flag "*) ;; + *) new_inherited_linker_flags+=" $tmp_inherited_linker_flag";; + esac + done + fi + dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then + test -n "$dlopen" && dlfiles+=" $dlopen" + test -n "$dlpreopen" && dlprefiles+=" $dlpreopen" + fi + + if test "$pass" = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + func_fatal_error "cannot find name of link library for \`$lib'" + fi + # It is a libtool convenience library, so add in its objects. + convenience+=" $ladir/$objdir/$old_library" + old_convenience+=" $ladir/$objdir/$old_library" + elif test "$linkmode" != prog && test "$linkmode" != lib; then + func_fatal_error "\`$lib' is not a convenience library" + fi + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if $opt_preserve_dup_deps ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs+=" $deplib" ;; + esac + fi + tmp_libs+=" $deplib" + done + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + if test -n "$old_library" && + { test "$prefer_static_libs" = yes || + test "$prefer_static_libs,$installed" = "built,no"; }; then + linklib=$old_library + else + for l in $old_library $library_names; do + linklib="$l" + done + fi + if test -z "$linklib"; then + func_fatal_error "cannot find name of link library for \`$lib'" + fi + + # This library was specified with -dlopen. + if test "$pass" = dlopen; then + if test -z "$libdir"; then + func_fatal_error "cannot -dlopen a convenience library: \`$lib'" + fi + if test -z "$dlname" || + test "$dlopen_support" != yes || + test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + dlprefiles+=" $lib $dependency_libs" + else + newdlfiles+=" $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + func_warning "cannot determine absolute directory name of \`$ladir'" + func_warning "passing it literally to the linker, although it might fail" + abs_ladir="$ladir" + fi + ;; + esac + func_basename "$lib" + laname="$func_basename_result" + + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + func_warning "library \`$lib' was moved." + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$lt_sysroot$libdir" + absdir="$lt_sysroot$libdir" + fi + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir="$ladir" + absdir="$abs_ladir" + # Remove this search path later + notinst_path+=" $abs_ladir" + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + notinst_path+=" $abs_ladir" + fi + fi # $installed = yes + func_stripname 'lib' '.la' "$laname" + name=$func_stripname_result + + # This library was specified with -dlpreopen. + if test "$pass" = dlpreopen; then + if test -z "$libdir" && test "$linkmode" = prog; then + func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" + fi + case "$host" in + # special handling for platforms with PE-DLLs. + *cygwin* | *mingw* | *cegcc* ) + # Linker will automatically link against shared library if both + # static and shared are present. Therefore, ensure we extract + # symbols from the import library if a shared library is present + # (otherwise, the dlopen module name will be incorrect). We do + # this by putting the import library name into $newdlprefiles. + # We recover the dlopen module name by 'saving' the la file + # name in a special purpose variable, and (later) extracting the + # dlname from the la file. + if test -n "$dlname"; then + func_tr_sh "$dir/$linklib" + eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" + newdlprefiles+=" $dir/$linklib" + else + newdlprefiles+=" $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + dlpreconveniencelibs+=" $dir/$old_library" + fi + ;; + * ) + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + newdlprefiles+=" $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + dlpreconveniencelibs+=" $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + newdlprefiles+=" $dir/$dlname" + else + newdlprefiles+=" $dir/$linklib" + fi + ;; + esac + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test "$linkmode" = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test "$linkmode" = prog && test "$pass" != link; then + newlib_search_path+=" $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + newlib_search_path+=" $func_resolve_sysroot_result" + ;; + esac + # Need to link against all dependency_libs? + if test "$linkalldeplibs" = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if $opt_preserve_dup_deps ; then + case "$tmp_libs " in + *" $deplib "*) specialdeplibs+=" $deplib" ;; + esac + fi + tmp_libs+=" $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test "$linkmode,$pass" = "prog,link"; then + if test -n "$library_names" && + { { test "$prefer_static_libs" = no || + test "$prefer_static_libs,$installed" = "built,yes"; } || + test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath:" in + *"$absdir:"*) ;; + *) temp_rpath+="$absdir:" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath+=" $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath+=" $libdir" ;; + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test "$use_static_libs" = built && test "$installed" = yes; then + use_static_libs=no + fi + if test -n "$library_names" && + { test "$use_static_libs" = no || test -z "$old_library"; }; then + case $host in + *cygwin* | *mingw* | *cegcc*) + # No point in relinking DLLs because paths are not encoded + notinst_deplibs+=" $lib" + need_relink=no + ;; + *) + if test "$installed" = no; then + notinst_deplibs+=" $lib" + need_relink=yes + fi + ;; + esac + # This is a shared library + + # Warn about portability, can't link against -module's on some + # systems (darwin). Don't bleat about dlopened modules though! + dlopenmodule="" + for dlpremoduletest in $dlprefiles; do + if test "X$dlpremoduletest" = "X$lib"; then + dlopenmodule="$dlpremoduletest" + break + fi + done + if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then + echo + if test "$linkmode" = prog; then + $ECHO "*** Warning: Linking the executable $output against the loadable module" + else + $ECHO "*** Warning: Linking the shared library $output against the loadable module" + fi + $ECHO "*** $linklib is not portable!" + fi + if test "$linkmode" = lib && + test "$hardcode_into_libs" = yes; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) compile_rpath+=" $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath+=" $libdir" ;; + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + shift + realname="$1" + shift + libname=`eval "\\$ECHO \"$libname_spec\""` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw* | *cegcc*) + func_arith $current - $age + major=$func_arith_result + versuffix="-$major" + ;; + esac + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + func_basename "$soroot" + soname="$func_basename_result" + func_stripname 'lib' '.dll' "$soname" + newlib=libimp-$func_stripname_result.a + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + func_verbose "extracting exported symbol list from \`$soname'" + func_execute_cmds "$extract_expsyms_cmds" 'exit $?' + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + func_verbose "generating import library for \`$soname'" + func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test "$linkmode" = prog || test "$opt_mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + case $host in + *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; + *-*-sysv4*uw2*) add_dir="-L$dir" ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir="-L$dir" ;; + *-*-darwin* ) + # if the lib is a (non-dlopened) module then we can not + # link against it, someone is ignoring the earlier warnings + if /usr/bin/file -L $add 2> /dev/null | + $GREP ": [^:]* bundle" >/dev/null ; then + if test "X$dlopenmodule" != "X$lib"; then + $ECHO "*** Warning: lib $linklib is a module, not a shared library" + if test -z "$old_library" ; then + echo + echo "*** And there doesn't seem to be a static archive available" + echo "*** The link will probably fail, sorry" + else + add="$dir/$old_library" + fi + elif test -n "$old_library"; then + add="$dir/$old_library" + fi + fi + esac + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + relink) + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$absdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir+=" -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test "$lib_linked" != yes; then + func_fatal_configuration "unsupported hardcode properties" + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) compile_shlibpath+="$add_shlibpath:" ;; + esac + fi + if test "$linkmode" = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test "$hardcode_direct" != yes && + test "$hardcode_minus_L" != yes && + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath+="$libdir:" ;; + esac + fi + fi + fi + + if test "$linkmode" = prog || test "$opt_mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) finalize_shlibpath+="$libdir:" ;; + esac + add="-l$name" + elif test "$hardcode_automatic" = yes; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib" ; then + add="$inst_prefix_dir$libdir/$linklib" + else + add="$libdir/$linklib" + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + add_dir+=" -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + fi + + if test "$linkmode" = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test "$linkmode" = prog; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + echo + $ECHO "*** Warning: This system can not link to static lib archive $lib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then + echo "*** But as you try to build a module library, libtool will still create " + echo "*** a static module, that should work as long as the dlopening application" + echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test "$linkmode" = lib; then + if test -n "$dependency_libs" && + { test "$hardcode_into_libs" != yes || + test "$build_old_libs" = yes || + test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) func_stripname '-R' '' "$libdir" + temp_xrpath=$func_stripname_result + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) xrpath+=" $temp_xrpath";; + esac;; + *) temp_deplibs+=" $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi + + newlib_search_path+=" $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result";; + *) func_resolve_sysroot "$deplib" ;; + esac + if $opt_preserve_dup_deps ; then + case "$tmp_libs " in + *" $func_resolve_sysroot_result "*) + specialdeplibs+=" $func_resolve_sysroot_result" ;; + esac + fi + tmp_libs+=" $func_resolve_sysroot_result" + done + + if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + path= + case $deplib in + -L*) path="$deplib" ;; + *.la) + func_resolve_sysroot "$deplib" + deplib=$func_resolve_sysroot_result + func_dirname "$deplib" "" "." + dir=$func_dirname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + func_warning "cannot determine absolute directory name of \`$dir'" + absdir="$dir" + fi + ;; + esac + if $GREP "^installed=no" $deplib > /dev/null; then + case $host in + *-*-darwin*) + depdepl= + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names" ; then + for tmp in $deplibrary_names ; do + depdepl=$tmp + done + if test -f "$absdir/$objdir/$depdepl" ; then + depdepl="$absdir/$objdir/$depdepl" + darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + if test -z "$darwin_install_name"; then + darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + fi + compiler_flags+=" ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" + linker_flags+=" -dylib_file ${darwin_install_name}:${depdepl}" + path= + fi + fi + ;; + *) + path="-L$absdir/$objdir" + ;; + esac + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "\`$deplib' is not a valid libtool archive" + test "$absdir" != "$libdir" && \ + func_warning "\`$deplib' seems to be moved" + + path="-L$absdir" + fi + ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + if test "$pass" = link; then + if test "$linkmode" = "prog"; then + compile_deplibs="$new_inherited_linker_flags $compile_deplibs" + finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" + else + compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + fi + fi + dependency_libs="$newdependency_libs" + if test "$pass" = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test "$pass" != dlopen; then + if test "$pass" != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) lib_search_path+=" $dir" ;; + esac + done + newlib_search_path= + fi + + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_deplibs" + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) tmp_libs+=" $deplib" ;; + esac + ;; + *) tmp_libs+=" $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs ; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i="" + ;; + esac + if test -n "$i" ; then + tmp_libs+=" $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test "$linkmode" = prog; then + dlfiles="$newdlfiles" + fi + if test "$linkmode" = prog || test "$linkmode" = lib; then + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + func_warning "\`-dlopen' is ignored for archives" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "\`-l' and \`-L' are ignored for archives" ;; + esac + + test -n "$rpath" && \ + func_warning "\`-rpath' is ignored for archives" + + test -n "$xrpath" && \ + func_warning "\`-R' is ignored for archives" + + test -n "$vinfo" && \ + func_warning "\`-version-info/-version-number' is ignored for archives" + + test -n "$release" && \ + func_warning "\`-release' is ignored for archives" + + test -n "$export_symbols$export_symbols_regex" && \ + func_warning "\`-export-symbols' is ignored for archives" + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + objs+="$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form `libNAME.la'. + case $outputname in + lib*) + func_stripname 'lib' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + test "$module" = no && \ + func_fatal_help "libtool library \`$output' must begin with \`lib'" + + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + func_stripname '' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + func_stripname '' '.la' "$outputname" + libname=$func_stripname_result + fi + ;; + esac + + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" + else + echo + $ECHO "*** Warning: Linking the shared library $output against the non-libtool" + $ECHO "*** objects $objs is not portable!" + libobjs+=" $objs" + fi + fi + + test "$dlself" != no && \ + func_warning "\`-dlopen self' is ignored for libtool libraries" + + set dummy $rpath + shift + test "$#" -gt 1 && \ + func_warning "ignoring multiple \`-rpath's for a libtool library" + + install_libdir="$1" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + # Some compilers have problems with a `.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + test -n "$vinfo" && \ + func_warning "\`-version-info/-version-number' is ignored for convenience libraries" + + test -n "$release" && \ + func_warning "\`-release' is ignored for convenience libraries" + else + + # Parse the version information argument. + save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + shift + IFS="$save_ifs" + + test -n "$7" && \ + func_fatal_help "too many parameters to \`-version-info'" + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major="$1" + number_minor="$2" + number_revision="$3" + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # which has an extra 1 added just for fun + # + case $version_type in + # correct linux to gnu/linux during the next big refactor + darwin|linux|osf|windows|none) + func_arith $number_major + $number_minor + current=$func_arith_result + age="$number_minor" + revision="$number_revision" + ;; + freebsd-aout|freebsd-elf|qnx|sunos) + current="$number_major" + revision="$number_minor" + age="0" + ;; + irix|nonstopux) + func_arith $number_major + $number_minor + current=$func_arith_result + age="$number_minor" + revision="$number_minor" + lt_irix_increment=no + ;; + esac + ;; + no) + current="$1" + revision="$2" + age="$3" + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "CURRENT \`$current' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "REVISION \`$revision' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "AGE \`$age' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + if test "$age" -gt "$current"; then + func_error "AGE \`$age' is greater than the current interface number \`$current'" + func_fatal_error "\`$vinfo' is not valid version information" + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + func_arith $current - $age + major=.$func_arith_result + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + func_arith $current + 1 + minor_current=$func_arith_result + xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current" + ;; + + irix | nonstopux) + if test "X$lt_irix_increment" = "Xno"; then + func_arith $current - $age + else + func_arith $current - $age + 1 + fi + major=$func_arith_result + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring="$verstring_prefix$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test "$loop" -ne 0; do + func_arith $revision - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" + ;; + + linux) # correct to gnu/linux during the next big refactor + func_arith $current - $age + major=.$func_arith_result + versuffix="$major.$age.$revision" + ;; + + osf) + func_arith $current - $age + major=.$func_arith_result + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test "$loop" -ne 0; do + func_arith $current - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + verstring+=":${current}.0" + ;; + + qnx) + major=".$current" + versuffix=".$current" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. + func_arith $current - $age + major=$func_arith_result + versuffix="-$major" + ;; + + *) + func_fatal_configuration "unknown library version type \`$version_type'" + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring="0.0" + ;; + esac + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + func_warning "undefined symbols not allowed in $host shared libraries" + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + + fi + + func_generate_dlsyms "$libname" "$libname" "yes" + libobjs+=" $symfileobj" + test "X$libobjs" = "X " && libobjs= + + if test "$opt_mode" != relink; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$ECHO "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext | *.gcno) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) + if test "X$precious_files_regex" != "X"; then + if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + removelist+=" $p" + ;; + *) ;; + esac + done + test -n "$removelist" && \ + func_show_eval "${RM}r \$removelist" + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + oldlibs+=" $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + #for path in $notinst_path; do + # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` + # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` + # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` + #done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + func_replace_sysroot "$libdir" + temp_xrpath+=" -R$func_replace_sysroot_result" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath+=" $libdir" ;; + esac + done + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles="$dlfiles" + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) dlfiles+=" $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles="$dlprefiles" + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) dlprefiles+=" $lib" ;; + esac + done + + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + deplibs+=" System.ltframework" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test "$build_libtool_need_lc" = "yes"; then + deplibs+=" -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $opt_dry_run || $RM conftest.c + cat > conftest.c </dev/null` + $nocaseglob + else + potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` + fi + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null | + $GREP " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | + $SED -e 10q | + $EGREP "$file_magic_regex" > /dev/null; then + newdeplibs+=" $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $ECHO "*** with $libname but no candidates were found. (...for file magic test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a file magic. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + newdeplibs+=" $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + for a_deplib in $deplibs; do + case $a_deplib in + -l*) + func_stripname -l '' "$a_deplib" + name=$func_stripname_result + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + newdeplibs+=" $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval "\\$ECHO \"$libname_spec\""` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib="$potent_lib" # see symlink-check above in file_magic test + if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ + $EGREP "$match_pattern_regex" > /dev/null; then + newdeplibs+=" $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a regex pattern. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + newdeplibs+=" $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + for i in $predeps $postdeps ; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` + done + fi + case $tmp_deplibs in + *[!\ \ ]*) + echo + if test "X$deplibs_check_method" = "Xnone"; then + echo "*** Warning: inter-library dependencies are not supported in this platform." + else + echo "*** Warning: inter-library dependencies are not known to be supported." + fi + echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + ;; + esac + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library with the System framework + newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + echo + echo "*** Warning: libtool could not satisfy all declared inter-library" + $ECHO "*** dependencies of module $libname. Therefore, libtool will create" + echo "*** a static module, that should work as long as the dlopening" + echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + echo "*** The inter-library dependencies that have been dropped here will be" + echo "*** automatically added whenever a program is linked with this library" + echo "*** or is declared to -dlopen it." + + if test "$allow_undefined" = no; then + echo + echo "*** Since this library must not contain undefined symbols," + echo "*** because either the platform does not support them or" + echo "*** it was explicitly requested with -no-undefined," + echo "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + case $host in + *-*-darwin*) + newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + new_libs+=" -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs+=" $deplib" ;; + esac + ;; + *) new_libs+=" $deplib" ;; + esac + done + deplibs="$new_libs" + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + # Remove ${wl} instances when linking with ld. + # FIXME: should test the right _cmds variable. + case $archive_cmds in + *\$LD\ *) wl= ;; + esac + if test "$hardcode_into_libs" = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$opt_mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + func_replace_sysroot "$libdir" + libdir=$func_replace_sysroot_result + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs+="$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + dep_rpath+=" $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath+=" $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath+="$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath="$finalize_shlibpath" + test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + shift + realname="$1" + shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib="$output_objdir/$realname" + linknames= + for link + do + linknames+=" $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` + test "X$libobjs" = "X " && libobjs= + + delfiles= + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" + export_symbols="$output_objdir/$libname.uexp" + delfiles+=" $export_symbols" + fi + + orig_export_symbols= + case $host_os in + cygwin* | mingw* | cegcc*) + if test -n "$export_symbols" && test -z "$export_symbols_regex"; then + # exporting using user supplied symfile + if test "x`$SED 1q $export_symbols`" != xEXPORTS; then + # and it's NOT already a .def file. Must figure out + # which of the given symbols are data symbols and tag + # them as such. So, trigger use of export_symbols_cmds. + # export_symbols gets reassigned inside the "prepare + # the list of exported symbols" if statement, so the + # include_expsyms logic still works. + orig_export_symbols="$export_symbols" + export_symbols= + always_export_symbols=yes + fi + fi + ;; + esac + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + func_verbose "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $opt_dry_run || $RM $export_symbols + cmds=$export_symbols_cmds + save_ifs="$IFS"; IFS='~' + for cmd1 in $cmds; do + IFS="$save_ifs" + # Take the normal branch if the nm_file_list_spec branch + # doesn't work or if tool conversion is not needed. + case $nm_file_list_spec~$to_tool_file_cmd in + *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) + try_normal_branch=yes + eval cmd=\"$cmd1\" + func_len " $cmd" + len=$func_len_result + ;; + *) + try_normal_branch=no + ;; + esac + if test "$try_normal_branch" = yes \ + && { test "$len" -lt "$max_cmd_len" \ + || test "$max_cmd_len" -le -1; } + then + func_show_eval "$cmd" 'exit $?' + skipped_export=false + elif test -n "$nm_file_list_spec"; then + func_basename "$output" + output_la=$func_basename_result + save_libobjs=$libobjs + save_output=$output + output=${output_objdir}/${output_la}.nm + func_to_tool_file "$output" + libobjs=$nm_file_list_spec$func_to_tool_file_result + delfiles+=" $output" + func_verbose "creating $NM input file list: $output" + for obj in $save_libobjs; do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > "$output" + eval cmd=\"$cmd1\" + func_show_eval "$cmd" 'exit $?' + output=$save_output + libobjs=$save_libobjs + skipped_export=false + else + # The command line is too long to execute in one step. + func_verbose "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS="$save_ifs" + if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + delfiles+=" $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + tmp_deplibs+=" $test_deplib" + ;; + esac + done + deplibs="$tmp_deplibs" + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec" && + test "$compiler_needs_object" = yes && + test -z "$libobjs"; then + # extract the archives, so we have objects to list. + # TODO: could optimize this to just extract one archive. + whole_archive_flag_spec= + fi + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + else + gentop="$output_objdir/${outputname}x" + generated+=" $gentop" + + func_extract_archives $gentop $convenience + libobjs+=" $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + linker_flags+=" $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test "$opt_mode" = relink; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test "X$skipped_export" != "X:" && + func_len " $test_cmds" && + len=$func_len_result && + test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise + # or, if using GNU ld and skipped_export is not :, use a linker + # script. + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + func_basename "$output" + output_la=$func_basename_result + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + last_robj= + k=1 + + if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then + output=${output_objdir}/${output_la}.lnkscript + func_verbose "creating GNU ld script: $output" + echo 'INPUT (' > $output + for obj in $save_libobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + echo ')' >> $output + delfiles+=" $output" + func_to_tool_file "$output" + output=$func_to_tool_file_result + elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then + output=${output_objdir}/${output_la}.lnk + func_verbose "creating linker input file list: $output" + : > $output + set x $save_libobjs + shift + firstobj= + if test "$compiler_needs_object" = yes; then + firstobj="$1 " + shift + fi + for obj + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + delfiles+=" $output" + func_to_tool_file "$output" + output=$firstobj\"$file_list_spec$func_to_tool_file_result\" + else + if test -n "$save_libobjs"; then + func_verbose "creating reloadable object files..." + output=$output_objdir/$output_la-${k}.$objext + eval test_cmds=\"$reload_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + if test "X$objlist" = X || + test "$len" -lt "$max_cmd_len"; then + objlist+=" $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test "$k" -eq 1 ; then + # The first file doesn't have a previous command to add. + reload_objs=$objlist + eval concat_cmds=\"$reload_cmds\" + else + # All subsequent reloadable object files will link in + # the last one created. + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" + fi + last_robj=$output_objdir/$output_la-${k}.$objext + func_arith $k + 1 + k=$func_arith_result + output=$output_objdir/$output_la-${k}.$objext + objlist=" $obj" + func_len " $last_robj" + func_arith $len0 + $func_len_result + len=$func_arith_result + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\${concat_cmds}$reload_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" + fi + delfiles+=" $output" + + else + output= + fi + + if ${skipped_export-false}; then + func_verbose "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $opt_dry_run || $RM $export_symbols + libobjs=$output + # Append the command to create the export file. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + fi + + test -n "$save_libobjs" && + func_verbose "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs="$IFS"; IFS='~' + for cmd in $concat_cmds; do + IFS="$save_ifs" + $opt_silent || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$opt_mode" = relink; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + if test -n "$export_symbols_regex" && ${skipped_export-false}; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + + if ${skipped_export-false}; then + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + delfiles+=" $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + fi + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + fi + + if test -n "$delfiles"; then + # Append the command to remove temporary files to $cmds. + eval cmds=\"\$cmds~\$RM $delfiles\" + fi + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop="$output_objdir/${outputname}x" + generated+=" $gentop" + + func_extract_archives $gentop $dlprefiles + libobjs+=" $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $opt_silent || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$opt_mode" = relink; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$opt_mode" = relink; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + func_show_eval '${RM}r "$gentop"' + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + obj) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + func_warning "\`-dlopen' is ignored for objects" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "\`-l' and \`-L' are ignored for objects" ;; + esac + + test -n "$rpath" && \ + func_warning "\`-rpath' is ignored for objects" + + test -n "$xrpath" && \ + func_warning "\`-R' is ignored for objects" + + test -n "$vinfo" && \ + func_warning "\`-version-info' is ignored for objects" + + test -n "$release" && \ + func_warning "\`-release' is ignored for objects" + + case $output in + *.lo) + test -n "$objs$old_deplibs" && \ + func_fatal_error "cannot build library object \`$output' from non-libtool objects" + + libobj=$output + func_lo2o "$libobj" + obj=$func_lo2o_result + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $opt_dry_run || $RM $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec and hope we can get by with + # turning comma into space.. + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" + reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` + else + gentop="$output_objdir/${obj}x" + generated+=" $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # If we're not building shared, we need to use non_pic_objs + test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" + + # Create the old-style object. + reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" + func_execute_cmds "$reload_cmds" 'exit $?' + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + func_execute_cmds "$reload_cmds" 'exit $?' + fi + + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) func_stripname '' '.exe' "$output" + output=$func_stripname_result.exe;; + esac + test -n "$vinfo" && \ + func_warning "\`-version-info' is ignored for programs" + + test -n "$release" && \ + func_warning "\`-release' is ignored for programs" + + test "$preload" = yes \ + && test "$dlopen_support" = unknown \ + && test "$dlopen_self" = unknown \ + && test "$dlopen_self_static" = unknown && \ + func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + case $host in + *-*-darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + # But is supposedly fixed on 10.4 or later (yay!). + if test "$tagname" = CXX ; then + case ${MACOSX_DEPLOYMENT_TARGET-10.0} in + 10.[0123]) + compile_command+=" ${wl}-bind_at_load" + finalize_command+=" ${wl}-bind_at_load" + ;; + esac + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + new_libs+=" -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs+=" $deplib" ;; + esac + ;; + *) new_libs+=" $deplib" ;; + esac + done + compile_deplibs="$new_libs" + + + compile_command+=" $compile_deplibs" + finalize_command+=" $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) finalize_rpath+=" $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs+="$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath+=" $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) perm_rpath+=" $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + ::) dllsearchpath=$libdir;; + *) dllsearchpath+=":$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) dllsearchpath+=":$testbindir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + hardcode_libdirs+="$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + rpath+=" $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) finalize_perm_rpath+=" $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + fi + + func_generate_dlsyms "$outputname" "@PROGRAM@" "no" + + # template prelinking step + if test -n "$prelink_cmds"; then + func_execute_cmds "$prelink_cmds" 'exit $?' + fi + + wrappers_required=yes + case $host in + *cegcc* | *mingw32ce*) + # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. + wrappers_required=no + ;; + *cygwin* | *mingw* ) + if test "$build_libtool_libs" != yes; then + wrappers_required=no + fi + ;; + *) + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + wrappers_required=no + fi + ;; + esac + if test "$wrappers_required" = no; then + # Replace the output file specification. + compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + exit_status=0 + func_show_eval "$link_command" 'exit_status=$?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Delete the generated files. + if test -f "$output_objdir/${outputname}S.${objext}"; then + func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' + fi + + exit $exit_status + fi + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + rpath+="$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + rpath+="$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$no_install" = yes; then + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $opt_dry_run || $RM $output + # Link the executable and exit + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + exit $EXIT_SUCCESS + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + func_warning "this platform does not like uninstalled shared libraries" + func_warning "\`$output' will be relinked during installation" + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname + + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output_objdir/$outputname" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Now create the wrapper script. + func_verbose "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + fi + + # Only actually do things if not in dry run mode. + $opt_dry_run || { + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) func_stripname '' '.exe' "$output" + output=$func_stripname_result ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + func_stripname '' '.exe' "$outputname" + outputname=$func_stripname_result ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + func_dirname_and_basename "$output" "" "." + output_name=$func_basename_result + output_path=$func_dirname_result + cwrappersource="$output_path/$objdir/lt-$output_name.c" + cwrapper="$output_path/$output_name.exe" + $RM $cwrappersource $cwrapper + trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + func_emit_cwrapperexe_src > $cwrappersource + + # The wrapper executable is built using the $host compiler, + # because it contains $host paths and files. If cross- + # compiling, it, like the target executable, must be + # executed on the $host or under an emulation environment. + $opt_dry_run || { + $LTCC $LTCFLAGS -o $cwrapper $cwrappersource + $STRIP $cwrapper + } + + # Now, create the wrapper script for func_source use: + func_ltwrapper_scriptname $cwrapper + $RM $func_ltwrapper_scriptname_result + trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 + $opt_dry_run || { + # note: this script will not be executed, so do not chmod. + if test "x$build" = "x$host" ; then + $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result + else + func_emit_wrapper no > $func_ltwrapper_scriptname_result + fi + } + ;; + * ) + $RM $output + trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 + + func_emit_wrapper no > $output + chmod +x $output + ;; + esac + } + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save $symfileobj" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$old_deplibs $non_pic_objects" + if test "$preload" = yes && test -f "$symfileobj"; then + oldobjs+=" $symfileobj" + fi + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + generated+=" $gentop" + + func_extract_archives $gentop $addlibs + oldobjs+=" $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + cmds=$old_archive_from_new_cmds + else + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop="$output_objdir/${outputname}x" + generated+=" $gentop" + + func_extract_archives $gentop $dlprefiles + oldobjs+=" $func_extract_archives_result" + fi + + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + func_basename "$obj" + $ECHO "$func_basename_result" + done | sort | sort -uc >/dev/null 2>&1); then + : + else + echo "copying selected object files to avoid basename conflicts..." + gentop="$output_objdir/${outputname}x" + generated+=" $gentop" + func_mkdir_p "$gentop" + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + func_basename "$obj" + objbase="$func_basename_result" + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + func_arith $counter + 1 + counter=$func_arith_result + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + oldobjs+=" $gentop/$newobj" + ;; + *) oldobjs+=" $obj" ;; + esac + done + fi + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + eval cmds=\"$old_archive_cmds\" + + func_len " $cmds" + len=$func_len_result + if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + elif test -n "$archiver_list_spec"; then + func_verbose "using command file archive linking..." + for obj in $oldobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > $output_objdir/$libname.libcmd + func_to_tool_file "$output_objdir/$libname.libcmd" + oldobjs=" $archiver_list_spec$func_to_tool_file_result" + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + func_verbose "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + oldobjs= + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + eval test_cmds=\"$old_archive_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + for obj in $save_oldobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + objlist+=" $obj" + if test "$len" -lt "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj" ; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + objlist= + len=$len0 + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test "X$oldobjs" = "X" ; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + func_execute_cmds "$cmds" 'exit $?' + done + + test -n "$generated" && \ + func_show_eval "${RM}r$generated" + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + func_verbose "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + if test "$hardcode_automatic" = yes ; then + relink_command= + fi + + # Only create the output if not a dry run. + $opt_dry_run || { + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + func_basename "$deplib" + name="$func_basename_result" + func_resolve_sysroot "$deplib" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` + test -z "$libdir" && \ + func_fatal_error "\`$deplib' is not a valid libtool archive" + newdependency_libs+=" ${lt_sysroot:+=}$libdir/$name" + ;; + -L*) + func_stripname -L '' "$deplib" + func_replace_sysroot "$func_stripname_result" + newdependency_libs+=" -L$func_replace_sysroot_result" + ;; + -R*) + func_stripname -R '' "$deplib" + func_replace_sysroot "$func_stripname_result" + newdependency_libs+=" -R$func_replace_sysroot_result" + ;; + *) newdependency_libs+=" $deplib" ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + + for lib in $dlfiles; do + case $lib in + *.la) + func_basename "$lib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "\`$lib' is not a valid libtool archive" + newdlfiles+=" ${lt_sysroot:+=}$libdir/$name" + ;; + *) newdlfiles+=" $lib" ;; + esac + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + *.la) + # Only pass preopened files to the pseudo-archive (for + # eventual linking with the app. that links it) if we + # didn't already link the preopened objects directly into + # the library: + func_basename "$lib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "\`$lib' is not a valid libtool archive" + newdlprefiles+=" ${lt_sysroot:+=}$libdir/$name" + ;; + esac + done + dlprefiles="$newdlprefiles" + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlfiles+=" $abs" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + newdlprefiles+=" $abs" + done + dlprefiles="$newdlprefiles" + fi + $RM $output + # place dlname in correct position for cygwin + # In fact, it would be nice if we could use this code for all target + # systems that can't hard-code library paths into their executables + # and that have no shared library path variable independent of PATH, + # but it turns out we can't easily determine that from inspecting + # libtool variables, so we have to hard-code the OSs to which it + # applies here; at the moment, that means platforms that use the PE + # object format with DLL files. See the long comment at the top of + # tests/bindir.at for full details. + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) + # If a -bindir argument was supplied, place the dll there. + if test "x$bindir" != x ; + then + func_relative_path "$install_libdir" "$bindir" + tdlname=$func_relative_path_result$dlname + else + # Otherwise fall back on heuristic. + tdlname=../bin/$dlname + fi + ;; + esac + $ECHO > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='$new_inherited_linker_flags' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Names of additional weak libraries provided by this library +weak_library_names='$weak_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test "$installed" = no && test "$need_relink" = yes; then + $ECHO >> $output "\ +relink_command=\"$relink_command\"" + fi + done + } + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' + ;; + esac + exit $EXIT_SUCCESS +} + +{ test "$opt_mode" = link || test "$opt_mode" = relink; } && + func_mode_link ${1+"$@"} + + +# func_mode_uninstall arg... +func_mode_uninstall () +{ + $opt_debug + RM="$nonopt" + files= + rmforce= + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + for arg + do + case $arg in + -f) RM+=" $arg"; rmforce=yes ;; + -*) RM+=" $arg" ;; + *) files+=" $arg" ;; + esac + done + + test -z "$RM" && \ + func_fatal_help "you must specify an RM program" + + rmdirs= + + for file in $files; do + func_dirname "$file" "" "." + dir="$func_dirname_result" + if test "X$dir" = X.; then + odir="$objdir" + else + odir="$dir/$objdir" + fi + func_basename "$file" + name="$func_basename_result" + test "$opt_mode" = uninstall && odir="$dir" + + # Remember odir for removal later, being careful to avoid duplicates + if test "$opt_mode" = clean; then + case " $rmdirs " in + *" $odir "*) ;; + *) rmdirs+=" $odir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if { test -L "$file"; } >/dev/null 2>&1 || + { test -h "$file"; } >/dev/null 2>&1 || + test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif test "$rmforce" = yes; then + continue + fi + + rmfiles="$file" + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if func_lalib_p "$file"; then + func_source $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + rmfiles+=" $odir/$n" + done + test -n "$old_library" && rmfiles+=" $odir/$old_library" + + case "$opt_mode" in + clean) + case " $library_names " in + *" $dlname "*) ;; + *) test -n "$dlname" && rmfiles+=" $odir/$dlname" ;; + esac + test -n "$libdir" && rmfiles+=" $odir/$name $odir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if func_lalib_p "$file"; then + + # Read the .lo file + func_source $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" && + test "$pic_object" != none; then + rmfiles+=" $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" && + test "$non_pic_object" != none; then + rmfiles+=" $dir/$non_pic_object" + fi + fi + ;; + + *) + if test "$opt_mode" = clean ; then + noexename=$name + case $file in + *.exe) + func_stripname '' '.exe' "$file" + file=$func_stripname_result + func_stripname '' '.exe' "$name" + noexename=$func_stripname_result + # $file with .exe has already been added to rmfiles, + # add $file without .exe + rmfiles+=" $file" + ;; + esac + # Do a test to see if this is a libtool program. + if func_ltwrapper_p "$file"; then + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + relink_command= + func_source $func_ltwrapper_scriptname_result + rmfiles+=" $func_ltwrapper_scriptname_result" + else + relink_command= + func_source $dir/$noexename + fi + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + rmfiles+=" $odir/$name $odir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then + rmfiles+=" $odir/lt-$name" + fi + if test "X$noexename" != "X$name" ; then + rmfiles+=" $odir/lt-${noexename}.c" + fi + fi + fi + ;; + esac + func_show_eval "$RM $rmfiles" 'exit_status=1' + done + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + func_show_eval "rmdir $dir >/dev/null 2>&1" + fi + done + + exit $exit_status +} + +{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && + func_mode_uninstall ${1+"$@"} + +test -z "$opt_mode" && { + help="$generic_help" + func_fatal_help "you must specify a MODE" +} + +test -z "$exec_cmd" && \ + func_fatal_help "invalid operation mode \`$opt_mode'" + +if test -n "$exec_cmd"; then + eval exec "$exec_cmd" + exit $EXIT_FAILURE +fi + +exit $exit_status + + +# The TAGs below are defined such that we never get into a situation +# in which we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +build_libtool_libs=no +build_old_libs=yes +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: +# vi:sw=2 + + +# ### BEGIN LIBTOOL TAG CONFIG: CXX + +# The linker used to build libraries. +LD="/bin/ld -m elf_x86_64" + +# How to create reloadable object files. +reload_flag=" -r" +reload_cmds="\$LD\$reload_flag -o \$output\$reload_objs" + +# Commands used to build an old-style archive. +old_archive_cmds="\$AR \$AR_FLAGS \$oldlib\$oldobjs~\$RANLIB \$tool_oldlib" + +# A language specific compiler. +CC="g++" + +# Is the compiler the GNU compiler? +with_gcc=yes + +# Compiler flag to turn off builtin functions. +no_builtin_flag=" -fno-builtin" + +# Additional compiler flags for building library objects. +pic_flag=" -fPIC -DPIC" + +# How to pass a linker flag through the compiler. +wl="-Wl," + +# Compiler flag to prevent dynamic linking. +link_static_flag="" + +# Does compiler simultaneously support -c and -o options? +compiler_c_o="yes" + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=no + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=no + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec="\${wl}--export-dynamic" + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec="\${wl}--whole-archive\$convenience \${wl}--no-whole-archive" + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object="no" + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds="" + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds="" + +# Commands used to build a shared archive. +archive_cmds="\$CC \$pic_flag -shared -nostdlib \$predep_objects \$libobjs \$deplibs \$postdep_objects \$compiler_flags \${wl}-soname \$wl\$soname -o \$lib" +archive_expsym_cmds="\$CC \$pic_flag -shared -nostdlib \$predep_objects \$libobjs \$deplibs \$postdep_objects \$compiler_flags \${wl}-soname \$wl\$soname \${wl}-retain-symbols-file \$wl\$export_symbols -o \$lib" + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds="" +module_expsym_cmds="" + +# Whether we are building with GNU ld or not. +with_gnu_ld="yes" + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag="" + +# Flag that enforces no undefined symbols. +no_undefined_flag="" + +# Flag to hardcode $libdir into a binary during linking. +# This must work even if $libdir does not exist +hardcode_libdir_flag_spec="\${wl}-rpath \${wl}\$libdir" + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator="" + +# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=no + +# Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting ${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=no + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=no + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=unsupported + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=no + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=no + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=unknown + +# Set to "yes" if exported symbols are required. +always_export_symbols=no + +# The commands to list exported symbols. +export_symbols_cmds="\$NM \$libobjs \$convenience | \$global_symbol_pipe | \$SED 's/.* //' | sort | uniq > \$export_symbols" + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms="_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*" + +# Symbols that must always be exported. +include_expsyms="" + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds="" + +# Commands necessary for finishing linking programs. +postlink_cmds="" + +# Specify filename containing input files. +file_list_spec="" + +# How to hardcode a shared library path into an executable. +hardcode_action=immediate + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs="/usr/lib/gcc/x86_64-redhat-linux/4.8.5 /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64 /lib/../lib64 /usr/lib/../lib64 /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../.." + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects="/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/crti.o /usr/lib/gcc/x86_64-redhat-linux/4.8.5/crtbeginS.o" +postdep_objects="/usr/lib/gcc/x86_64-redhat-linux/4.8.5/crtendS.o /usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64/crtn.o" +predeps="" +postdeps="-lstdc++ -lm -lgcc_s -lc -lgcc_s" + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path="-L/usr/lib/gcc/x86_64-redhat-linux/4.8.5 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../../../lib64 -L/lib/../lib64 -L/usr/lib/../lib64 -L/usr/lib/gcc/x86_64-redhat-linux/4.8.5/../../.." + +# ### END LIBTOOL TAG CONFIG: CXX diff --git a/coregrade/src/ltmain.sh b/coregrade/src/ltmain.sh new file mode 100644 index 0000000..63ae69d --- /dev/null +++ b/coregrade/src/ltmain.sh @@ -0,0 +1,9655 @@ + +# libtool (GNU libtool) 2.4.2 +# Written by Gordon Matzigkeit , 1996 + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, +# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, +# or obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +# Usage: $progname [OPTION]... [MODE-ARG]... +# +# Provide generalized library-building support services. +# +# --config show all configuration variables +# --debug enable verbose shell tracing +# -n, --dry-run display commands without modifying any files +# --features display basic configuration information and exit +# --mode=MODE use operation mode MODE +# --preserve-dup-deps don't remove duplicate dependency libraries +# --quiet, --silent don't print informational messages +# --no-quiet, --no-silent +# print informational messages (default) +# --no-warn don't display warning messages +# --tag=TAG use configuration variables from tag TAG +# -v, --verbose print more informational messages than default +# --no-verbose don't print the extra informational messages +# --version print version information +# -h, --help, --help-all print short, long, or detailed help message +# +# MODE must be one of the following: +# +# clean remove files from the build directory +# compile compile a source file into a libtool object +# execute automatically set library path, then run a program +# finish complete the installation of libtool libraries +# install install libraries or executables +# link create a library or an executable +# uninstall remove libraries from an installed directory +# +# MODE-ARGS vary depending on the MODE. When passed as first option, +# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. +# Try `$progname --help --mode=MODE' for a more detailed description of MODE. +# +# When reporting a bug, please describe a test case to reproduce it and +# include the following information: +# +# host-triplet: $host +# shell: $SHELL +# compiler: $LTCC +# compiler flags: $LTCFLAGS +# linker: $LD (gnu? $with_gnu_ld) +# $progname: (GNU libtool) 2.4.2 +# automake: $automake_version +# autoconf: $autoconf_version +# +# Report bugs to . +# GNU libtool home page: . +# General help using GNU software: . + +PROGRAM=libtool +PACKAGE=libtool +VERSION=2.4.2 +TIMESTAMP="" +package_revision=1.3337 + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + +# NLS nuisances: We save the old values to restore during execute mode. +lt_user_locale= +lt_safe_locale= +for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES +do + eval "if test \"\${$lt_var+set}\" = set; then + save_$lt_var=\$$lt_var + $lt_var=C + export $lt_var + lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" + lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" + fi" +done +LC_ALL=C +LANGUAGE=C +export LANGUAGE LC_ALL + +$lt_unset CDPATH + + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" + + + +: ${CP="cp -f"} +test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} +: ${MAKE="make"} +: ${MKDIR="mkdir"} +: ${MV="mv -f"} +: ${RM="rm -f"} +: ${SHELL="${CONFIG_SHELL-/bin/sh}"} +: ${Xsed="$SED -e 1s/^X//"} + +# Global variables: +EXIT_SUCCESS=0 +EXIT_FAILURE=1 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. + +exit_status=$EXIT_SUCCESS + +# Make sure IFS has a sensible default +lt_nl=' +' +IFS=" $lt_nl" + +dirname="s,/[^/]*$,," +basename="s,^.*/,," + +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi +} # func_dirname may be replaced by extended shell implementation + + +# func_basename file +func_basename () +{ + func_basename_result=`$ECHO "${1}" | $SED "$basename"` +} # func_basename may be replaced by extended shell implementation + + +# func_dirname_and_basename file append nondir_replacement +# perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# Implementation must be kept synchronized with func_dirname +# and func_basename. For efficiency, we do not delegate to +# those functions but instead duplicate the functionality here. +func_dirname_and_basename () +{ + # Extract subdirectory from the argument. + func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi + func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` +} # func_dirname_and_basename may be replaced by extended shell implementation + + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# func_strip_suffix prefix name +func_stripname () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + esac +} # func_stripname may be replaced by extended shell implementation + + +# These SED scripts presuppose an absolute path with a trailing slash. +pathcar='s,^/\([^/]*\).*$,\1,' +pathcdr='s,^/[^/]*,,' +removedotparts=':dotsl + s@/\./@/@g + t dotsl + s,/\.$,/,' +collapseslashes='s@/\{1,\}@/@g' +finalslash='s,/*$,/,' + +# func_normal_abspath PATH +# Remove doubled-up and trailing slashes, "." path components, +# and cancel out any ".." path components in PATH after making +# it an absolute path. +# value returned in "$func_normal_abspath_result" +func_normal_abspath () +{ + # Start from root dir and reassemble the path. + func_normal_abspath_result= + func_normal_abspath_tpath=$1 + func_normal_abspath_altnamespace= + case $func_normal_abspath_tpath in + "") + # Empty path, that just means $cwd. + func_stripname '' '/' "`pwd`" + func_normal_abspath_result=$func_stripname_result + return + ;; + # The next three entries are used to spot a run of precisely + # two leading slashes without using negated character classes; + # we take advantage of case's first-match behaviour. + ///*) + # Unusual form of absolute path, do nothing. + ;; + //*) + # Not necessarily an ordinary path; POSIX reserves leading '//' + # and for example Cygwin uses it to access remote file shares + # over CIFS/SMB, so we conserve a leading double slash if found. + func_normal_abspath_altnamespace=/ + ;; + /*) + # Absolute path, do nothing. + ;; + *) + # Relative path, prepend $cwd. + func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath + ;; + esac + # Cancel out all the simple stuff to save iterations. We also want + # the path to end with a slash for ease of parsing, so make sure + # there is one (and only one) here. + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` + while :; do + # Processed it all yet? + if test "$func_normal_abspath_tpath" = / ; then + # If we ascended to the root using ".." the result may be empty now. + if test -z "$func_normal_abspath_result" ; then + func_normal_abspath_result=/ + fi + break + fi + func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$pathcar"` + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$pathcdr"` + # Figure out what to do with it + case $func_normal_abspath_tcomponent in + "") + # Trailing empty path component, ignore it. + ;; + ..) + # Parent dir; strip last assembled component from result. + func_dirname "$func_normal_abspath_result" + func_normal_abspath_result=$func_dirname_result + ;; + *) + # Actual path component, append it. + func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent + ;; + esac + done + # Restore leading double-slash if one was found on entry. + func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result +} + +# func_relative_path SRCDIR DSTDIR +# generates a relative path from SRCDIR to DSTDIR, with a trailing +# slash if non-empty, suitable for immediately appending a filename +# without needing to append a separator. +# value returned in "$func_relative_path_result" +func_relative_path () +{ + func_relative_path_result= + func_normal_abspath "$1" + func_relative_path_tlibdir=$func_normal_abspath_result + func_normal_abspath "$2" + func_relative_path_tbindir=$func_normal_abspath_result + + # Ascend the tree starting from libdir + while :; do + # check if we have found a prefix of bindir + case $func_relative_path_tbindir in + $func_relative_path_tlibdir) + # found an exact match + func_relative_path_tcancelled= + break + ;; + $func_relative_path_tlibdir*) + # found a matching prefix + func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" + func_relative_path_tcancelled=$func_stripname_result + if test -z "$func_relative_path_result"; then + func_relative_path_result=. + fi + break + ;; + *) + func_dirname $func_relative_path_tlibdir + func_relative_path_tlibdir=${func_dirname_result} + if test "x$func_relative_path_tlibdir" = x ; then + # Have to descend all the way to the root! + func_relative_path_result=../$func_relative_path_result + func_relative_path_tcancelled=$func_relative_path_tbindir + break + fi + func_relative_path_result=../$func_relative_path_result + ;; + esac + done + + # Now calculate path; take care to avoid doubling-up slashes. + func_stripname '' '/' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + func_stripname '/' '/' "$func_relative_path_tcancelled" + if test "x$func_stripname_result" != x ; then + func_relative_path_result=${func_relative_path_result}/${func_stripname_result} + fi + + # Normalisation. If bindir is libdir, return empty string, + # else relative path ending with a slash; either way, target + # file name can be directly appended. + if test ! -z "$func_relative_path_result"; then + func_stripname './' '' "$func_relative_path_result/" + func_relative_path_result=$func_stripname_result + fi +} + +# The name of this program: +func_dirname_and_basename "$progpath" +progname=$func_basename_result + +# Make sure we have an absolute path for reexecution: +case $progpath in + [\\/]*|[A-Za-z]:\\*) ;; + *[\\/]*) + progdir=$func_dirname_result + progdir=`cd "$progdir" && pwd` + progpath="$progdir/$progname" + ;; + *) + save_IFS="$IFS" + IFS=${PATH_SEPARATOR-:} + for progdir in $PATH; do + IFS="$save_IFS" + test -x "$progdir/$progname" && break + done + IFS="$save_IFS" + test -n "$progdir" || progdir=`pwd` + progpath="$progdir/$progname" + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed="${SED}"' -e 1s/^X//' +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution that turns a string into a regex matching for the +# string literally. +sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' + +# Sed substitution that converts a w32 file name or path +# which contains forward slashes, into one that contains +# (escaped) backslashes. A very naive implementation. +lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + +# Re-`\' parameter expansions in output of double_quote_subst that were +# `\'-ed in input to the same. If an odd number of `\' preceded a '$' +# in input to double_quote_subst, that '$' was protected from expansion. +# Since each input `\' is now two `\'s, look for any number of runs of +# four `\'s followed by two `\'s and then a '$'. `\' that '$'. +bs='\\' +bs2='\\\\' +bs4='\\\\\\\\' +dollar='\$' +sed_double_backslash="\ + s/$bs4/&\\ +/g + s/^$bs2$dollar/$bs&/ + s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g + s/\n//g" + +# Standard options: +opt_dry_run=false +opt_help=false +opt_quiet=false +opt_verbose=false +opt_warning=: + +# func_echo arg... +# Echo program name prefixed message, along with the current mode +# name if it has been set yet. +func_echo () +{ + $ECHO "$progname: ${opt_mode+$opt_mode: }$*" +} + +# func_verbose arg... +# Echo program name prefixed message in verbose mode only. +func_verbose () +{ + $opt_verbose && func_echo ${1+"$@"} + + # A bug in bash halts the script if the last line of a function + # fails when set -e is in force, so we need another command to + # work around that: + : +} + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + +# func_error arg... +# Echo program name prefixed message to standard error. +func_error () +{ + $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 +} + +# func_warning arg... +# Echo program name prefixed warning message to standard error. +func_warning () +{ + $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 + + # bash bug again: + : +} + +# func_fatal_error arg... +# Echo program name prefixed message to standard error, and exit. +func_fatal_error () +{ + func_error ${1+"$@"} + exit $EXIT_FAILURE +} + +# func_fatal_help arg... +# Echo program name prefixed message to standard error, followed by +# a help hint, and exit. +func_fatal_help () +{ + func_error ${1+"$@"} + func_fatal_error "$help" +} +help="Try \`$progname --help' for more information." ## default + + +# func_grep expression filename +# Check whether EXPRESSION matches any line of FILENAME, without output. +func_grep () +{ + $GREP "$1" "$2" >/dev/null 2>&1 +} + + +# func_mkdir_p directory-path +# Make sure the entire path to DIRECTORY-PATH is available. +func_mkdir_p () +{ + my_directory_path="$1" + my_dir_list= + + if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then + + # Protect directory names starting with `-' + case $my_directory_path in + -*) my_directory_path="./$my_directory_path" ;; + esac + + # While some portion of DIR does not yet exist... + while test ! -d "$my_directory_path"; do + # ...make a list in topmost first order. Use a colon delimited + # list incase some portion of path contains whitespace. + my_dir_list="$my_directory_path:$my_dir_list" + + # If the last portion added has no slash in it, the list is done + case $my_directory_path in */*) ;; *) break ;; esac + + # ...otherwise throw away the child directory and loop + my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` + done + my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` + + save_mkdir_p_IFS="$IFS"; IFS=':' + for my_dir in $my_dir_list; do + IFS="$save_mkdir_p_IFS" + # mkdir can fail with a `File exist' error if two processes + # try to create one of the directories concurrently. Don't + # stop in that case! + $MKDIR "$my_dir" 2>/dev/null || : + done + IFS="$save_mkdir_p_IFS" + + # Bail out if we (or some other process) failed to create a directory. + test -d "$my_directory_path" || \ + func_fatal_error "Failed to create \`$1'" + fi +} + + +# func_mktempdir [string] +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, STRING is the basename for that directory. +func_mktempdir () +{ + my_template="${TMPDIR-/tmp}/${1-$progname}" + + if test "$opt_dry_run" = ":"; then + # Return a directory name, but don't create it in dry-run mode + my_tmpdir="${my_template}-$$" + else + + # If mktemp works, use that first and foremost + my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` + + if test ! -d "$my_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + my_tmpdir="${my_template}-${RANDOM-0}$$" + + save_mktempdir_umask=`umask` + umask 0077 + $MKDIR "$my_tmpdir" + umask $save_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$my_tmpdir" || \ + func_fatal_error "cannot create temporary directory \`$my_tmpdir'" + fi + + $ECHO "$my_tmpdir" +} + + +# func_quote_for_eval arg +# Aesthetically quote ARG to be evaled later. +# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT +# is double-quoted, suitable for a subsequent eval, whereas +# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters +# which are still active within double quotes backslashified. +func_quote_for_eval () +{ + case $1 in + *[\\\`\"\$]*) + func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; + *) + func_quote_for_eval_unquoted_result="$1" ;; + esac + + case $func_quote_for_eval_unquoted_result in + # Double-quote args containing shell metacharacters to delay + # word splitting, command substitution and and variable + # expansion for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" + ;; + *) + func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" + esac +} + + +# func_quote_for_expand arg +# Aesthetically quote ARG to be evaled later; same as above, +# but do not quote variable references. +func_quote_for_expand () +{ + case $1 in + *[\\\`\"]*) + my_arg=`$ECHO "$1" | $SED \ + -e "$double_quote_subst" -e "$sed_double_backslash"` ;; + *) + my_arg="$1" ;; + esac + + case $my_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting and command substitution for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + my_arg="\"$my_arg\"" + ;; + esac + + func_quote_for_expand_result="$my_arg" +} + + +# func_show_eval cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. +func_show_eval () +{ + my_cmd="$1" + my_fail_exp="${2-:}" + + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + if ${opt_dry_run-false}; then :; else + eval "$my_cmd" + my_status=$? + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi + fi +} + + +# func_show_eval_locale cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. Use the saved locale for evaluation. +func_show_eval_locale () +{ + my_cmd="$1" + my_fail_exp="${2-:}" + + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + if ${opt_dry_run-false}; then :; else + eval "$lt_user_locale + $my_cmd" + my_status=$? + eval "$lt_safe_locale" + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi + fi +} + +# func_tr_sh +# Turn $1 into a string suitable for a shell variable name. +# Result is stored in $func_tr_sh_result. All characters +# not in the set a-zA-Z0-9_ are replaced with '_'. Further, +# if $1 begins with a digit, a '_' is prepended as well. +func_tr_sh () +{ + case $1 in + [0-9]* | *[!a-zA-Z0-9_]*) + func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` + ;; + * ) + func_tr_sh_result=$1 + ;; + esac +} + + +# func_version +# Echo version message to standard output and exit. +func_version () +{ + $opt_debug + + $SED -n '/(C)/!b go + :more + /\./!{ + N + s/\n# / / + b more + } + :go + /^# '$PROGRAM' (GNU /,/# warranty; / { + s/^# // + s/^# *$// + s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ + p + }' < "$progpath" + exit $? +} + +# func_usage +# Echo short help message to standard output and exit. +func_usage () +{ + $opt_debug + + $SED -n '/^# Usage:/,/^# *.*--help/ { + s/^# // + s/^# *$// + s/\$progname/'$progname'/ + p + }' < "$progpath" + echo + $ECHO "run \`$progname --help | more' for full usage" + exit $? +} + +# func_help [NOEXIT] +# Echo long help message to standard output and exit, +# unless 'noexit' is passed as argument. +func_help () +{ + $opt_debug + + $SED -n '/^# Usage:/,/# Report bugs to/ { + :print + s/^# // + s/^# *$// + s*\$progname*'$progname'* + s*\$host*'"$host"'* + s*\$SHELL*'"$SHELL"'* + s*\$LTCC*'"$LTCC"'* + s*\$LTCFLAGS*'"$LTCFLAGS"'* + s*\$LD*'"$LD"'* + s/\$with_gnu_ld/'"$with_gnu_ld"'/ + s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ + s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ + p + d + } + /^# .* home page:/b print + /^# General help using/b print + ' < "$progpath" + ret=$? + if test -z "$1"; then + exit $ret + fi +} + +# func_missing_arg argname +# Echo program name prefixed message to standard error and set global +# exit_cmd. +func_missing_arg () +{ + $opt_debug + + func_error "missing argument for $1." + exit_cmd=exit +} + + +# func_split_short_opt shortopt +# Set func_split_short_opt_name and func_split_short_opt_arg shell +# variables after splitting SHORTOPT after the 2nd character. +func_split_short_opt () +{ + my_sed_short_opt='1s/^\(..\).*$/\1/;q' + my_sed_short_rest='1s/^..\(.*\)$/\1/;q' + + func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` + func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` +} # func_split_short_opt may be replaced by extended shell implementation + + +# func_split_long_opt longopt +# Set func_split_long_opt_name and func_split_long_opt_arg shell +# variables after splitting LONGOPT at the `=' sign. +func_split_long_opt () +{ + my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' + my_sed_long_arg='1s/^--[^=]*=//' + + func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` + func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` +} # func_split_long_opt may be replaced by extended shell implementation + +exit_cmd=: + + + + + +magic="%%%MAGIC variable%%%" +magic_exe="%%%MAGIC EXE variable%%%" + +# Global variables. +nonopt= +preserve_args= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" +extracted_archives= +extracted_serial=0 + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "${1}=\$${1}\${2}" +} # func_append may be replaced by extended shell implementation + +# func_append_quoted var value +# Quote VALUE and append to the end of shell variable VAR, separated +# by a space. +func_append_quoted () +{ + func_quote_for_eval "${2}" + eval "${1}=\$${1}\\ \$func_quote_for_eval_result" +} # func_append_quoted may be replaced by extended shell implementation + + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=`expr "${@}"` +} # func_arith may be replaced by extended shell implementation + + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` +} # func_len may be replaced by extended shell implementation + + +# func_lo2o object +func_lo2o () +{ + func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` +} # func_lo2o may be replaced by extended shell implementation + + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` +} # func_xform may be replaced by extended shell implementation + + +# func_fatal_configuration arg... +# Echo program name prefixed message to standard error, followed by +# a configuration failure hint, and exit. +func_fatal_configuration () +{ + func_error ${1+"$@"} + func_error "See the $PACKAGE documentation for more information." + func_fatal_error "Fatal configuration error." +} + + +# func_config +# Display the configuration for all the tags in this script. +func_config () +{ + re_begincf='^# ### BEGIN LIBTOOL' + re_endcf='^# ### END LIBTOOL' + + # Default configuration. + $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" + + # Now print the configurations for the tags. + for tagname in $taglist; do + $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" + done + + exit $? +} + +# func_features +# Display the features supported by this script. +func_features () +{ + echo "host: $host" + if test "$build_libtool_libs" = yes; then + echo "enable shared libraries" + else + echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then + echo "enable static libraries" + else + echo "disable static libraries" + fi + + exit $? +} + +# func_enable_tag tagname +# Verify that TAGNAME is valid, and either flag an error and exit, or +# enable the TAGNAME tag. We also add TAGNAME to the global $taglist +# variable here. +func_enable_tag () +{ + # Global variable: + tagname="$1" + + re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" + re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" + sed_extractcf="/$re_begincf/,/$re_endcf/p" + + # Validate tagname. + case $tagname in + *[!-_A-Za-z0-9,/]*) + func_fatal_error "invalid tag name: $tagname" + ;; + esac + + # Don't test for the "default" C tag, as we know it's + # there but not specially marked. + case $tagname in + CC) ;; + *) + if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then + taglist="$taglist $tagname" + + # Evaluate the configuration. Be careful to quote the path + # and the sed script, to avoid splitting on whitespace, but + # also don't use non-portable quotes within backquotes within + # quotes we have to do it in 2 steps: + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` + eval "$extractedcf" + else + func_error "ignoring unknown tag $tagname" + fi + ;; + esac +} + +# func_check_version_match +# Ensure that we are using m4 macros, and libtool script from the same +# release of libtool. +func_check_version_match () +{ + if test "$package_revision" != "$macro_revision"; then + if test "$VERSION" != "$macro_version"; then + if test -z "$macro_version"; then + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from an older release. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + fi + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, +$progname: but the definition of this LT_INIT comes from revision $macro_revision. +$progname: You should recreate aclocal.m4 with macros from revision $package_revision +$progname: of $PACKAGE $VERSION and run autoconf again. +_LT_EOF + fi + + exit $EXIT_MISMATCH + fi +} + + +# Shorthand for --mode=foo, only valid as the first argument +case $1 in +clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; +compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; +execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; +finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; +install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; +link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; +uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; +esac + + + +# Option defaults: +opt_debug=: +opt_dry_run=false +opt_config=false +opt_preserve_dup_deps=false +opt_features=false +opt_finish=false +opt_help=false +opt_help_all=false +opt_silent=: +opt_warning=: +opt_verbose=: +opt_silent=false +opt_verbose=false + + +# Parse options once, thoroughly. This comes as soon as possible in the +# script to make things like `--version' happen as quickly as we can. +{ + # this just eases exit handling + while test $# -gt 0; do + opt="$1" + shift + case $opt in + --debug|-x) opt_debug='set -x' + func_echo "enabling shell trace mode" + $opt_debug + ;; + --dry-run|--dryrun|-n) + opt_dry_run=: + ;; + --config) + opt_config=: +func_config + ;; + --dlopen|-dlopen) + optarg="$1" + opt_dlopen="${opt_dlopen+$opt_dlopen +}$optarg" + shift + ;; + --preserve-dup-deps) + opt_preserve_dup_deps=: + ;; + --features) + opt_features=: +func_features + ;; + --finish) + opt_finish=: +set dummy --mode finish ${1+"$@"}; shift + ;; + --help) + opt_help=: + ;; + --help-all) + opt_help_all=: +opt_help=': help-all' + ;; + --mode) + test $# = 0 && func_missing_arg $opt && break + optarg="$1" + opt_mode="$optarg" +case $optarg in + # Valid mode arguments: + clean|compile|execute|finish|install|link|relink|uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument for $opt" + exit_cmd=exit + break + ;; +esac + shift + ;; + --no-silent|--no-quiet) + opt_silent=false +func_append preserve_args " $opt" + ;; + --no-warning|--no-warn) + opt_warning=false +func_append preserve_args " $opt" + ;; + --no-verbose) + opt_verbose=false +func_append preserve_args " $opt" + ;; + --silent|--quiet) + opt_silent=: +func_append preserve_args " $opt" + opt_verbose=false + ;; + --verbose|-v) + opt_verbose=: +func_append preserve_args " $opt" +opt_silent=false + ;; + --tag) + test $# = 0 && func_missing_arg $opt && break + optarg="$1" + opt_tag="$optarg" +func_append preserve_args " $opt $optarg" +func_enable_tag "$optarg" + shift + ;; + + -\?|-h) func_usage ;; + --help) func_help ;; + --version) func_version ;; + + # Separate optargs to long options: + --*=*) + func_split_long_opt "$opt" + set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} + shift + ;; + + # Separate non-argument short options: + -\?*|-h*|-n*|-v*) + func_split_short_opt "$opt" + set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + --) break ;; + -*) func_fatal_help "unrecognized option \`$opt'" ;; + *) set dummy "$opt" ${1+"$@"}; shift; break ;; + esac + done + + # Validate options: + + # save first non-option argument + if test "$#" -gt 0; then + nonopt="$opt" + shift + fi + + # preserve --debug + test "$opt_debug" = : || func_append preserve_args " --debug" + + case $host in + *cygwin* | *mingw* | *pw32* | *cegcc*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps + ;; + esac + + $opt_help || { + # Sanity checks first: + func_check_version_match + + if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then + func_fatal_configuration "not configured to build any kind of library" + fi + + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$opt_dlopen" && test "$opt_mode" != execute; then + func_error "unrecognized option \`-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$progname --help --mode=$opt_mode' for more information." + } + + + # Bail if the options were screwed + $exit_cmd $EXIT_FAILURE +} + + + + +## ----------- ## +## Main. ## +## ----------- ## + +# func_lalib_p file +# True iff FILE is a libtool `.la' library or `.lo' object file. +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_lalib_p () +{ + test -f "$1" && + $SED -e 4q "$1" 2>/dev/null \ + | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 +} + +# func_lalib_unsafe_p file +# True iff FILE is a libtool `.la' library or `.lo' object file. +# This function implements the same check as func_lalib_p without +# resorting to external programs. To this end, it redirects stdin and +# closes it afterwards, without saving the original file descriptor. +# As a safety measure, use it only where a negative result would be +# fatal anyway. Works if `file' does not exist. +func_lalib_unsafe_p () +{ + lalib_p=no + if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then + for lalib_p_l in 1 2 3 4 + do + read lalib_p_line + case "$lalib_p_line" in + \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; + esac + done + exec 0<&5 5<&- + fi + test "$lalib_p" = yes +} + +# func_ltwrapper_script_p file +# True iff FILE is a libtool wrapper script +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_script_p () +{ + func_lalib_p "$1" +} + +# func_ltwrapper_executable_p file +# True iff FILE is a libtool wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_executable_p () +{ + func_ltwrapper_exec_suffix= + case $1 in + *.exe) ;; + *) func_ltwrapper_exec_suffix=.exe ;; + esac + $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 +} + +# func_ltwrapper_scriptname file +# Assumes file is an ltwrapper_executable +# uses $file to determine the appropriate filename for a +# temporary ltwrapper_script. +func_ltwrapper_scriptname () +{ + func_dirname_and_basename "$1" "" "." + func_stripname '' '.exe' "$func_basename_result" + func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" +} + +# func_ltwrapper_p file +# True iff FILE is a libtool wrapper script or wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_p () +{ + func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" +} + + +# func_execute_cmds commands fail_cmd +# Execute tilde-delimited COMMANDS. +# If FAIL_CMD is given, eval that upon failure. +# FAIL_CMD may read-access the current command in variable CMD! +func_execute_cmds () +{ + $opt_debug + save_ifs=$IFS; IFS='~' + for cmd in $1; do + IFS=$save_ifs + eval cmd=\"$cmd\" + func_show_eval "$cmd" "${2-:}" + done + IFS=$save_ifs +} + + +# func_source file +# Source FILE, adding directory component if necessary. +# Note that it is not necessary on cygwin/mingw to append a dot to +# FILE even if both FILE and FILE.exe exist: automatic-append-.exe +# behavior happens only for exec(3), not for open(2)! Also, sourcing +# `FILE.' does not work on cygwin managed mounts. +func_source () +{ + $opt_debug + case $1 in + */* | *\\*) . "$1" ;; + *) . "./$1" ;; + esac +} + + +# func_resolve_sysroot PATH +# Replace a leading = in PATH with a sysroot. Store the result into +# func_resolve_sysroot_result +func_resolve_sysroot () +{ + func_resolve_sysroot_result=$1 + case $func_resolve_sysroot_result in + =*) + func_stripname '=' '' "$func_resolve_sysroot_result" + func_resolve_sysroot_result=$lt_sysroot$func_stripname_result + ;; + esac +} + +# func_replace_sysroot PATH +# If PATH begins with the sysroot, replace it with = and +# store the result into func_replace_sysroot_result. +func_replace_sysroot () +{ + case "$lt_sysroot:$1" in + ?*:"$lt_sysroot"*) + func_stripname "$lt_sysroot" '' "$1" + func_replace_sysroot_result="=$func_stripname_result" + ;; + *) + # Including no sysroot. + func_replace_sysroot_result=$1 + ;; + esac +} + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + $opt_debug + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case "$@ " in + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + func_echo "unable to infer tagged configuration" + func_fatal_error "specify a tag with \`--tag'" +# else +# func_verbose "using $tagname tagged configuration" + fi + ;; + esac + fi +} + + + +# func_write_libtool_object output_name pic_name nonpic_name +# Create a libtool object file (analogous to a ".la" file), +# but don't create it if we're doing a dry run. +func_write_libtool_object () +{ + write_libobj=${1} + if test "$build_libtool_libs" = yes; then + write_lobj=\'${2}\' + else + write_lobj=none + fi + + if test "$build_old_libs" = yes; then + write_oldobj=\'${3}\' + else + write_oldobj=none + fi + + $opt_dry_run || { + cat >${write_libobj}T </dev/null` + if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then + func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | + $SED -e "$lt_sed_naive_backslashify"` + else + func_convert_core_file_wine_to_w32_result= + fi + fi +} +# end: func_convert_core_file_wine_to_w32 + + +# func_convert_core_path_wine_to_w32 ARG +# Helper function used by path conversion functions when $build is *nix, and +# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly +# configured wine environment available, with the winepath program in $build's +# $PATH. Assumes ARG has no leading or trailing path separator characters. +# +# ARG is path to be converted from $build format to win32. +# Result is available in $func_convert_core_path_wine_to_w32_result. +# Unconvertible file (directory) names in ARG are skipped; if no directory names +# are convertible, then the result may be empty. +func_convert_core_path_wine_to_w32 () +{ + $opt_debug + # unfortunately, winepath doesn't convert paths, only file names + func_convert_core_path_wine_to_w32_result="" + if test -n "$1"; then + oldIFS=$IFS + IFS=: + for func_convert_core_path_wine_to_w32_f in $1; do + IFS=$oldIFS + func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" + if test -n "$func_convert_core_file_wine_to_w32_result" ; then + if test -z "$func_convert_core_path_wine_to_w32_result"; then + func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" + else + func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" + fi + fi + done + IFS=$oldIFS + fi +} +# end: func_convert_core_path_wine_to_w32 + + +# func_cygpath ARGS... +# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when +# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) +# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or +# (2), returns the Cygwin file name or path in func_cygpath_result (input +# file name or path is assumed to be in w32 format, as previously converted +# from $build's *nix or MSYS format). In case (3), returns the w32 file name +# or path in func_cygpath_result (input file name or path is assumed to be in +# Cygwin format). Returns an empty string on error. +# +# ARGS are passed to cygpath, with the last one being the file name or path to +# be converted. +# +# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH +# environment variable; do not put it in $PATH. +func_cygpath () +{ + $opt_debug + if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then + func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` + if test "$?" -ne 0; then + # on failure, ensure result is empty + func_cygpath_result= + fi + else + func_cygpath_result= + func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" + fi +} +#end: func_cygpath + + +# func_convert_core_msys_to_w32 ARG +# Convert file name or path ARG from MSYS format to w32 format. Return +# result in func_convert_core_msys_to_w32_result. +func_convert_core_msys_to_w32 () +{ + $opt_debug + # awkward: cmd appends spaces to result + func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | + $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` +} +#end: func_convert_core_msys_to_w32 + + +# func_convert_file_check ARG1 ARG2 +# Verify that ARG1 (a file name in $build format) was converted to $host +# format in ARG2. Otherwise, emit an error message, but continue (resetting +# func_to_host_file_result to ARG1). +func_convert_file_check () +{ + $opt_debug + if test -z "$2" && test -n "$1" ; then + func_error "Could not determine host file name corresponding to" + func_error " \`$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback: + func_to_host_file_result="$1" + fi +} +# end func_convert_file_check + + +# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH +# Verify that FROM_PATH (a path in $build format) was converted to $host +# format in TO_PATH. Otherwise, emit an error message, but continue, resetting +# func_to_host_file_result to a simplistic fallback value (see below). +func_convert_path_check () +{ + $opt_debug + if test -z "$4" && test -n "$3"; then + func_error "Could not determine the host path corresponding to" + func_error " \`$3'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback. This is a deliberately simplistic "conversion" and + # should not be "improved". See libtool.info. + if test "x$1" != "x$2"; then + lt_replace_pathsep_chars="s|$1|$2|g" + func_to_host_path_result=`echo "$3" | + $SED -e "$lt_replace_pathsep_chars"` + else + func_to_host_path_result="$3" + fi + fi +} +# end func_convert_path_check + + +# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG +# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT +# and appending REPL if ORIG matches BACKPAT. +func_convert_path_front_back_pathsep () +{ + $opt_debug + case $4 in + $1 ) func_to_host_path_result="$3$func_to_host_path_result" + ;; + esac + case $4 in + $2 ) func_append func_to_host_path_result "$3" + ;; + esac +} +# end func_convert_path_front_back_pathsep + + +################################################## +# $build to $host FILE NAME CONVERSION FUNCTIONS # +################################################## +# invoked via `$to_host_file_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# Result will be available in $func_to_host_file_result. + + +# func_to_host_file ARG +# Converts the file name ARG from $build format to $host format. Return result +# in func_to_host_file_result. +func_to_host_file () +{ + $opt_debug + $to_host_file_cmd "$1" +} +# end func_to_host_file + + +# func_to_tool_file ARG LAZY +# converts the file name ARG from $build format to toolchain format. Return +# result in func_to_tool_file_result. If the conversion in use is listed +# in (the comma separated) LAZY, no conversion takes place. +func_to_tool_file () +{ + $opt_debug + case ,$2, in + *,"$to_tool_file_cmd",*) + func_to_tool_file_result=$1 + ;; + *) + $to_tool_file_cmd "$1" + func_to_tool_file_result=$func_to_host_file_result + ;; + esac +} +# end func_to_tool_file + + +# func_convert_file_noop ARG +# Copy ARG to func_to_host_file_result. +func_convert_file_noop () +{ + func_to_host_file_result="$1" +} +# end func_convert_file_noop + + +# func_convert_file_msys_to_w32 ARG +# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_file_result. +func_convert_file_msys_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_to_host_file_result="$func_convert_core_msys_to_w32_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_w32 + + +# func_convert_file_cygwin_to_w32 ARG +# Convert file name ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_file_cygwin_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + # because $build is cygwin, we call "the" cygpath in $PATH; no need to use + # LT_CYGPATH in this case. + func_to_host_file_result=`cygpath -m "$1"` + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_cygwin_to_w32 + + +# func_convert_file_nix_to_w32 ARG +# Convert file name ARG from *nix to w32 format. Requires a wine environment +# and a working winepath. Returns result in func_to_host_file_result. +func_convert_file_nix_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_file_wine_to_w32 "$1" + func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_w32 + + +# func_convert_file_msys_to_cygwin ARG +# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_file_msys_to_cygwin () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_cygpath -u "$func_convert_core_msys_to_w32_result" + func_to_host_file_result="$func_cygpath_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_cygwin + + +# func_convert_file_nix_to_cygwin ARG +# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed +# in a wine environment, working winepath, and LT_CYGPATH set. Returns result +# in func_to_host_file_result. +func_convert_file_nix_to_cygwin () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. + func_convert_core_file_wine_to_w32 "$1" + func_cygpath -u "$func_convert_core_file_wine_to_w32_result" + func_to_host_file_result="$func_cygpath_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_cygwin + + +############################################# +# $build to $host PATH CONVERSION FUNCTIONS # +############################################# +# invoked via `$to_host_path_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# The result will be available in $func_to_host_path_result. +# +# Path separators are also converted from $build format to $host format. If +# ARG begins or ends with a path separator character, it is preserved (but +# converted to $host format) on output. +# +# All path conversion functions are named using the following convention: +# file name conversion function : func_convert_file_X_to_Y () +# path conversion function : func_convert_path_X_to_Y () +# where, for any given $build/$host combination the 'X_to_Y' value is the +# same. If conversion functions are added for new $build/$host combinations, +# the two new functions must follow this pattern, or func_init_to_host_path_cmd +# will break. + + +# func_init_to_host_path_cmd +# Ensures that function "pointer" variable $to_host_path_cmd is set to the +# appropriate value, based on the value of $to_host_file_cmd. +to_host_path_cmd= +func_init_to_host_path_cmd () +{ + $opt_debug + if test -z "$to_host_path_cmd"; then + func_stripname 'func_convert_file_' '' "$to_host_file_cmd" + to_host_path_cmd="func_convert_path_${func_stripname_result}" + fi +} + + +# func_to_host_path ARG +# Converts the path ARG from $build format to $host format. Return result +# in func_to_host_path_result. +func_to_host_path () +{ + $opt_debug + func_init_to_host_path_cmd + $to_host_path_cmd "$1" +} +# end func_to_host_path + + +# func_convert_path_noop ARG +# Copy ARG to func_to_host_path_result. +func_convert_path_noop () +{ + func_to_host_path_result="$1" +} +# end func_convert_path_noop + + +# func_convert_path_msys_to_w32 ARG +# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_path_result. +func_convert_path_msys_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # Remove leading and trailing path separator characters from ARG. MSYS + # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; + # and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result="$func_convert_core_msys_to_w32_result" + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_msys_to_w32 + + +# func_convert_path_cygwin_to_w32 ARG +# Convert path ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_path_cygwin_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_cygwin_to_w32 + + +# func_convert_path_nix_to_w32 ARG +# Convert path ARG from *nix to w32 format. Requires a wine environment and +# a working winepath. Returns result in func_to_host_file_result. +func_convert_path_nix_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_nix_to_w32 + + +# func_convert_path_msys_to_cygwin ARG +# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_path_msys_to_cygwin () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_msys_to_w32_result" + func_to_host_path_result="$func_cygpath_result" + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_msys_to_cygwin + + +# func_convert_path_nix_to_cygwin ARG +# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a +# a wine environment, working winepath, and LT_CYGPATH set. Returns result in +# func_to_host_file_result. +func_convert_path_nix_to_cygwin () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # Remove leading and trailing path separator characters from + # ARG. msys behavior is inconsistent here, cygpath turns them + # into '.;' and ';.', and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" + func_to_host_path_result="$func_cygpath_result" + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_nix_to_cygwin + + +# func_mode_compile arg... +func_mode_compile () +{ + $opt_debug + # Get the compilation command and the source file. + base_compile= + srcfile="$nonopt" # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + pie_flag= + + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg="$arg" + arg_mode=normal + ;; + + target ) + libobj="$arg" + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + test -n "$libobj" && \ + func_fatal_error "you cannot specify \`-o' more than once" + arg_mode=target + continue + ;; + + -pie | -fpie | -fPIE) + func_append pie_flag " $arg" + continue + ;; + + -shared | -static | -prefer-pic | -prefer-non-pic) + func_append later " $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + lastarg= + save_ifs="$IFS"; IFS=',' + for arg in $args; do + IFS="$save_ifs" + func_append_quoted lastarg "$arg" + done + IFS="$save_ifs" + func_stripname ' ' '' "$lastarg" + lastarg=$func_stripname_result + + # Add the arguments to base_compile. + func_append base_compile " $lastarg" + continue + ;; + + *) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg="$srcfile" + srcfile="$arg" + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + func_append_quoted base_compile "$lastarg" + done # for arg + + case $arg_mode in + arg) + func_fatal_error "you must specify an argument for -Xcompile" + ;; + target) + func_fatal_error "you must specify a target with \`-o'" + ;; + *) + # Get the name of the library object. + test -z "$libobj" && { + func_basename "$srcfile" + libobj="$func_basename_result" + } + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + case $libobj in + *.[cCFSifmso] | \ + *.ada | *.adb | *.ads | *.asm | \ + *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ + *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) + func_xform "$libobj" + libobj=$func_xform_result + ;; + esac + + case $libobj in + *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; + *) + func_fatal_error "cannot determine name of library object from \`$libobj'" + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -shared) + test "$build_libtool_libs" != yes && \ + func_fatal_configuration "can not build a shared library" + build_old_libs=no + continue + ;; + + -static) + build_libtool_libs=no + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + func_quote_for_eval "$libobj" + test "X$libobj" != "X$func_quote_for_eval_result" \ + && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && func_warning "libobj name \`$libobj' may not contain shell special characters." + func_dirname_and_basename "$obj" "/" "" + objname="$func_basename_result" + xdir="$func_dirname_result" + lobj=${xdir}$objdir/$objname + + test -z "$base_compile" && \ + func_fatal_help "you must specify a compilation command" + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2* | cegcc*) + pic_mode=default + ;; + esac + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test "$compiler_c_o" = no; then + output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then + $ECHO "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + func_append removelist " $output_obj" + $ECHO "$srcfile" > "$lockfile" + fi + + $opt_dry_run || $RM $removelist + func_append removelist " $lockfile" + trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 + + func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 + srcfile=$func_to_tool_file_result + func_quote_for_eval "$srcfile" + qsrcfile=$func_quote_for_eval_result + + # Only build a PIC object if we are building libtool libraries. + if test "$build_libtool_libs" = yes; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + if test "$pic_mode" != no; then + command="$base_compile $qsrcfile $pic_flag" + else + # Don't build PIC code + command="$base_compile $qsrcfile" + fi + + func_mkdir_p "$xdir$objdir" + + if test -z "$output_obj"; then + # Place PIC objects in $objdir + func_append command " -o $lobj" + fi + + func_show_eval_locale "$command" \ + 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' + + if test "$need_locks" = warn && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + func_show_eval '$MV "$output_obj" "$lobj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + + # Allow error messages only from the first compilation. + if test "$suppress_opt" = yes; then + suppress_output=' >/dev/null 2>&1' + fi + fi + + # Only build a position-dependent object if we build old libraries. + if test "$build_old_libs" = yes; then + if test "$pic_mode" != yes; then + # Don't build PIC code + command="$base_compile $qsrcfile$pie_flag" + else + command="$base_compile $qsrcfile $pic_flag" + fi + if test "$compiler_c_o" = yes; then + func_append command " -o $obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + func_append command "$suppress_output" + func_show_eval_locale "$command" \ + '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' + + if test "$need_locks" = warn && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + func_show_eval '$MV "$output_obj" "$obj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + fi + + $opt_dry_run || { + func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" + + # Unlock the critical section if it was locked + if test "$need_locks" != no; then + removelist=$lockfile + $RM "$lockfile" + fi + } + + exit $EXIT_SUCCESS +} + +$opt_help || { + test "$opt_mode" = compile && func_mode_compile ${1+"$@"} +} + +func_mode_help () +{ + # We need to display help for each of the modes. + case $opt_mode in + "") + # Generic help is extracted from the usage comments + # at the start of this file. + func_help + ;; + + clean) + $ECHO \ +"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + + compile) + $ECHO \ +"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -no-suppress do not suppress compiler output for multiple passes + -prefer-pic try to build PIC objects only + -prefer-non-pic try to build non-PIC objects only + -shared do not build a \`.o' file suitable for static linking + -static only build a \`.o' file suitable for static linking + -Wc,FLAG pass FLAG directly to the compiler + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + + execute) + $ECHO \ +"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + + finish) + $ECHO \ +"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + + install) + $ECHO \ +"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The following components of INSTALL-COMMAND are treated specially: + + -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + + link) + $ECHO \ +"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -bindir BINDIR specify path to binaries directory (for systems where + libraries must be found in the PATH setting at runtime) + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE Use a list of object files found in FILE to specify objects + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -shared only do dynamic linking of libtool libraries + -shrext SUFFIX override the standard shared library file extension + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + -weak LIBNAME declare that the target provides the LIBNAME interface + -Wc,FLAG + -Xcompiler FLAG pass linker-specific FLAG directly to the compiler + -Wl,FLAG + -Xlinker FLAG pass linker-specific FLAG directly to the linker + -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + + uninstall) + $ECHO \ +"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + + *) + func_fatal_help "invalid operation mode \`$opt_mode'" + ;; + esac + + echo + $ECHO "Try \`$progname --help' for more information about other modes." +} + +# Now that we've collected a possible --mode arg, show help if necessary +if $opt_help; then + if test "$opt_help" = :; then + func_mode_help + else + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + func_mode_help + done + } | sed -n '1p; 2,$s/^Usage:/ or: /p' + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + echo + func_mode_help + done + } | + sed '1d + /^When reporting/,/^Report/{ + H + d + } + $x + /information about other modes/d + /more detailed .*MODE/d + s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' + fi + exit $? +fi + + +# func_mode_execute arg... +func_mode_execute () +{ + $opt_debug + # The first argument is the command name. + cmd="$nonopt" + test -z "$cmd" && \ + func_fatal_help "you must specify a COMMAND" + + # Handle -dlopen flags immediately. + for file in $opt_dlopen; do + test -f "$file" \ + || func_fatal_help "\`$file' is not a file" + + dir= + case $file in + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "\`$lib' is not a valid libtool archive" + + # Read the libtool library. + dlname= + library_names= + func_source "$file" + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && \ + func_warning "\`$file' was not linked with \`-export-dynamic'" + continue + fi + + func_dirname "$file" "" "." + dir="$func_dirname_result" + + if test -f "$dir/$objdir/$dlname"; then + func_append dir "/$objdir" + else + if test ! -f "$dir/$dlname"; then + func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" + fi + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + func_dirname "$file" "" "." + dir="$func_dirname_result" + ;; + + *) + func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -* | *.la | *.lo ) ;; + *) + # Do a test to see if this is really a libtool program. + if func_ltwrapper_script_p "$file"; then + func_source "$file" + # Transform arg to wrapped name. + file="$progdir/$program" + elif func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + func_source "$func_ltwrapper_scriptname_result" + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + func_append_quoted args "$file" + done + + if test "X$opt_dry_run" = Xfalse; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES + do + eval "if test \"\${save_$lt_var+set}\" = set; then + $lt_var=\$save_$lt_var; export $lt_var + else + $lt_unset $lt_var + fi" + done + + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" + echo "export $shlibpath_var" + fi + $ECHO "$cmd$args" + exit $EXIT_SUCCESS + fi +} + +test "$opt_mode" = execute && func_mode_execute ${1+"$@"} + + +# func_mode_finish arg... +func_mode_finish () +{ + $opt_debug + libs= + libdirs= + admincmds= + + for opt in "$nonopt" ${1+"$@"} + do + if test -d "$opt"; then + func_append libdirs " $opt" + + elif test -f "$opt"; then + if func_lalib_unsafe_p "$opt"; then + func_append libs " $opt" + else + func_warning "\`$opt' is not a valid libtool archive" + fi + + else + func_fatal_error "invalid argument \`$opt'" + fi + done + + if test -n "$libs"; then + if test -n "$lt_sysroot"; then + sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` + sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" + else + sysroot_cmd= + fi + + # Remove sysroot references + if $opt_dry_run; then + for lib in $libs; do + echo "removing references to $lt_sysroot and \`=' prefixes from $lib" + done + else + tmpdir=`func_mktempdir` + for lib in $libs; do + sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ + > $tmpdir/tmp-la + mv -f $tmpdir/tmp-la $lib + done + ${RM}r "$tmpdir" + fi + fi + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + func_execute_cmds "$finish_cmds" 'admincmds="$admincmds +'"$cmd"'"' + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $opt_dry_run || eval "$cmds" || func_append admincmds " + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + $opt_silent && exit $EXIT_SUCCESS + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + echo "----------------------------------------------------------------------" + echo "Libraries have been installed in:" + for libdir in $libdirs; do + $ECHO " $libdir" + done + echo + echo "If you ever happen to want to link against installed libraries" + echo "in a given directory, LIBDIR, you must either use libtool, and" + echo "specify the full pathname of the library, or use the \`-LLIBDIR'" + echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + echo " during execution" + fi + if test -n "$runpath_var"; then + echo " - add LIBDIR to the \`$runpath_var' environment variable" + echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $ECHO " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + $ECHO " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + echo + + echo "See any operating system documentation about shared libraries for" + case $host in + solaris2.[6789]|solaris2.1[0-9]) + echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" + echo "pages." + ;; + *) + echo "more information, such as the ld(1) and ld.so(8) manual pages." + ;; + esac + echo "----------------------------------------------------------------------" + fi + exit $EXIT_SUCCESS +} + +test "$opt_mode" = finish && func_mode_finish ${1+"$@"} + + +# func_mode_install arg... +func_mode_install () +{ + $opt_debug + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + case $nonopt in *shtool*) :;; *) false;; esac; then + # Aesthetically quote it. + func_quote_for_eval "$nonopt" + install_prog="$func_quote_for_eval_result " + arg=$1 + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + func_quote_for_eval "$arg" + func_append install_prog "$func_quote_for_eval_result" + install_shared_prog=$install_prog + case " $install_prog " in + *[\\\ /]cp\ *) install_cp=: ;; + *) install_cp=false ;; + esac + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + no_mode=: + for arg + do + arg2= + if test -n "$dest"; then + func_append files " $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=yes ;; + -f) + if $install_cp; then :; else + prev=$arg + fi + ;; + -g | -m | -o) + prev=$arg + ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + if test "x$prev" = x-m && test -n "$install_override_mode"; then + arg2=$install_override_mode + no_mode=false + fi + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + func_quote_for_eval "$arg" + func_append install_prog " $func_quote_for_eval_result" + if test -n "$arg2"; then + func_quote_for_eval "$arg2" + fi + func_append install_shared_prog " $func_quote_for_eval_result" + done + + test -z "$install_prog" && \ + func_fatal_help "you must specify an install program" + + test -n "$prev" && \ + func_fatal_help "the \`$prev' option requires an argument" + + if test -n "$install_override_mode" && $no_mode; then + if $install_cp; then :; else + func_quote_for_eval "$install_override_mode" + func_append install_shared_prog " -m $func_quote_for_eval_result" + fi + fi + + if test -z "$files"; then + if test -z "$dest"; then + func_fatal_help "no file or destination specified" + else + func_fatal_help "you must specify a destination" + fi + fi + + # Strip any trailing slash from the destination. + func_stripname '' '/' "$dest" + dest=$func_stripname_result + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + func_dirname_and_basename "$dest" "" "." + destdir="$func_dirname_result" + destname="$func_basename_result" + + # Not a directory, so check to see that there is only one file specified. + set dummy $files; shift + test "$#" -gt 1 && \ + func_fatal_help "\`$dest' is not a directory" + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + func_fatal_help "\`$destdir' must be an absolute directory name" + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + func_append staticlibs " $file" + ;; + + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "\`$file' is not a valid libtool archive" + + library_names= + old_library= + relink_command= + func_source "$file" + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) func_append current_libdirs " $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) func_append future_libdirs " $libdir" ;; + esac + fi + + func_dirname "$file" "/" "" + dir="$func_dirname_result" + func_append dir "$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + test "$inst_prefix_dir" = "$destdir" && \ + func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + func_warning "relinking \`$file'" + func_show_eval "$relink_command" \ + 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' + fi + + # See the names of the shared library. + set dummy $library_names; shift + if test -n "$1"; then + realname="$1" + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ + 'exit $?' + tstripme="$stripme" + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + case $realname in + *.dll.a) + tstripme="" + ;; + esac + ;; + esac + if test -n "$tstripme" && test -n "$striplib"; then + func_show_eval "$striplib $destdir/$realname" 'exit $?' + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try `ln -sf' first, because the `ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + test "$linkname" != "$realname" \ + && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + func_execute_cmds "$postinstall_cmds" 'exit $?' + fi + + # Install the pseudo-library for information purposes. + func_basename "$file" + name="$func_basename_result" + instname="$dir/$name"i + func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' + + # Maybe install the static library, too. + test -n "$old_library" && func_append staticlibs " $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + func_basename "$file" + destfile="$func_basename_result" + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + func_lo2o "$destfile" + staticdest=$func_lo2o_result + ;; + *.$objext) + staticdest="$destfile" + destfile= + ;; + *) + func_fatal_help "cannot copy a libtool object to \`$destfile'" + ;; + esac + + # Install the libtool object if requested. + test -n "$destfile" && \ + func_show_eval "$install_prog $file $destfile" 'exit $?' + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + func_lo2o "$file" + staticobj=$func_lo2o_result + func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + func_basename "$file" + destfile="$func_basename_result" + destfile="$destdir/$destfile" + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext="" + case $file in + *.exe) + if test ! -f "$file"; then + func_stripname '' '.exe' "$file" + file=$func_stripname_result + stripped_ext=".exe" + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin* | *mingw*) + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + wrapper=$func_ltwrapper_scriptname_result + else + func_stripname '' '.exe' "$file" + wrapper=$func_stripname_result + fi + ;; + *) + wrapper=$file + ;; + esac + if func_ltwrapper_script_p "$wrapper"; then + notinst_deplibs= + relink_command= + + func_source "$wrapper" + + # Check the variables that should have been set. + test -z "$generated_by_libtool_version" && \ + func_fatal_error "invalid libtool wrapper script \`$wrapper'" + + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + func_source "$lib" + fi + libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + func_warning "\`$lib' has not been installed in \`$libdir'" + finalize=no + fi + done + + relink_command= + func_source "$wrapper" + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + $opt_dry_run || { + if test "$finalize" = yes; then + tmpdir=`func_mktempdir` + func_basename "$file$stripped_ext" + file="$func_basename_result" + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` + + $opt_silent || { + func_quote_for_expand "$relink_command" + eval "func_echo $func_quote_for_expand_result" + } + if eval "$relink_command"; then : + else + func_error "error: relink \`$file' with the above command before installing it" + $opt_dry_run || ${RM}r "$tmpdir" + continue + fi + file="$outputname" + else + func_warning "cannot relink \`$file'" + fi + } + else + # Install the binary that we compiled earlier. + file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + func_stripname '' '.exe' "$destfile" + destfile=$func_stripname_result + ;; + esac + ;; + esac + func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' + $opt_dry_run || if test -n "$outputname"; then + ${RM}r "$tmpdir" + fi + ;; + esac + done + + for file in $staticlibs; do + func_basename "$file" + name="$func_basename_result" + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + + func_show_eval "$install_prog \$file \$oldlib" 'exit $?' + + if test -n "$stripme" && test -n "$old_striplib"; then + func_show_eval "$old_striplib $tool_oldlib" 'exit $?' + fi + + # Do each command in the postinstall commands. + func_execute_cmds "$old_postinstall_cmds" 'exit $?' + done + + test -n "$future_libdirs" && \ + func_warning "remember to run \`$progname --finish$future_libdirs'" + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + $opt_dry_run && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi +} + +test "$opt_mode" = install && func_mode_install ${1+"$@"} + + +# func_generate_dlsyms outputname originator pic_p +# Extract symbols from dlprefiles and create ${outputname}S.o with +# a dlpreopen symbol table. +func_generate_dlsyms () +{ + $opt_debug + my_outputname="$1" + my_originator="$2" + my_pic_p="${3-no}" + my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` + my_dlsyms= + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + my_dlsyms="${my_outputname}S.c" + else + func_error "not configured to extract global symbols from dlpreopened files" + fi + fi + + if test -n "$my_dlsyms"; then + case $my_dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${my_outputname}.nm" + + func_show_eval "$RM $nlist ${nlist}S ${nlist}T" + + # Parse the name list into a source file. + func_verbose "creating $output_objdir/$my_dlsyms" + + $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ +/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ +/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) +#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" +#endif + +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + func_verbose "generating symbol list for \`$output'" + + $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` + for progfile in $progfiles; do + func_to_tool_file "$progfile" func_convert_file_msys_to_w32 + func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" + $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $opt_dry_run || { + eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + if test -n "$export_symbols_regex"; then + $opt_dry_run || { + eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$outputname.exp" + $opt_dry_run || { + $RM $export_symbols + eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + } + else + $opt_dry_run || { + eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + } + fi + fi + + for dlprefile in $dlprefiles; do + func_verbose "extracting global C symbols from \`$dlprefile'" + func_basename "$dlprefile" + name="$func_basename_result" + case $host in + *cygwin* | *mingw* | *cegcc* ) + # if an import library, we need to obtain dlname + if func_win32_import_lib_p "$dlprefile"; then + func_tr_sh "$dlprefile" + eval "curr_lafile=\$libfile_$func_tr_sh_result" + dlprefile_dlbasename="" + if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then + # Use subshell, to avoid clobbering current variable values + dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` + if test -n "$dlprefile_dlname" ; then + func_basename "$dlprefile_dlname" + dlprefile_dlbasename="$func_basename_result" + else + # no lafile. user explicitly requested -dlpreopen . + $sharedlib_from_linklib_cmd "$dlprefile" + dlprefile_dlbasename=$sharedlib_from_linklib_result + fi + fi + $opt_dry_run || { + if test -n "$dlprefile_dlbasename" ; then + eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' + else + func_warning "Could not compute DLL name from $name" + eval '$ECHO ": $name " >> "$nlist"' + fi + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | + $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" + } + else # not an import lib + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + fi + ;; + *) + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + ;; + esac + done + + $opt_dry_run || { + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $MV "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if $GREP -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + $GREP -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' + else + echo '/* NONE */' >> "$output_objdir/$my_dlsyms" + fi + + echo >> "$output_objdir/$my_dlsyms" "\ + +/* The mapping between symbol names and symbols. */ +typedef struct { + const char *name; + void *address; +} lt_dlsymlist; +extern LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[]; +LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[] = +{\ + { \"$my_originator\", (void *) 0 }," + + case $need_lib_prefix in + no) + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + *) + eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + esac + echo >> "$output_objdir/$my_dlsyms" "\ + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_${my_prefix}_LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + } # !$opt_dry_run + + pic_flag_for_symtable= + case "$compile_command " in + *" -static "*) ;; + *) + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; + *-*-hpux*) + pic_flag_for_symtable=" $pic_flag" ;; + *) + if test "X$my_pic_p" != Xno; then + pic_flag_for_symtable=" $pic_flag" + fi + ;; + esac + ;; + esac + symtab_cflags= + for arg in $LTCFLAGS; do + case $arg in + -pie | -fpie | -fPIE) ;; + *) func_append symtab_cflags " $arg" ;; + esac + done + + # Now compile the dynamic symbol file. + func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' + + # Clean up the generated files. + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' + + # Transform the symbol file into the correct name. + symfileobj="$output_objdir/${my_outputname}S.$objext" + case $host in + *cygwin* | *mingw* | *cegcc* ) + if test -f "$output_objdir/$my_outputname.def"; then + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + else + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + fi + ;; + *) + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + ;; + esac + ;; + *) + func_fatal_error "unknown suffix for \`$my_dlsyms'" + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` + fi +} + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +# Despite the name, also deal with 64 bit binaries. +func_win32_libid () +{ + $opt_debug + win32_libid_type="unknown" + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | + $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then + func_to_tool_file "$1" func_convert_file_msys_to_w32 + win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | + $SED -n -e ' + 1,100{ + / I /{ + s,.*,import, + p + q + } + }'` + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $ECHO "$win32_libid_type" +} + +# func_cygming_dll_for_implib ARG +# +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib () +{ + $opt_debug + sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` +} + +# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs +# +# The is the core of a fallback implementation of a +# platform-specific function to extract the name of the +# DLL associated with the specified import library LIBNAME. +# +# SECTION_NAME is either .idata$6 or .idata$7, depending +# on the platform and compiler that created the implib. +# +# Echos the name of the DLL associated with the +# specified import library. +func_cygming_dll_for_implib_fallback_core () +{ + $opt_debug + match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` + $OBJDUMP -s --section "$1" "$2" 2>/dev/null | + $SED '/^Contents of section '"$match_literal"':/{ + # Place marker at beginning of archive member dllname section + s/.*/====MARK====/ + p + d + } + # These lines can sometimes be longer than 43 characters, but + # are always uninteresting + /:[ ]*file format pe[i]\{,1\}-/d + /^In archive [^:]*:/d + # Ensure marker is printed + /^====MARK====/p + # Remove all lines with less than 43 characters + /^.\{43\}/!d + # From remaining lines, remove first 43 characters + s/^.\{43\}//' | + $SED -n ' + # Join marker and all lines until next marker into a single line + /^====MARK====/ b para + H + $ b para + b + :para + x + s/\n//g + # Remove the marker + s/^====MARK====// + # Remove trailing dots and whitespace + s/[\. \t]*$// + # Print + /./p' | + # we now have a list, one entry per line, of the stringified + # contents of the appropriate section of all members of the + # archive which possess that section. Heuristic: eliminate + # all those which have a first or second character that is + # a '.' (that is, objdump's representation of an unprintable + # character.) This should work for all archives with less than + # 0x302f exports -- but will fail for DLLs whose name actually + # begins with a literal '.' or a single character followed by + # a '.'. + # + # Of those that remain, print the first one. + $SED -e '/^\./d;/^.\./d;q' +} + +# func_cygming_gnu_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is a GNU/binutils-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_gnu_implib_p () +{ + $opt_debug + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` + test -n "$func_cygming_gnu_implib_tmp" +} + +# func_cygming_ms_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is an MS-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_ms_implib_p () +{ + $opt_debug + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` + test -n "$func_cygming_ms_implib_tmp" +} + +# func_cygming_dll_for_implib_fallback ARG +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# +# This fallback implementation is for use when $DLLTOOL +# does not support the --identify-strict option. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib_fallback () +{ + $opt_debug + if func_cygming_gnu_implib_p "$1" ; then + # binutils import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` + elif func_cygming_ms_implib_p "$1" ; then + # ms-generated import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` + else + # unknown + sharedlib_from_linklib_result="" + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + $opt_debug + f_ex_an_ar_dir="$1"; shift + f_ex_an_ar_oldlib="$1" + if test "$lock_old_archive_extraction" = yes; then + lockfile=$f_ex_an_ar_oldlib.lock + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + fi + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ + 'stat=$?; rm -f "$lockfile"; exit $stat' + if test "$lock_old_archive_extraction" = yes; then + $opt_dry_run || rm -f "$lockfile" + fi + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" + fi +} + + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + $opt_debug + my_gentop="$1"; shift + my_oldlibs=${1+"$@"} + my_oldobjs="" + my_xlib="" + my_xabs="" + my_xdir="" + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + func_basename "$my_xlib" + my_xlib="$func_basename_result" + my_xlib_u=$my_xlib + while :; do + case " $extracted_archives " in + *" $my_xlib_u "*) + func_arith $extracted_serial + 1 + extracted_serial=$func_arith_result + my_xlib_u=lt$extracted_serial-$my_xlib ;; + *) break ;; + esac + done + extracted_archives="$extracted_archives $my_xlib_u" + my_xdir="$my_gentop/$my_xlib_u" + + func_mkdir_p "$my_xdir" + + case $host in + *-darwin*) + func_verbose "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + $opt_dry_run || { + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + darwin_base_archive=`basename "$darwin_archive"` + darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` + if test -n "$darwin_arches"; then + darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches ; do + func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" + $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" + func_extract_an_archive "`pwd`" "${darwin_base_archive}" + cd "$darwin_curdir" + $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" + done # $darwin_arches + ## Okay now we've a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` + $LIPO -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + $RM -rf unfat-$$ + cd "$darwin_orig_dir" + else + cd $darwin_orig_dir + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + } # !$opt_dry_run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` + done + + func_extract_archives_result="$my_oldobjs" +} + + +# func_emit_wrapper [arg=no] +# +# Emit a libtool wrapper script on stdout. +# Don't directly open a file because we may want to +# incorporate the script contents within a cygwin/mingw +# wrapper executable. Must ONLY be called from within +# func_mode_link because it depends on a number of variables +# set therein. +# +# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +# variable will take. If 'yes', then the emitted script +# will assume that the directory in which it is stored is +# the $objdir directory. This is a cygwin/mingw-specific +# behavior. +func_emit_wrapper () +{ + func_emit_wrapper_arg1=${1-no} + + $ECHO "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='$sed_quote_subst' + +# Be Bourne compatible +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variables: + generated_by_libtool_version='$macro_version' + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$ECHO are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + file=\"\$0\"" + + qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` + $ECHO "\ + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + ECHO=\"$qECHO\" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string "--lt-" +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's $0 value, followed by "$@". +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=\$0 + shift + for lt_opt + do + case \"\$lt_opt\" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` + test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. + lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` + cat \"\$lt_dump_D/\$lt_dump_F\" + exit 0 + ;; + --lt-*) + \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n \"\$lt_option_debug\"; then + echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" + lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2* | *-cegcc*) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $ECHO "\ + \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from \$@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case \" \$* \" in + *\\ --lt-*) + for lt_wr_arg + do + case \$lt_wr_arg in + --lt-*) ;; + *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; + esac + shift + done ;; + esac + func_exec_program_core \${1+\"\$@\"} +} + + # Parse options + func_parse_lt_options \"\$0\" \${1+\"\$@\"} + + # Find the directory that this script lives in. + thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 + if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then + # special case for '.' + if test \"\$thisdir\" = \".\"; then + thisdir=\`pwd\` + fi + # remove .libs from thisdir + case \"\$thisdir\" in + *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; + $objdir ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + $ECHO "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $MKDIR \"\$progdir\" + else + $RM \"\$progdir/\$file\" + fi" + + $ECHO "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + $ECHO \"\$relink_command_output\" >&2 + $RM \"\$progdir/\$file\" + exit 1 + fi + fi + + $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $RM \"\$progdir/\$program\"; + $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $RM \"\$progdir/\$file\" + fi" + else + $ECHO "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $ECHO "\ + + if test -f \"\$progdir/\$program\"; then" + + # fixup the dll searchpath if we need to. + # + # Fix the DLL searchpath if we need to. Do this before prepending + # to shlibpath, because on Windows, both are PATH and uninstalled + # libraries must come first. + if test -n "$dllsearchpath"; then + $ECHO "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $ECHO "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` + + export $shlibpath_var +" + fi + + $ECHO "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. + func_exec_program \${1+\"\$@\"} + fi + else + # The program doesn't exist. + \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 + \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 + \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi +fi\ +" +} + + +# func_emit_cwrapperexe_src +# emit the source code for a wrapper executable on stdout +# Must ONLY be called from within func_mode_link because +# it depends on a number of variable set therein. +func_emit_cwrapperexe_src () +{ + cat < +#include +#ifdef _MSC_VER +# include +# include +# include +#else +# include +# include +# ifdef __CYGWIN__ +# include +# endif +#endif +#include +#include +#include +#include +#include +#include +#include +#include + +/* declarations of non-ANSI functions */ +#if defined(__MINGW32__) +# ifdef __STRICT_ANSI__ +int _putenv (const char *); +# endif +#elif defined(__CYGWIN__) +# ifdef __STRICT_ANSI__ +char *realpath (const char *, char *); +int putenv (char *); +int setenv (const char *, const char *, int); +# endif +/* #elif defined (other platforms) ... */ +#endif + +/* portability defines, excluding path handling macros */ +#if defined(_MSC_VER) +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +# define S_IXUSR _S_IEXEC +# ifndef _INTPTR_T_DEFINED +# define _INTPTR_T_DEFINED +# define intptr_t int +# endif +#elif defined(__MINGW32__) +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +#elif defined(__CYGWIN__) +# define HAVE_SETENV +# define FOPEN_WB "wb" +/* #elif defined (other platforms) ... */ +#endif + +#if defined(PATH_MAX) +# define LT_PATHMAX PATH_MAX +#elif defined(MAXPATHLEN) +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef S_IXOTH +# define S_IXOTH 0 +#endif +#ifndef S_IXGRP +# define S_IXGRP 0 +#endif + +/* path handling portability macros */ +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ + defined (__OS2__) +# define HAVE_DOS_BASED_FILE_SYSTEM +# define FOPEN_WB "wb" +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#ifndef FOPEN_WB +# define FOPEN_WB "w" +#endif +#ifndef _O_BINARY +# define _O_BINARY 0 +#endif + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free ((void *) stale); stale = 0; } \ +} while (0) + +#if defined(LT_DEBUGWRAPPER) +static int lt_debug = 1; +#else +static int lt_debug = 0; +#endif + +const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ + +void *xmalloc (size_t num); +char *xstrdup (const char *string); +const char *base_name (const char *name); +char *find_executable (const char *wrapper); +char *chase_symlinks (const char *pathspec); +int make_executable (const char *path); +int check_executable (const char *path); +char *strendzap (char *str, const char *pat); +void lt_debugprintf (const char *file, int line, const char *fmt, ...); +void lt_fatal (const char *file, int line, const char *message, ...); +static const char *nonnull (const char *s); +static const char *nonempty (const char *s); +void lt_setenv (const char *name, const char *value); +char *lt_extend_str (const char *orig_value, const char *add, int to_end); +void lt_update_exe_path (const char *name, const char *value); +void lt_update_lib_path (const char *name, const char *value); +char **prepare_spawn (char **argv); +void lt_dump_script (FILE *f); +EOF + + cat <= 0) + && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) + return 1; + else + return 0; +} + +int +make_executable (const char *path) +{ + int rval = 0; + struct stat st; + + lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", + nonempty (path)); + if ((!path) || (!*path)) + return 0; + + if (stat (path, &st) >= 0) + { + rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); + } + return rval; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise + Does not chase symlinks, even on platforms that support them. +*/ +char * +find_executable (const char *wrapper) +{ + int has_slash = 0; + const char *p; + const char *p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + int tmp_len; + char *concat_name; + + lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", + nonempty (wrapper)); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char *path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char *q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR (*q)) + break; + p_len = q - p; + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = + XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = + XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + return NULL; +} + +char * +chase_symlinks (const char *pathspec) +{ +#ifndef S_ISLNK + return xstrdup (pathspec); +#else + char buf[LT_PATHMAX]; + struct stat s; + char *tmp_pathspec = xstrdup (pathspec); + char *p; + int has_symlinks = 0; + while (strlen (tmp_pathspec) && !has_symlinks) + { + lt_debugprintf (__FILE__, __LINE__, + "checking path component for symlinks: %s\n", + tmp_pathspec); + if (lstat (tmp_pathspec, &s) == 0) + { + if (S_ISLNK (s.st_mode) != 0) + { + has_symlinks = 1; + break; + } + + /* search backwards for last DIR_SEPARATOR */ + p = tmp_pathspec + strlen (tmp_pathspec) - 1; + while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + p--; + if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + { + /* no more DIR_SEPARATORS left */ + break; + } + *p = '\0'; + } + else + { + lt_fatal (__FILE__, __LINE__, + "error accessing file \"%s\": %s", + tmp_pathspec, nonnull (strerror (errno))); + } + } + XFREE (tmp_pathspec); + + if (!has_symlinks) + { + return xstrdup (pathspec); + } + + tmp_pathspec = realpath (pathspec, buf); + if (tmp_pathspec == 0) + { + lt_fatal (__FILE__, __LINE__, + "could not follow symlinks for %s", pathspec); + } + return xstrdup (tmp_pathspec); +#endif +} + +char * +strendzap (char *str, const char *pat) +{ + size_t len, patlen; + + assert (str != NULL); + assert (pat != NULL); + + len = strlen (str); + patlen = strlen (pat); + + if (patlen <= len) + { + str += len - patlen; + if (strcmp (str, pat) == 0) + *str = '\0'; + } + return str; +} + +void +lt_debugprintf (const char *file, int line, const char *fmt, ...) +{ + va_list args; + if (lt_debug) + { + (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); + va_start (args, fmt); + (void) vfprintf (stderr, fmt, args); + va_end (args); + } +} + +static void +lt_error_core (int exit_status, const char *file, + int line, const char *mode, + const char *message, va_list ap) +{ + fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *file, int line, const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); + va_end (ap); +} + +static const char * +nonnull (const char *s) +{ + return s ? s : "(null)"; +} + +static const char * +nonempty (const char *s) +{ + return (s && !*s) ? "(empty)" : nonnull (s); +} + +void +lt_setenv (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_setenv) setting '%s' to '%s'\n", + nonnull (name), nonnull (value)); + { +#ifdef HAVE_SETENV + /* always make a copy, for consistency with !HAVE_SETENV */ + char *str = xstrdup (value); + setenv (name, str, 1); +#else + int len = strlen (name) + 1 + strlen (value) + 1; + char *str = XMALLOC (char, len); + sprintf (str, "%s=%s", name, value); + if (putenv (str) != EXIT_SUCCESS) + { + XFREE (str); + } +#endif + } +} + +char * +lt_extend_str (const char *orig_value, const char *add, int to_end) +{ + char *new_value; + if (orig_value && *orig_value) + { + int orig_value_len = strlen (orig_value); + int add_len = strlen (add); + new_value = XMALLOC (char, add_len + orig_value_len + 1); + if (to_end) + { + strcpy (new_value, orig_value); + strcpy (new_value + orig_value_len, add); + } + else + { + strcpy (new_value, add); + strcpy (new_value + add_len, orig_value); + } + } + else + { + new_value = xstrdup (add); + } + return new_value; +} + +void +lt_update_exe_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + /* some systems can't cope with a ':'-terminated path #' */ + int len = strlen (new_value); + while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) + { + new_value[len-1] = '\0'; + } + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +void +lt_update_lib_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +EOF + case $host_os in + mingw*) + cat <<"EOF" + +/* Prepares an argument vector before calling spawn(). + Note that spawn() does not by itself call the command interpreter + (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : + ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&v); + v.dwPlatformId == VER_PLATFORM_WIN32_NT; + }) ? "cmd.exe" : "command.com"). + Instead it simply concatenates the arguments, separated by ' ', and calls + CreateProcess(). We must quote the arguments since Win32 CreateProcess() + interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a + special way: + - Space and tab are interpreted as delimiters. They are not treated as + delimiters if they are surrounded by double quotes: "...". + - Unescaped double quotes are removed from the input. Their only effect is + that within double quotes, space and tab are treated like normal + characters. + - Backslashes not followed by double quotes are not special. + - But 2*n+1 backslashes followed by a double quote become + n backslashes followed by a double quote (n >= 0): + \" -> " + \\\" -> \" + \\\\\" -> \\" + */ +#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +char ** +prepare_spawn (char **argv) +{ + size_t argc; + char **new_argv; + size_t i; + + /* Count number of arguments. */ + for (argc = 0; argv[argc] != NULL; argc++) + ; + + /* Allocate new argument vector. */ + new_argv = XMALLOC (char *, argc + 1); + + /* Put quoted arguments into the new argument vector. */ + for (i = 0; i < argc; i++) + { + const char *string = argv[i]; + + if (string[0] == '\0') + new_argv[i] = xstrdup ("\"\""); + else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) + { + int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); + size_t length; + unsigned int backslashes; + const char *s; + char *quoted_string; + char *p; + + length = 0; + backslashes = 0; + if (quote_around) + length++; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + length += backslashes + 1; + length++; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + length += backslashes + 1; + + quoted_string = XMALLOC (char, length + 1); + + p = quoted_string; + backslashes = 0; + if (quote_around) + *p++ = '"'; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + { + unsigned int j; + for (j = backslashes + 1; j > 0; j--) + *p++ = '\\'; + } + *p++ = c; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + { + unsigned int j; + for (j = backslashes; j > 0; j--) + *p++ = '\\'; + *p++ = '"'; + } + *p = '\0'; + + new_argv[i] = quoted_string; + } + else + new_argv[i] = (char *) string; + } + new_argv[argc] = NULL; + + return new_argv; +} +EOF + ;; + esac + + cat <<"EOF" +void lt_dump_script (FILE* f) +{ +EOF + func_emit_wrapper yes | + $SED -n -e ' +s/^\(.\{79\}\)\(..*\)/\1\ +\2/ +h +s/\([\\"]\)/\\\1/g +s/$/\\n/ +s/\([^\n]*\).*/ fputs ("\1", f);/p +g +D' + cat <<"EOF" +} +EOF +} +# end: func_emit_cwrapperexe_src + +# func_win32_import_lib_p ARG +# True if ARG is an import lib, as indicated by $file_magic_cmd +func_win32_import_lib_p () +{ + $opt_debug + case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in + *import*) : ;; + *) false ;; + esac +} + +# func_mode_link arg... +func_mode_link () +{ + $opt_debug + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # which system we are compiling for in order to pass an extra + # flag for every libtool invocation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll which has undefined symbols, in which case not + # even a static library is built. For now, we need to specify + # -no-undefined on the libtool link line when we can be certain + # that all symbols are satisfied, otherwise we get a static library. + allow_undefined=yes + ;; + *) + allow_undefined=yes + ;; + esac + libtool_args=$nonopt + base_compile="$nonopt $@" + compile_command=$nonopt + finalize_command=$nonopt + + compile_rpath= + finalize_rpath= + compile_shlibpath= + finalize_shlibpath= + convenience= + old_convenience= + deplibs= + old_deplibs= + compiler_flags= + linker_flags= + dllsearchpath= + lib_search_path=`pwd` + inst_prefix_dir= + new_inherited_linker_flags= + + avoid_version=no + bindir= + dlfiles= + dlprefiles= + dlself=no + export_dynamic=no + export_symbols= + export_symbols_regex= + generated= + libobjs= + ltlibs= + module=no + no_install=no + objs= + non_pic_objects= + precious_files_regex= + prefer_static_libs=no + preload=no + prev= + prevarg= + release= + rpath= + xrpath= + perm_rpath= + temp_rpath= + thread_safe=no + vinfo= + vinfo_number=no + weak_libs= + single_module="${wl}-single_module" + func_infer_tag $base_compile + + # We need to know -static, to get the right output filenames. + for arg + do + case $arg in + -shared) + test "$build_libtool_libs" != yes && \ + func_fatal_configuration "can not build a shared library" + build_old_libs=no + break + ;; + -all-static | -static | -static-libtool-libs) + case $arg in + -all-static) + if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then + func_warning "complete static linking is impossible in this configuration" + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + esac + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg="$1" + shift + func_quote_for_eval "$arg" + qarg=$func_quote_for_eval_unquoted_result + func_append libtool_args " $func_quote_for_eval_result" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + func_append compile_command " @OUTPUT@" + func_append finalize_command " @OUTPUT@" + ;; + esac + + case $prev in + bindir) + bindir="$arg" + prev= + continue + ;; + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + func_append compile_command " @SYMFILE@" + func_append finalize_command " @SYMFILE@" + preload=yes + fi + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + func_append dlfiles " $arg" + else + func_append dlprefiles " $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols="$arg" + test -f "$arg" \ + || func_fatal_error "symbol file \`$arg' does not exist" + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + framework) + case $host in + *-*-darwin*) + case "$deplibs " in + *" $qarg.ltframework "*) ;; + *) func_append deplibs " $qarg.ltframework" # this is fixed later + ;; + esac + ;; + esac + prev= + continue + ;; + inst_prefix) + inst_prefix_dir="$arg" + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat "$save_arg"` + do +# func_append moreargs " $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test "$pic_object" = none && + test "$non_pic_object" = none; then + func_fatal_error "cannot find name of object for \`$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "\`$arg' is not a valid libtool object" + fi + fi + done + else + func_fatal_error "link input file \`$arg' does not exist" + fi + arg=$save_arg + prev= + continue + ;; + precious_regex) + precious_files_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) func_append rpath " $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) func_append xrpath " $arg" ;; + esac + fi + prev= + continue + ;; + shrext) + shrext_cmds="$arg" + prev= + continue + ;; + weak) + func_append weak_libs " $arg" + prev= + continue + ;; + xcclinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xcompiler) + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xlinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $wl$qarg" + prev= + func_append compile_command " $wl$qarg" + func_append finalize_command " $wl$qarg" + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg="$arg" + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + # See comment for -static flag below, for more details. + func_append compile_command " $link_static_flag" + func_append finalize_command " $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + func_fatal_error "\`-allow-undefined' must not be used because it is the default" + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -bindir) + prev=bindir + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + func_fatal_error "more than one -exported-symbols argument is not allowed" + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework) + prev=framework + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + func_append compile_command " $arg" + func_append finalize_command " $arg" + ;; + esac + continue + ;; + + -L*) + func_stripname "-L" '' "$arg" + if test -z "$func_stripname_result"; then + if test "$#" -gt 0; then + func_fatal_error "require no space between \`-L' and \`$1'" + else + func_fatal_error "need path for \`-L' option" + fi + fi + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + test -z "$absdir" && \ + func_fatal_error "cannot determine absolute directory name of \`$dir'" + dir="$absdir" + ;; + esac + case "$deplibs " in + *" -L$dir "* | *" $arg "*) + # Will only happen for absolute or sysroot arguments + ;; + *) + # Preserve sysroot, but never include relative directories + case $dir in + [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; + *) func_append deplibs " -L$dir" ;; + esac + func_append lib_search_path " $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + ::) dllsearchpath=$dir;; + *) func_append dllsearchpath ":$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + func_append deplibs " System.ltframework" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test "X$arg" = "X-lc" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test "X$arg" = "X-lc" && continue + ;; + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + func_append deplibs " $arg" + continue + ;; + + -module) + module=yes + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + # Darwin uses the -arch flag to determine output architecture. + -model|-arch|-isysroot|--sysroot) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case "$new_inherited_linker_flags " in + *" $arg "*) ;; + * ) func_append new_inherited_linker_flags " $arg" ;; + esac + continue + ;; + + -multi_module) + single_module="${wl}-multi_module" + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) + # The PATH hackery in wrapper scripts is required on Windows + # and Darwin in order for the loader to find any dlls it needs. + func_warning "\`-no-install' is ignored for $host" + func_warning "assuming \`-no-fast-install' instead" + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + func_stripname '-R' '' "$arg" + dir=$func_stripname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + =*) + func_stripname '=' '' "$dir" + dir=$lt_sysroot$func_stripname_result + ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + continue + ;; + + -shared) + # The effects of -shared are defined in a previous loop. + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -static | -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -weak) + prev=weak + continue + ;; + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + func_quote_for_eval "$flag" + func_append arg " $func_quote_for_eval_result" + func_append compiler_flags " $func_quote_for_eval_result" + done + IFS="$save_ifs" + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Wl,*) + func_stripname '-Wl,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + func_quote_for_eval "$flag" + func_append arg " $wl$func_quote_for_eval_result" + func_append compiler_flags " $wl$func_quote_for_eval_result" + func_append linker_flags " $func_quote_for_eval_result" + done + IFS="$save_ifs" + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # -msg_* for osf cc + -msg_*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + + # Flags to be passed through unchanged, with rationale: + # -64, -mips[0-9] enable 64-bit mode for the SGI compiler + # -r[0-9][0-9]* specify processor for the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler + # +DA*, +DD* enable 64-bit mode for the HP compiler + # -q* compiler args for the IBM compiler + # -m*, -t[45]*, -txscale* architecture-specific flags for GCC + # -F/path path to uninstalled frameworks, gcc on darwin + # -p, -pg, --coverage, -fprofile-* profiling flags for GCC + # @file GCC response files + # -tp=* Portland pgcc target processor selection + # --sysroot=* for sysroot support + # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ + -O*|-flto*|-fwhopr*|-fuse-linker-plugin) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + func_append compile_command " $arg" + func_append finalize_command " $arg" + func_append compiler_flags " $arg" + continue + ;; + + # Some other compiler flag. + -* | +*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + + *.$objext) + # A standard object. + func_append objs " $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test "$pic_object" = none && + test "$non_pic_object" = none; then + func_fatal_error "cannot find name of object for \`$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "\`$arg' is not a valid libtool object" + fi + fi + ;; + + *.$libext) + # An archive. + func_append deplibs " $arg" + func_append old_deplibs " $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + func_resolve_sysroot "$arg" + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + func_append dlfiles " $func_resolve_sysroot_result" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + func_append dlprefiles " $func_resolve_sysroot_result" + prev= + else + func_append deplibs " $func_resolve_sysroot_result" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + done # argument parsing loop + + test -n "$prev" && \ + func_fatal_help "the \`$prevarg' option requires an argument" + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + func_basename "$output" + outputname="$func_basename_result" + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + func_dirname "$output" "/" "" + output_objdir="$func_dirname_result$objdir" + func_to_tool_file "$output_objdir/" + tool_output_objdir=$func_to_tool_file_result + # Create the object directory. + func_mkdir_p "$output_objdir" + + # Determine the type of output + case $output in + "") + func_fatal_help "you must specify an output file" + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if $opt_preserve_dup_deps ; then + case "$libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append libs " $deplib" + done + + if test "$linkmode" = lib; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if $opt_duplicate_compiler_generated_deps; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; + esac + func_append pre_post_deps " $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + + case $linkmode in + lib) + passes="conv dlpreopen link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + + for pass in $passes; do + # The preopen pass in lib mode reverses $deplibs; put it back here + # so that -L comes before libs that need it for instance... + if test "$linkmode,$pass" = "lib,link"; then + ## FIXME: Find the place where the list is rebuilt in the wrong + ## order, and fix it there properly + tmp_deplibs= + for deplib in $deplibs; do + tmp_deplibs="$deplib $tmp_deplibs" + done + deplibs="$tmp_deplibs" + fi + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan"; then + libs="$deplibs" + deplibs= + fi + if test "$linkmode" = prog; then + case $pass in + dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; + link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; + esac + fi + if test "$linkmode,$pass" = "lib,dlpreopen"; then + # Collect and forward deplibs of preopened libtool libs + for lib in $dlprefiles; do + # Ignore non-libtool-libs + dependency_libs= + func_resolve_sysroot "$lib" + case $lib in + *.la) func_source "$func_resolve_sysroot_result" ;; + esac + + # Collect preopened libtool deplibs, except any this library + # has declared as weak libs + for deplib in $dependency_libs; do + func_basename "$deplib" + deplib_base=$func_basename_result + case " $weak_libs " in + *" $deplib_base "*) ;; + *) func_append deplibs " $deplib" ;; + esac + done + done + libs="$dlprefiles" + fi + if test "$pass" = dlopen; then + # Collect dlpreopened libraries + save_deplibs="$deplibs" + deplibs= + fi + + for deplib in $libs; do + lib= + found=no + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append compiler_flags " $deplib" + if test "$linkmode" = lib ; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -l*) + if test "$linkmode" != lib && test "$linkmode" != prog; then + func_warning "\`-l' is ignored for archives/objects" + continue + fi + func_stripname '-l' '' "$deplib" + name=$func_stripname_result + if test "$linkmode" = lib; then + searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" + else + searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" + fi + for searchdir in $searchdirs; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib="$searchdir/lib${name}${search_ext}" + if test -f "$lib"; then + if test "$search_ext" = ".la"; then + found=yes + else + found=no + fi + break 2 + fi + done + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + else # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $deplib "*) + if func_lalib_p "$lib"; then + library_names= + old_library= + func_source "$lib" + for l in $old_library $library_names; do + ll="$l" + done + if test "X$ll" = "X$old_library" ; then # only static version available + found=no + func_dirname "$lib" "" "." + ladir="$func_dirname_result" + lib=$ladir/$old_library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + fi + ;; # -l + *.ltframework) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + if test "$linkmode" = lib ; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test "$pass" = conv && continue + newdependency_libs="$deplib $newdependency_libs" + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + prog) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test "$pass" = scan; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + *) + func_warning "\`-L' is ignored for archives/objects" + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test "$pass" = link; then + func_stripname '-R' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) + func_resolve_sysroot "$deplib" + lib=$func_resolve_sysroot_result + ;; + *.$libext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + # Linking convenience modules into shared libraries is allowed, + # but linking other static libraries is non-portable. + case " $dlpreconveniencelibs " in + *" $deplib "*) ;; + *) + valid_a_lib=no + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=yes + fi + ;; + pass_all) + valid_a_lib=yes + ;; + esac + if test "$valid_a_lib" != yes; then + echo + $ECHO "*** Warning: Trying to link with static lib archive $deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because the file extensions .$libext of this argument makes me believe" + echo "*** that it is just a static archive that I should not use here." + else + echo + $ECHO "*** Warning: Linking the shared library $output against the" + $ECHO "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + ;; + esac + continue + ;; + prog) + if test "$pass" != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + elif test "$linkmode" = prog; then + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + func_append newdlprefiles " $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append newdlfiles " $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + + if test "$found" = yes || test -f "$lib"; then : + else + func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" + fi + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$lib" \ + || func_fatal_error "\`$lib' is not a valid libtool archive" + + func_dirname "$lib" "" "." + ladir="$func_dirname_result" + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + inherited_linker_flags= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + func_source "$lib" + + # Convert "-framework foo" to "foo.ltframework" + if test -n "$inherited_linker_flags"; then + tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` + for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do + case " $new_inherited_linker_flags " in + *" $tmp_inherited_linker_flag "*) ;; + *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; + esac + done + fi + dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then + test -n "$dlopen" && func_append dlfiles " $dlopen" + test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" + fi + + if test "$pass" = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + func_fatal_error "cannot find name of link library for \`$lib'" + fi + # It is a libtool convenience library, so add in its objects. + func_append convenience " $ladir/$objdir/$old_library" + func_append old_convenience " $ladir/$objdir/$old_library" + elif test "$linkmode" != prog && test "$linkmode" != lib; then + func_fatal_error "\`$lib' is not a convenience library" + fi + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if $opt_preserve_dup_deps ; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + if test -n "$old_library" && + { test "$prefer_static_libs" = yes || + test "$prefer_static_libs,$installed" = "built,no"; }; then + linklib=$old_library + else + for l in $old_library $library_names; do + linklib="$l" + done + fi + if test -z "$linklib"; then + func_fatal_error "cannot find name of link library for \`$lib'" + fi + + # This library was specified with -dlopen. + if test "$pass" = dlopen; then + if test -z "$libdir"; then + func_fatal_error "cannot -dlopen a convenience library: \`$lib'" + fi + if test -z "$dlname" || + test "$dlopen_support" != yes || + test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + func_append dlprefiles " $lib $dependency_libs" + else + func_append newdlfiles " $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + func_warning "cannot determine absolute directory name of \`$ladir'" + func_warning "passing it literally to the linker, although it might fail" + abs_ladir="$ladir" + fi + ;; + esac + func_basename "$lib" + laname="$func_basename_result" + + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + func_warning "library \`$lib' was moved." + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$lt_sysroot$libdir" + absdir="$lt_sysroot$libdir" + fi + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir="$ladir" + absdir="$abs_ladir" + # Remove this search path later + func_append notinst_path " $abs_ladir" + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + func_append notinst_path " $abs_ladir" + fi + fi # $installed = yes + func_stripname 'lib' '.la' "$laname" + name=$func_stripname_result + + # This library was specified with -dlpreopen. + if test "$pass" = dlpreopen; then + if test -z "$libdir" && test "$linkmode" = prog; then + func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" + fi + case "$host" in + # special handling for platforms with PE-DLLs. + *cygwin* | *mingw* | *cegcc* ) + # Linker will automatically link against shared library if both + # static and shared are present. Therefore, ensure we extract + # symbols from the import library if a shared library is present + # (otherwise, the dlopen module name will be incorrect). We do + # this by putting the import library name into $newdlprefiles. + # We recover the dlopen module name by 'saving' the la file + # name in a special purpose variable, and (later) extracting the + # dlname from the la file. + if test -n "$dlname"; then + func_tr_sh "$dir/$linklib" + eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" + func_append newdlprefiles " $dir/$linklib" + else + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + fi + ;; + * ) + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + func_append newdlprefiles " $dir/$dlname" + else + func_append newdlprefiles " $dir/$linklib" + fi + ;; + esac + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test "$linkmode" = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test "$linkmode" = prog && test "$pass" != link; then + func_append newlib_search_path " $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + esac + # Need to link against all dependency_libs? + if test "$linkalldeplibs" = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if $opt_preserve_dup_deps ; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test "$linkmode,$pass" = "prog,link"; then + if test -n "$library_names" && + { { test "$prefer_static_libs" = no || + test "$prefer_static_libs,$installed" = "built,yes"; } || + test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath:" in + *"$absdir:"*) ;; + *) func_append temp_rpath "$absdir:" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test "$use_static_libs" = built && test "$installed" = yes; then + use_static_libs=no + fi + if test -n "$library_names" && + { test "$use_static_libs" = no || test -z "$old_library"; }; then + case $host in + *cygwin* | *mingw* | *cegcc*) + # No point in relinking DLLs because paths are not encoded + func_append notinst_deplibs " $lib" + need_relink=no + ;; + *) + if test "$installed" = no; then + func_append notinst_deplibs " $lib" + need_relink=yes + fi + ;; + esac + # This is a shared library + + # Warn about portability, can't link against -module's on some + # systems (darwin). Don't bleat about dlopened modules though! + dlopenmodule="" + for dlpremoduletest in $dlprefiles; do + if test "X$dlpremoduletest" = "X$lib"; then + dlopenmodule="$dlpremoduletest" + break + fi + done + if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then + echo + if test "$linkmode" = prog; then + $ECHO "*** Warning: Linking the executable $output against the loadable module" + else + $ECHO "*** Warning: Linking the shared library $output against the loadable module" + fi + $ECHO "*** $linklib is not portable!" + fi + if test "$linkmode" = lib && + test "$hardcode_into_libs" = yes; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + shift + realname="$1" + shift + libname=`eval "\\$ECHO \"$libname_spec\""` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw* | *cegcc*) + func_arith $current - $age + major=$func_arith_result + versuffix="-$major" + ;; + esac + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + func_basename "$soroot" + soname="$func_basename_result" + func_stripname 'lib' '.dll' "$soname" + newlib=libimp-$func_stripname_result.a + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + func_verbose "extracting exported symbol list from \`$soname'" + func_execute_cmds "$extract_expsyms_cmds" 'exit $?' + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + func_verbose "generating import library for \`$soname'" + func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test "$linkmode" = prog || test "$opt_mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + case $host in + *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; + *-*-sysv4*uw2*) add_dir="-L$dir" ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir="-L$dir" ;; + *-*-darwin* ) + # if the lib is a (non-dlopened) module then we can not + # link against it, someone is ignoring the earlier warnings + if /usr/bin/file -L $add 2> /dev/null | + $GREP ": [^:]* bundle" >/dev/null ; then + if test "X$dlopenmodule" != "X$lib"; then + $ECHO "*** Warning: lib $linklib is a module, not a shared library" + if test -z "$old_library" ; then + echo + echo "*** And there doesn't seem to be a static archive available" + echo "*** The link will probably fail, sorry" + else + add="$dir/$old_library" + fi + elif test -n "$old_library"; then + add="$dir/$old_library" + fi + fi + esac + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + relink) + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$absdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test "$lib_linked" != yes; then + func_fatal_configuration "unsupported hardcode properties" + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) func_append compile_shlibpath "$add_shlibpath:" ;; + esac + fi + if test "$linkmode" = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test "$hardcode_direct" != yes && + test "$hardcode_minus_L" != yes && + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + fi + fi + fi + + if test "$linkmode" = prog || test "$opt_mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + add="-l$name" + elif test "$hardcode_automatic" = yes; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib" ; then + add="$inst_prefix_dir$libdir/$linklib" + else + add="$libdir/$linklib" + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + fi + + if test "$linkmode" = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test "$linkmode" = prog; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + echo + $ECHO "*** Warning: This system can not link to static lib archive $lib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then + echo "*** But as you try to build a module library, libtool will still create " + echo "*** a static module, that should work as long as the dlopening application" + echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test "$linkmode" = lib; then + if test -n "$dependency_libs" && + { test "$hardcode_into_libs" != yes || + test "$build_old_libs" = yes || + test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) func_stripname '-R' '' "$libdir" + temp_xrpath=$func_stripname_result + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) func_append xrpath " $temp_xrpath";; + esac;; + *) func_append temp_deplibs " $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi + + func_append newlib_search_path " $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result";; + *) func_resolve_sysroot "$deplib" ;; + esac + if $opt_preserve_dup_deps ; then + case "$tmp_libs " in + *" $func_resolve_sysroot_result "*) + func_append specialdeplibs " $func_resolve_sysroot_result" ;; + esac + fi + func_append tmp_libs " $func_resolve_sysroot_result" + done + + if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + path= + case $deplib in + -L*) path="$deplib" ;; + *.la) + func_resolve_sysroot "$deplib" + deplib=$func_resolve_sysroot_result + func_dirname "$deplib" "" "." + dir=$func_dirname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + func_warning "cannot determine absolute directory name of \`$dir'" + absdir="$dir" + fi + ;; + esac + if $GREP "^installed=no" $deplib > /dev/null; then + case $host in + *-*-darwin*) + depdepl= + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names" ; then + for tmp in $deplibrary_names ; do + depdepl=$tmp + done + if test -f "$absdir/$objdir/$depdepl" ; then + depdepl="$absdir/$objdir/$depdepl" + darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + if test -z "$darwin_install_name"; then + darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + fi + func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" + func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" + path= + fi + fi + ;; + *) + path="-L$absdir/$objdir" + ;; + esac + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "\`$deplib' is not a valid libtool archive" + test "$absdir" != "$libdir" && \ + func_warning "\`$deplib' seems to be moved" + + path="-L$absdir" + fi + ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + if test "$pass" = link; then + if test "$linkmode" = "prog"; then + compile_deplibs="$new_inherited_linker_flags $compile_deplibs" + finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" + else + compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + fi + fi + dependency_libs="$newdependency_libs" + if test "$pass" = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test "$pass" != dlopen; then + if test "$pass" != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) func_append lib_search_path " $dir" ;; + esac + done + newlib_search_path= + fi + + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_deplibs" + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) func_append tmp_libs " $deplib" ;; + esac + ;; + *) func_append tmp_libs " $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs ; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i="" + ;; + esac + if test -n "$i" ; then + func_append tmp_libs " $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test "$linkmode" = prog; then + dlfiles="$newdlfiles" + fi + if test "$linkmode" = prog || test "$linkmode" = lib; then + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + func_warning "\`-dlopen' is ignored for archives" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "\`-l' and \`-L' are ignored for archives" ;; + esac + + test -n "$rpath" && \ + func_warning "\`-rpath' is ignored for archives" + + test -n "$xrpath" && \ + func_warning "\`-R' is ignored for archives" + + test -n "$vinfo" && \ + func_warning "\`-version-info/-version-number' is ignored for archives" + + test -n "$release" && \ + func_warning "\`-release' is ignored for archives" + + test -n "$export_symbols$export_symbols_regex" && \ + func_warning "\`-export-symbols' is ignored for archives" + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + func_append objs "$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form `libNAME.la'. + case $outputname in + lib*) + func_stripname 'lib' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + test "$module" = no && \ + func_fatal_help "libtool library \`$output' must begin with \`lib'" + + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + func_stripname '' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + func_stripname '' '.la' "$outputname" + libname=$func_stripname_result + fi + ;; + esac + + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" + else + echo + $ECHO "*** Warning: Linking the shared library $output against the non-libtool" + $ECHO "*** objects $objs is not portable!" + func_append libobjs " $objs" + fi + fi + + test "$dlself" != no && \ + func_warning "\`-dlopen self' is ignored for libtool libraries" + + set dummy $rpath + shift + test "$#" -gt 1 && \ + func_warning "ignoring multiple \`-rpath's for a libtool library" + + install_libdir="$1" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + # Some compilers have problems with a `.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + test -n "$vinfo" && \ + func_warning "\`-version-info/-version-number' is ignored for convenience libraries" + + test -n "$release" && \ + func_warning "\`-release' is ignored for convenience libraries" + else + + # Parse the version information argument. + save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + shift + IFS="$save_ifs" + + test -n "$7" && \ + func_fatal_help "too many parameters to \`-version-info'" + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major="$1" + number_minor="$2" + number_revision="$3" + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # which has an extra 1 added just for fun + # + case $version_type in + # correct linux to gnu/linux during the next big refactor + darwin|linux|osf|windows|none) + func_arith $number_major + $number_minor + current=$func_arith_result + age="$number_minor" + revision="$number_revision" + ;; + freebsd-aout|freebsd-elf|qnx|sunos) + current="$number_major" + revision="$number_minor" + age="0" + ;; + irix|nonstopux) + func_arith $number_major + $number_minor + current=$func_arith_result + age="$number_minor" + revision="$number_minor" + lt_irix_increment=no + ;; + esac + ;; + no) + current="$1" + revision="$2" + age="$3" + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "CURRENT \`$current' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "REVISION \`$revision' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "AGE \`$age' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + if test "$age" -gt "$current"; then + func_error "AGE \`$age' is greater than the current interface number \`$current'" + func_fatal_error "\`$vinfo' is not valid version information" + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + func_arith $current - $age + major=.$func_arith_result + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + func_arith $current + 1 + minor_current=$func_arith_result + xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current" + ;; + + irix | nonstopux) + if test "X$lt_irix_increment" = "Xno"; then + func_arith $current - $age + else + func_arith $current - $age + 1 + fi + major=$func_arith_result + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring="$verstring_prefix$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test "$loop" -ne 0; do + func_arith $revision - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" + ;; + + linux) # correct to gnu/linux during the next big refactor + func_arith $current - $age + major=.$func_arith_result + versuffix="$major.$age.$revision" + ;; + + osf) + func_arith $current - $age + major=.$func_arith_result + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test "$loop" -ne 0; do + func_arith $current - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + func_append verstring ":${current}.0" + ;; + + qnx) + major=".$current" + versuffix=".$current" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. + func_arith $current - $age + major=$func_arith_result + versuffix="-$major" + ;; + + *) + func_fatal_configuration "unknown library version type \`$version_type'" + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring="0.0" + ;; + esac + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + func_warning "undefined symbols not allowed in $host shared libraries" + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + + fi + + func_generate_dlsyms "$libname" "$libname" "yes" + func_append libobjs " $symfileobj" + test "X$libobjs" = "X " && libobjs= + + if test "$opt_mode" != relink; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$ECHO "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext | *.gcno) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) + if test "X$precious_files_regex" != "X"; then + if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + func_append removelist " $p" + ;; + *) ;; + esac + done + test -n "$removelist" && \ + func_show_eval "${RM}r \$removelist" + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + func_append oldlibs " $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + #for path in $notinst_path; do + # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` + # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` + # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` + #done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + func_replace_sysroot "$libdir" + func_append temp_xrpath " -R$func_replace_sysroot_result" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles="$dlfiles" + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) func_append dlfiles " $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles="$dlprefiles" + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) func_append dlprefiles " $lib" ;; + esac + done + + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + func_append deplibs " System.ltframework" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test "$build_libtool_need_lc" = "yes"; then + func_append deplibs " -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $opt_dry_run || $RM conftest.c + cat > conftest.c </dev/null` + $nocaseglob + else + potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` + fi + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null | + $GREP " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | + $SED -e 10q | + $EGREP "$file_magic_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $ECHO "*** with $libname but no candidates were found. (...for file magic test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a file magic. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + for a_deplib in $deplibs; do + case $a_deplib in + -l*) + func_stripname -l '' "$a_deplib" + name=$func_stripname_result + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + func_append newdeplibs " $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval "\\$ECHO \"$libname_spec\""` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib="$potent_lib" # see symlink-check above in file_magic test + if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ + $EGREP "$match_pattern_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a regex pattern. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + for i in $predeps $postdeps ; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` + done + fi + case $tmp_deplibs in + *[!\ \ ]*) + echo + if test "X$deplibs_check_method" = "Xnone"; then + echo "*** Warning: inter-library dependencies are not supported in this platform." + else + echo "*** Warning: inter-library dependencies are not known to be supported." + fi + echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + ;; + esac + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library with the System framework + newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + echo + echo "*** Warning: libtool could not satisfy all declared inter-library" + $ECHO "*** dependencies of module $libname. Therefore, libtool will create" + echo "*** a static module, that should work as long as the dlopening" + echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + echo "*** The inter-library dependencies that have been dropped here will be" + echo "*** automatically added whenever a program is linked with this library" + echo "*** or is declared to -dlopen it." + + if test "$allow_undefined" = no; then + echo + echo "*** Since this library must not contain undefined symbols," + echo "*** because either the platform does not support them or" + echo "*** it was explicitly requested with -no-undefined," + echo "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + case $host in + *-*-darwin*) + newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + deplibs="$new_libs" + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + # Remove ${wl} instances when linking with ld. + # FIXME: should test the right _cmds variable. + case $archive_cmds in + *\$LD\ *) wl= ;; + esac + if test "$hardcode_into_libs" = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$opt_mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + func_replace_sysroot "$libdir" + libdir=$func_replace_sysroot_result + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append dep_rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_append perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath="$finalize_shlibpath" + test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + shift + realname="$1" + shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib="$output_objdir/$realname" + linknames= + for link + do + func_append linknames " $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` + test "X$libobjs" = "X " && libobjs= + + delfiles= + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" + export_symbols="$output_objdir/$libname.uexp" + func_append delfiles " $export_symbols" + fi + + orig_export_symbols= + case $host_os in + cygwin* | mingw* | cegcc*) + if test -n "$export_symbols" && test -z "$export_symbols_regex"; then + # exporting using user supplied symfile + if test "x`$SED 1q $export_symbols`" != xEXPORTS; then + # and it's NOT already a .def file. Must figure out + # which of the given symbols are data symbols and tag + # them as such. So, trigger use of export_symbols_cmds. + # export_symbols gets reassigned inside the "prepare + # the list of exported symbols" if statement, so the + # include_expsyms logic still works. + orig_export_symbols="$export_symbols" + export_symbols= + always_export_symbols=yes + fi + fi + ;; + esac + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + func_verbose "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $opt_dry_run || $RM $export_symbols + cmds=$export_symbols_cmds + save_ifs="$IFS"; IFS='~' + for cmd1 in $cmds; do + IFS="$save_ifs" + # Take the normal branch if the nm_file_list_spec branch + # doesn't work or if tool conversion is not needed. + case $nm_file_list_spec~$to_tool_file_cmd in + *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) + try_normal_branch=yes + eval cmd=\"$cmd1\" + func_len " $cmd" + len=$func_len_result + ;; + *) + try_normal_branch=no + ;; + esac + if test "$try_normal_branch" = yes \ + && { test "$len" -lt "$max_cmd_len" \ + || test "$max_cmd_len" -le -1; } + then + func_show_eval "$cmd" 'exit $?' + skipped_export=false + elif test -n "$nm_file_list_spec"; then + func_basename "$output" + output_la=$func_basename_result + save_libobjs=$libobjs + save_output=$output + output=${output_objdir}/${output_la}.nm + func_to_tool_file "$output" + libobjs=$nm_file_list_spec$func_to_tool_file_result + func_append delfiles " $output" + func_verbose "creating $NM input file list: $output" + for obj in $save_libobjs; do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > "$output" + eval cmd=\"$cmd1\" + func_show_eval "$cmd" 'exit $?' + output=$save_output + libobjs=$save_libobjs + skipped_export=false + else + # The command line is too long to execute in one step. + func_verbose "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS="$save_ifs" + if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + func_append tmp_deplibs " $test_deplib" + ;; + esac + done + deplibs="$tmp_deplibs" + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec" && + test "$compiler_needs_object" = yes && + test -z "$libobjs"; then + # extract the archives, so we have objects to list. + # TODO: could optimize this to just extract one archive. + whole_archive_flag_spec= + fi + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + else + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + func_append linker_flags " $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test "$opt_mode" = relink; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test "X$skipped_export" != "X:" && + func_len " $test_cmds" && + len=$func_len_result && + test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise + # or, if using GNU ld and skipped_export is not :, use a linker + # script. + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + func_basename "$output" + output_la=$func_basename_result + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + last_robj= + k=1 + + if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then + output=${output_objdir}/${output_la}.lnkscript + func_verbose "creating GNU ld script: $output" + echo 'INPUT (' > $output + for obj in $save_libobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + echo ')' >> $output + func_append delfiles " $output" + func_to_tool_file "$output" + output=$func_to_tool_file_result + elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then + output=${output_objdir}/${output_la}.lnk + func_verbose "creating linker input file list: $output" + : > $output + set x $save_libobjs + shift + firstobj= + if test "$compiler_needs_object" = yes; then + firstobj="$1 " + shift + fi + for obj + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + func_append delfiles " $output" + func_to_tool_file "$output" + output=$firstobj\"$file_list_spec$func_to_tool_file_result\" + else + if test -n "$save_libobjs"; then + func_verbose "creating reloadable object files..." + output=$output_objdir/$output_la-${k}.$objext + eval test_cmds=\"$reload_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + if test "X$objlist" = X || + test "$len" -lt "$max_cmd_len"; then + func_append objlist " $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test "$k" -eq 1 ; then + # The first file doesn't have a previous command to add. + reload_objs=$objlist + eval concat_cmds=\"$reload_cmds\" + else + # All subsequent reloadable object files will link in + # the last one created. + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" + fi + last_robj=$output_objdir/$output_la-${k}.$objext + func_arith $k + 1 + k=$func_arith_result + output=$output_objdir/$output_la-${k}.$objext + objlist=" $obj" + func_len " $last_robj" + func_arith $len0 + $func_len_result + len=$func_arith_result + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\${concat_cmds}$reload_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" + fi + func_append delfiles " $output" + + else + output= + fi + + if ${skipped_export-false}; then + func_verbose "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $opt_dry_run || $RM $export_symbols + libobjs=$output + # Append the command to create the export file. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + fi + + test -n "$save_libobjs" && + func_verbose "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs="$IFS"; IFS='~' + for cmd in $concat_cmds; do + IFS="$save_ifs" + $opt_silent || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$opt_mode" = relink; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + if test -n "$export_symbols_regex" && ${skipped_export-false}; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + + if ${skipped_export-false}; then + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + fi + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + fi + + if test -n "$delfiles"; then + # Append the command to remove temporary files to $cmds. + eval cmds=\"\$cmds~\$RM $delfiles\" + fi + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $opt_silent || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$opt_mode" = relink; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$opt_mode" = relink; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + func_show_eval '${RM}r "$gentop"' + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + obj) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + func_warning "\`-dlopen' is ignored for objects" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "\`-l' and \`-L' are ignored for objects" ;; + esac + + test -n "$rpath" && \ + func_warning "\`-rpath' is ignored for objects" + + test -n "$xrpath" && \ + func_warning "\`-R' is ignored for objects" + + test -n "$vinfo" && \ + func_warning "\`-version-info' is ignored for objects" + + test -n "$release" && \ + func_warning "\`-release' is ignored for objects" + + case $output in + *.lo) + test -n "$objs$old_deplibs" && \ + func_fatal_error "cannot build library object \`$output' from non-libtool objects" + + libobj=$output + func_lo2o "$libobj" + obj=$func_lo2o_result + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $opt_dry_run || $RM $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec and hope we can get by with + # turning comma into space.. + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" + reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` + else + gentop="$output_objdir/${obj}x" + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # If we're not building shared, we need to use non_pic_objs + test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" + + # Create the old-style object. + reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" + func_execute_cmds "$reload_cmds" 'exit $?' + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + func_execute_cmds "$reload_cmds" 'exit $?' + fi + + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) func_stripname '' '.exe' "$output" + output=$func_stripname_result.exe;; + esac + test -n "$vinfo" && \ + func_warning "\`-version-info' is ignored for programs" + + test -n "$release" && \ + func_warning "\`-release' is ignored for programs" + + test "$preload" = yes \ + && test "$dlopen_support" = unknown \ + && test "$dlopen_self" = unknown \ + && test "$dlopen_self_static" = unknown && \ + func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + case $host in + *-*-darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + # But is supposedly fixed on 10.4 or later (yay!). + if test "$tagname" = CXX ; then + case ${MACOSX_DEPLOYMENT_TARGET-10.0} in + 10.[0123]) + func_append compile_command " ${wl}-bind_at_load" + func_append finalize_command " ${wl}-bind_at_load" + ;; + esac + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + compile_deplibs="$new_libs" + + + func_append compile_command " $compile_deplibs" + func_append finalize_command " $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_append perm_rpath " $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + ::) dllsearchpath=$libdir;; + *) func_append dllsearchpath ":$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) func_append finalize_perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + fi + + func_generate_dlsyms "$outputname" "@PROGRAM@" "no" + + # template prelinking step + if test -n "$prelink_cmds"; then + func_execute_cmds "$prelink_cmds" 'exit $?' + fi + + wrappers_required=yes + case $host in + *cegcc* | *mingw32ce*) + # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. + wrappers_required=no + ;; + *cygwin* | *mingw* ) + if test "$build_libtool_libs" != yes; then + wrappers_required=no + fi + ;; + *) + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + wrappers_required=no + fi + ;; + esac + if test "$wrappers_required" = no; then + # Replace the output file specification. + compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + exit_status=0 + func_show_eval "$link_command" 'exit_status=$?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Delete the generated files. + if test -f "$output_objdir/${outputname}S.${objext}"; then + func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' + fi + + exit $exit_status + fi + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + func_append rpath "$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$no_install" = yes; then + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $opt_dry_run || $RM $output + # Link the executable and exit + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + exit $EXIT_SUCCESS + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + func_warning "this platform does not like uninstalled shared libraries" + func_warning "\`$output' will be relinked during installation" + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname + + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output_objdir/$outputname" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Now create the wrapper script. + func_verbose "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + fi + + # Only actually do things if not in dry run mode. + $opt_dry_run || { + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) func_stripname '' '.exe' "$output" + output=$func_stripname_result ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + func_stripname '' '.exe' "$outputname" + outputname=$func_stripname_result ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + func_dirname_and_basename "$output" "" "." + output_name=$func_basename_result + output_path=$func_dirname_result + cwrappersource="$output_path/$objdir/lt-$output_name.c" + cwrapper="$output_path/$output_name.exe" + $RM $cwrappersource $cwrapper + trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + func_emit_cwrapperexe_src > $cwrappersource + + # The wrapper executable is built using the $host compiler, + # because it contains $host paths and files. If cross- + # compiling, it, like the target executable, must be + # executed on the $host or under an emulation environment. + $opt_dry_run || { + $LTCC $LTCFLAGS -o $cwrapper $cwrappersource + $STRIP $cwrapper + } + + # Now, create the wrapper script for func_source use: + func_ltwrapper_scriptname $cwrapper + $RM $func_ltwrapper_scriptname_result + trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 + $opt_dry_run || { + # note: this script will not be executed, so do not chmod. + if test "x$build" = "x$host" ; then + $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result + else + func_emit_wrapper no > $func_ltwrapper_scriptname_result + fi + } + ;; + * ) + $RM $output + trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 + + func_emit_wrapper no > $output + chmod +x $output + ;; + esac + } + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save $symfileobj" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$old_deplibs $non_pic_objects" + if test "$preload" = yes && test -f "$symfileobj"; then + func_append oldobjs " $symfileobj" + fi + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + + func_extract_archives $gentop $addlibs + func_append oldobjs " $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + cmds=$old_archive_from_new_cmds + else + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append oldobjs " $func_extract_archives_result" + fi + + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + func_basename "$obj" + $ECHO "$func_basename_result" + done | sort | sort -uc >/dev/null 2>&1); then + : + else + echo "copying selected object files to avoid basename conflicts..." + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + func_mkdir_p "$gentop" + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + func_basename "$obj" + objbase="$func_basename_result" + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + func_arith $counter + 1 + counter=$func_arith_result + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + func_append oldobjs " $gentop/$newobj" + ;; + *) func_append oldobjs " $obj" ;; + esac + done + fi + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + eval cmds=\"$old_archive_cmds\" + + func_len " $cmds" + len=$func_len_result + if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + elif test -n "$archiver_list_spec"; then + func_verbose "using command file archive linking..." + for obj in $oldobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > $output_objdir/$libname.libcmd + func_to_tool_file "$output_objdir/$libname.libcmd" + oldobjs=" $archiver_list_spec$func_to_tool_file_result" + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + func_verbose "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + oldobjs= + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + eval test_cmds=\"$old_archive_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + for obj in $save_oldobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + func_append objlist " $obj" + if test "$len" -lt "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj" ; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + objlist= + len=$len0 + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test "X$oldobjs" = "X" ; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + func_execute_cmds "$cmds" 'exit $?' + done + + test -n "$generated" && \ + func_show_eval "${RM}r$generated" + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + func_verbose "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + if test "$hardcode_automatic" = yes ; then + relink_command= + fi + + # Only create the output if not a dry run. + $opt_dry_run || { + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + func_basename "$deplib" + name="$func_basename_result" + func_resolve_sysroot "$deplib" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` + test -z "$libdir" && \ + func_fatal_error "\`$deplib' is not a valid libtool archive" + func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" + ;; + -L*) + func_stripname -L '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -L$func_replace_sysroot_result" + ;; + -R*) + func_stripname -R '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -R$func_replace_sysroot_result" + ;; + *) func_append newdependency_libs " $deplib" ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + + for lib in $dlfiles; do + case $lib in + *.la) + func_basename "$lib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "\`$lib' is not a valid libtool archive" + func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" + ;; + *) func_append newdlfiles " $lib" ;; + esac + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + *.la) + # Only pass preopened files to the pseudo-archive (for + # eventual linking with the app. that links it) if we + # didn't already link the preopened objects directly into + # the library: + func_basename "$lib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "\`$lib' is not a valid libtool archive" + func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" + ;; + esac + done + dlprefiles="$newdlprefiles" + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlfiles " $abs" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlprefiles " $abs" + done + dlprefiles="$newdlprefiles" + fi + $RM $output + # place dlname in correct position for cygwin + # In fact, it would be nice if we could use this code for all target + # systems that can't hard-code library paths into their executables + # and that have no shared library path variable independent of PATH, + # but it turns out we can't easily determine that from inspecting + # libtool variables, so we have to hard-code the OSs to which it + # applies here; at the moment, that means platforms that use the PE + # object format with DLL files. See the long comment at the top of + # tests/bindir.at for full details. + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) + # If a -bindir argument was supplied, place the dll there. + if test "x$bindir" != x ; + then + func_relative_path "$install_libdir" "$bindir" + tdlname=$func_relative_path_result$dlname + else + # Otherwise fall back on heuristic. + tdlname=../bin/$dlname + fi + ;; + esac + $ECHO > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='$new_inherited_linker_flags' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Names of additional weak libraries provided by this library +weak_library_names='$weak_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test "$installed" = no && test "$need_relink" = yes; then + $ECHO >> $output "\ +relink_command=\"$relink_command\"" + fi + done + } + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' + ;; + esac + exit $EXIT_SUCCESS +} + +{ test "$opt_mode" = link || test "$opt_mode" = relink; } && + func_mode_link ${1+"$@"} + + +# func_mode_uninstall arg... +func_mode_uninstall () +{ + $opt_debug + RM="$nonopt" + files= + rmforce= + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + for arg + do + case $arg in + -f) func_append RM " $arg"; rmforce=yes ;; + -*) func_append RM " $arg" ;; + *) func_append files " $arg" ;; + esac + done + + test -z "$RM" && \ + func_fatal_help "you must specify an RM program" + + rmdirs= + + for file in $files; do + func_dirname "$file" "" "." + dir="$func_dirname_result" + if test "X$dir" = X.; then + odir="$objdir" + else + odir="$dir/$objdir" + fi + func_basename "$file" + name="$func_basename_result" + test "$opt_mode" = uninstall && odir="$dir" + + # Remember odir for removal later, being careful to avoid duplicates + if test "$opt_mode" = clean; then + case " $rmdirs " in + *" $odir "*) ;; + *) func_append rmdirs " $odir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if { test -L "$file"; } >/dev/null 2>&1 || + { test -h "$file"; } >/dev/null 2>&1 || + test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif test "$rmforce" = yes; then + continue + fi + + rmfiles="$file" + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if func_lalib_p "$file"; then + func_source $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + func_append rmfiles " $odir/$n" + done + test -n "$old_library" && func_append rmfiles " $odir/$old_library" + + case "$opt_mode" in + clean) + case " $library_names " in + *" $dlname "*) ;; + *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; + esac + test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if func_lalib_p "$file"; then + + # Read the .lo file + func_source $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" && + test "$pic_object" != none; then + func_append rmfiles " $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" && + test "$non_pic_object" != none; then + func_append rmfiles " $dir/$non_pic_object" + fi + fi + ;; + + *) + if test "$opt_mode" = clean ; then + noexename=$name + case $file in + *.exe) + func_stripname '' '.exe' "$file" + file=$func_stripname_result + func_stripname '' '.exe' "$name" + noexename=$func_stripname_result + # $file with .exe has already been added to rmfiles, + # add $file without .exe + func_append rmfiles " $file" + ;; + esac + # Do a test to see if this is a libtool program. + if func_ltwrapper_p "$file"; then + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + relink_command= + func_source $func_ltwrapper_scriptname_result + func_append rmfiles " $func_ltwrapper_scriptname_result" + else + relink_command= + func_source $dir/$noexename + fi + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + func_append rmfiles " $odir/$name $odir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then + func_append rmfiles " $odir/lt-$name" + fi + if test "X$noexename" != "X$name" ; then + func_append rmfiles " $odir/lt-${noexename}.c" + fi + fi + fi + ;; + esac + func_show_eval "$RM $rmfiles" 'exit_status=1' + done + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + func_show_eval "rmdir $dir >/dev/null 2>&1" + fi + done + + exit $exit_status +} + +{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && + func_mode_uninstall ${1+"$@"} + +test -z "$opt_mode" && { + help="$generic_help" + func_fatal_help "you must specify a MODE" +} + +test -z "$exec_cmd" && \ + func_fatal_help "invalid operation mode \`$opt_mode'" + +if test -n "$exec_cmd"; then + eval exec "$exec_cmd" + exit $EXIT_FAILURE +fi + +exit $exit_status + + +# The TAGs below are defined such that we never get into a situation +# in which we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +build_libtool_libs=no +build_old_libs=yes +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: +# vi:sw=2 + diff --git a/coregrade/src/mailsend/Makefile b/coregrade/src/mailsend/Makefile new file mode 100644 index 0000000..2f468d3 --- /dev/null +++ b/coregrade/src/mailsend/Makefile @@ -0,0 +1,51 @@ +## +# Makefile automatically generated by genmake 1.0, May-03-00 +# genmake 1.0 by muquit@muquit.com, http://www.muquit.com/ +## +CC= gcc +DEFS= -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_STRING_H=1 -DHAVE_STRINGS_H=1 -DHAVE_MEMORY_H=1 -DHAVE_MALLOC_H=1 -DHAVE_UNISTD_H=1 -DHAVE_CTYPE_H=1 -DHAVE_STDINT_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_STDLIB_H=1 -DHAVE_FCNTL_H=1 -DHAVE_SYS_FILE_H=1 -DHAVE_FLOCK=1 -DHAVE_SOCKET=1 -DHAVE_HTONL=1 -DHAVE_GETHOSTNAME=1 -DHAVE_GETHOSTBYADDR=1 -DHAVE_YP_GET_DEFAULT_DOMAIN=1 -DHAVE_LIBNSL=1 -DHAVE_RES_SEARCH=1 -DHAVE_LIBRESOLV=1 -DHAVE_INET_ATON=1 -DHAVE_DN_SKIPNAME=1 -DHAVE_MKSTEMP=1 -DHAVE_OPENSSL=1 -DUNIX +PROGNAME= mailsend + +MUTILS_INCLUDE= -I./libs/libmutils +MSOCK_INCLUDE= -I./libs/libmsock +SLL_INCLUDE= -I./libs/libsll + +MUTILS_LIB= ./libs/libmutils/libmutils.a +MSOCK_LIB=./libs/libmsock/libmsock.a +SLL_LIB= ./libs/libsll/libsll.a + +OPENSSL_DIR=/usr/ +OPENSSL_INC=-I/usr/include +#OPENSSL_LIBS=-L/usr/lib -lssl -lcrypto -ldl + +INCLUDES= -I. -I/usr/include/malloc $(MUTILS_INCLUDE) $(MSOCK_INCLUDE) $(SLL_INCLUDE) $(OPENSSL_INC) + +DEFINES= $(INCLUDES) $(DEFS) -DHAVE_STRING_H=1 -DHAVE_STDLIB_H=1 \ + -DHAVE_MATH_H=1 + +CFLAGS= -g -O2 -Wall $(DEFINES) +LIBS=$(MSOCK_LIB) $(SLL_LIB) $(MUTILS_LIB) -L/usr/lib -lssl -lcrypto -ldl + +SRCS = main.c smtp.c utils.c setget.c +OBJS = main.o smtp.o utils.o setget.o + +.c.o: + rm -f $@ + $(CC) $(CFLAGS) -c $*.c + +all: mlibs $(PROGNAME) + +$(PROGNAME) : $(OBJS) + $(CC) $(CFLAGS) $(OBJS) -o $(PROGNAME) $(LIBS) + cp -f $(PROGNAME) ../modules/ + +mlibs: + (cd libs/libmsock && make) + (cd libs/libmutils && make) + (cd libs/libsll && make) + +clean: + (cd libs/libmsock && make clean) + (cd libs/libmutils && make clean) + (cd libs/libsll && make clean) + rm -f *.o *~ core $(PROGNAME) diff --git a/coregrade/src/mailsend/libs/libmsock/Makefile b/coregrade/src/mailsend/libs/libmsock/Makefile new file mode 100644 index 0000000..b8612a5 --- /dev/null +++ b/coregrade/src/mailsend/libs/libmsock/Makefile @@ -0,0 +1,43 @@ +## +# Makefile Generated by genmake 1.0, Nov-16-96 +# genmake 1.0 by ma_muquit@fccc.edu, RCS +## +CC= gcc +DEFS= -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_STRING_H=1 -DHAVE_STRINGS_H=1 -DHAVE_MEMORY_H=1 -DHAVE_MALLOC_H=1 -DHAVE_UNISTD_H=1 -DHAVE_CTYPE_H=1 -DHAVE_STDINT_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_STDLIB_H=1 -DHAVE_FCNTL_H=1 -DHAVE_SYS_FILE_H=1 -DHAVE_FLOCK=1 -DHAVE_SOCKET=1 -DHAVE_HTONL=1 -DHAVE_GETHOSTNAME=1 -DHAVE_GETHOSTBYADDR=1 -DHAVE_YP_GET_DEFAULT_DOMAIN=1 -DHAVE_LIBNSL=1 -DHAVE_RES_SEARCH=1 -DHAVE_LIBRESOLV=1 -DHAVE_INET_ATON=1 -DHAVE_DN_SKIPNAME=1 -DHAVE_MKSTEMP=1 -DHAVE_OPENSSL=1 +AR= ar cq +RANLIB= ranlib +LIBNAME= libmsock.a + +OPENSSL_DIR=/usr/ +OPENSSL_INC=-I/usr//include +OPENSSL_LIBS=-L/usr//lib -lssl -lcrypto + +INCLUDES= -I. -I/usr/include/malloc $(OPENSSL_INC) + +DEFINES= $(INCLUDES) $(DEFS) -DSYS_UNIX=1 +CFLAGS= -O $(DEFINES) + +SRCS = msock.c + +OBJS = msock.o + +.c.o: + rm -f $@ + $(CC) $(CFLAGS) -c $*.c + +all: $(LIBNAME) + +$(LIBNAME) : $(OBJS) + rm -f $@ + $(AR) $@ $(OBJS) + $(RANLIB) $@ + + +clean: + rm -f $(OBJS) $(LIBNAME) core + +clean_all: + make clean + (cd examples/htget; make clean) + (cd examples/echod; make clean) + (cd examples/server_type; make clean) diff --git a/coregrade/src/mailsend/libs/libmsock/msock.c b/coregrade/src/mailsend/libs/libmsock/msock.c new file mode 100644 index 0000000..84b0467 --- /dev/null +++ b/coregrade/src/mailsend/libs/libmsock/msock.c @@ -0,0 +1,337 @@ +/* a quick port of my libmsock routine to MS NT */ +/* muquit@Aug-20-2005 Mar 01 Eastern Standard Time 2001 */ + +#include "msock.h" + +#ifdef HAVE_OPENSSL +static SSL *s_ssl=NULL; +#endif /* HAVE_OPENSSL */ + +static SOCKET s_sock; +static int ssl_status=0; + +void msock_set_socket(SOCKET sfd) +{ + s_sock=sfd; +} + +SOCKET msock_get_socket(void) +{ + return(s_sock); +} + +void msock_turn_ssl_on(void) +{ + ssl_status=1; +} +void msock_turn_ssl_off(void) +{ + ssl_status=0; +} +int msock_is_ssl_on(void) +{ + return(ssl_status); +} + +#ifdef HAVE_OPENSSL +void msock_set_ssl(SSL *ssl) +{ + s_ssl=ssl; +} +SSL *msock_get_ssl(void) +{ + return(s_ssl); +} +#endif /* HAVE_OPENSSL */ + +struct in_addr *atoAddr(char *address) +{ + struct hostent + *host; + + static struct in_addr + saddr; + + saddr.s_addr=inet_addr(address); + if (saddr.s_addr != -1) + return (&saddr); + + host=gethostbyname(address); + if (host != (struct hostent *) NULL) + return ((struct in_addr *) *host->h_addr_list); + + return ((struct in_addr *) NULL); +} + +#ifdef WINNT +/* returns 0 on success -1 on failure */ +int initWinSock(void) +{ + WORD + version_requested; + + WSADATA + wsa_data; + + int + err; + + version_requested=MAKEWORD(2,0); + err=WSAStartup(version_requested,&wsa_data); + if (err != 0) + { + (void) fprintf(stderr," Unable to initialize winsock (%d)\n",err); + return(-1); + } + + return(0); +} +#endif /* WINNT */ + +/* returns SOCKET on success INVALID_SOCKET on failure */ +SOCKET clientSocket(char *address,int port) +{ + SOCKET + s; + + struct sockaddr_in + sa; + + struct in_addr + *addr; + + int + rc; + +#ifdef WINNT + rc=initWinSock(); + if (rc != 0) + return(INVALID_SOCKET); +#endif /* WINNT */ + + addr=atoAddr(address); + if (addr == NULL) + { + (void) fprintf(stderr," Invalid address: %s\n",address); + return(INVALID_SOCKET); + } + + memset((char *) &sa,0,sizeof(sa)); + sa.sin_family=AF_INET; + sa.sin_port=htons(port); + sa.sin_addr.s_addr=addr->s_addr; + + /* open the socket */ + s=socket(AF_INET,SOCK_STREAM,PF_UNSPEC); + if (s == INVALID_SOCKET) + { + (void) fprintf(stderr," Could not create socket\n"); + return(INVALID_SOCKET); + } + + /* connect */ + rc=connect(s,(struct sockaddr *) &sa,sizeof(sa)); + if (rc < 0) + return(INVALID_SOCKET); + + + return(s); +} + + + +/* +** this function writes a character string out to a socket. +** it returns -1 if the connection is closed while it is trying to +** write +*/ +static int sockWrite(SOCKET sock,char *str,size_t count) +{ + size_t + bytesSent=0; + + int + thisWrite; + + while (bytesSent < count) + { + thisWrite=send(sock,str,count-bytesSent,0); + /* + (void) fprintf(stderr,"str=%s\n",str); + (void) fprintf(stderr,"count=%d\n",count); + */ + + if (thisWrite <= 0) + return (thisWrite); + + bytesSent += thisWrite; + str += thisWrite; + } + return (count); +} + +#ifdef HAVE_OPENSSL +int sockWriteSSL(SSL *ssl,char *str,size_t count) +{ + size_t + bytesSent=0; + + int + thisWrite; + + while (bytesSent < count) + { + thisWrite=SSL_write(ssl,str,count-bytesSent); + if (thisWrite <= 0) + return (thisWrite); + + bytesSent += thisWrite; + str += thisWrite; + } + return (count); +} +int sockPutsSSL(SSL *ssl,char *str) +{ + return (sockWriteSSL(ssl,str,strlen(str))); +} +#endif /* HAVE_OPENSSL */ + +int sockPuts(SOCKET sock,char *str) +{ + return (sockWrite(sock,str,strlen(str))); +} + +int sockGets(SOCKET sockfd,char *str,size_t count) +{ + int + bytesRead; + + int + totalCount=0; + + char + buf[1], + *currentPosition; + + char + lastRead=0; + + currentPosition=str; + + while (lastRead != 10) + { + bytesRead=recv(sockfd,buf,1,0); + if (bytesRead <= 0) + { + /* + ** the other side may have closed unexpectedly + */ + return (-1); + } + lastRead=buf[0]; + + if ((totalCount < count) && (lastRead != 10) + && (lastRead != 13)) + { + *currentPosition=lastRead; + currentPosition++; + totalCount++; + } + } + if (count > 0) + *currentPosition=0; + + return (totalCount); +} +#ifdef HAVE_OPENSSL +int sockGetsSSL(SSL *ssl,char *str,size_t count) +{ + int + bytesRead; + + int + totalCount=0; + + char + buf[1], + *currentPosition; + + char + lastRead=0; + + currentPosition=str; + while (lastRead != 10) + { + bytesRead=SSL_read(ssl,buf,1); + if (bytesRead <= 0) + { + /* + ** the other side may have closed unexpectedly + */ + return (-1); + } + lastRead=buf[0]; + + if ((totalCount < count) && (lastRead != 10) + && (lastRead != 13)) + { + *currentPosition=lastRead; + currentPosition++; + totalCount++; + } + } + if (count > 0) + *currentPosition=0; + + return (totalCount); +} +#endif /* HAVE_OPENSSL */ + +/* must be called after msock_set_socket() */ +/* must be called after msock_set_ssl() if SSL is on */ +int msock_gets(char *str,size_t count) +{ + if (! msock_is_ssl_on()) + { + return(sockGets(msock_get_socket(),str,count)); + } + else + { +#ifdef HAVE_OPENSSL + return(sockGetsSSL(msock_get_ssl(),str,count)); +#endif /* HAVE_OPENSSL */ + } + return(-1); +} + +/* must be called after msock_set_socket() */ +/* must be called after msock_set_ssl() if SSL is on */ +int msock_puts(char *str) +{ + if (! msock_is_ssl_on()) + { + return(sockPuts(msock_get_socket(),str)); + } + else + { +#ifdef HAVE_OPENSSL + return(sockPutsSSL(msock_get_ssl(),str)); +#endif /* HAVE_OPENSSL */ + } + return(-1); +} +void msock_close_socket(SOCKET fd) +{ +#ifdef WINNT + closesocket(fd); +#else + close(fd); +#endif /* MSOCK_WIN32 */ + +} + +void msock_close(void) +{ + msock_close_socket(msock_get_socket()); +} + diff --git a/coregrade/src/mailsend/libs/libmsock/msock.h b/coregrade/src/mailsend/libs/libmsock/msock.h new file mode 100644 index 0000000..c68158d --- /dev/null +++ b/coregrade/src/mailsend/libs/libmsock/msock.h @@ -0,0 +1,79 @@ +#ifndef MSOCK_H +#define MSOCK_H + +#ifdef WINNT +#include +#include +#include +#include +#include +#include +#include + +#else + +#include +#include +#include +#include +#include /* ULTRIX didn't like stat with types*/ +#include +#include +#include +#include +#include +#include +#include +#include /* for inet_ntoa */ +#include /* for ctime */ +#include +#include +#include +#include +#include +#include +#include + + +#undef SOCKET +#define SOCKET int + +#undef INVALID_SOCKET +#define INVALID_SOCKET -1 +#define _fileno fileno +#define _isatty isatty + +#endif /* ! WINNT */ + +#ifdef HAVE_OPENSSL + +#include +#include +#include + +#endif /* HAVE_OPENSSL */ + +SOCKET clientSocket(char *,int); +int sockGets(SOCKET,char *,size_t); +int sockPuts(SOCKET sock,char *str); + +void msock_set_socket(SOCKET sock); +SOCKET msock_get_socket(void); +void msock_turn_ssl_on(void); +void msock_turn_ssl_off(void); +int msock_is_ssl_on(void); +int msock_gets(char *buf,size_t bufsiz); +int msock_puts(char *str); +void msock_close_socket(SOCKET fd); +void msock_close(void); + +#ifdef HAVE_OPENSSL + +int sockGetsSSL(SSL *ssl,char *buf,size_t count); +int sockPutsSSL(SSL *ssl,char *str); +SSL *msock_get_ssl(void); +void msock_set_ssl(SSL *ssl); + +#endif /* HAVE_OPENSSL */ + +#endif /* ! MSOCK_H */ diff --git a/coregrade/src/mailsend/libs/libmutils/Makefile b/coregrade/src/mailsend/libs/libmutils/Makefile new file mode 100644 index 0000000..6c5e203 --- /dev/null +++ b/coregrade/src/mailsend/libs/libmutils/Makefile @@ -0,0 +1,34 @@ +# +# ma_muquit@fccc.edu +# jul-29-199 +# + +CC= gcc +DEFS= -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_STRING_H=1 -DHAVE_STRINGS_H=1 -DHAVE_MEMORY_H=1 -DHAVE_MALLOC_H=1 -DHAVE_UNISTD_H=1 -DHAVE_CTYPE_H=1 -DHAVE_STDINT_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_STDLIB_H=1 -DHAVE_FCNTL_H=1 -DHAVE_SYS_FILE_H=1 -DHAVE_FLOCK=1 -DHAVE_SOCKET=1 -DHAVE_HTONL=1 -DHAVE_GETHOSTNAME=1 -DHAVE_GETHOSTBYADDR=1 -DHAVE_YP_GET_DEFAULT_DOMAIN=1 -DHAVE_LIBNSL=1 -DHAVE_RES_SEARCH=1 -DHAVE_LIBRESOLV=1 -DHAVE_INET_ATON=1 -DHAVE_DN_SKIPNAME=1 -DHAVE_MKSTEMP=1 -DHAVE_OPENSSL=1 +AR= ar cq +RANLIB= ranlib +LIBNAME= libmutils.a + +INCLUDES= -I. -I/usr/include/malloc + +# replace -O with -g in order to debug + +DEFINES= $(INCLUDES) $(DEFS) -DSYS_UNIX=1 +CFLAGS= -O $(DEFINES) + +SRCS = string.c mutils.c mime.c +OBJS = string.o mutils.o mime.o + +.c.o: + rm -f $@ + $(CC) $(CFLAGS) -c $*.c + +all: $(LIBNAME) + +$(LIBNAME): $(OBJS) + rm -f $@ + $(AR) $@ $(OBJS) + $(RANLIB) $@ + +clean: + rm -f $(OBJS) $(LIBNAME) core diff --git a/coregrade/src/mailsend/libs/libmutils/README b/coregrade/src/mailsend/libs/libmutils/README new file mode 100644 index 0000000..5b3f79f --- /dev/null +++ b/coregrade/src/mailsend/libs/libmutils/README @@ -0,0 +1,9 @@ +A utility library. All the functions starts with mtutils, for example: +mutilsSafeStrcpy(), mutilsMalloc() etc. The library can be compiled with +an ANSI or non-ANSI C compiler. + +/* ANSIfiled, muquit@muquit.com, Mar-27-2001 */ + +-- +Muhammad Muquit +Jul-29-199 diff --git a/coregrade/src/mailsend/libs/libmutils/md5test.c b/coregrade/src/mailsend/libs/libmutils/md5test.c new file mode 100644 index 0000000..e7d5ffe --- /dev/null +++ b/coregrade/src/mailsend/libs/libmutils/md5test.c @@ -0,0 +1,20 @@ +#include "mutils.h" +#include + +int main (int argc,char **argv) +{ + char + *s=NULL; + int + i; + + if (argc != 2) + { + (void) fprintf(stderr,"usage: %s \n",argv[0]); + exit(1); + } + s=strdup(argv[1]); + (void) fprintf(stderr,"MD5(%s) %s\n",s,getMD5Digest(s)); + + return(0); +} diff --git a/coregrade/src/mailsend/libs/libmutils/mime.c b/coregrade/src/mailsend/libs/libmutils/mime.c new file mode 100644 index 0000000..9e73f90 --- /dev/null +++ b/coregrade/src/mailsend/libs/libmutils/mime.c @@ -0,0 +1,120 @@ +#include "mutils.h" + +static char base64_chars[64] = +{ + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', + 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', + 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', + 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', + '8', '9', '+', '/' +}; + + + +/* +** generateBoundary() +** generate unuque string for boundary for MIME tag +** +** Parameters: +** char *boundary - NULL terminated boundary string - returns +** int len - size of boundary (malloc'd or static) +** +** Return Values: +** none +** +** Limitations and Comments: +** boundary must have len bytes in it to store the boundary. the +functio +n +** calls rand() for random number, so the caller should call srand() +** before calling this function. +** +** This function is adapted from mutt code. +** +** Development History: +** who when why +** muquit@muquit.com Mar-06-2002 needs MIME support +*/ +#define BOUNDARY_LEN 16 +void mutilsGenerateMIMEBoundary(char *boundary,int len) +{ + char + *p; + int + i; + memset(boundary,0,len); + p=boundary; + for (i=0; i < BOUNDARY_LEN; i++) + { + if (i >= (len-1)) + break; + *p++ = base64_chars[rand() % sizeof(base64_chars)]; + } + *p='\0'; +} + +static void output64Chunk(int c1,int c2,int c3,int pads, FILE *outfile) +{ + putc(base64_chars[c1>>2], outfile); + putc(base64_chars[((c1 & 0x3)<< 4) | ((c2 & 0xF0) >> 4)], outfile); + if (pads == 2) + { + putc('=', outfile); + putc('=', outfile); + } + else if (pads) + { + putc(base64_chars[((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6)], outfile); + putc('=', outfile); + } + else + { + putc(base64_chars[((c2 & 0xF) << 2) | ((c3 & 0xC0) >>6)], outfile); + putc(base64_chars[c3 & 0x3F], outfile); + } +} + +void mutilsBase64Encode(FILE *ifp,FILE *ofp) +{ + int + c1, + c2, + c3, + c4, + ct=0; + + while ((c1=getc(ifp)) != EOF) + { + c2=getc(ifp); + if (c2 == EOF) + { + output64Chunk(c1,0,0,2,ofp); + } + else + { + c3=getc(ifp); + if (c3 == EOF) + { + output64Chunk(c1,c2,0,1,ofp); + } + else + { + output64Chunk(c1,c2,c3,0,ofp); + } + } + ct += 4; + if (ct > 71) + { + putc('\r',ofp); /* qmail fix 15.07.05 (movi) */ + putc('\n',ofp); + ct=0; + } + } + if (ct) + { + putc('\r',ofp); /* qmail fix 15.07.05 (movi) */ + putc('\n',ofp); + } + + (void) fflush(ofp); +} diff --git a/coregrade/src/mailsend/libs/libmutils/mutils.c b/coregrade/src/mailsend/libs/libmutils/mutils.c new file mode 100644 index 0000000..ae06c13 --- /dev/null +++ b/coregrade/src/mailsend/libs/libmutils/mutils.c @@ -0,0 +1,1345 @@ +/* general utility routines */ + +#include + +/* file descriptor dot lock file */ +static int + lock_fd=(-1); + + +/* +** mutilsHowmanyCommas() +** calculates how many commas will be added to the buffer +** +** RCS +** $Revision: 1 $ +** $Date: 2/24/04 8:38p $ +** Return Values: +** no of commas +** +** Parameters: +** buf buf to scan +** +** Side Effects: +** none +** +** Limitations and Comments: +** buf must be a initialized string (at least) +** +** Development History: +** who when why +** ma_muquit@fccc.edu Oct-18-1997 first cut +*/ +int mutilsHowmanyCommas(char *buf) +{ + int + n=0, + length; + + if (*buf == '\0') + return(0); + + length=strlen(buf); + + if ((length % 3) == 0) + n=(length/3)-1; + else + n=length/3; + + if ( n < 0) + n=0; + + return(n); +} + +/* +** mutilsCommaize() +** add a comma after every 3rd digit from right +** +** RCS +** $Revision: 1 $ +** $Date: 2/24/04 8:38p $ +** Return Values: +** none +** +** Parameters: +** buf buf to modify +** +** Side Effects: +** buf is modified +** +** Limitations and Comments: +** buf must have enough space to hold the extra , characters +** +** Development History: +** who when why +** ma_muquit@fccc.edu no idea first cut +** Oct-18-97 added dynamic buffer +** May-26-1999 rewrote as the old version has +** memory overstepping bug. Code adapted from +** C-Snippets, file commaflt.c by Bruce Wedding and +** and Kurt Kuzba +*/ +void mutilsCommaize(char *buf) +{ + char + *pbuf=(char *) NULL; + + int + bf=0, + cm=0, + tm=0; + + if (*buf != '\0') + { + pbuf=mutilsStrdup(buf); + if (pbuf == (char *) NULL) + return; /* malloc failed, return quitely */ + + mutilsReverseString(pbuf); + while ((buf[bf++]=pbuf[tm++]) != 0) + { + if(++cm % 3 == 0 && pbuf[tm]) + buf[bf++]=','; + } + if (pbuf) + (void) free((char *) pbuf); + + mutilsReverseString(buf); + } +} + + +/* +** NULL terminate the buffer at the first sight of a non-digit character +*/ + +/* +** mutilsCleanBuf() +* NULL terminate the buffer at the first sight of a non-digit character +** +** Parameters: +** char *buf the buffer to clean +** char *bytes_in_buf the buffer size +** int *length returns, bytes in buffer after cleaning +** +** Return Values: +** +** +** Limitations and Comments: +** buf is modified +** +** Development History: +** who when why +** ma_muquit@fccc.edu Jul-31-1999 first cut +*/ +void mutilsCleanBuf(buf,bytes_in_buf,length) +char + *buf; +int + bytes_in_buf; +int + *length; +{ + int + i; + + + int + c=0; + for (i=0; i < bytes_in_buf; i++) + { + if (!isdigit(buf[i])) + { + buf[i]='\0'; + break; + } + c++; + } + + *length=c; +} + +/* +** mutilsParseURL() +** parse a URL of the form +** http://host:port/thepage.html +** http://host/thepage.html +** +** Parameters: +** char *url the url to parse +** char *hostname the hostname (returns) +** int hostname_len allocated space length in hostname +** int *port the port (returns) +** char *page the page (returns) +** int page_len the alloacated space length in page +** +** Return Values: +** 0 on success +** -1 on failure +** +** Limitations and Comments: +** - not much error checking. +** - hostname and page must have enough space preallocated by the caller. +** +** Development History: +** who when why +** ma_muquit@fccc.edu Jul-10-1999 first cut +** Jul-20-1999 handle buffer overflow +*/ +int mutilsParseURL(url,hostname,hostname_len,port,page,page_len) +char + *url; + +char + *hostname; + +int + hostname_len; + +int + *port; + +char + *page; + +int + page_len; + +{ + char + tmpbuf[32], + *q, + *r, + *p, + *ptmp; + + int + tmpbuf_len, + hlen=0, + tlen=0; + + if (url == NULL || *url == '\0') + return(-1); + + /* initialize */ + *port=80; + *hostname='\0'; + *page='\0'; + *tmpbuf='\0'; + + tmpbuf_len=sizeof(tmpbuf); + + ptmp=mutilsStrdup(url); + if (!ptmp) + return (-1); + if (strlen(ptmp) < 7) + { + (void) free(ptmp); + return (-1); + } + + /* skip http:// */ + if ( (ptmp[0] == 'h' || ptmp[0] == 'H') && + (ptmp[1] == 't' || ptmp[1] == 'T') && + (ptmp[2] == 't' || ptmp[2] == 'T') && + (ptmp[3] == 'p' || ptmp[3] == 'P') && + (ptmp[4] == ':') && + (ptmp[5] == '/') && + (ptmp[6] == '/')) + { + p = ptmp+7; + } + else + { + (void) free(ptmp); + return (-1); + } + + hlen=0; + tlen=0; + q=hostname; + r=tmpbuf; + for (; (*p != '/') && (*p != '\0'); p++) + { + /* get host part out */ + if (*p != ':' && !isdigit(*p)) + { + if (++hlen > hostname_len-1) + { + continue; + } + *q++ = *p; + } + + /* get port out if any */ + if (isdigit(*p)) + { + if (++tlen > tmpbuf_len-1) + continue; + *r++ = *p; + } + } + /* NULL terminate */ + *q='\0'; + *r='\0'; + + + if (*tmpbuf != '\0') + *port=atoi(tmpbuf); + + /* the rest is the page */ + if (*p == '\0') + return (-1); + + (void) mutilsStrncpy(page,p,page_len); + + (void) free(ptmp); + return (0); +} + + + +/* +** mutilsSpacesToChar() +** converts all spaces to a single character +** +** Parameters: +** char *str - spaces to collapse from +** int c - to this character +** +** Return Values: +** pointer to the string +** +** Limitations and Comments: +** str is modified. +** +** adapted from C snipptes lib: lv1ws +** +** Development History: +** who when why +** muquit@lucent.com Mar-27-2001 first cut +*/ +char *mutilsSpacesToChar(char *str,int c) +{ + char + *ibuf, + *obuf, + *nbuf; + + register int + i, + n; + + if (str) + { + ibuf=obuf=str; + i=n=0; + + while (*ibuf) + { + if (isspace(*ibuf) && n) + ibuf++; + else + { + if (!isspace(*ibuf)) + n=0; + else + { + *ibuf=c; + n=1; + } + obuf[i++] = *ibuf++; + } + } + obuf[i]='\0'; + + } + return (str); +} + +/* +** mutilsRmallws() +** remove all whitespace (leading or trailing) from a string. +** +** Parameters: +** char *str +** +** Return Values: +** pointer to the string +** +** Limitations and Comments: +** str is modified. borrowed from public domain c snippets libraray. +** +** Development History: +** who when why +** ma_muquit@fccc.edu Jul-31-1999 first cut +*/ +char *mutilsRmallws(char *str) +{ + char + *obuf, + *nbuf; + + if (str) + { + for (obuf=str, nbuf=str; *obuf; ++obuf) + { + if (!isspace(*obuf)) + *nbuf++ = *obuf; + } + *nbuf='\0'; + } + return (str); +} +/* +** mutilsStristr() +** case insensitive version of ANSI strstr() +** +** Parameters: +** char *s hay stack +** char *t needle +** +** Return Values: +** pointer to hay stack where the needle is found +** NULL if not found +** +** Limitations and Comments: +** from swish package by kevin h , kevin called it lstrstr() +** +** Development History: +** who when why +** ma_muquit@fccc.edu Jul-31-1999 first cut +*/ +char *mutilsStristr(s,t) +char + *s; +char + *t; +{ + +int + i, + j, + k, + l; + + for (i = 0; s[i]; i++) + { + for (j = 0, l = k = i; s[k] && t[j] && + tolower(s[k]) == tolower(t[j]); j++, k++) + ; + if (t[j] == '\0') + return s + l; + } + return NULL; +} + +/* +** mutilsIsinname() +** checks if the mask fits in the string +** +** RCS +** $Revision: 1 $ +** $Date: 2/24/04 8:38p $ +** Return Values: +** 1 if fits +** 0 if not +** -1 if there's a memory allocation problem +** +** Parameters: +** string source string +** mask mask string +** +** Example: +** www.fccc.edu *.fccc.edu fits +** www.fccc.edu www* fits +** www.fccc.edu *fccc* fits +** 132.138.4.6 132* fits +** etc..... +** +** Side Effects: +** none +** +** Limitations and Comments: +** borrowed from swish by Kevin H +** +** Development History: +** who when why +** ma_muquit@fccc.edu Oct-18-1997 first cut +*/ +int mutilsIsinname(string,mask) +char + *string; +char + *mask; +{ + int + i, + j; + + char + firstchar, + lastchar, + *tempmask; + + if ((*string == '\0') || (*mask == '\0')) + return (0); /* mm */ + + if (!strcmp(mask, "*")) + return 1; + + firstchar=mask[0]; + lastchar=mask[(strlen(mask) - 1)]; + tempmask=(char *) malloc(strlen(mask)*sizeof(char)+1); + if (tempmask == NULL) + { + (void) fprintf(stderr,"libmutils.a-mutilsIsinname(), malloc failed\n"); + return(-1); + } + + for (i = j = 0; mask[i]; i++) + if (mask[i] != '*') + tempmask[j++] = mask[i]; + + tempmask[j]='\0'; + if (firstchar == '*') + { + if (lastchar == '*') + { + if ((char *) mutilsStristr(string, tempmask)) + { + free(tempmask); + return 1; + } + } + else + { + if ((char *) mutilsStristr(string, tempmask) == + string + strlen(string) - strlen(tempmask)) + { + free(tempmask); + return 1; + } + } + } + else if (lastchar == '*') + { + if ((char *) mutilsStristr(string, tempmask) == string) + { + free(tempmask); + return 1; + } + } + else + { + /* + ** changed from strcmp(), patch sent my + ** Takeshi OKURA + ** Oct-30-1997 + */ + if (!mutilsStrcasecmp(string, tempmask)) + { + free(tempmask); + return 1; + } + } + free(tempmask); + + return 0; +} +/* +** mutilsGetTIme() +** get current time, ex: Wed Jun 30 21:49:08 1993 +** +** Parameters: +** none +** +** Return Values: +** pointer a string containing time +** +** Limitations and Comments: +** remove the trailing new line from ctime(). subsequent call will +** destroy the buffer. ctime() retuns pointer to a static buffer. +** +** Development History: +** who when why +** ma_muquit@fccc.edu Jul-31-1999 first cut +*/ +char *mutilsGetTime () +{ + time_t + tm; + + char + *times; + + tm=time (NULL); + times=ctime(&tm); + times[(int) strlen(times)-1] = '\0'; + return (times); +} + +/* chop new line from a string */ +/* string is modifiled */ +char mutilsChopNL(string) +char + *string; +{ + char + c; + char + *ptr; + + c='\0'; + + if (string == NULL || *string == '\0') + return(c); + + for (ptr = string; *ptr; ptr++); + + if (ptr != string) + { + c = *(--ptr); + + if (c == '\n') + { + *ptr='\0'; + } + } + + return (c); +} + +/* + * mutilsStripLeadingSpace () - strips leading space/s from a string + * + * Description: + * This function strips leading spaces from a string and + * null terminates it. + * + * Input Parameters: + * char *str + * + * Output Parameters: + * char *str + * + * Return Values: + * one + * + * Side Effects: + * str is modified + * + * Limitations and Comments: + * str must points to a pre-allocated static or dynamic space + * + * Development History: + * who when why + * MA_Muquit@fccc.edu 18-Jun-96 first cut + */ +void mutilsStripLeadingSpace(char *s) +{ + int i, + n=0; + + char + *ls; + + if (s == NULL || *s == '\0') + return; + + for (i=0; i < (int) strlen(s); i++) + { + if ((s[i] == ' ' ) || (s[i] == '\t')) + n++; + else + break; + } + + if (n) + { + ls= (char *) malloc(strlen(s)*sizeof(char)+1); + if (ls != (char *) NULL) + { + (void) strcpy (ls,s+n); + (void) strcpy (s,ls); + (void) free ((char *) ls); + } + } +} + +/* +** mutilsStripTrailingSpace() +** strips trailing spaces at the end of a string. +** +** Parameters: +** char *str the string +** +** Return Values: +** none +** +** Limitations and Comments: +** the string is modified +** +** +** Development History: +** who when why +** ma_muquit@fccc.edu Jul-04-1998 first cut +*/ +void mutilsStripTrailingSpace (char *str) +{ + register int + i; + + if (str == NULL || *str == '\0') + return; + for ((i=(int) strlen(str)-1); i >= 0; i--) + { + if ((str[i] == ' ') || (str[i] == '\t')) + { + str[i] = '\0'; + } + else + break; + } +} + +/* +** make a temporary filename +** filename - returns +*/ +int mutilsTmpFilename(char *filename) +{ +#define TMP_DIR "/tmp" +#define TMP_TEMPLATE "%s/editdb.XXXXXX" + char + *dir; + + dir=(char *) getenv("TMPDIR"); + if (dir == (char *) NULL) + dir=TMP_DIR; + + (void) sprintf(filename,TMP_TEMPLATE,dir); +#ifdef HAVE_MKSTEMP + return(mkstemp(filename)); +#else + return(mktemp(filename)); +#endif /* ! HAVE_MKSTEMP */ +} + + +/* + * basename() - return a file's basename + * + * RCS: + * $Revision: 1 $ + * $Date: 2/24/04 8:38p $ + * + * Security: + * Unclassified + * + * Description: + * Basename parses a char string containing a path name and + * returns a pointer to the file's base name. + * + * Input Parameters: + * char *path - the fully qualified path to parse + * + * Output Parameters: + * None. + * + * Return Values: + * (char *) - a pointer to the start of the base name within + * 'path' + * + * Side Effects: + * None. + * + * Limitations and Comments: + * Basename handles both DOS and UNIX path separators; it also + * handles the DOS device delimiter. + * + * I renamed it to mutilsBasename() as basename() will have collision + * now a days. -- mm, augh-11-1999 + * + * Note that this function can return NULL. + * + * Development History: + * 3/26/92, jps, first cut + */ +char *mutilsBasename(path) +char + *path; +{ + char + *cptr; + + for (cptr = path + strlen(path); cptr >= path; --cptr) + { + switch (*cptr) + { + case ':': + case '/': + case '\\': + return ++cptr; + } + } + return (path); +} + + +/* +** mutilsDotLock() +** open a file for locking purpose. If the system is Unix, use +** Kernel lock on the file. +** +** Parameters: +** char *lockfile_path - full path of the lock file +** char *errbuf - feels this errbuf in case of error +** +** Return Values: +** none +** +** Limitations and Comments: +** if you're on Unix, make sure the partition is not NFS mounted, if i +** is NFS mounted, the counter might hang. +** errbuf must have enough space to hold the message +** +** Development History: +** who when why +** ma_muquit@fccc.edu Aug-16-1999 first cut +*/ + +static char + s_lockfile[BUFSIZ]; + +void mutilsDotLock(char *filepath,char *errbuf) +{ + *errbuf='\0'; + *s_lockfile='\0'; + +#ifdef SYS_WIN32 + lock_fd=sopen(filepath,_O_RDWR|_O_CREAT,SH_DENYWR,_S_IREAD|_S_IWRITE); +#else + lock_fd=open(filepath,O_RDWR|O_CREAT,0644); +#endif + + if (lock_fd < 0) /* open failed */ + { + (void) sprintf(errbuf,"Could open counter database lock file for writing:\n%s",filepath); + return; + } + (void) strcpy(s_lockfile,filepath); + +#ifdef SYS_UNIX + mutilsSetLock(lock_fd); +#endif + +} + + +/* unlock the file */ +void mutilsDotUnlock(int delete) +{ + if (lock_fd >= 0) + { + /* closing also unlocks kernel locking */ + (void) close(lock_fd); + lock_fd=(-1); + if (delete == 1) + unlink(s_lockfile); + } +} + + +#ifdef SYS_UNIX +void mutilsSetLock (int fd) +{ +#ifdef HAVE_FLOCK + (void) flock(fd,LOCK_EX); +#else + lseek(fd,0L,0); + (void) lockf(fd,F_LOCK,0L); +#endif +} + +void mutilsUnsetLock (int fd) +{ +#ifdef HAVE_FLOCK + (void) flock(fd,LOCK_UN); +#else + lseek(fd,0L,0); + (void) lockf(fd,F_ULOCK,0L); +#endif +} +#endif /* SYS_UNIX */ + + +/* +** mutilsWhich() +** returns 0 if the program is found in path +** -1 otherwise +** +** modified from: /usr3/doc/which-1.0/which.c on RH 5.2 +*/ + +int mutilsWhich(char *name) +{ +#ifndef X_OK +#define X_OK 0x01 +#endif /* X_OK */ + + char + s, + *p, + *path, + szbuf[BUFSIZ]; + int + found=0, + len; + + /* check if the program exists and executable */ + if (access(name,X_OK) == 0) /* found it */ + return(0); + + /* go through the PATH */ + path=getenv("PATH"); + if (path == NULL) + return(-1); + + p=path; + found=0; + while (*p != '\0' && found == 0) + { + len=0; + while (*p != ':' && *p != '\0') + { + len++; + p++; + } + s=(char) *p; + *p='\0'; + (void) sprintf(szbuf,"%s/%s",p-len,name); + *p=s; + if (*p) + p++; + + if (access(szbuf,X_OK) == 0) + found=1; + } + if (found == 0) + found=(-1); + + if (found == 1) /* found */ + found=0; + + return(found); +} + +/* eat white space from a open FILE pointer */ +/* return -1 if fp is NULL */ +int mutilsEatWhitespace(FILE *fp) +{ + int + c; + + if (fp == NULL) + return(-1); + + for(c =getc(fp);isspace(c) && ('\n' != c); c=getc(fp)) + ; + return (c); + +} + +/* eat comments space from a open FILE pointer */ +/* this function is called after seeing the comment character, so the */ +/* function actually eats the line till sees a new line */ +/* return -1 if fp is NULL */ +int mutilsEatComment(FILE *fp) +{ + int + c; + + if (fp == NULL) + return(-1); + + for(c=getc(fp); ('\n' != c) && (EOF != c ) && (c > 0); c=getc(fp)) + ; + + return(c); +} + +/* +** mutilsGgetDirname() +** returns the base directory of file (Unix or Windows) +** if fails returns NULL +** Note: returns pointer to a malloc'd space, caller is responsible to +** free it. +*/ +char *mutilsGetDirname(file) +char + *file; +{ + char + *f, + *p; + + int + len; + + if (file == NULL || *file == '\0') + return (NULL); + + f=strdup(file); + if (f == NULL) + return(NULL); + + if ((p=strrchr(f,'/')) || (p=strrchr(f,'\\'))) + { + *p='\0'; + if (f) + return(f); + } + else + { + p=strdup("./"); + return(p); + } + return (NULL); +} + +/** + * @brief Free memory associated with tokens + * @param tokens The tokens to free + * @param ntokens Number of tokens in tokens + */ +void mutilsFreeTokens(char **tokens,int ntokens) +{ + int + i; + + /* free memory allocated for each token */ + for (i=0; i < ntokens; i++) + { + if (tokens[i]) + (void) free((char *) tokens[i]); + } + + /* free the tokens itself */ + if (tokens) + (void) free((char *) tokens); +} + +/** + * @brief Tokenizes a string separated by delimiter + * @param str The string to tokenize + * @param delip The delimeter e.g. ' ' + * @param ntoken Number of tokens in the string (returns) + * @return tokens on success, NULL on failure + * + * Example: + * int n=0; + * char **tokens=mutils_tokenize("this is"," ",&n); + * + * The caller should free the tokens by calling: + * mutils_free_tokens(tokens,ntokens) + * Note: A token can be of MUTILS_MAX_TOKEN_LEN long + */ +char **mutilsTokenize(char *str,int delim,int *ntokens) +{ + char + tbuf[MUTILS_MAX_TOKEN_LEN], + **tokens=NULL; + + int + j=0, + count=0, + allocated=0, + i=0; + + char + *p; + + *ntokens=0; + if (str == NULL || *str == '\0') + return(NULL); + + /* count how many token there first */ + for (p=str; *p; p++) + { + if (*p == delim) + { + count++; + } + } + count++; + /* allocate memory for tokens */ + tokens=(char **) malloc(count * sizeof(char *)); + MUTILS_CHECK_MALLOC(tokens); + + allocated=0; + for (i=0; i < count; i++) + { + /* + ** allocate memory for each token string, a token can + ** be of MUTILS_MAX_TOKEN_LEN characters long maximum + */ + tokens[i]=(char *) malloc(MUTILS_MAX_TOKEN_LEN*sizeof(char)); + MUTILS_CHECK_MALLOC(tokens[i]); + allocated++; + } + + j=0; + count=0; + for (p=str; *p; p++) + { + if (*p != delim && *p != '\0') + { + if (j >= MUTILS_MAX_TOKEN_LEN) + { + (void) fprintf(stderr,"Buffer overflow detected\n"); + /* buffer overfow */ + goto ExitProcessing; + } + tbuf[j++]=*p; + } + else + { + /* we're in a new token */ + tbuf[j++]='\0'; + strcpy(tokens[count],tbuf); + count++; + j=0; + } + } + if (j > 0 && j < MUTILS_MAX_TOKEN_LEN) + { + tbuf[j]='\0'; + mutilsStrncpy(tokens[count],tbuf,MUTILS_MAX_TOKEN_LEN-1); + } + + count++; + + *ntokens=count; + return(tokens); + +ExitProcessing: + mutilsFreeTokens(tokens,allocated); + + return(NULL); +} + +static void *_fs_get (size_t size) +{ + void *block =(void *) malloc (size ? size : (size_t) 1); + return (block); +} + +static void _fs_give (void **block) +{ + free (*block); + *block = NULL; +} + + +/** + * @brief encode content to base64 + * @param src pointer to source + * @param srcl Length of the source + * @param len length of base64 encoded string (returns) + * + * @return Ponter to encoded strin gon success, NULL on failure. The +* caller is responsile to free the memory + * + * Adapted from from c-client source + */ +unsigned char *mutils_encode_base64(void *src,unsigned long srcl,unsigned long *len) +{ + unsigned char + *ret, + *d; + + unsigned char *s = (unsigned char *) src; + char *v="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + unsigned long i = ((srcl + 2) / 3) * 4; + *len = i += 2 * ((i / 60) + 1); + d = ret = (unsigned char *) _fs_get ((size_t) ++i); + if (d == NULL) + { + (void) fprintf(stderr,"%s (%d) - memory allocation failed\n",MUTILS_CFL); + return(NULL); + } + /* process tuplets */ + for (i = 0; srcl >= 3; s += 3, srcl -= 3) + { + *d++ = v[s[0] >> 2]; /* byte 1: high 6 bits (1) */ + /* byte 2: low 2 bits (1), high 4 bits (2) */ + *d++ = v[((s[0] << 4) + (s[1] >> 4)) & 0x3f]; + /* byte 3: low 4 bits (2), high 2 bits (3) */ + *d++ = v[((s[1] << 2) + (s[2] >> 6)) & 0x3f]; + *d++ = v[s[2] & 0x3f]; /* byte 4: low 6 bits (3) */ + if ((++i) == 15) + { /* output 60 characters? */ + i = 0; /* restart line break count, insert CRLF */ + *d++ = '\015'; + *d++ = '\012'; + } + } + if (srcl) + { + *d++ = v[s[0] >> 2]; /* byte 1: high 6 bits (1) */ + /* byte 2: low 2 bits (1), high 4 bits (2) */ + *d++ = v[((s[0] << 4) + (--srcl ? (s[1] >> 4) : 0)) & 0x3f]; + /* byte 3: low 4 bits (2), high 2 bits (3) */ + *d++ = srcl ? v[((s[1] << 2) + (--srcl ? (s[2] >> 6) : 0)) & 0x3f] : '='; /* byte 4: low 6 bits (3) */ + *d++ = srcl ? v[s[2] & 0x3f] : '='; + if (srcl) + srcl--; /* count third character if processed */ + if ((++i) == 15) + { /* output 60 characters? */ + i = 0; /* restart line break count, insert CRLF */ + *d++ = '\015'; + *d++ = '\012'; + } + } + *d++ = '\015'; + *d++ = '\012'; /* insert final CRLF */ + *d = '\0'; /* tie off string */ + if (((unsigned long) (d - ret)) != *len) + { + (void) fprintf(stderr,"%s (%d) - logic flow in encode base64\n",MUTILS_CFL); + (void) free((char *) ret); + return(NULL); + } + return (ret); /* return the resulting string */ +} + + +/** + * @brief converts base64 contents to binary + * @param src The source + * @param srcl Length of the source + * @param len length of converted binary content (returns) + * + * @return Pointer to biary destination on success, NULL on failure. The + * caller is responsible to free ths memory. + * + * Adapted from c-client source + */ +void *mutils_decode_base64(unsigned char *src,unsigned long srcl,unsigned long *len) +{ + char c,*s,tmp[BUFSIZ]; + void *ret = _fs_get ((size_t) (*len = 4 + ((srcl * 3) / 4))); + char *d = (char *) ret; + int e; +#define JNK 0177 +#define PAD 0100 + static char decode[256] = { + JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK, + JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK, + JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,076,JNK,JNK,JNK,077, + 064,065,066,067,070,071,072,073,074,075,JNK,JNK,JNK,PAD,JNK,JNK, + JNK,000,001,002,003,004,005,006,007,010,011,012,013,014,015,016, + 017,020,021,022,023,024,025,026,027,030,031,JNK,JNK,JNK,JNK,JNK, + JNK,032,033,034,035,036,037,040,041,042,043,044,045,046,047,050, + 051,052,053,054,055,056,057,060,061,062,063,JNK,JNK,JNK,JNK,JNK, + JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK, + JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK, + JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK, + JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK, + JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK, + JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK, + JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK, + JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK,JNK + }; + + if (ret == NULL) + { + (void) fprintf(stderr,"%s (%d) - memory allocation failed\n",MUTILS_CFL); + return(NULL); + } + memset (ret,0,(size_t) *len); /* initialize block */ + *len = 0; /* in case we return an error */ + + /* simple-minded decode */ + for (e = 0; srcl--; ) + switch (c = decode[*src++]) + { + default: /* valid BASE64 data character */ + switch (e++) + { /* install based on quantum position */ + case 0: + *d = c << 2; /* byte 1: high 6 bits */ + break; + case 1: + *d++ |= c >> 4; /* byte 1: low 2 bits */ + *d = c << 4; /* byte 2: high 4 bits */ + break; + case 2: + *d++ |= c >> 2; /* byte 2: low 4 bits */ + *d = c << 6; /* byte 3: high 2 bits */ + break; + case 3: + *d++ |= c; /* byte 3: low 6 bits */ + e = 0; /* reinitialize mechanism */ + break; + } + break; + case JNK: /* junk character */ + break; + case PAD: /* padding */ + switch (e++) + { /* check quantum position */ + case 3: /* one = is good enough in quantum 3 */ + /* make sure no data characters in remainder */ + for (; srcl; --srcl) + switch (decode[*src++]) + { + case JNK: + case PAD: /* ignore junk and extraneous padding */ + break; + default: /* valid BASE64 data character */ + /* This indicates bad MIME. One way that it can + be caused is if a single-section message was + BASE64 encoded and then something (e.g. a + mailing list processor) appended text. The + problem is that in 1 out of 3 cases, there is + no padding and hence no way to detect the end + of the data. Consequently, prudent software + will always encapsulate a BASE64 segment inside + a MULTIPART.*/ + sprintf (tmp,"Possible data truncation in rfc822_base64(): %.80s", (char *) src - 1); + if (s = strpbrk (tmp,"\015\012")) + *s = 0; + /*mm_log (tmp,PARSE);*/ + srcl = 1; /* don't issue any more messages */ + break; + } + break; + case 2: /* expect a second = in quantum 2 */ + if (srcl && (*src == '=')) + break; + default: /* impossible quantum position */ + _fs_give (&ret); + return(NULL); + } + break; + } + *len = d - (char *) ret; /* calculate data length */ + return ret; /* return the string */ +} + + +#ifdef TEST + +int main (int argc,char **argv) +{ + int + rc; + + rc=mutilsWhich(argv[1]); + (void) fprintf(stderr,"rc=%d\n",rc); + return(0); +} +#endif /* TEST */ diff --git a/coregrade/src/mailsend/libs/libmutils/mutils.h b/coregrade/src/mailsend/libs/libmutils/mutils.h new file mode 100644 index 0000000..a8257e8 --- /dev/null +++ b/coregrade/src/mailsend/libs/libmutils/mutils.h @@ -0,0 +1,148 @@ +#ifndef MUTILS_H +#define MUTILS_H + +#include + +#if STDC_HEADERS || HAVE_STRING_H +#include /* ANSI string.h and pre-ANSI memory.h might conflict*/ +#if !STDC_HEADERS && HAVE_MEMORY_H +#include +#endif +#else +#if HAVE_STRINGS_H +#include +#endif +#endif + + +#if HAVE_CTYPE_H +#include +#endif + +#if HAVE_SYS_WAIT_H +#include +#endif + +#if SYS_UNIX +#include +#include +#endif + +#ifdef WINNT +#include +#include +#include +#include +#define ftruncate chsize +#endif + +#if HAVE_SYS_PARAM_H +#include +#endif + +#if HAVE_STDLIB_H +#include +#endif + +#if HAVE_UNISTD_H +#include +#endif + +#if HAVE_FCNTL_H +#ifndef O_RDONLY /* prevent multiple inclusion on lame systems (from +vile)*/ +#include +#endif +#endif + +#if HAVE_MALLOC_H +#include +#endif + + +#ifdef HAVE_SYS_FILE_H +#include +#endif + +#if TIME_WITH_SYS_TIME +#include +#include +#else +#if HAVE_SYS_TIME_H +#include +#else +#include +#endif +#endif + +#define MUTILS_CFL __FILE__,__LINE__ + + +#if __STDC__ || defined(sgi) || defined(_AIX) +#undef _Declare +#define _Declare(formal_parameters) formal_parameters +#else +#define _Declare(formal_parameters) () +#define const +#endif + +#define MUTILS_MAX_TOKEN_LEN 1024 + + +#define MUTILS_CHECK_MALLOC(p) \ +do \ +{ \ + if (p == NULL) \ + {\ + (void) fprintf(stderr,"%s (%d) - memory allocation problem\n",__FILE__,__LINE__); \ + goto ExitProcessing; \ + }\ +}while(0) + + + +/* function prototypes */ +void mutilsBase64Encode (FILE *ifp,FILE *ofp); +void mutilsGenerateMIMEBoundary(char *boundary,int len); +int mutilsParseURL (char *url,char *hostname, + int hostname_len, int *port, + char *page,int page_len); + +void mutilsStripLeadingSpace (char *s); +void mutilsStripTrailingSpace (char *s); +char *mutilsReverseString (char *str); +char *mutilsStrncat (char *dst,char *src,int n); +char *mutilsStrncpy (char *dsr,char *src,int n); +int mutilsStrncasecmp (char *s1,char *s2,int n); +char *mutilsStrdup (char *str); +int mutilsStrcasecmp (char *a,char *b); +void mutilsSafeStrcpy (char *dst,char *src,int n); +void mutilsSafeStrcat (char *dsr,char *src,int n,int ss,int sl); +char *mutilsStrtok (char *s,char *delim); +int mutilsHowmanyCommas (char *buf); +void mutilsCommaize (char *buf); +void mutilsCleanBuf (char *buf,int bufsize,int *length); +char *mutilsRmallws (char *str); +char *mutilsStristr (char *s,char *t); +int mutilsIsinname (char *string,char *mask); +char *mutilsGetTime (void); +char mutilsChopNL (char *str); +int mutilsTmpFilename (char *filename); +char *mutilsBasename (char *path); +int mutilsWhich (char *name); +void mutilsSetLock (int fd); +void mutilsDotLock (char *filepath,char *errbuf); +void mutilsDotUnlock (int delete); +char *mutilsStrUpper (char *str); +char *mutilsStrLower (char *str); +int mutilsEatComment (FILE *fp); +int mutilsEatWhitespace (FILE *fp); +char *mutilsGetDirname (char *file); +char *mutilsSpacesToChar (char *str,int c); +char **mutilsTokenize(char *str,int delim,int *ntokens); +void mutilsFreeTokens(char **tokens,int ntokens); +unsigned char *mutils_encode_base64(void *src,unsigned long srcl,unsigned long *len); +void *mutils_decode_base64(unsigned char *src,unsigned long srcl,unsigned long *len); + + +#endif /* MUTILS_H */ diff --git a/coregrade/src/mailsend/libs/libmutils/string.c b/coregrade/src/mailsend/libs/libmutils/string.c new file mode 100644 index 0000000..a45e4dc --- /dev/null +++ b/coregrade/src/mailsend/libs/libmutils/string.c @@ -0,0 +1,510 @@ +/* all interesting strngs related routines */ + +#include + + +/* +** reverseString() +** reverse a string +** +** Parameters: +** char *str string to modify +** +** Return Values: +** pointer to the modified string +** +** Limitations and Comments: +** str is modified +** borrowed from c-snippets STRREV.C, public domain by Bob Stout +** The name of the function was stttev() -- muquit, May-26-1999 +** +** Development History: +** who when why +** ma_muquit@fccc.edu may-26-1999 first cut +*/ + +char *mutilsReverseString(char *str) +{ + char + *p1, + *p2; + + if (! str || ! *str) + return str; + + for (p1=str,p2 =str+strlen(str)-1; p2 > p1; ++p1, --p2) + { + *p1 ^= *p2; + *p2 ^= *p1; + *p1 ^= *p2; + } + return (str); +} + + +/* +** mutilsStrncat() +** appends at most n characters of src string to dst string +** +** Parameters: +** dst destination string +** src source string +** n number of character to take from src +** +** +** Return Values: +** +** +** Limitations and Comments: +** taken from Henry Spencer's public domain string library +** +** Development History: +** who when why +** ma_muquit@fccc.edu Jul-31-1999 first cut +*/ +char *mutilsStrncat(char *dst,char *src,int n) +{ + register char + *dscan, + *sscan; + + register int + count; + + for (dscan=dst; *dscan != '\0'; dscan++) + continue; + + sscan=src; + count=n; + + while (*sscan != '\0' && --count >= 0) + *dscan++ = *sscan++; + + *dscan++ = '\0'; + + return (dst); +} +/* +** mutilsStrncpy() +** copy at most n characters of string src to dst +** +** Parameters: +** char *dst +** char *str +** int n +** +** Return Values: +** pinter to the destination string +** +** Limitations and Comments: +** adapted from henry's stringlib +** +** Development History: +** who when why +** ma_muquit@fccc.edu Jul-31-1999 first cut +*/ +char *mutilsStrncpy(char *dst,char *src,int n) +{ + register char + *dscan; + + register char + *sscan; + + register int + count; + + dscan=dst; + sscan=src; + count=n; + + while (--count >= 0 && (*dscan++ = *sscan++) != '\0') + continue; + + while (--count >= 0) + *dscan++ = '\0'; + return(dst); +} + +/* +** mutilsStrdup() +** duplicate a sting +** +** Parameters: +** char *string string to duplicate +** +** Return Values: +** pointer to the duplicated stirng. NULL if fails. +** +** Limitations and Comments: +** allocate memory, caller is responsible to free it. +** +** Development History: +** who when why +** ma_muquit@fccc.edu Jul-31-1999 first cut +*/ +char *mutilsStrdup(char *string) +{ + char + *tmp; + + if (string == NULL || *string == '\0') + return ((char *) NULL); + + tmp = (char *) malloc ((int) strlen(string)*sizeof(char)+1 ); + + if (tmp == (char *) NULL) + { + return ((char *) NULL); + } + /* it's safe to copy this way */ + (void) strcpy(tmp, string); + return (tmp); +} + + +/* +** mutilsStrcasecmp() +** case insensitive string comparison +** +** Parameters: +** char *a +** char *b +** +** Return Values: +** < 0 if a < b +** > 0 if a > b +** 0 if a = b +** +** Limitations and Comments: +** found somewhere on the net. I didn't write it +** +** Development History: +** who when why +** ma_muquit@fccc.edu Jul-31-1999 first cut +*/ +int mutilsStrcasecmp(char *a,char *b) +{ + register char + ac, + bc; + + for(;;) + { + ac = *a++; + bc = *b++; + + if(ac == 0) + { + if(bc == 0) + return 0; + else + return -1; + } + else + { + if(bc == 0) + return 1; + else + { + if(ac != bc) + { + if(islower(ac)) ac = toupper(ac); + if(islower(bc)) bc = toupper(bc); + if( ac != bc ) + return ac - bc; + } + } + } + } + +} + +/* +** mutilsStrncasecmp() +** case in-sensitive comparison wth first n bytes of fist string +** +** Parameters: +** char *s1 +* char *s2 +* int n +** +** Return Values: +** +** +** Limitations and Comments: +** < 0 if first n bytes of a < b +** > 0 if first n bytes of a a > b +** 0 if first n bytes of a a = b +** +** Development History: +** who when why +** ma_muquit@fccc.edu Jul-31-1999 first cut +*/ +int mutilsStrncasecmp(char *s1,char *s2,int n) +{ + register char + *scan1, + *scan2; + + int + count; + + scan1=s1; + scan2=s2; + count=n; + + while (--count >= 0 && *scan1 != '\0' && tolower(*scan1) == tolower(*scan2)) + { + scan1++; + scan2++; + } + if (count < 0) + return (0); + + + return(tolower(*scan1) - tolower(*scan2)); +} + +/* +** mutilsSafeStrcpy() +** copy a string to another safely without overflowing buffer +** +** RCS +** $Revision: 1 $ +** $Date: 2/24/04 8:38p $ +** Return Values: +** none +** +** Parameters: +** dst destination buffer +** src source buffer +** n max allowable n of the src +** +** Side Effects: +** if copying is safe, dst buffer is modified. +** +** Limitations and Comments: +** if the source string is longer than n, it's truncated to +** n. dst must be static or dynamically allocated buffer, that +** is it must be able to hold atleast lenth bytes buffer. The src +** is checked if it is NULL or not. if NULL the routine will exit +** after writing an error message image. +** +** +** Development History: +** who when why +** ma_muquit@fccc.edu Oct-17-1997 first cut +*/ +void mutilsSafeStrcpy(char *dst,char *src,int n) +{ + /* now copy */ + /* + (void) mutilsStrncpy(dst,src,n); + */ + (void) strncpy(dst,src,n); + dst[n]='\0'; +} + +/* + * mutilsSafeStrcat() + * safely appends one string to another without overflowing the source + * buffer. + * + * Parameters: + * dst appends with this string + * src string to append + * length first this many character of src to append + * ssc_size maximum size of destination string + * ssc_length length of string in destination buffer + * + * Return Values: + * none + * + * Limitations and Comments: + * dst must have enough space staically or dynamically allocated + * before calling. Need to provide a portable strncat() as matt + * suggested that some versions of strncat (e.g. solaris 2.5.1) write + * at most n+1 characters past the end of s1 and then replace the + * n+1st character with a '\0'; + * + * + * Development History: + * who when why + * ma_muquit@fccc.edu Oct-1997 first cut + * mhpower@mit.edu Nov-03-1997 fixed + */ +void mutilsSafeStrcat(char *dst,char *src,int length,int ssc_size, + int ssc_length) +{ + int copy_length; + + if ( NULL == src ) + { + /* + StringImage("Source buffer is NULL in safeStrcat()!"); + */ + (void) fprintf(stderr,"Source buffer is NULL in safeStrcat()!\n"); + exit(0); + } + + if (strlen(src) >= ssc_size - ssc_length) + { + /* + StringImage("buffer overflow detected! aborting"); + */ + (void) fprintf(stderr,"buffer overflow detected! aborting\n"); + exit(0); + } + + if (length < ssc_size - ssc_length) + { + copy_length = length; + } + else + { + copy_length = ssc_size - ssc_length; + } + + /* now copy */ + (void) mutilsStrncat(dst,src,copy_length); + +} + +/* + * Copyright (c) 1988, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +/* +** I'm renaming it to mystrtok() in order to avoid conflict with the +** system which might have it +** I also formatted to my coding style +** 10/08/95, muquit@semcor.com +*/ + +char *mutilsStrtok(char *s,char *delim) +{ + register char + *spanp; + + register int + c, + sc; + + char + *tok; + + static char + *last; + + + if (s == (char *) NULL && (s = last) == (char *) NULL) + return ((char *) NULL); + + /* + ** Skip (span) leading delimiters (s += strspn(s, delim), sort of). + */ +cont: + c = *s++; + for (spanp = (char *)delim; (sc = *spanp++) != 0;) + { + if (c == sc) + goto cont; + } + + if (c == 0) + { /* no non-delimiter characters */ + last = (char *) NULL; + return ((char *)NULL); + } + tok = s - 1; + + /* + * Scan token (scan for delimiters: s += strcspn(s, delim), sort of). + * Note that delim must have one NUL; we stop if we see that, too. + */ + for (;;) + { + c = *s++; + spanp = (char *)delim; + do + { + if ((sc = *spanp++) == c) + { + if (c == 0) + s = (char *) NULL; + else + s[-1] = '\0'; + last = s; + return (tok); + } + } while (sc != 0); + } + /* NOTREACHED */ +} + + +/* +** convert a string to upper case +** borrowed from C snippets library (strupr.c) +*/ +char *mutilsStrUpper(char *str) +{ + char + *s; + + if (str) + { + for (s=str; *s; ++s) + *s=toupper(*s); + } + + return (str); +} + +/* +** convert a string to lower case +** borrowed from C snippets library (strupr.c) +*/ +char *mutilsStrLower(char *str) +{ + char + *s; + + if (str) + { + for (s=str; *s; ++s) + *s=tolower(*s); + } + + return (s); +} diff --git a/coregrade/src/mailsend/libs/libmutils/test.c b/coregrade/src/mailsend/libs/libmutils/test.c new file mode 100644 index 0000000..bd505a8 --- /dev/null +++ b/coregrade/src/mailsend/libs/libmutils/test.c @@ -0,0 +1,17 @@ +#include "mutils.h" + +int main (int argc,char **argv) +{ + int + rc; + if (argc != 3) + { + (void) fprintf(stderr," usage: %s \n",argv[0]); + exit(1); + } + + rc=mutilsIsinname(argv[1],argv[2]); + if (rc) + (void) fprintf(stderr,"%s %s fits\n",argv[1],argv[2]); + return(0); +} diff --git a/coregrade/src/mailsend/libs/libmutils/testb64.c b/coregrade/src/mailsend/libs/libmutils/testb64.c new file mode 100644 index 0000000..258c982 --- /dev/null +++ b/coregrade/src/mailsend/libs/libmutils/testb64.c @@ -0,0 +1,40 @@ +#include "mutils.h" + +int main(int argc,char **argv) +{ + char + buf[BUFSIZ]; + + FILE + *ifp, + *ofp; + + if (argc != 2) + { + (void) fprintf(stderr,"usage: %s file\n",argv[0]); + return (1); + } + + (void) sprintf(buf,"%s.b64",argv[1]); + ifp=fopen(argv[1],"r"); + if (ifp == NULL) + { + (void) fprintf(stderr,"could not open for reading: %s\n",argv[1]); + return (1); + } + + ofp=fopen(buf,"w"); + if (ofp == NULL) + { + (void) fprintf(stderr,"could not open for writing: %s\n",buf); + return (1); + } + + mutilsBase64Encode(ifp,ofp); + + (void) fclose(ifp); + (void) fclose(ofp); + + + return (0); +} diff --git a/coregrade/src/mailsend/libs/libsll/Makefile b/coregrade/src/mailsend/libs/libsll/Makefile new file mode 100644 index 0000000..c799e27 --- /dev/null +++ b/coregrade/src/mailsend/libs/libsll/Makefile @@ -0,0 +1,43 @@ +# +# for Singly linked list package. +# muhammad a muquit +# Aug-07-1998 +# +CC= gcc +DEFS= -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_STRING_H=1 -DHAVE_STRINGS_H=1 -DHAVE_MEMORY_H=1 -DHAVE_MALLOC_H=1 -DHAVE_UNISTD_H=1 -DHAVE_CTYPE_H=1 -DHAVE_STDINT_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_STDLIB_H=1 -DHAVE_FCNTL_H=1 -DHAVE_SYS_FILE_H=1 -DHAVE_FLOCK=1 -DHAVE_SOCKET=1 -DHAVE_HTONL=1 -DHAVE_GETHOSTNAME=1 -DHAVE_GETHOSTBYADDR=1 -DHAVE_YP_GET_DEFAULT_DOMAIN=1 -DHAVE_LIBNSL=1 -DHAVE_RES_SEARCH=1 -DHAVE_LIBRESOLV=1 -DHAVE_INET_ATON=1 -DHAVE_DN_SKIPNAME=1 -DHAVE_MKSTEMP=1 -DHAVE_OPENSSL=1 +AR= ar cq +RANLIB= ranlib +LIBNAME= libsll.a + +INCLUDES= -I. -I/usr/include/malloc + +# replace -O with -g in order to debug + +DEFINES= $(INCLUDES) $(DEFS) -DSYS_UNIX=1 +CFLAGS= -O $(DEFINES) + +SRCS = sll.c +OBJS = sll.o + +.c.o: + rm -f $@ + $(CC) $(CFLAGS) -c $*.c + +all: $(LIBNAME) + +$(LIBNAME): $(OBJS) + rm -f $@ + $(AR) $@ $(OBJS) + $(RANLIB) $@ + +sll.o: sll.h + +clean: + rm -f $(OBJS) $(LIBNAME) core a.out + +realclean: + rm -f $(OBJS) $(LIBNAME) core a.out config.cache config.log config.status + (cd examples/append;make clean) + (cd examples/append_sorted;make clean) + (cd examples/delete;make clean) + (cd examples/insert;make clean) diff --git a/coregrade/src/mailsend/libs/libsll/sll.c b/coregrade/src/mailsend/libs/libsll/sll.c new file mode 100644 index 0000000..5e290d8 --- /dev/null +++ b/coregrade/src/mailsend/libs/libsll/sll.c @@ -0,0 +1,419 @@ +#include "sll.h" + +/* +** private protos +static void freeList(Sll **list); +*/ + +/* +** initList() +** initialize a list +** +** Parameters: +** Sll **list list to initialize +** +** Return Values: +** none +** +** Limitations and Comments: +** none +** +** +** Development History: +** who when why +** ma_muquit@fccc.edu Aug-07-1998 first cut +*/ +void initList(Sll **list) +{ + (*list)=NULL; +} + + +/* +** allocateNode() +** allocate a new node. +** +** Parameters: +** void *data a generic pointer to object data +** +** Return Values: +** pointer to Sll if succeeds +** NULL otherwise +** +** Limitations and Comments: +** the caller must pass valid pointer to data. +** +** Development History: +** who when why +** ma_muquit@fccc.edu Aug-07-1998 first cut +*/ + +Sll *allocateNode(void *data) +{ + char + *func="allocateNode() in sll.c"; + + Sll + *sll; + + sll=(Sll *) malloc(sizeof(Sll)); + if (sll == (Sll *) NULL) + { + (void) fprintf(stderr,"malloc failed at: %s\n",func); + return ((Sll *) NULL); + } + + sll->data=data; + sll->next=NULL; + + return (sll); +} + +/* +** appendNode() +** appends a node to the end of a list +** +** Parameters: +** Sll **head - modify the list +** Sll **new - appends this node +** +** Return Values: +** None +** +** Limitations and Comments: +** new node must be allocated and initialized before passing it here +** +** Development History: +** who when why +** ma_muquit@fccc.edu Aug-07-1998 first cut +*/ + +void appendNode(Sll **head,Sll **new) +{ + Sll + *tmp; + + if (emptyList(*head) == TRUE) + { + (*head)=(*new); + } + else + { + for (tmp=(*head); tmp->next != NULL; tmp=tmp->next) + ; + tmp->next=(*new); + } +} + +/* +** appendNodeSorted() +** appends a node to the end of a list sorting by a user defined function +** +** Parameters: +** Sll **head - append at the ends of this node +** Sll **new - appends this node +** +** Return Values: +** None +** +** Limitations and Comments: +** new node must be allocated and initialized before passing it here +** the function takes two arguments, void * each +** +** Development History: +** who when why +** ma_muquit@fccc.edu Aug-07-1998 first cut +*/ + +void appendNodeSorted(Sll **head,Sll **new,Ifunc compFunc) +{ + Sll + *tmp; + + if (emptyList(*head) == TRUE) + { + (*head)=(*new); + } + else + { + if ((*compFunc)((*head)->data,(*new)->data) > 0) + { + (*new)->next=(*head); + (*head)=(*new); + } + else + { + for(tmp=(*head); tmp->next; tmp=tmp->next) + { + if ((*compFunc)(tmp->next->data,(*new)->data) > 0) + break; + } + (*new)->next=tmp->next; + tmp->next=(*new); + } + } +} + +/* +** insertNode() +** insert a node at the beginning of a list +** +** Parameters: +** Sll **head - modify this list +** Sll **new - appends this node +** +** Return Values: +** None +** +** Limitations and Comments: +** new node must be allocated and initialized before passing it here +** +** Development History: +** who when why +** ma_muquit@fccc.edu Aug-07-1998 first cut +*/ + +void insertNode(Sll **head,Sll **new) +{ + + (*new)->next=(*head); + (*head)=(*new); +} + +/* +** emptyList() +** check if a list variable is NULL +** +** Parameters: +** Sll *list list +** +** Return Values: +** TRUE if empty +** FALSE if not empty +** +** Limitations and Comments: +** list must be allocated/initialized or initialized before calling +** +** Development History: +** who when why +** ma_muquit@fccc.edu Aug-07-1998 first cut +*/ + +Bool emptyList(Sll *list) +{ + return ((list == NULL) ? TRUE : FALSE); +} + +/* +** delNode() +** remove a node from a list +** +** Parameters: +** Sll **head - list to modify +** Sll *node - node to remove +** +** Return Values: +** none +** +** Limitations and Comments: +** list is modified +** +** Development History: +** who when why +** ma_muquit@fccc.edu Aug-07-1998 first cut +*/ +void delNode(Sll **head,Sll *node) +{ + if (emptyList(*head) == TRUE) + return; + + if ((*head) == node) + (*head)=(*head)->next; + else + { + Sll + *l; + for (l=(*head); l != NULL && l->next != node; l=l->next); + if (l == NULL) + return; + else + l->next=node->next; + } + freeNode(&node); +} + +/* +** freeNode() +** frees a node +** +** Parameters: +** Sll **list node to free +** +** Return Values: +** none +** +** Limitations and Comments: +** if list is not null, it wil be freed. so list better point to a valid +** location +** +** Development History: +** who when why +** ma_muquit@fccc.edu Aug-07-1998 first cut +*/ + +void freeNode(Sll **list) +{ + if (*list) + { + (void) free ((char *) (*list)); + (*list)=NULL; + } +} + + +/* +** getNthNode() +** get nth node in a list +** +** Parameters: +** Sll *list - the head list +** int n - return the node +** Return Values: +** a pointer to the list at position n +** NULL if there's no such node at posion n +** +** Limitations and Comments: +** position starts at 1 +** +** Development History: +** who when why +** ma_muquit@fccc.edu Aug-08-1998 frist cut +*/ + +Sll *getNthNode(Sll *list,int n) +{ + Sll + *lp=NULL; + int + j=0; + + for (lp=list; lp; lp=lp->next) + { + j++; + if (j == n) + { + return (lp); + } + } + + return ((Sll *) NULL); +} + +/* +** destroyNode() +** frees a node and the data associated with it +** +** Parameters: +** Sll **list - modify this list +** SLl *node - remove the node +** void (*freeFunc)() - pointer to function to free the data +** +** Return Values: +** none +** +** Limitations and Comments: +** none +** +** Development History: +** who when why +** ma_muquit@fccc.edu Aug-08-1998 first cut +*/ + +/* +void destroyNode(Sll **list,Sll *node,void (*freeFunc)(void **)) +*/ +void destroyNode(Sll **list,Sll *node,Vfunc freeFunc) +{ + if (emptyList(node) == FALSE) + { + /* + ** destroy the data + */ + if (freeFunc != NULL) + (*freeFunc) (&(node->data)); + + delNode(list,node); + } +} + +/* +** destroyNodes() +** destroy the entire linked list and the data +** +** Parameters: +** Sll **head - head node of the list +** freeFunc - function to free data +** +** Return Values: +** none +** +** Limitations and Comments: +** whole list and the data associated are freed +** +** +** Development History: +** who when why +** ma_muquit@fccc.edu Aug-08-1998 first cut +*/ + +/* +void destroyNodes(Sll **head,void (*freeFunc)(void **)) +*/ +void destroyNodes(Sll **head,Vfunc freeFunc) +{ + Sll + *lp; + while (*head) + { + lp=(*head); + if (freeFunc != NULL) + (*freeFunc) (&lp->data); + (*head)=(*head)->next; + (void) free((char *) lp); + } +} + +/* +** numNodes() +** returns number of nodes in the list +** +** Parameters: +** Sll **head - the head node of the list +** +** Return Values: +** number of node/s +** +** Limitations and Comments: +** traverse the whole list, so not efficient +** +** Development History: +** who when why +** ma_muquit@fccc.edu Aug-09-1998 first cut +*/ + +int numNodes(Sll **head) +{ + int + n=0; + + Sll + *lp; + + for (lp=(*head); lp; lp=lp->next) + { + n++; + } + + return (n); +} + diff --git a/coregrade/src/mailsend/libs/libsll/sll.h b/coregrade/src/mailsend/libs/libsll/sll.h new file mode 100644 index 0000000..27a1a88 --- /dev/null +++ b/coregrade/src/mailsend/libs/libsll/sll.h @@ -0,0 +1,100 @@ +#ifndef SLL_H +#define SLL_H + +#include + +#if STDC_HEADERS +#include +#include +#include +#endif + +#if HAVE_STRING_H +#include +#endif + +#if HAVE_MALLOC_H +#include +#endif + +#if TIME_WITH_SYS_TIME +#include +#include +#else +#if HAVE_SYS_TIME_H +#include +#else +#include +#endif +#endif + +#ifdef WINNT +#include +#include +#endif + +#include +#include +#include + + +#ifdef WINNT +#include +#include +#endif + + +#define SLL_SUCCESS 0 +#define SLL_ERROR -1 + +#ifndef TRUE +#define TRUE 1 +#endif + +#ifndef FALSE +#define FALSE 0 +#endif + +typedef int Bool; +typedef void (*Vfunc)(void **); +typedef int (*Ifunc)(void *,void *); + + +/* +** the linked list structure +*/ + +typedef struct _Sll +{ + void + *data; /* void pointer for user data */ + + struct _Sll + *next; /* pointer to next node */ +} Sll; + +/* +** function prototypes +*/ +Sll *allocateNode (void *data); +void appendNodeSorted (Sll **head,Sll **new,Ifunc compFunc); +void appendNode (Sll **list,Sll **new); +void delNode (Sll **list,Sll *node); +/* +void destroyNode (Sll **list,Sll *node, + void (*freeFunc)(void **)); +*/ +void destroyNode (Sll **list,Sll *node,Vfunc freeFunc); +/* +void destroyNodes (Sll **head, + void (*freeFunc)(void **)); +*/ +void destroyNodes (Sll **head,Vfunc freeFunc); +Bool emptyList (Sll *list); +void freeNode (Sll **list); +Sll *getNthNode (Sll *list,int n); +void initList (Sll **list); +void insertNode (Sll **list,Sll **new); +int numNodes (Sll **head); + +#endif /* SLL_H */ diff --git a/coregrade/src/mailsend/mailsend b/coregrade/src/mailsend/mailsend new file mode 100755 index 0000000000000000000000000000000000000000..f662b6127ea17c0c034c2910d130c05588a51e57 GIT binary patch literal 185752 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 Gn*R&UsdS3~ literal 0 HcmV?d00001 diff --git a/coregrade/src/mailsend/mailsend.h b/coregrade/src/mailsend/mailsend.h new file mode 100644 index 0000000..d386df8 --- /dev/null +++ b/coregrade/src/mailsend/mailsend.h @@ -0,0 +1,228 @@ +#ifndef MAILSEND_H +#define MAILSEND_H + +#include +#include +#include +#include + +#include + +#include "mutils.h" +#include "msock.h" +#include "sll.h" + +#ifdef UNIX +#include +#endif /* UNIX */ + +#ifdef HAVE_OPENSSL + +#include +#include +#include +#include +#include +#include +#include + +#endif /* HAVE_OPENSSL */ + +/* +** header for mailsend - a simple mail sender via SMTP +** $Id: mailsend.h,v 1.3 2002/06/22 21:17:29 muquit Exp $ +** +** Development History: +** who when why +** muquit@muquit.com Mar-23-2001 first cut +*/ + +#define BUFSIZ 32768 + +#define MFL __FILE__,__LINE__ + +#define MAILSEND_VERSION "@(#) mailsend v1.15b5" +#define MAILSEND_PROG "mailsend" +#define MAILSEND_AUTHOR "muquit@muquit.com" +#define MAILSEND_URL "http://www.muquit.com/" +#define NO_SPAM_STATEMENT "GNU GPL. It is illegal to use this software for Spamming" + +#define MAILSEND_SMTP_PORT 587 // 25 +#define MAILSEND_DEF_SUB "" + + +#define A_SPACE ' ' +#define A_DASH '-' + +#define EMPTY_OK 0x01 +#define EMPTY_NOT_OK 0x02 +#define ATTACHMENT_SEP ',' + +#define FILE_TYPE_DOS 0x00000001 +#define FILE_TYPE_UNIX 0x00000002 +#define FILE_TYPE_BINARY 0x00000004 + + +#ifdef EXTERN +#undef EXTERN +#endif /* EXTERN */ + +#ifndef __MAIN__ +#define EXTERN extern +#else +#define EXTERN +#endif /* __MAIN__ */ + +#ifdef WINNT +#define snprintf _snprintf +#endif /* WINNT */ + +#define CFL __FILE__,__LINE__ + +#define CHECK_MALLOC(x) \ +do \ +{ \ + if (x == NULL) \ + { \ + (void) fprintf(stderr,"%s (%d) - Memory allocation failed\n",CFL); \ + exit(0); \ + }\ +}while(0) + +#define CHECK_USERNAME(mech) \ +do \ +{ \ + if (*g_username == '\0') \ + { \ + (void) fprintf(stderr,"\nError: No user name specified for 'AUTH %s'\n",mech); \ + (void) fprintf(stderr," use the flag '-user username'\n\n");\ + rc=(-1);\ + goto cleanup; \ + }\ +}while(0) + +#define CHECK_USERPASS(mech) \ +do \ +{ \ + if (*g_userpass == '\0') \ + { \ + (void) fprintf(stderr,"\nError: No password specified for user %s for 'AUTH %s'\n",g_username,mech); \ + (void) fprintf(stderr," user '-pass password' or env var SMTP_USER_PASS\n\n");\ + rc=(-1);\ + goto cleanup; \ + }\ +}while(0) + +#define ERR_STR strerror(errno) + +EXTERN int g_verbose; +EXTERN int g_wait_for_cr; +EXTERN int g_do_starttls; +EXTERN int g_quiet; +EXTERN int g_do_auth; +EXTERN int g_esmtp; +EXTERN int g_auth_plain; +EXTERN int g_auth_cram_md5; +EXTERN int g_auth_login; +EXTERN char g_charset[33]; +EXTERN char g_username[64]; +EXTERN char g_userpass[64]; +EXTERN char g_from_name[64]; + +typedef struct _Address +{ + + /* + ** label holds strings like "To" "Cc" "Bcc". + ** The address is the email address. + */ + + char + *label, /* To: Cc: Bcc: */ + *address; /* the email address */ +}Address; + +typedef struct _Attachment +{ + char + *file_path, + *file_name; + char + *mime_type; + char + *content_disposition; +}Attachment; + +/* the mail sturct */ +typedef struct _TheMail +{ + SOCKET + fd; + + Address + *address; + + char + *from, + *subject, + *x_mailer, + *smtp_server, + *helo_domain, + *msg_file; +} TheMail; + + +/* struct for $HOME/.mailsendrc */ +typedef struct _Mailsendrc +{ + char + *domain, + *from, + *smtp_server; +}Mailsendrc; + +/* function prototypes */ +char *xStrdup(char *string); +int addAddressToList(char *a,char *label); +TheMail *initTheMail(void); +Address *newAddress(void); +Sll *getAddressList(void); +void printAddressList(void); +void print_server_caps(void); +char *check_server_cap(char *what); +int read_smtp_line(); +void show_smtp_info(char *smtp_server,int port,char *domain); +int send_the_mail(char *from,char *to,char *cc,char *bcc,char *sub, + char *smtp_server,int smtp_port,char *helo_domain, + char *attach_file,char *txt_msg_file,char *the_msg, + int is_mime,char *rrr,char *rt,int add_dateh); +TheMail *newTheMail(void); +void errorMsg(char *format,...); +void showVerbose(char *format,...); +void print_info(char *format,...); +int addAddressesFromFileToList(char *adress_list_file); +int validateMusts(char *from,char *to,char *smtp_server, + char *helo_domain); +char *askFor(char *buf,int buflen,char *label,int loop); +int isInConsole(int fd); +int add_attachment_to_list(char *file_path_mime); +int add_server_cap_to_list(char *capability); +Sll *get_attachment_list(); +Sll *get_server_caps_list(); +void print_attachemtn_list(); +char *fix_to(char *to); +int isInteractive(void); +int get_filepath_mimetype(char *str,char *filename,int fn_size, + char *mype_type,int mt_size); +int rfc822_date(time_t when,char *datebuf,int bufsiz); + +void openssl_init_init_SSLLibrary(void); +int do_tls(int sfd); +void initialize_openssl(char *cipher); +char *encode_cram_md5(char *challenge,char *user,char *pass); +int guess_file_type(char *path,unsigned int *flag); +#ifdef HAVE_OPENSSL +void print_cert_info(SSL *ssl); +#endif /* HAVE_OPENSSL */ + +#endif /* ! MAIL_SEND_H */ diff --git a/coregrade/src/mailsend/main.c b/coregrade/src/mailsend/main.c new file mode 100644 index 0000000..c0c97cb --- /dev/null +++ b/coregrade/src/mailsend/main.c @@ -0,0 +1,948 @@ +/* +** main for mailsend - a simple mail sender via SMTP protocol +** +** Limitations and Comments: +** I needed to send a alert mail from a bare-bone networked NT machine, +** but could not find a simple mail sender to do this (not surprised!). +** so I wrote this one! +** +** +** Development History: +** who when why +** muquit@muquit.com Mar-23-2001 first cut +*/ + +#define __MAIN__ 1 + +#include "mailsend.h" +//#include "../cgi.h" + +//extern C_Cfg *cfg; + +/* exits after writing the usage */ +static void usage(void) +{ + char + **p; + + static char + *options[]= + { +" -smtp hostname/IP* - of the SMTP server", +" -port SMTP port - SMTP port", +" -d domain - domain name for SMTP HELO/EHLO", +" -t to,to..* - email address/es of the reciepient/s", +" -cc cc,cc.. - Carbon copy address/es", +" +cc - don't ask for Carbon Copy", +" -bc bcc,bcc.. - Blind carbon copy address/es", +" +bc - don't ask for Blind carbon copy", +" +D - don't add Date header", +" -f address* - email address of the sender", +" -sub subject - subject", +" -l file - a file containing the email addresses", +" -attach file,mime_type,[i/a] (i=inline,a=attachment)", +" - attach this file as attachment or inline", +" -cs character set - for text/plain attachments (default is us-ascii)", +" -M \"one line msg\" - attach this one line text message", +" -name \"Full Name\" - add name in the From header", +" -v - verbose mode", +" -V - show version info", +" -w - wait for a CR after sending the mail", +" -rt email_address - add Reply-To header", +" -rrr email_address - request read receipts to this address", +" -starttls - Check for STARTTLS and if server supports, do it", +" -auth - Try CRAM-MD5,LOGIN,PLAIN in that order", +" -auth-cram-md5 - use AUTH CRAM-MD5 authentication", +" -auth-plain - use AUTH PLAIN authentication", +" -auth-login - use AUTH LOGIN authentication", +" -user username - username for ESMTP authentication", +" -pass password - password for ESMTP authentication", +" -example - show examples", +" -ehlo - force EHLO", +" -info - show SMTP server information", +" -help - shows this help", +" -q - quiet", + (char *) NULL + }; + (void) printf("\n"); + (void) printf("Version: %.1024s\n\n",MAILSEND_VERSION); + (void) printf("Copyright: %.1024s\n\n",NO_SPAM_STATEMENT); +#ifdef HAVE_OPENSSL + (void) fprintf(stdout,"(Compiled with %s)\n", + SSLeay_version(SSLEAY_VERSION)); +#else + (void) fprintf(stdout,"(Not compiled with OpenSSL)\n"); +#endif /* HAVE_OPENSSL */ + + (void) printf("usage: mailsend [options]\n"); + (void) printf("Where the options are:\n"); + + for (p=options; *p != NULL; p++) + (void) printf("%s\n",*p); + + (void) fprintf(stdout,"\nThe options with * must the specified\n"); + + exit(0); +} + +static void show_examples(void) +{ + (void) fprintf(stdout,"Example (Note: type without newline):\n"); +(void) fprintf(stderr, +"Show server info:\n" +" mailsend -info -smtp smtp.gmail.com\n\n"); + + (void) fprintf(stdout, +" mailsend -f muquit@example.com -d example.com -smtp 10.100.30.1\n" +" -t muquit@muquit.com -sub test -a \"file.txt,text/plain\"\n" +" -a \"/usr/file.gif,image/gif\" -a \"file.jpeg,image/jpg\"\n\n"); + +(void) fprintf(stdout, +" mailsend -f muquit@example.com -d example.com -smtp 192.168.0.2\n" +" -t muquit@muquit.com -sub test +cc +bc\n" +" -a \"c:\\file.gif,image/gif\" -M \"Sending a GIF file\"\n\n"); + +(void) fprintf(stdout, +" mailsend -f muquit@example.com -d example.com -smtp 192.168.0.2\n" +" -t muquit@muquit.com -sub test +cc +bc -cs \"ISO-8859-1\"\n" +" -a \"file2.txt,text/plain\"\n\n"); + + (void) fprintf(stdout,"Change content disposition to inline:\n"); + (void) fprintf(stdout, +" mailsend -f muquit@example.com -d example.com -smtp 10.100.30.1\n" +" -t muquit@muquit.com -sub test -a \"nf.jpg,image/jpeg,i\"\n" +" -M \"content disposition is inline\"\n\n"); + + (void) fprintf(stdout,"STARTTLS+AUTH PLAIN:\n"); +(void) fprintf(stdout, +" mailsend -f muquit@example.com -d example.com -smtp smtp.gmail.com\n" +" -sub test -from muquit@muquit.com +cc +bc -v -starttls -auth-plain\n" +" -user you -pass 'secert'\n\n"); + +(void) fprintf(stdout,"STARTTLS+AUTH CRAM-MD5:\n"); +(void) fprintf(stdout, +" mailsend -f muquit@example.com -d example.com -smtp 1.2.3.4\n" +" -sub test -from muquit@muquit.com +cc +bc -v -starttls -auth-cram-md5\n" +" -user you -pass 'secert'\n\n"); + +(void) fprintf(stdout,"STARTTLS+AUTH LOGIN:\n"); +(void) fprintf(stdout, +" mailsend -f muquit@example.com -d example.com -smtp 1.2.3.4\n" +" -sub test -from muquit@muquit.com +cc +bc -v -starttls -auth-login\n" +" -user you -pass 'secert'\n"); +(void) fprintf(stdout, +"(Password can be set by env var SMTP_USER_PASS instead of -pass)\n\n"); +(void) fprintf(stdout, +"Note: I suggest you always use STARTTLS if your server supports it\n"); + +} + +int main(int argc,char **argv) +{ + char + *x, + buf[BUFSIZ], + *cipher=NULL, + *option; + + int + smtp_info=0, + is_mime=0, + add_dateh=1, + port=(-1), + rc, + no_cc=0, + no_bcc=0, + i; + + char + *address_file=NULL, + *helo_domain=NULL, + *smtp_server=NULL, + *attach_file=NULL, + *msg_body_file=NULL, + *the_msg=NULL, + *to=NULL, + *save_to=NULL, + *save_cc=NULL, + *save_bcc=NULL, + *from=NULL, + *sub=NULL, + *cc=NULL, + *bcc=NULL, + *rt=NULL, + *rrr=NULL; + + g_verbose=0; + g_quiet=0; + g_wait_for_cr=0; + g_do_auth=0; + g_esmtp=0; + g_auth_plain=0; + g_auth_cram_md5=0; + g_auth_login=0; + g_do_starttls=0; + memset(g_username,0,sizeof(g_username)); + memset(g_userpass,0,sizeof(g_userpass)); + memset(g_from_name,0,sizeof(g_from_name)); + + (void) strcpy(g_charset,"us-ascii"); + + for (i=1; i < argc; i++) + { + option=argv[i]; + switch (*(option+1)) + { + + case 'a': + { + if (strncmp("attach",option+1,2) == 0) + { + if (*option == '-') + { + i++; + if (i == argc) + { + errorMsg("Missing file to attach"); + return (1); + } + attach_file=argv[i]; + add_attachment_to_list(attach_file); + } + } + else if (strncmp("auth-plain",option+1, + strlen("auth-plain"))==0) + { + if (*option == '-') + { + g_auth_plain=1; + } + } + else if (strncmp("auth-cram-md5",option+1, + strlen("auth-cram-md5"))==0) + { + if (*option == '-') + { + g_auth_cram_md5=1; + } + } + else if (strncmp("auth-login",option+1, + strlen("auth-login"))==0) + { + if (*option == '-') + { + g_auth_login=1; + } + } + else if (strncmp("auth",option+1, + strlen("auth"))==0) + { + if (*option == '-') + { + g_auth_login=1; + g_auth_cram_md5=1; + g_auth_login=1; + g_do_auth=1; + } + } + + else + { + errorMsg("Unknown flag: %s\n",option); + return(1); + } + break; + } + + case 'b': + { + if (strncmp("bcc",option+1,2) == 0) + { + if (*option == '-') + { + i++; + if (i == argc) + { + errorMsg("Missing BCc address/es"); + return (1); + } + bcc=argv[i]; + save_bcc=mutilsStrdup(bcc); + + /* collapse all spaces to a comma */ + mutilsSpacesToChar(bcc,','); + addAddressToList(bcc,"Bcc"); + } + else if (*option == '+') + { + no_bcc=1; + } + } + else + { + errorMsg("Unknown flag: %s\n",option); + return(1); + } + break; + } + + + case 'c': + { + if (strncmp("cc",option+1,2) == 0) + { + if (*option == '-') + { + i++; + if (i == argc) + { + errorMsg("Missing Cc address/es"); + return (1); + } + cc=argv[i]; + save_cc=mutilsStrdup(cc); + + /* collapse all spaces to a comma */ + mutilsSpacesToChar(cc,','); + addAddressToList(cc,"Cc"); + } + else if (*option == '+') + { + no_cc=1; + } + } + else if (strncmp("cs",option+1,2) == 0) + { + if (*option == '-') + { + i++; + if (i == argc) + { + errorMsg("Missing character set"); + return (1); + } + mutilsSafeStrcpy(g_charset,argv[i],sizeof(g_charset)-1); + } + + } + else + { + errorMsg("Unknown flag: %s\n",option); + return(1); + } + break; + } + + case 'D': + { + if (strncmp("D",option+1,1) == 0) + { + if (*option == '+') + { + add_dateh=0; + } + } + break; + } + + + case 'd': + { + if (strncmp("domain",option+1,1) == 0) + { + if (*option == '-') + { + i++; + if (i == argc) + { + errorMsg("Missing domain name"); + return (1); + } + helo_domain=argv[i]; + } + } + break; + } + + case 'e': + { + if (*option == '-') + { + if (strncmp("example",option+1,3) == 0) + { + show_examples(); + return(1); + } + if (strncmp("ehlo",option+1,4) == 0) + { + g_esmtp=1; + } + } + break; + } + + case 'f': + { + if (strncmp("from",option+1,1) == 0) + { + if (*option == '-') + { + i++; + if (i == argc) + { + errorMsg("Missing From address/es"); + return (1); + } + from=argv[i]; + } + } + break; + } + + case 'h': + { + if (strncmp("help",option+1,1) == 0) + { + usage(); + } + /* won't be here */ + break; + } + + case 'i': + { + if (strncmp("info",option+1,2) == 0) + { + smtp_info=1; + } + break; + } + + case 'l': + { + if (strncmp("list_address",option+1,1) == 0) + { + if (*option == '-') + { + i++; + if (i == argc) + { + errorMsg("Missing address list file"); + return (1); + } + address_file=argv[i]; + } + } + break; + } + + + case 'p': + { + if (strncmp("port",option+1,2) == 0) + { + if (*option == '-') + { + i++; + if (i == argc) + { + errorMsg("Missing SMTP Port with -port"); + return (1); + } + port=atoi(argv[i]); + } + } + else if (strncmp("pass",option+1,2) == 0) + { + if (*option == '-') + { + i++; + if (i == argc) + { + errorMsg("Missing password with -pass"); + return (1); + } + (void) snprintf(g_userpass,sizeof(g_userpass)-1, + "%s",argv[i]); + } + + } + else + { + errorMsg("Unknown flag: %s\n",option); + return(1); + } + break; + } + + /* -gone- + case 'm': + { + if (strncmp("msgbody",option+1,1) == 0) + { + if (*option == '-') + { + i++; + if (i == argc) + { + errorMsg("Missing message body file"); + return (1); + } + msg_body_file=argv[i]; + } + } + else + { + errorMsg("Unknown flag: %s\n",option); + return(1); + } + + break; + } + */ + + case 'M': + { + if (strncmp("Message",option+1,1) == 0) + { + if (*option == '-') + { + i++; + if (i == argc) + { + errorMsg("Missing text message"); + return (1); + } + the_msg=argv[i]; + } + } + else + { + errorMsg("Unknown flag: %s\n",option); + return(1); + } + + break; + } + + case 'n': + { + if (strncmp("name",option+1,3) == 0) + { + if (*option == '-') + { + i++; + if (i == argc) + { + errorMsg("Missing Name with -n"); + return (1); + } + (void) snprintf(g_from_name,sizeof(g_from_name)-1, + "%s",argv[i]); + } + } + else + { + errorMsg("Unknown flag: %s\n",option); + return(1); + } + + break; + } + + case 's': + { + if (strncmp("smtp",option+1,3) == 0) + { + if (*option == '-') + { + i++; + if (i == argc) + { + errorMsg("Missing smtp server"); + return (1); + } + smtp_server=argv[i]; + } + } + else if (strncmp("subject",option+1,3) == 0) + { + if (*option == '-') + { + i++; + if (i == argc) + { + errorMsg("Missing subject with -sub"); + return (1); + } + sub=argv[i]; + } + } + else if (strncmp("starttls",option+1,3) == 0) + { +#ifdef HAVE_OPENSSL + g_do_starttls=1; +#else + (void) fprintf(stderr,"Warning: '-starttls' not available, only avaible if compiled with OpenSSL\n"); + +#endif /* HAVE_OPENSSL */ + } + + else + { + errorMsg("Unknown flag: %s\n",option); + return(1); + } + + break; + } + + case 'u': + { + if (strncmp("user",option+1,2) == 0) + { + if (*option == '-') + { + i++; + if (i == argc) + { + errorMsg("Missing smtp server"); + return (1); + } + (void) snprintf(g_username,sizeof(g_username)-1, + "%s",argv[i]); + } + } + else + { + errorMsg("Unknown flag: %s\n",option); + return(1); + } + + break; + } + + + + case 'v': + { + if (strncmp("verbose",option+1,1) == 0) + { + if (*option == '-') + { + g_verbose=1; + } + } + break; + } + + case 'q': + { + if (strncmp("quiet",option+1,1) == 0) + { + if (*option == '-') + { + g_quiet=1; + } + } + break; + } + + + case 'V': + { + (void) fprintf(stderr,"mailsend Version: %.1024s\n",MAILSEND_VERSION); +#ifdef HAVE_OPENSSL + (void) fprintf(stderr,"Compiled with %s\n", + SSLeay_version(SSLEAY_VERSION)); +#else + (void) fprintf(stderr,"Not Compiled OpenSSL, some auth methods will be unavailable\n"); +#endif /* ! HAVE_OPENSSL */ + exit(0); + break; + } + + case 't': + { + if (strncmp("to",option+1,1) == 0) + { + if (*option == '-') + { + i++; + if (i == argc) + { + (void) fprintf(stderr,"Error: missing to addresses\n"); + return (1); + } + to=argv[i]; + save_to=mutilsStrdup(to); + if (save_to == NULL) + { + errorMsg("memory allocation problem for -to"); + return(-1); + } + save_to=fix_to(save_to); + to=fix_to(to); + /* collapse all spaces to a comma */ + mutilsSpacesToChar(to,','); + + /* add addresses to a singly linked list */ + addAddressToList(to,"To"); + /* Note: to is modifed now! */ + } + } + break; + } + + case 'r': + { + if (strncmp("rrr",option+1,3) == 0) + { + if (*option == '-') + { + i++; + if (i == argc) + { + (void) fprintf(stderr,"Error: missing to addresses for -rrr\n"); + return (1); + } + rrr=mutilsStrdup(argv[i]); + if (rrr == NULL) + { + errorMsg("memory allocation problem for -rrr"); + return(1); + } + } + } + else if (strncmp("rt",option+1,2) == 0) + { + if (*option == '-') + { + i++; + if (i == argc) + { + (void) fprintf(stderr,"Error: missing to addresses for -rt\n"); + return (1); + } + rt=mutilsStrdup(argv[i]); + if (rt == NULL) + { + errorMsg("memory allocation problem for -rt"); + return(1); + } + } + } + else + { + errorMsg("Unknown flag: %s\n",option); + return(1); + } + + break; + } + + case 'w': + { + if (strncmp("wait",option+1,1) == 0) + { + if (*option == '-') + { + g_wait_for_cr=1; + } + } + + break; + } + + default: + { + (void) fprintf(stderr,"Error: Unrecognized option: %s\n", + option); + return (1); + } + + + } + } + + initialize_openssl(cipher); + + if (port == -1) + port=MAILSEND_SMTP_PORT; + if (smtp_info) + { + if (smtp_server == NULL) + smtp_server="localhost"; + } + if (smtp_info && smtp_server) + { + if (helo_domain == NULL) + helo_domain="localhost"; + show_smtp_info(smtp_server,port,helo_domain); + return(1); + } + + + print_attachemtn_list(); + + /* + ** attaching a file or a one line message will make the mail a + ** MIME mail + */ + if (attach_file || the_msg || msg_body_file) + { + is_mime=1; + } + + if (smtp_server == NULL) + { + memset(buf,0,sizeof(buf)); + x=askFor(buf,sizeof(buf)-1,"SMTP server address/IP: ",EMPTY_NOT_OK); + if (x) + smtp_server=xStrdup(x); + } + + if (helo_domain == NULL) + { + /* + memset(buf,0,sizeof(buf)); + x=askFor(buf,sizeof(buf)-1,"Domain: ",EMPTY_NOT_OK); + if (x) + helo_domain=xStrdup(x); + */ + /* use localhost */ + helo_domain=xStrdup("localhost"); + } + + if (from == NULL) + { + memset(buf,0,sizeof(buf)); + x=askFor(buf,sizeof(buf)-1,"From: ",EMPTY_NOT_OK); + if (x) + from=xStrdup(x); + } + + x=getenv("SMTP_USER_PASS"); + if (x) + { + if (*g_userpass == '\0') + { + (void) snprintf(g_userpass,sizeof(g_userpass)-1,"%s",x); + } + } + + /* if address file specified, add the addresses to the list as well */ + if (address_file != NULL) + { + addAddressesFromFileToList(address_file); + printAddressList(); + } + + /* + ** The To address must be speicifed, even if the file with the list of + ** addresses is specified. The specified To will be shown in the + ** envelope. None of the To, Cc and Bcc from the address list file will + ** be shown anywhre.. that's how I like it. I hate long To, Cc or Bcc. + ** muquit@muquit.com, Thu Mar 29 11:56:45 EST 2001 + */ + + if (save_to == NULL) + { + /* don't ask for To add addresses are specified with -l file */ + if (getAddressList() == NULL) + { + memset(buf,0,sizeof(buf)); + x=askFor(buf,sizeof(buf)-1,"To: ",EMPTY_NOT_OK); + if (x) + { + save_to=xStrdup(x); + addAddressToList(x,"To"); + } + } + } + + /* + ** if msg file specified, dont ask for unneeded things, as it could + ** be used from other programs, and it will wait for input + ** muquit@muquit.com Tue Apr 10 18:02:12 EST 2001 + */ + +#ifdef WINNT + if (attach_file == NULL && isInConsole(_fileno(stdin))) +#else + if (attach_file == NULL && isatty(fileno(stdin))) +#endif /* WINNT */ + { + if (save_cc == NULL && !no_cc) + { + memset(buf,0,sizeof(buf)); + x=askFor(buf,sizeof(buf)-1,"Carbon copy: ",EMPTY_OK); + if (x) + { + save_cc=xStrdup(x); + addAddressToList(x,"Cc"); + } + } + + if (save_bcc == NULL && ! no_bcc) + { + memset(buf,0,sizeof(buf)); + x=askFor(buf,sizeof(buf)-1,"Blind Carbon copy: ",EMPTY_OK); + if (x) + { + save_bcc=xStrdup(x); + addAddressToList(x,"BCc"); + } + } + + if (sub == NULL) + { + memset(buf,0,sizeof(buf)); + x=askFor(buf,sizeof(buf)-1,"Subject: ",EMPTY_OK); + if (x) + sub=xStrdup(x); + } + } + + + + /* TODO: read from default file or registry */ + rc=validateMusts(from,save_to,smtp_server,helo_domain); + if (rc == -1) + return (1); /* exit */ + +#ifdef UNIX + signal(SIGPIPE,SIG_IGN); +#endif /* UNIX */ + + rc=send_the_mail(from,save_to,save_cc,save_bcc,sub,smtp_server,port, + helo_domain,attach_file,msg_body_file,the_msg,is_mime,rrr,rt,add_dateh); + + if (rc == 0) + { + if (isInteractive()) + { + (void) printf("Mail sent successfully\n"); + (void) fflush(stdout); + } + } + else + { + if (isInteractive()) + { + (void) printf("Could not send mail\n"); + } + } + + if (isInteractive()) + { + if (g_wait_for_cr) + { + printf("\nPress Enter to Exit: "); + fgets(buf,sizeof(buf)-1,stdin); + } + } + + + return (rc); +} diff --git a/coregrade/src/mailsend/setget.c b/coregrade/src/mailsend/setget.c new file mode 100644 index 0000000..8fc92a8 --- /dev/null +++ b/coregrade/src/mailsend/setget.c @@ -0,0 +1,465 @@ +/* +** setget routines for mailsend +** +** Limitations and Comments: +** vars are static in this module. +** +** +** Development History: +** who when why +** muquit@muquit.com Mar-27-2001 first cut +*/ + +#include "mailsend.h" + +static Sll + *attachment_head=NULL, + *server_caps=NULL, + *addr_head=NULL; + +static Address + *address=NULL; + +void print_server_caps(void) +{ + Sll + *l; + for (l=server_caps; l; l=l->next) + { + (void) fprintf(stdout,"%s\n",(char *) l->data); + (void) fflush(stdout); + } +} + + +void printAddressList2(Sll *list) +{ + Sll + *l; + + Address + *addr=NULL; + + for (l=list; l; l=l->next) + { + addr=(Address *) l->data; + } +} + +void print_attachemtn_list() +{ + Sll + *l; + + Attachment + *a; + + for (l=attachment_head; l; l=l->next) + { + a=(Attachment *) l->data; + /* + (void) fprintf(stderr,"File path: %s\n",a->file_path); + (void) fprintf(stderr,"File name: %s\n",a->file_name); + (void) fprintf(stderr,"Mime type: %s\n",a->mime_type); + (void) fprintf(stderr,"Disposition: %s\n",a->content_disposition); + (void) fprintf(stderr,"\n"); + */ + } +} + + +void printAddressList(void) +{ + Sll + *l; + + Address + *addr=NULL; + + if (g_verbose) + { + for (l=addr_head; l; l=l->next) + { + addr=(Address *) l->data; + if (addr) + { + (void) fprintf(stdout,"%s: %s\n", + addr->label, + addr->address); + } + } + } +} + +/* return pointer to capability if found, NULL otherwise */ +char *check_server_cap(char *what) +{ + Sll + *l; + if (what == NULL || *what == '\0') + return(NULL); + + for (l=server_caps; l; l=l->next) + { + if (mutilsStristr((char *) l->data,what)) + { + return((char *) l->data); + } + } + return(NULL); +} + +/* add server capabilities to our list */ +int add_server_cap_to_list(char *cap) +{ + Sll + *na=NULL; + + char + *c; + + if (cap == NULL || *cap == '\0') + return(-1); + + + c=strdup(cap); + if (c == NULL) + return(-1); + + na=allocateNode((void *) c); + CHECK_MALLOC(na); + appendNode(&server_caps,&na); + + return(0); +} + + + +/** + * add the file to attachment_list + */ +int add_attachment_to_list(char *file_path_mime) +{ + int + ntokens; + + Sll + *na=NULL; + + char + **tokens=NULL, + *file_path=NULL, + *file_name=NULL, + *mime_type=NULL, + *content_disposition="attachment"; + + Attachment + *a=NULL; + + if (file_path_mime == NULL || *file_path_mime == '\0') + return(-1); + + /* Tokenize the string "file,mime_type,something" */ + tokens=mutilsTokenize(file_path_mime,',',&ntokens); + if (tokens == NULL) + { + errorMsg("Could not parse attachment string: \"%s\"",file_path_mime); + exit(1); + } + + /* get the file name out */ + file_path=tokens[0]; + if ((file_name=strrchr(file_path,'/')) || + (file_name=strrchr(file_path,'\\'))) + { + file_name++; + } + else + { + file_name=file_path; + } + + a=(Attachment *) malloc(sizeof(Attachment)); + CHECK_MALLOC(a); + + a->file_path=xStrdup(file_path); + a->file_name=xStrdup(file_name); + + switch (ntokens) + { + case 1: /* Only File_path/name given */ + { + + mime_type="application/octet-stream"; + a->mime_type=xStrdup(mime_type); + a->content_disposition=xStrdup("attachment"); + break; + } + + case 2: /* filepath/name, mime_type given */ + { + mime_type=tokens[1]; + a->mime_type=xStrdup(mime_type); + a->content_disposition=xStrdup("attachment"); + break; + } + + case 3: + { + mime_type=tokens[1]; + a->mime_type=xStrdup(mime_type); + content_disposition=tokens[2]; + if (*content_disposition == 'a') + a->content_disposition=xStrdup("attachment"); + else if (*content_disposition == 'i') + a->content_disposition=xStrdup("inline"); + else + a->content_disposition=xStrdup("attachment"); + break; + } + + default: + { + errorMsg("Invalid string specified with -a \"%s\"",file_path_mime); + exit(1); + break; + } + } + na=allocateNode((void *) a); + CHECK_MALLOC(na); + + appendNode(&attachment_head,&na); + + /* + print_attachemtn_list(); + */ +#if 0 + if ((mime_type=strchr(file_path_mime,ATTACHMENT_SEP))) + { + *mime_type++='\0'; + } + else + { + mime_type="application/octet-stream"; + } + + + /* get the file name out */ + if ((file_name=strrchr(file_path_mime,'/')) || (file_name=strrchr(file_path_mime,'\\'))) + { + file_name++; + } + else + { + file_name=file_path_mime; + } + + a=(Attachment *) malloc(sizeof(Attachment)); + CHECK_MALLOC(a); + + a->file_path=xStrdup(file_path_mime); + a->file_name=xStrdup(file_name); + a->mime_type=xStrdup(mime_type); + na=allocateNode((void *) a); + CHECK_MALLOC(na); + + appendNode(&attachment_head,&na); +#endif /* 0 */ + + return(0); +} + + + + +int addAddressToList(char *a,char *label) +{ + char + *p; + + Sll + *new=(Sll *) NULL; + + if (a == NULL || *a == '\0') + return(-1); + + if (label == NULL || *label == '\0') + label="To"; + + /* if comma separated, tokenize them */ + p=mutilsStrtok(a,","); + if (p != NULL) + { + address=newAddress(); + if (address == NULL) + { + errorMsg("addAddressToList: malloc problem for newAddress()"); + return (-1); + } + + address->label=xStrdup(label); + address->address=xStrdup(p); + + new=allocateNode((void *) address); + if (new == (Sll *) NULL) + { + errorMsg("addAddressToList: malloc problem with allocateNode()"); + (void) free ((char *) address); + return (-1); + } + appendNode(&addr_head,&new); + } + while ((p=mutilsStrtok((char *) NULL,",")) != NULL) + { + if (p != NULL) + { + address=newAddress(); + if (address == NULL) + { + errorMsg("addAddressToList: x malloc problem for newAddress()"); + return (-1); + } + address->label=xStrdup(label); + address->address=xStrdup(p); + new=allocateNode((void *) address); + if (new == (Sll *) NULL) + { + errorMsg("addAddressToList:malloc problem with allocateNode()"); + (void) free ((char *) address); + return (-1); + } + appendNode(&addr_head,&new); + } + + } + + return (1); +} + + + +/* +** add the address list from file to the "head" linked list. +** return 0 on success, -1 on error +*/ +int addAddressesFromFileToList(char *address_file) +{ + char + *label=NULL, + *p=NULL, + buf[BUFSIZ]; + + Sll + *list=(Sll *) NULL; + + Address + *addr=(Address *) NULL; + + FILE + *fp=(FILE *) NULL; + + /* open the file */ + fp=fopen(address_file,"r"); + if (fp == (FILE *) NULL) + { + errorMsg("Could not open address list file: %s",address_file); + return (-1); + } + while (fgets(buf,sizeof(buf)-1,fp) && !feof(fp)) + { + p=NULL; + + /* remove all white spaces */ + mutilsRmallws(buf); + + if (*buf == '\0') + continue; + /* If a line starts with # or ; consider it's a comment */ + if (*buf == '#' || *buf == ';') + continue; + + showVerbose("Address> %s\n",buf); + if (mutilsStrncasecmp(buf,"To:",3) == 0) + { + label="To"; + if (strlen(buf) > 3) + p=buf+3; + else + p=(char *) NULL; + } + else if (mutilsStrncasecmp(buf,"Cc:",3) == 0) + { + label="Cc"; + if (strlen(buf) > 3) + p=buf+3; + else + p=(char *) NULL; + } + else if (mutilsStrncasecmp(buf,"BCc:",4) == 0) + { + label="BCc"; + if (strlen(buf) > 4) + p=buf+4; + else + p=(char *) NULL; + } + else + { + /* just an email address */ + /* TODO: allow comma separared may be */ + label="To"; + p=buf; + } + + if (p == (char *) NULL) /* won't be */ + p=buf; + + if (p == (char *) NULL) + continue; + + addr=newAddress(); + if (addr == NULL) + { + errorMsg("addAddressToList: malloc problem for newAddress()"); + return (-1); + } + /* fill with data */ + showVerbose("Label: %s\n",label); + showVerbose("Address: %s\n",p); + + addr->label=xStrdup(label); + addr->address=xStrdup(p); + list=allocateNode((void *) addr); + if (list == (Sll *) NULL) + { + errorMsg("addAddressToList: malloc problem with allocateNode()"); + (void) free ((char *) addr); + return (-1); + } + appendNode(&addr_head,&list); + } + + if (fp != (FILE *) NULL) + (void) fclose(fp); + + return (0); +} + + +Sll *getAddressList(void) +{ + return (addr_head); +} + +Sll *get_attachment_list(void) +{ + return(attachment_head); +} + +Sll *get_server_cap_list(void) +{ + return(server_caps); +} + +/* just a debug routine */ + diff --git a/coregrade/src/mailsend/smtp.c b/coregrade/src/mailsend/smtp.c new file mode 100644 index 0000000..d04c20b --- /dev/null +++ b/coregrade/src/mailsend/smtp.c @@ -0,0 +1,1282 @@ +/* +** SMTP routines for mailsend - a simple mail sender via SMTP +** +** Limitations and Comments: +** SMTP RF[C] RFC-821 +** Also look at: TCP/IP Illustraged Vol 1 by Richard Stevens +** +** Written mainly for NT, Unix has this kind of tools in hundreds. +** +** Development History: +** who when why +** muquit@muquit.com Mar-26-2001 first cut +*/ + +#include "mailsend.h" + +static char buf[BUFSIZ]; +static int break_out=0; + +static char smtp_line[BUFSIZ]; +static char smtp_errbuf[BUFSIZ]; +static int smtp_code; +static int smtp_sep; +static int s_esmtp=0; + +#ifdef WINNT +static BOOL + WINAPI CntrlHandler(DWORD CtrlEvent); +#else +#define closesocket close +#endif /* WINNT */ + +void smtpDisconnect(void) +{ + msock_close(); +} +/* connect to SMTP server and returns the socket fd */ +static SOCKET smtpConnect(char *smtp_server,int port) +{ + SOCKET + sfd; + + sfd=clientSocket(smtp_server,port); + if (sfd == INVALID_SOCKET) + { + errorMsg("Could not connect to SMTP server \"%s\" at port %d", + smtp_server,port); + return (INVALID_SOCKET); + } + + /* set the socket to msock lib's static place, not thread safe*/ + msock_set_socket(sfd); + + return (sfd); +} + +/* + * sfd socket + * + * return 0 on success, -1 on failure + * + * populates globals: smtp_code,smtp_line and smtp_errbuf on error + * + */ +int read_smtp_line(void) +{ + int + rc=(-1), + n; + + char + tbuf[BUFSIZ], + lbuf[BUFSIZ]; + + memset(smtp_line,0,sizeof(smtp_line)); + memset(smtp_errbuf,0,sizeof(smtp_errbuf)); + smtp_code=(-1); + + memset(lbuf,0,sizeof(lbuf)); + /* read a line */ + n=msock_gets(lbuf,sizeof(lbuf)-1); + if (n < 3 ) + { + //errorMsg("Error reading SMTP line, read %d bytes",n); + return(-1); + } + showVerbose("[S] %s\n",lbuf); + if (n >= 5) + { + memset(tbuf,0,sizeof(tbuf)); + memcpy(tbuf,lbuf,3); + smtp_code=atoi(tbuf); + + smtp_sep=lbuf[3]; + + (void) snprintf(smtp_line,sizeof(smtp_line)-1,"%s",lbuf + 4); + rc=0; +/* + (void) fprintf(stderr," Line: \"%s\"\n",lbuf); + (void) fprintf(stderr," Code: \"%d\"\n",smtp_code); + (void) fprintf(stderr," Sep: '%c'\n",smtp_sep); + (void) fprintf(stderr," line: \"%s\"\n",smtp_line); +*/ + } + else + { + (void) snprintf(smtp_errbuf,sizeof(smtp_errbuf)-1,"%s",lbuf); + } + + + return(rc); +} + +int smtp_start_tls(int sfd) +{ + int + rc=(-1); +#ifdef HAVE_OPENSSL + SSL + *ssl=NULL; +#endif /* HAVE_OPENSSL */ + memset(buf,0,sizeof(buf)); + (void) snprintf(buf,sizeof(buf)-1,"%s\r\n","STARTTLS"); + showVerbose("[C] %s",buf); + msock_puts(buf); + rc=read_smtp_line(); + if (smtp_code != 220) + { + errorMsg("Unknown STARTTLS response code %d\n",smtp_code); + return(-1); + } +#ifdef HAVE_OPENSSL + ssl=msock_get_ssl(); + if (ssl) + { + if (!SSL_set_fd(ssl,sfd)) + { + errorMsg("failed to set socket to SSL\n"); + return(-1); + } + /* must set back to msock's static */ + msock_set_ssl(ssl); + rc=SSL_connect(ssl); + if (rc < 1) + { + errorMsg("SSL connection failed\n"); + ERR_print_errors_fp(stderr); + return(-1); + } + print_cert_info(ssl); + /* tell msock everything is ssl after that */ + msock_turn_ssl_on(); + rc=0; + } + else + { + errorMsg("Could not start STARTTLS, SSL not initialized properly"); + rc=(-1); + } +#else + errorMsg("Not Compiled with OpenSSL, could not do STARTTLS"); +#endif /*HAVE_OPENSSL */ + return(rc); +} + +/* SMTP: HELO */ +static int say_helo(char *helo_domain) +{ + int + cnt=0, + rc; + + (void) snprintf(buf,sizeof(buf)-1,"%s %s\r\n", + s_esmtp ? "EHLO" : "HELO",helo_domain); + showVerbose("[C] %s",buf); + + /* send */ + msock_puts(buf); + rc=read_smtp_line(); + if (smtp_code != 250) + { + errorMsg("%s failed", s_esmtp ? "EHLO" : "HELO"); + return(-1); + } + /* read all the capabilities if separator is - */ + if (smtp_sep == A_DASH) + { + for (;;) + { + rc=read_smtp_line(); + if (rc == 0) + add_server_cap_to_list(smtp_line); + cnt++; + if (cnt >= 1000) + break; + if (rc < 0 || smtp_sep != A_DASH) + break; + } + } + + return(rc); +} + + +/* SMTP: MAIL FROM */ +static int smtp_MAIL_FROM(char *from) +{ + memset(buf,0,sizeof(buf)); + (void) snprintf(buf,sizeof(buf)-1,"MAIL FROM: <%s>\r\n",from); + showVerbose("[C] %s",buf); + + msock_puts(buf); + read_smtp_line(); + if (smtp_code != 250) + { + errorMsg("MAIL FROM failed: '%d %s'",smtp_code,smtp_line); + return(-1); + } + return(0); +} + +/* SMTP: quit */ +static int smtp_QUIT(void) +{ + int + rc; + showVerbose("[C] QUIT\r\n"); + msock_puts("QUIT\r\n"); + rc=read_smtp_line(); + /* + ** google does not seem to write anything back in response to QUIT + ** command. I'll ignore it anyway + */ + return(0); +} + +/* SMTP: RSET */ +/* aborts current mail transaction and cause both ends to reset */ +static int smtp_RSET() +{ + msock_puts("RSET\r\n"); + return(read_smtp_line()); +} + + + +/* SMTP: RCPT TO */ +static int smtp_RCPT_TO(void) +{ + Sll + *l, + *al; + + Address + *a; + + char + *x; + + int + rc; + + al=getAddressList(); + + for (l=al; l; l=l->next) + { + a=(Address *) l->data; + if (! a) + return(-1); + if (! a->address) + return(-1); + + memset(buf,0,sizeof(buf)); + x=getenv("NOTIFY_RCPT"); + if (x != NULL) + { + /* MS Exchange has it */ + showVerbose("NOTIFY_RCPT=%s\n",x); + (void) snprintf(buf,sizeof(buf)-1,"RCPT TO: %s %s\r\n", + a->address,x); + } + else + { + (void) snprintf(buf,sizeof(buf)-1,"RCPT TO: <%s>\r\n",a->address); + } + + showVerbose("[C] %s",buf); + + msock_puts(buf); + rc=read_smtp_line(); + if (rc == 0) + { + if (smtp_code != 250) + { + errorMsg("RCPT TO: <%s> failed '%d:%s'\n", + a->address,smtp_code,smtp_line); + smtp_RSET(); + return(-1); + } + } + } + return (0); + +} + +/* SMTP: DATA */ +static int smtp_DATA(void) +{ + int + rc; + + msock_puts("DATA\r\n"); + showVerbose("[C] DATA\r\n"); + + rc=read_smtp_line(); + if (rc == 0) + { + if (smtp_code != 354) + { + errorMsg("DATA failed: '%d %s'\n",smtp_code,smtp_line); + return(-1); + } + } + return(0); +} + +/* SMTP: EOM */ +int smtpEom(int sfd) +{ + msock_puts("\r\n.\r\n"); + + showVerbose("\r\n[C] .\r\n"); + + return (read_smtp_line()); +} + +void doCleanup(void) +{ + smtpDisconnect(); +} + +#ifdef WINNT +/* +** Handle Ctrl+C +*/ +static BOOL WINAPI CntrlHandler(DWORD CtrlEvent) +{ + break_out=0; + + switch (CtrlEvent) + { + case CTRL_C_EVENT: + { + break_out=1; + (void) fprintf(stderr,"\nNot sending mail. Exiting.......\n"); + exit(1); /* XXXXXXXXXXXXXXXXXXXXXX */ + break; + } + } + + return (TRUE); +} +#endif /* WINNT */ + +/* SMTP: mail */ +static int smtpMail(int sfd,char *to,char *cc,char *bcc,char *from,char *rrr,char *rt, + char *subject,char *attach_file,char *msg_body_file, + char *the_msg,int is_mime,int add_dateh) +{ + char + *os="Unix", + boundary[17], + mbuf[1000]; + + int + newline_before; + + Sll + *attachment_list; + +#ifdef WINNT + os="Windows"; +#else + os="Unix"; +#endif /* WINNT */ + + attachment_list=get_attachment_list(); + if (attachment_list) + { + is_mime=1; + } + + if (subject) + { + memset(buf,0,sizeof(buf)); + (void) snprintf(buf,sizeof(buf)-1,"Subject: %s\r\n",subject); + + msock_puts(buf); + + showVerbose(buf); + } + + /* headers */ + if (from) + { + memset(buf,0,sizeof(buf)); + if (*g_from_name != '\0') + { + /* Name in From: */ + + memset(buf,0,sizeof(buf)); + (void) snprintf(buf,sizeof(buf)-1,"From: %s <%s>\r\n", + g_from_name,from); + } + else + { + (void) snprintf(buf,sizeof(buf)-1,"From: %s\r\n",from); + } + msock_puts(buf); + + showVerbose(buf); + } + + if (add_dateh) + { + /* add Date: header */ + char + datebuf[65]; + + memset(datebuf,0,sizeof(datebuf)); + if (rfc822_date(time(NULL),datebuf,sizeof(datebuf)-1) == 0) + { + memset(buf,0,sizeof(buf)); + (void) snprintf(buf,sizeof(buf)-1,"Date: %s\r\n",datebuf); + msock_puts(buf); + + showVerbose(buf); + } + } + + if (to) + { + memset(buf,0,sizeof(buf)); + (void) snprintf(buf,sizeof(buf)-1,"To: %s\r\n",to); + msock_puts(buf); + + showVerbose(buf); + + } + + if (cc) + { + memset(buf,0,sizeof(buf)); + (void) snprintf(buf,sizeof(buf)-1,"Cc: %s\r\n",cc); + msock_puts(buf); + showVerbose(buf); + } + + /* + if (bcc) + { + memset(buf,0,sizeof(buf)); + (void) snprintf(buf,sizeof(buf)-1,"Bcc: %s\r\n",bcc); + msock_puts(buf); + + showVerbose(buf); + } + */ + + if (rt != NULL) + { + memset(buf,0,sizeof(buf)); + (void) snprintf(buf,sizeof(buf)-1,"Reply-To: %s\r\n",rt); + msock_puts(buf); + showVerbose(buf); + + } + if (rrr != NULL) + { + memset(buf,0,sizeof(buf)); + (void) snprintf(buf,sizeof(buf)-1,"Disposition-Notification-To: %s\r\n",rrr); + msock_puts(buf); + showVerbose(buf); + } + + memset(buf,0,sizeof(buf)); + (void) snprintf(buf,sizeof(buf)-1,"X-Mailer: %s (%s)\r\n",MAILSEND_VERSION,os); + msock_puts(buf); + showVerbose(buf); + + memset(buf,0,sizeof(buf)); + (void) snprintf(buf,sizeof(buf)-1,"X-Copyright: %s\r\n",NO_SPAM_STATEMENT); + msock_puts(buf); + showVerbose(buf); + + /* + if (is_mime && msg_file) + */ + if (is_mime) + { + srand(time(NULL)); + memset(boundary,0,sizeof(boundary)); + mutilsGenerateMIMEBoundary(boundary,sizeof(boundary)); + (void) snprintf(buf,sizeof(buf)-1,"Content-type: multipart/mixed; boundary=\"%s\"\r\n",boundary); + msock_puts(buf); + showVerbose(buf); + + (void) snprintf(buf,sizeof(buf)-1,"Mime-version: 1.0\r\n"); + msock_puts(buf); + showVerbose(buf); + } + + msock_puts("\r\n"); + showVerbose("\r\n"); + + /* + if (is_mime && msg_file) + */ + if (is_mime) + { + char + mime_tmpfile[BUFSIZ]; + + FILE + *tfp=NULL, + *fp=NULL; + int + tfwd; + + /* + ** If there a txt file or a one line messgae, attach them first + */ + /* Part added by Smeeta Jalan -- starts */ + if (the_msg) + { + (void) snprintf(buf,sizeof(buf)-1,"\r\n--%s\r\n",boundary); + msock_puts(buf); + showVerbose(buf); + + (void) snprintf(buf,sizeof(buf)-1,"Content-Type: text/html; charset=%s\r\n",g_charset); + msock_puts(buf); + showVerbose(buf); + + (void) strcpy(buf,"Content-Disposition: inline\r\n"); + msock_puts(buf); + showVerbose(buf); + + msock_puts("\r\n"); + showVerbose("\r\n"); + + /* (void) strcpy(buf,the_msg); */ + mutilsSafeStrcpy(buf,the_msg,sizeof(buf)-1); + msock_puts(buf); + showVerbose("[C] %s",the_msg); + + (void) snprintf(buf,sizeof(buf)-1,"\r\n\r\n"); + msock_puts(buf); + showVerbose(buf); + } + + if (msg_body_file) + { + int + rc; + char + mime_type[32], + filename[1024]; + + FILE + *fp; + + rc=get_filepath_mimetype(msg_body_file,filename, + sizeof(filename)-1,mime_type,sizeof(mime_type)-1); + /* + * The file should not have binary characters it it. + * It's user's responsibilty to make sure file is not binary. + * If file is binary mail will have garbage as I'll not convert + * the content to base64 + */ + fp=fopen(filename,"r"); + if (fp == (FILE *) NULL) + { + errorMsg("Could not open message body file: %s",filename); + return (-1); + } + + (void) snprintf(buf,sizeof(buf)-1,"\r\n--%s\r\n",boundary); + msock_puts(buf); + showVerbose(buf); + + (void) snprintf(buf,sizeof(buf)-1,"Content-Type: %s; charset=%s\r\n",mime_type,g_charset); + msock_puts(buf); + showVerbose(buf); + + (void) strcpy(buf,"Content-Disposition: inline\r\n"); + msock_puts(buf); + showVerbose(buf); + + msock_puts("\r\n"); + showVerbose("\r\n"); + + while (fgets(mbuf,sizeof(mbuf)-1,fp)) + { + msock_puts(mbuf); + showVerbose("[C] %s",mbuf); + } + (void) fclose(fp); + + (void) snprintf(buf,sizeof(buf)-1,"\r\n\r\n"); + msock_puts(buf); + showVerbose(buf); + } + /* Part added by Smeeta Jalan --ends --*/ + + /* open a tmp file writing MIME content */ + (void) strcpy(mime_tmpfile,"./mailsendXXXXXX"); + + /* handle mime */ + { + Attachment + *a; + Sll + *al; + + for (al=attachment_list; al; al=al->next) + { + a=(Attachment *) al->data; + if (a == NULL) + continue; + + /* open the mime input file */ + fp=fopen(a->file_path,"rb"); + if (fp == (FILE *) NULL) + { + errorMsg("%s (%d) - Could not open file for reading: %s (%s)",MFL,a->file_path,ERR_STR); + return (-1); + } + + (void) strcpy(mime_tmpfile,"./mailsendXXXXXX"); +#ifdef HAVE_MKSTEMP + tfwd=mkstemp(mime_tmpfile); + if (tfwd == -1) + { + errorMsg("%s (%d) - Could not open tmp file \"%s\" for writing (for %s)\n",MFL,mime_tmpfile,a->file_name); + return (-1); + } + tfp=fdopen(tfwd,"w"); + if (tfp == NULL) + { + (void) fprintf(stderr,"fdopen() failed on %s\n",mime_tmpfile); + close(tfwd); + unlink(mime_tmpfile); + return(-1); + } +#else + mktemp(mime_tmpfile); + + tfp=fopen(mime_tmpfile,"w"); + if (tfp == NULL) + { + (void) fprintf(stderr,"Could not open tmp file \"%s\" for writing (for %s)\n",mime_tmpfile,a->file_name); + return (-1); + } +#endif /* HAVE_MKSTEMP */ + + /* base64 encode only if it is not mime type of text/plain */ + + if (mutilsStrcasecmp(a->mime_type,"text/plain") != 0) + { + mutilsBase64Encode(fp,tfp); + if (tfp) + { + (void) fclose(tfp); + } + } + else + { + FILE + *ttp; + char + xbuf[BUFSIZ]; + + /* write the text file to tmp file */ + ttp=fopen(a->file_path,"r"); + if (ttp == NULL) + + { + errorMsg("%s (%d) - could not open file %s for reading (%s)\n",MFL,a->file_path,ERR_STR); + continue; + } + while(fgets(xbuf,sizeof(xbuf)-1,ttp)) + { + fputs(xbuf,tfp); + } + fclose(ttp); + (void) fclose(tfp); + + } + if (fp) + (void) fclose(fp); + + (void) snprintf(buf,sizeof(buf)-1,"--%s\r\n",boundary); + msock_puts(buf); + showVerbose(buf); + + + if (mutilsStrcasecmp(a->mime_type,"text/plain") == 0) + { + /* + ** Guess the file type first. + ** If binary, change my type and base64 encode it. + ** If the file is text and in Unix format, write it + ** back as Dos file (with \r\n + ** TODO + ** muquit@muquit.com Mar-21-2007 + */ + + (void) snprintf(buf,sizeof(buf)-1,"Content-Type: text/plain; charset=%s\r\n",g_charset); + msock_puts(buf); + showVerbose(buf); + + (void) snprintf(buf,sizeof(buf)-1,"Content-Disposition: %s; filename=\"%s\"\r\n", + a->content_disposition, + a->file_name); + msock_puts(buf); + showVerbose(buf); + + msock_puts("\r\n"); + showVerbose("\r\n"); + } + else + { + (void) snprintf(buf,sizeof(buf)-1,"Content-Type: %s; name=%s\r\n",a->mime_type,a->file_name); + msock_puts(buf); + showVerbose(buf); + + (void) snprintf(buf,sizeof(buf)-1,"Content-Disposition: %s; filename=\"%s\"\r\n", + a->content_disposition, + a->file_name); + msock_puts(buf); + showVerbose(buf); + + msock_puts("Content-Transfer-Encoding: base64\r\n\r\n"); + showVerbose("Content-Transfer-Encoding: base64\r\n\r\n"); + } + + fp=fopen(mime_tmpfile,"r"); + if (fp == (FILE *) NULL) + { + (void) fprintf(stderr,"Could not open tmp file \"%s\" for reading\n",mime_tmpfile); + return (-1); + } + while (fgets(mbuf,sizeof(mbuf)-1,fp)) + { + msock_puts(mbuf); + showVerbose("[C] %s",mbuf); /* new line is there */ + } + (void) fclose(fp); + unlink(mime_tmpfile); + } + + (void) snprintf(buf,sizeof(buf)-1,"\r\n--%s--\r\n",boundary); + msock_puts(buf); + showVerbose(buf); + } + goto done; + } + + /* mail body */ + if (attach_file == NULL && the_msg == NULL) /* read from stdin */ + { + + /* if stdin is a terminal, print the instruction */ + if (isInConsole(_fileno(stdin))) + { + (void) printf("=========================================================================\n"); + (void) printf("Type . in a new line and press Enter to end the message, CTRL+C to abort\n"); + (void) printf("=========================================================================\n"); + } + +#ifdef WINNT + SetConsoleCtrlHandler(CntrlHandler,TRUE); +#endif /* WINNT */ + + newline_before=1; + while (fgets(mbuf,sizeof(mbuf)-1,stdin) && (break_out == 0)) + { + if (newline_before && *mbuf == '.') + { + break; + } + else + { + int + len; + /* vinicio qmail fix */ + len=strlen(mbuf); + if (mbuf[len-1] != '\n') + strcat(mbuf,"\r\n"); + else + { + mbuf[--len]='\0'; + strcat(mbuf,"\r\n"); + } + /* vinicio qmail fix */ + msock_puts(mbuf); + showVerbose("[C] %s",mbuf); + } + newline_before=(*mbuf != '\0' && mbuf[strlen(mbuf)-1] == '\n'); + if (break_out == 1) + { + (void) fprintf(stderr," Breaking out\n"); + return (0); + } + } + } +done: + + return (0); +} + +/* greeting can be multi line */ +static int read_greetings(void) +{ + int + lcnt=0, + rc=(-1); + + rc=read_smtp_line(); + if (rc < 0) + goto cleanup; + + s_esmtp=g_esmtp; /* if foreced with -ehlo */ + + if (smtp_code != 220) + { + errorMsg("Expected smtp code 220, got %d\n",smtp_code); + rc=(-1); + goto cleanup; + } + if (mutilsStristr(smtp_line,"ESMTP")) + { + s_esmtp=1; + } + /* greeting can be multi-line */ + if (smtp_sep == A_DASH) + { + for (;;) + { + rc=read_smtp_line(); + if (rc < 0) + break; + lcnt++; + if (lcnt >= 100) + { + errorMsg("Too many greeting lines\n"); + rc=(-1); + goto cleanup; + } + if (mutilsStristr(smtp_line,"ESMTP")) + { + s_esmtp=1; + } + if (smtp_sep != A_DASH) + break; + } + } +cleanup: + return(rc); +} + +/* It's stupid, I need to change all the args to a struct, one of those + * days! I'll do it + */ + +/* returns 0 on success, -1 on failure */ +int send_the_mail(char *from,char *to,char *cc,char *bcc,char *sub, + char *smtp_server,int smtp_port,char *helo_domain, + char *attach_file,char *txt_msg_file,char *the_msg,int is_mime,char *rrr,char *rt, + int add_dateh) +{ + SOCKET + sfd; + + TheMail + *mail; + + Sll + *al; + + int + rc=(-1); + + char + *mech=NULL, + *b64=NULL, + *auth=NULL; + + unsigned long + b64len=0; + + int + authenticated=0; + + /* + (void) fprintf(stderr,"From: %s\n",from); + (void) fprintf(stderr,"To: %s\n",to); + (void) fprintf(stderr,"Cc: %s\n",cc); + (void) fprintf(stderr,"Cc: %s\n",bcc); + (void) fprintf(stderr,"Sub: %s\n",sub); + (void) fprintf(stderr,"smtp: %s\n",smtp_server); + (void) fprintf(stderr,"smtp port: %d\n",smtp_port); + (void) fprintf(stderr,"domain: %s\n",helo_domain); + (void) fprintf(stderr,"attach file: %s\n",attach_file); + (void) fprintf(stderr,"txt_msg_file: %s\n",txt_msg_file); + (void) fprintf(stderr,"the_msg: %s\n",the_msg); + (void) fprintf(stderr,"is_mime: %d\n",is_mime); + */ + + al=getAddressList(); + + if (al == (Sll *) NULL) + { + errorMsg("No To address/es specified"); + return (-1); + } + + if (from == (char *) NULL) + { + errorMsg("No From address specified"); + return (-1); + } + + if (smtp_server == (char *) NULL) + smtp_server="127.0.0.1"; + + if (smtp_port == -1) + smtp_port=MAILSEND_SMTP_PORT; + + if (sub == (char *) NULL) + sub=MAILSEND_DEF_SUB; + + if (helo_domain == (char *) NULL) + { + errorMsg("No domain specified"); + return (-1); + } + + mail=newTheMail(); + if (mail == (TheMail *) NULL) + { + (void) fprintf(stderr,"Error: malloc failed in createTheMail()\n"); + return (-1); + } + + /* open the network connection */ + sfd=smtpConnect(smtp_server,smtp_port); + if (sfd == INVALID_SOCKET) + { + rc=(-1); + goto cleanup; + } + + /* read greeting */ + rc=read_greetings(); + if (rc < 0) + goto cleanup; + + /* say HELO/EHLO */ + say_helo(helo_domain); + + /* check if the server supports STARTTLS or TLS */ + if (g_do_starttls) + { + if (check_server_cap("STARTTLS") || + check_server_cap("TLS")) + { + rc=smtp_start_tls(sfd); + if (rc == 0) + { + /* send HELO again */ + say_helo(helo_domain); + } + } + } + + auth=check_server_cap("AUTH"); + if (!auth) + goto MailFrom; + if (auth && g_do_auth) + { + g_auth_cram_md5=1; + g_auth_login=1; + g_auth_plain=1; + } + /* Try CRAM-MD5 first */ + mech="CRAM-MD5"; + if (g_auth_cram_md5 && check_server_cap(mech)) + { + char + *cmd5; + + CHECK_USERNAME(mech); + CHECK_USERPASS(mech); + +#ifndef HAVE_OPENSSL + errorMsg("Must be compiled with OpenSSL in order to get CRAM-MD5 support\n"); + goto cleanup; +#endif /* !HAVE_OPENSSL */ + showVerbose("Using AUTH %s\n",mech); + memset(buf,0,sizeof(buf)); + (void) snprintf(buf,sizeof(buf)-1,"AUTH %s\r\n",mech); + showVerbose("[C] %s",buf); + msock_puts(buf); + + read_smtp_line(); + if (smtp_code != 334) + { + errorMsg("AUTH CRAM-MD5 failed: '%d %s'", + smtp_code, + smtp_line); + rc=(-1); + goto cleanup; + } + cmd5=encode_cram_md5(smtp_line,g_username,g_userpass); + memset(buf,0,sizeof(buf)); + (void) snprintf(buf,sizeof(buf)-1,"%s\r\n",cmd5); + showVerbose("[C] %s",buf); + msock_puts(buf); + read_smtp_line(); + if (smtp_code != 235) + { + errorMsg("AUTH CRAM-MD5 failed: '%d %s'", + smtp_code, + smtp_line); + rc=(-1); + goto cleanup; + } + + showVerbose("%s Authentication succeeded\n",mech); + authenticated++; + + } + if (authenticated) + goto MailFrom; + + mech="LOGIN"; + if (g_auth_login && check_server_cap(mech)) + { + CHECK_USERNAME(mech); + CHECK_USERPASS(mech); + + showVerbose("Using AUTH %s\n",mech); + memset(buf,0,sizeof(buf)); + (void) snprintf(buf,sizeof(buf)-1,"AUTH %s\r\n",mech); + showVerbose("[C] %s",buf); + msock_puts(buf); + + read_smtp_line(); + if (smtp_code != 334) + { + errorMsg("AUTH LOGIN failed: '%d %s'", + smtp_code, + smtp_line); + rc=(-1); + goto cleanup; + } + + b64=mutils_encode_base64(g_username,strlen(g_username),&b64len); + if (b64 == NULL) + { + errorMsg("Could not base64 encode user: %s",buf); + rc=(-1); + goto cleanup; + } + /* mutils_encode_base64 adds CRLF */ + b64[b64len-2]='\0'; + + memset(buf,0,sizeof(buf)); + (void) snprintf(buf,sizeof(buf)-1,"%s\r\n",b64); + msock_puts(buf); + read_smtp_line(); + if (smtp_code != 334) + { + errorMsg("AUTH LOGIN failed: '%d %s'", + smtp_code, + smtp_line); + rc=(-1); + goto cleanup; + } + + b64=mutils_encode_base64(g_userpass,strlen(g_userpass),&b64len); + if (b64 == NULL) + { + errorMsg("Could not base64 encode user: %s",buf); + rc=(-1); + goto cleanup; + } + /* mutils_encode_base64 adds CRLF */ + b64[b64len-2]='\0'; + + memset(buf,0,sizeof(buf)); + (void) snprintf(buf,sizeof(buf)-1,"%s\r\n",b64); + msock_puts(buf); + read_smtp_line(); + if (smtp_code != 235) + { + errorMsg("AUTH LOGIN failed: '%d %s'", + smtp_code, + smtp_line); + rc=(-1); + goto cleanup; + } + authenticated++; + } + + if (authenticated) + goto MailFrom; + + mech="PLAIN"; + if (g_auth_plain && check_server_cap(mech)) + { + int + len, + ulen, + plen; + + unsigned char + *b64=NULL; + + CHECK_USERNAME(mech); + CHECK_USERPASS(mech); + + memset(buf,0,sizeof(buf)); + /* + ** authzid\0authid\0pass + ** authzid can be skipped if both are the same + */ + + ulen=strlen(g_username); + memcpy(buf + 1,g_username,ulen); + plen=strlen(g_userpass); + + memcpy(buf + ulen + 2,g_userpass,plen); + len=ulen + plen + 2; + b64=mutils_encode_base64(buf,len,&b64len); + /* mutils_encode_base64 adds CRLF */ + b64[b64len-2]='\0'; + (void) snprintf(buf,sizeof(buf)-1,"AUTH PLAIN %s\r\n",(char *) b64); + + showVerbose("[C] %s",buf); + msock_puts(buf); + + read_smtp_line(); + if (smtp_code != 235) + { + errorMsg("AUTH PLAIN failed: '%d %s'", + smtp_code, + smtp_line); + rc=(-1); + goto cleanup; + } + showVerbose("PLAIN Authentication succeeded\n"); + authenticated++; + } + + if (authenticated) + goto MailFrom; + + if (auth && !g_quiet) + { + if (!g_auth_cram_md5) + { + if (check_server_cap("CRAM-MD5")) + { + (void) fprintf(stderr, +" *Server supports AUTH CRAM-MD5."); + (void) fprintf(stderr, +" Enable with -auth-cram-md5 or -auth\n"); + } + } + if (!g_auth_login) + { + if (check_server_cap("LOGIN")) + { + (void) fprintf(stderr, +" *Server supports AUTH LOGIN."); + (void) fprintf(stderr, +" Enable with -auth-login or -auth\n"); + (void) fprintf(stderr, +" AUTH LOGIN should be used if server supports STARTTLS (-starttls)\n"); + } + } + + if (!g_auth_plain) + { + if (check_server_cap("PLAIN")) + { + (void) fprintf(stderr, +" *Server supports AUTH PLAIN."); + (void) fprintf(stderr, +" Enable with -auth-plain or -auth\n"); + (void) fprintf(stderr, +" AUTH PLAIN should be used if server supports STARTTLS (-starttls)\n"); + } + } + } + +MailFrom: + rc=smtp_MAIL_FROM(from); + if (rc != 0) + goto cleanup; + + rc=smtp_RCPT_TO(); + if (rc != 0) + goto cleanup; + + rc=smtp_DATA(); + if (rc != 0) + goto cleanup; + + rc=smtpMail(sfd,to,cc,bcc,from,rrr,rt,sub,attach_file,txt_msg_file,the_msg,is_mime,add_dateh); + + rc=smtpEom(sfd); + smtp_QUIT(); + +cleanup: + return (rc); +} + +/* +** print info about SMTP server on stdout +*/ +void show_smtp_info(char *smtp_server,int port,char *domain) +{ + int + fd, + rc; + char + *x; + g_verbose=1; + x="localhost"; + if (mutilsStrncasecmp(smtp_server,x,strlen(x)) == 0) + { + print_info("SMTP serve: localhost, specify different one with -smtp \n"); + } + else + { + print_info("SMTP server: %s\n",smtp_server); + } + /* connect */ + fd=smtpConnect(smtp_server,port); + if (fd == INVALID_SOCKET) + { + goto ExitProcessing; + } + + /* read greeting */ + rc=read_greetings(); + if (rc < 0) + goto ExitProcessing; + + /* say HELO/EHLO */ + say_helo(domain); + + /* check if server supports STARTTLS */ + if (check_server_cap("STARTTLS") || + check_server_cap("TLS")) + { + rc=smtp_start_tls(fd); + if (rc == 0) + say_helo(domain); + else + goto ExitProcessing; + } + smtp_QUIT(); + smtpDisconnect(); + +ExitProcessing: + return; +} + diff --git a/coregrade/src/mailsend/utils.c b/coregrade/src/mailsend/utils.c new file mode 100644 index 0000000..793462b --- /dev/null +++ b/coregrade/src/mailsend/utils.c @@ -0,0 +1,646 @@ +/* +** various utility routines for mailsend +** +** +** Development History: +** who when why +** muquit@muquit.com Mar-26-2001 first cut +*/ + +#include "mailsend.h" +#define DAY_MIN (24 * HOUR_MIN) /* minutes in a day */ +#define HOUR_MIN 60 /* minutes in an hour */ +#define MIN_SEC 60 /* seconds in a minute */ + + +/* +** returns a positive number if the file descriptor is connected to +** console. 0 if not +*/ +int isInConsole(int fd) +{ + int + rc; + rc=_isatty(fd); + return (rc); +} + +int isInteractive(void) +{ +#ifdef WINNT + if (isInConsole(_fileno(stdout))) + return(1); + else + return(0); +#else + if (isatty(fileno(stdout))) + return(1); + else + return(0); +#endif /* ! WINNT */ + + return(0); + +} +/* +** duplicate a string. exits on failure +*/ +char *xStrdup (char *string) +{ + char + *tmp; + + if (string == (char *) NULL || *string == '\0') + return ((char *) NULL); + + /* malloc twice as much memory. */ + tmp = (char *) malloc ((int) strlen(string)+1); + + if (tmp == (char *) NULL) + { + (void) fprintf(stderr,"Error: mystrdup(): memory allocation problem\n"); + exit(0); + } + /* it's safe to copy this way */ + (void) strcpy(tmp, string); + return (tmp); +} + +void errorMsg(char *format,...) +{ + va_list + args; + + va_start(args,format); + (void) fprintf (stderr,"Error: "); + vfprintf(stderr,format,args); + (void) fprintf(stderr,"\n"); + va_end(args); +} + +void showVerbose(char *format,...) +{ + va_list + args; + if (g_quiet) + return; + + if (g_verbose == 1) + { + va_start(args,format); + vfprintf(stdout,format,args); + (void) fflush(stdout); + va_end(args); + } + +} + +void print_info(char *format,...) +{ + va_list + args; + if (g_quiet) + return; + + va_start(args,format); + vfprintf(stdout,format,args); + (void) fflush(stdout); + va_end(args); + +} + + +/* +** Initialize TheMail structure. returns pointer to the TheMail sturcture on +** success, NULL on failure. +*/ +TheMail *newTheMail(void) +{ + TheMail + *the_mail=(TheMail *) NULL; + + the_mail=(TheMail *) malloc(sizeof(TheMail)); + if (the_mail == (TheMail *) NULL) + { + (void) fprintf(stderr,"initTheMail(): malloc failed\n"); + return ((TheMail *) NULL); + } + memset(the_mail,0,sizeof(TheMail)); + + return (the_mail); +} + +Address *newAddress(void) +{ + Address + *a; + + a=(Address *) malloc(sizeof(Address)); + if (a == (Address *) NULL) + { + (void) fprintf(stderr," newAddress() malloc failed\n"); + } + memset(a,0,sizeof(Address)); + + return (a); +} + + +int validateMusts(char *from,char *to,char *smtp_server,char *helo_domain) +{ + int + err=0; + + if (getAddressList() == NULL) + { + if (to == (char *) NULL) + { + errorMsg("No To address/es specified. Speicfy with: -t to,to,.."); + err++; + } + } + + if (from == (char *) NULL) + { + errorMsg("No From address specified. Specify with: -f"); + err++; + } + + + if (smtp_server == (char *) NULL) + { + errorMsg("No SMTP server address or IP specified. Specify with -smtp"); + err++; + } + + + if (helo_domain == (char *) NULL) + { + errorMsg("No domain specified. Specify with: -d"); + err++; + } + + if (err) + return (-1); + + return (0); +} + +char *askFor(char *buf,int buflen,char *label,int ask) +{ + + if (label == NULL || *label == '\0') + return (NULL); + +again: + if (isInConsole(_fileno(stdin))) + { + (void) fprintf(stdout,label); + (void) fflush(stdout); + (void) fflush(stderr); + } + + (void) fgets(buf,buflen,stdin); + if (*buf == '\0' || *buf == '\n') + { + if (ask == EMPTY_NOT_OK) + goto again; + } + + mutilsChopNL(buf); + + return (buf); +} + +/* +** remote mailto from To +** remote mailto: from the address +** mailto:foo => foo +** mailto: => mailto: +** mailto:x => "x" +** mailto: x => " x" +*/ +char *fix_to(char *to) +{ + char + *p=to; + + if (to == NULL || *to == '\0') + return(p); + + /* mailto:foo */ + if (strlen(to) > 7 && mutilsStrncasecmp(to,"mailto:",7) == 0) + { + p=to; + p=p+7; + return(p); + } + + return(p); +} + +/** + * return filepath and mime_type + * @param str String of the form "file,mime_type" + * example: "c:\usr\local\foo.txt,text/plain" + * "/usr/local/foo.html,text/html" + * @param filepath returns + * @param fp_size size of the buffer filepath + * @param mime_type returns + * @param mt_size size of the buffer mime_type + * + * @return 0 on success, -1 otherwise + * + * Note: it will not expand "~ $" etc in the filepath + * This function is used when a body is attached with -m flag + * + */ +int get_filepath_mimetype(char *str,char *filepath,int fp_size,char *mype_type,int mt_size) +{ + + int + rc=0; + char + *fp, + *mt; + if ((mt=strchr(str,ATTACHMENT_SEP))) + { + *mt++='\0'; + } + else + { + errorMsg("Could not determine mime-type from input: %s\n",str); + return(-1); + } + mutilsSafeStrcpy(mype_type,mt,mt_size); + + /* get the filepath out */ + fp=str; + mutilsSafeStrcpy(filepath,fp,fp_size); + return(rc); +} + +void initialize_openssl(char *cipher) +{ +#ifdef HAVE_OPENSSL + static const char rnd_seed[]="my huge entropy for rng.. blah"; + SSL_CTX *ssl_ctx=(SSL_CTX *) NULL; + SSL *ssl=NULL; + SSL_library_init(); + SSL_load_error_strings(); + RAND_seed(rnd_seed,sizeof(rnd_seed)); + ssl_ctx=SSL_CTX_new(SSLv23_client_method()); + if (ssl_ctx == NULL) + { + errorMsg("Could not create SSL context\n"); + return; + } + if (cipher) + { + if (!SSL_CTX_set_cipher_list(ssl_ctx,cipher)) + { + errorMsg("Could not set cipher list %s\n",cipher); + return; + } + } + ssl=SSL_new(ssl_ctx); + if (ssl == NULL) + { + errorMsg("SSL_new() failed\n"); + return; + } + /* set ssl to msock's static */ + msock_set_ssl(ssl); + +#endif /* HAVE_OPENSSL */ +} + +/** + * Calculate Date for RFC822 Date: header + * + * @param when time since unix epoch + * @param datebuf returns NULL terminated date string. + * Example: Wed, 17 May 2006 13:55:35 -0400 + * @param bufsiz size of buffer dates. It's callers responsibily to make sure + * datebuf contains enough space. It must be at least 64 bytes. + * Usually it'll contain 31 bytes. + * + * returns 0 on success, -1 on failure + * + * The code is adapted from postfix. + * + * Changes I made: + * - I use fixed size buffers instead of dynamic ones. + * - I don't use %e to calcuate day of the week, instead I use %d. Windows strftime + * does not have %e. + * - I don't add timzone name. + * + * Reference: http://cr.yp.to/immhf/date.html + */ +int rfc822_date(time_t when,char *datebuf,int bufsiz) +{ + char + ts1[32], + ts2[32]; + + struct tm + *lt; + + struct tm + gmt; + + int + gmtoff; + + if (bufsiz < 64) + { + (void) fprintf(stderr,"buffer size of date must be > 31, it is %d\n",bufsiz); + return(-1); + } + + memset(datebuf,0,bufsiz); + memset(ts1,0,sizeof(ts1)); + memset(ts2,0,sizeof(ts2)); + + gmt=*gmtime(&when); + lt=localtime(&when); + + gmtoff = (lt->tm_hour - gmt.tm_hour) * HOUR_MIN + lt->tm_min - gmt.tm_min; + if (lt->tm_year < gmt.tm_year) + gmtoff -= DAY_MIN; + else if (lt->tm_year > gmt.tm_year) + gmtoff += DAY_MIN; + else if (lt->tm_yday < gmt.tm_yday) + gmtoff -= DAY_MIN; + else if (lt->tm_yday > gmt.tm_yday) + gmtoff += DAY_MIN; + if (lt->tm_sec <= gmt.tm_sec - MIN_SEC) + gmtoff -= 1; + else if (lt->tm_sec >= gmt.tm_sec + MIN_SEC) + gmtoff += 1; + + /* + ** windows strftime does not have %e, so I'll use %d instead. + ** day 1 - 9 can be written as 01 - 09 + */ + (void) strftime(ts1,sizeof(ts1)-1,"%a, %d %b %Y %H:%M:%S ",lt); + if (gmtoff < -DAY_MIN || gmtoff > DAY_MIN) + { + (void) fprintf(stderr,"UTC time offset %d is larger than one day",gmtoff); + return(-1); + } + + (void) snprintf(ts2,sizeof(ts2)-1,"%+03d%02d", + (int) (gmtoff / HOUR_MIN),(int) (abs(gmtoff) % HOUR_MIN)); + + /* put everything in the buffer. it's usually 31 bytes */ + (void) snprintf(datebuf,bufsiz,"%s%s",ts1,ts2); + + /* I will not add timezone name, it's not required */ + + return(0); +} + +/* +** return 0 on success, -1 on failure +*/ +int guess_file_type(char *file,unsigned int *flag) +{ + char + buf[BUFSIZ]; + + int + i, + c, + cr_found=0, + nbytes, + buflen; + + FILE + *fp=NULL; + + *flag=0; + + buflen=sizeof(buf)-1; + fp=fopen(file,"rb"); + if (fp == NULL) + { + errorMsg("Could not open file %s for reading (%s)\n", + file,ERR_STR); + return(-1); + } + while(!feof(fp)) + { + nbytes=fread(buf,1,buflen,fp); + if ((nbytes != buflen) && ferror(fp)) + { + errorMsg("Read error in guess_file_type\n"); + goto ExitProcessing; + } + for (i=0; i < nbytes; i++) + { + c=buf[i]; + if (cr_found) + { + cr_found=0; + if (c == '\n') + continue; + } + if (c == '\r') + { + cr_found=1; + *flag |= FILE_TYPE_DOS; + } + else if (c == '\n') + { + *flag |= FILE_TYPE_UNIX; + } + else if ((c < 32 || c > 126) && c != '\t') + { + *flag |= FILE_TYPE_BINARY; + (void) fclose(fp); + return(0); + } + } + } + + if (fp) + (void) fclose(fp); + return(0); +ExitProcessing: + if (fp) + (void) fclose(fp); + return(-1); + +} + +static int unix2dos(FILE *ifp,FILE *ofp) +{ + int + n, + j, + k, + c, + c2; + char + buf2[BUFSIZ+1], + buf[BUFSIZ+1]; + if (ifp == NULL || ofp == NULL) + return(-1); +#ifdef WINNT + _setmode(_fileno(ofp),_O_BINARY); +#endif /* WINNT */ + while(!feof(ifp)) + { + n=fread(buf,1,BUFSIZ,ifp); + (void) fprintf(stderr,"n=\"%d\"\n",n); + k=0; + for (j=0; j < n; j++) + { + c=buf[j]; + if (c == '\n') + { + (void) fprintf(stderr,"j=%d\n",j); + buf2[k++]='\r'; + } + buf2[k++]=c; + } + c2=fwrite(buf2,sizeof(char),k,ofp); + if (c2 != k) + { + perror("fwrite"); + return(1); + } + } +} + + +#ifdef HAVE_OPENSSL +void print_cert_info(SSL *ssl) +{ + X509 + *cert=NULL; + X509_NAME + *sub=NULL, + *issuer=NULL; + char + buf[BUFSIZ]; + + if (!g_verbose) + return; + + print_info("Cipher: %s\n",SSL_get_cipher(ssl)); + (void) fprintf(stdout,"Certificate information:\n"); + cert=SSL_get_peer_certificate(ssl); + if (cert == NULL) + { + errorMsg("No peer certificate found\n"); + return; + } + /* get subject name */ + sub=X509_get_subject_name(cert); + if (sub == NULL) + { + errorMsg("Could not get subject name in certificate\n"); + } + X509_NAME_oneline(sub,buf,sizeof(buf)-1); + (void) fprintf(stdout,"Subject: %s\n",buf); + + issuer=X509_get_issuer_name(cert); + if (issuer == NULL) + { + errorMsg("Could not get issuer name in certificate\n"); + } + X509_NAME_oneline(issuer,buf,sizeof(buf)-1); + (void) fprintf(stdout,"Issuer: %s\n",buf); + (void) fflush(stdout); +} + +/* +** params: +** challenge: base64 encoded challenge +** user username +** seceret password +** +** Returns: NULL terminated base64 encoded CRAM-MD5 material on success, +** NULL on failure +*/ +char *encode_cram_md5(char *challenge,char *user,char *secret) +{ + unsigned char + *data; + + unsigned long + data_len; + + unsigned char + hmac_md5[16]; + + HMAC_CTX + ctx; + + const EVP_MD + *md5=NULL; + + unsigned int + hmac_len; + + int + i; + + char + *b64; + + unsigned long + b64len=0; + + char + hex[33], + buf[BUFSIZ]; + if (challenge == NULL || *challenge == '\0' || + user == NULL || *user == '\0' || + secret == NULL || *secret == '\0') + return(NULL); + + OpenSSL_add_all_digests(); + + /* decode the challenge */ + data=mutils_decode_base64(challenge,strlen(challenge),&data_len); + if (data == NULL) + { + errorMsg("Could not base64 decode CRAM-MD5 challenge: %s",challenge); + return(NULL); + } + + /* take HMAC-MD5 of the challenge*/ + md5=EVP_get_digestbyname("md5"); + HMAC_CTX_init(&ctx); + HMAC_Init(&ctx,secret,strlen(secret),md5); + HMAC_Update(&ctx,data,data_len); + HMAC_Final(&ctx,hmac_md5,&hmac_len); + + /* convert the digest to hex */ + memset(hex,0,sizeof(hex)); + for (i=0; i < 16; i++) + { + (void) sprintf(hex+2*i,"%02x",hmac_md5[i]); + } + + (void) snprintf(buf,sizeof(buf)-1,"%s %s",user,hex); + /* base64 encode "user hex_digest" */ + b64=mutils_encode_base64(buf,strlen(buf),&b64len); + if (b64len <= 0) + return(NULL); + /* mutils_encode_base64 adds CRLF */ + if (b64len > 2) + b64[b64len-2]='\0'; + return(b64); +} +#else + +char *encode_cram_md5(char *challenge,char *user,char *secret) +{ + errorMsg("Must be compiled with OpenSSL in order to get CRAM-MD5 support\n"); + return(NULL); +} +#endif /* HAVE_OPENSSL */ diff --git a/coregrade/src/missing b/coregrade/src/missing new file mode 100644 index 0000000..e69de29 diff --git a/coregrade/src/mkinstalldirs b/coregrade/src/mkinstalldirs new file mode 100644 index 0000000..e69de29 diff --git a/coregrade/src/run-tests.php b/coregrade/src/run-tests.php new file mode 100644 index 0000000..23b4e84 --- /dev/null +++ b/coregrade/src/run-tests.php @@ -0,0 +1,2798 @@ +#!/usr/bin/env php + | + | Preston L. Bannister | + | Marcus Boerger | + | Derick Rethans | + | Sander Roobol | + | (based on version by: Stig Bakken ) | + | (based on the PHP 3 test framework by Rasmus Lerdorf) | + +----------------------------------------------------------------------+ + */ + +/* $Id: a746c369653ccdbf4bcde6ffb9bee66549ada732 $ */ + +/* Sanity check to ensure that pcre extension needed by this script is available. + * In the event it is not, print a nice error message indicating that this script will + * not run without it. + */ + +if (!extension_loaded('pcre')) { + echo <<'; + save_text($info_file, $php_info); + $info_params = array(); + settings2array($ini_overwrites, $info_params); + settings2params($info_params); + $php_info = `$php $pass_options $info_params "$info_file"`; + define('TESTED_PHP_VERSION', `$php -n -r "echo PHP_VERSION;"`); + + if ($php_cgi && $php != $php_cgi) { + $php_info_cgi = `$php_cgi $pass_options $info_params -q "$info_file"`; + $php_info_sep = "\n---------------------------------------------------------------------"; + $php_cgi_info = "$php_info_sep\nPHP : $php_cgi $php_info_cgi$php_info_sep"; + } else { + $php_cgi_info = ''; + } + + @unlink($info_file); + + // load list of enabled extensions + save_text($info_file, ''); + $exts_to_test = explode(',',`$php $pass_options $info_params "$info_file"`); + // check for extensions that need special handling and regenerate + $info_params_ex = array( + 'session' => array('session.auto_start=0'), + 'tidy' => array('tidy.clean_output=0'), + 'zlib' => array('zlib.output_compression=Off'), + 'xdebug' => array('xdebug.default_enable=0'), + 'mbstring' => array('mbstring.func_overload=0'), + ); + + foreach($info_params_ex as $ext => $ini_overwrites_ex) { + if (in_array($ext, $exts_to_test)) { + $ini_overwrites = array_merge($ini_overwrites, $ini_overwrites_ex); + } + } + + @unlink($info_file); + + // Write test context information. + echo " +===================================================================== +PHP : $php $php_info $php_cgi_info +CWD : $cwd +Extra dirs : "; + foreach ($user_tests as $test_dir) { + echo "{$test_dir}\n "; + } + echo " +VALGRIND : " . ($leak_check ? $valgrind_header : 'Not used') . " +===================================================================== +"; +} + +define('PHP_QA_EMAIL', 'qa-reports@lists.php.net'); +define('QA_SUBMISSION_PAGE', 'http://qa.php.net/buildtest-process.php'); +define('QA_REPORTS_PAGE', 'http://qa.php.net/reports'); + +function save_or_mail_results() +{ + global $sum_results, $just_save_results, $failed_test_summary, + $PHP_FAILED_TESTS, $CUR_DIR, $php, $output_file, $compression; + + /* We got failed Tests, offer the user to send an e-mail to QA team, unless NO_INTERACTION is set */ + if (!getenv('NO_INTERACTION')) { + $fp = fopen("php://stdin", "r+"); + if ($sum_results['FAILED'] || $sum_results['BORKED'] || $sum_results['WARNED'] || $sum_results['LEAKED'] || $sum_results['XFAILED']) { + echo "\nYou may have found a problem in PHP."; + } + echo "\nThis report can be automatically sent to the PHP QA team at\n"; + echo QA_REPORTS_PAGE . " and http://news.php.net/php.qa.reports\n"; + echo "This gives us a better understanding of PHP's behavior.\n"; + echo "If you don't want to send the report immediately you can choose\n"; + echo "option \"s\" to save it. You can then email it to ". PHP_QA_EMAIL . " later.\n"; + echo "Do you want to send this report now? [Yns]: "; + flush(); + + $user_input = fgets($fp, 10); + $just_save_results = (strtolower($user_input[0]) == 's'); + } + + if ($just_save_results || !getenv('NO_INTERACTION')) { + if ($just_save_results || strlen(trim($user_input)) == 0 || strtolower($user_input[0]) == 'y') { + /* + * Collect information about the host system for our report + * Fetch phpinfo() output so that we can see the PHP enviroment + * Make an archive of all the failed tests + * Send an email + */ + if ($just_save_results) { + $user_input = 's'; + } + + /* Ask the user to provide an email address, so that QA team can contact the user */ + if (!strncasecmp($user_input, 'y', 1) || strlen(trim($user_input)) == 0) { + echo "\nPlease enter your email address.\n(Your address will be mangled so that it will not go out on any\nmailinglist in plain text): "; + flush(); + $user_email = trim(fgets($fp, 1024)); + $user_email = str_replace("@", " at ", str_replace(".", " dot ", $user_email)); + } + + $failed_tests_data = ''; + $sep = "\n" . str_repeat('=', 80) . "\n"; + $failed_tests_data .= $failed_test_summary . "\n"; + $failed_tests_data .= get_summary(true, false) . "\n"; + + if ($sum_results['FAILED']) { + foreach ($PHP_FAILED_TESTS['FAILED'] as $test_info) { + $failed_tests_data .= $sep . $test_info['name'] . $test_info['info']; + $failed_tests_data .= $sep . file_get_contents(realpath($test_info['output']), FILE_BINARY); + $failed_tests_data .= $sep . file_get_contents(realpath($test_info['diff']), FILE_BINARY); + $failed_tests_data .= $sep . "\n\n"; + } + $status = "failed"; + } else { + $status = "success"; + } + + $failed_tests_data .= "\n" . $sep . 'BUILD ENVIRONMENT' . $sep; + $failed_tests_data .= "OS:\n" . PHP_OS . " - " . php_uname() . "\n\n"; + $ldd = $autoconf = $sys_libtool = $libtool = $compiler = 'N/A'; + + if (substr(PHP_OS, 0, 3) != "WIN") { + /* If PHP_AUTOCONF is set, use it; otherwise, use 'autoconf'. */ + if (getenv('PHP_AUTOCONF')) { + $autoconf = shell_exec(getenv('PHP_AUTOCONF') . ' --version'); + } else { + $autoconf = shell_exec('autoconf --version'); + } + + /* Always use the generated libtool - Mac OSX uses 'glibtool' */ + $libtool = shell_exec($CUR_DIR . '/libtool --version'); + + /* Use shtool to find out if there is glibtool present (MacOSX) */ + $sys_libtool_path = shell_exec(__DIR__ . '/build/shtool path glibtool libtool'); + + if ($sys_libtool_path) { + $sys_libtool = shell_exec(str_replace("\n", "", $sys_libtool_path) . ' --version'); + } + + /* Try the most common flags for 'version' */ + $flags = array('-v', '-V', '--version'); + $cc_status = 0; + + foreach($flags AS $flag) { + system(getenv('CC') . " $flag >/dev/null 2>&1", $cc_status); + if ($cc_status == 0) { + $compiler = shell_exec(getenv('CC') . " $flag 2>&1"); + break; + } + } + + $ldd = shell_exec("ldd $php 2>/dev/null"); + } + + $failed_tests_data .= "Autoconf:\n$autoconf\n"; + $failed_tests_data .= "Bundled Libtool:\n$libtool\n"; + $failed_tests_data .= "System Libtool:\n$sys_libtool\n"; + $failed_tests_data .= "Compiler:\n$compiler\n"; + $failed_tests_data .= "Bison:\n". shell_exec('bison --version 2>/dev/null') . "\n"; + $failed_tests_data .= "Libraries:\n$ldd\n"; + $failed_tests_data .= "\n"; + + if (isset($user_email)) { + $failed_tests_data .= "User's E-mail: " . $user_email . "\n\n"; + } + + $failed_tests_data .= $sep . "PHPINFO" . $sep; + $failed_tests_data .= shell_exec($php . ' -ddisplay_errors=stderr -dhtml_errors=0 -i 2> /dev/null'); + + if ($just_save_results || !mail_qa_team($failed_tests_data, $compression, $status)) { + file_put_contents($output_file, $failed_tests_data); + + if (!$just_save_results) { + echo "\nThe test script was unable to automatically send the report to PHP's QA Team\n"; + } + + echo "Please send " . $output_file . " to " . PHP_QA_EMAIL . " manually, thank you.\n"; + } else { + fwrite($fp, "\nThank you for helping to make PHP better.\n"); + fclose($fp); + } + } + } +} + +// Determine the tests to be run. + +$test_files = array(); +$redir_tests = array(); +$test_results = array(); +$PHP_FAILED_TESTS = array('BORKED' => array(), 'FAILED' => array(), 'WARNED' => array(), 'LEAKED' => array(), 'XFAILED' => array()); + +// If parameters given assume they represent selected tests to run. +$failed_tests_file= false; +$pass_option_n = false; +$pass_options = ''; + +$compression = 0; +$output_file = $CUR_DIR . '/php_test_results_' . date('Ymd_Hi') . '.txt'; + +if ($compression) { + $output_file = 'compress.zlib://' . $output_file . '.gz'; +} + +$just_save_results = false; +$leak_check = false; +$html_output = false; +$html_file = null; +$temp_source = null; +$temp_target = null; +$temp_urlbase = null; +$conf_passed = null; +$no_clean = false; + +$cfgtypes = array('show', 'keep'); +$cfgfiles = array('skip', 'php', 'clean', 'out', 'diff', 'exp'); +$cfg = array(); + +foreach($cfgtypes as $type) { + $cfg[$type] = array(); + + foreach($cfgfiles as $file) { + $cfg[$type][$file] = false; + } +} + +if (getenv('TEST_PHP_ARGS')) { + + if (!isset($argc) || !$argc || !isset($argv)) { + $argv = array(__FILE__); + } + + $argv = array_merge($argv, explode(' ', getenv('TEST_PHP_ARGS'))); + $argc = count($argv); +} + +if (isset($argc) && $argc > 1) { + + for ($i=1; $i<$argc; $i++) { + $is_switch = false; + $switch = substr($argv[$i],1,1); + $repeat = substr($argv[$i],0,1) == '-'; + + while ($repeat) { + + if (!$is_switch) { + $switch = substr($argv[$i],1,1); + } + + $is_switch = true; + + if ($repeat) { + foreach($cfgtypes as $type) { + if (strpos($switch, '--' . $type) === 0) { + foreach($cfgfiles as $file) { + if ($switch == '--' . $type . '-' . $file) { + $cfg[$type][$file] = true; + $is_switch = false; + break; + } + } + } + } + } + + if (!$is_switch) { + $is_switch = true; + break; + } + + $repeat = false; + + switch($switch) { + case 'r': + case 'l': + $test_list = file($argv[++$i]); + if ($test_list) { + foreach($test_list as $test) { + $matches = array(); + if (preg_match('/^#.*\[(.*)\]\:\s+(.*)$/', $test, $matches)) { + $redir_tests[] = array($matches[1], $matches[2]); + } else if (strlen($test)) { + $test_files[] = trim($test); + } + } + } + if ($switch != 'l') { + break; + } + $i--; + // break left intentionally + case 'w': + $failed_tests_file = fopen($argv[++$i], 'w+t'); + break; + case 'a': + $failed_tests_file = fopen($argv[++$i], 'a+t'); + break; + case 'c': + $conf_passed = $argv[++$i]; + break; + case 'd': + $ini_overwrites[] = $argv[++$i]; + break; + case 'g': + $SHOW_ONLY_GROUPS = explode(",", $argv[++$i]);; + break; + //case 'h' + case '--keep-all': + foreach($cfgfiles as $file) { + $cfg['keep'][$file] = true; + } + break; + //case 'l' + case 'm': + $leak_check = true; + $valgrind_cmd = "valgrind --version"; + $valgrind_header = system_with_timeout($valgrind_cmd, $environment); + $replace_count = 0; + if (!$valgrind_header) { + error("Valgrind returned no version info, cannot proceed.\nPlease check if Valgrind is installed."); + } else { + $valgrind_version = preg_replace("/valgrind-([0-9])\.([0-9])\.([0-9]+)([.-\w]+)?(\s+)/", '$1$2$3', $valgrind_header, 1, $replace_count); + if ($replace_count != 1 || !is_numeric($valgrind_version)) { + error("Valgrind returned invalid version info (\"$valgrind_header\"), cannot proceed."); + } + $valgrind_header = trim($valgrind_header); + } + break; + case 'n': + if (!$pass_option_n) { + $pass_options .= ' -n'; + } + $pass_option_n = true; + break; + case '--no-clean': + $no_clean = true; + break; + case 'p': + $php = $argv[++$i]; + putenv("TEST_PHP_EXECUTABLE=$php"); + $environment['TEST_PHP_EXECUTABLE'] = $php; + break; + case 'q': + putenv('NO_INTERACTION=1'); + break; + //case 'r' + case 's': + $output_file = $argv[++$i]; + $just_save_results = true; + break; + case '--set-timeout': + $environment['TEST_TIMEOUT'] = $argv[++$i]; + break; + case '--show-all': + foreach($cfgfiles as $file) { + $cfg['show'][$file] = true; + } + break; + case '--temp-source': + $temp_source = $argv[++$i]; + break; + case '--temp-target': + $temp_target = $argv[++$i]; + if ($temp_urlbase) { + $temp_urlbase = $temp_target; + } + break; + case '--temp-urlbase': + $temp_urlbase = $argv[++$i]; + break; + case 'v': + case '--verbose': + $DETAILED = true; + break; + case 'x': + $environment['SKIP_SLOW_TESTS'] = 1; + break; + case '--offline': + $environment['SKIP_ONLINE_TESTS'] = 1; + break; + //case 'w' + case '-': + // repeat check with full switch + $switch = $argv[$i]; + if ($switch != '-') { + $repeat = true; + } + break; + case '--html': + $html_file = fopen($argv[++$i], 'wt'); + $html_output = is_resource($html_file); + break; + case '--version': + echo '$Id: a746c369653ccdbf4bcde6ffb9bee66549ada732 $' . "\n"; + exit(1); + + default: + echo "Illegal switch '$switch' specified!\n"; + case 'h': + case '-help': + case '--help': + echo << Read the testfiles to be executed from . After the test + has finished all failed tests are written to the same . + If the list is empty and no further test is specified then + all tests are executed (same as: -r -w ). + + -r Read the testfiles to be executed from . + + -w Write a list of all failed tests to . + + -a Same as -w but append rather then truncating . + + -c Look for php.ini in directory or use as ini. + + -n Pass -n option to the php binary (Do not use a php.ini). + + -d foo=bar Pass -d option to the php binary (Define INI entry foo + with value 'bar'). + + -g Comma seperated list of groups to show during test run + (possible values: PASS, FAIL, XFAIL, SKIP, BORK, WARN, LEAK, REDIRECT). + + -m Test for memory leaks with Valgrind. + + -p Specify PHP executable to run. + + -q Quiet, no user interaction (same as environment NO_INTERACTION). + + -s Write output to . + + -x Sets 'SKIP_SLOW_TESTS' environmental variable. + + --offline Sets 'SKIP_ONLINE_TESTS' environmental variable. + + --verbose + -v Verbose mode. + + --help + -h This Help. + + --html Generate HTML output. + + --temp-source --temp-target [--temp-urlbase ] + Write temporary files to by replacing from the + filenames to generate with . If --html is being used and + given then the generated links are relative and prefixed + with the given url. In general you want to make the path + to your source files and some pach in your web page + hierarchy with pointing to . + + --keep-[all|php|skip|clean] + Do not delete 'all' files, 'php' test file, 'skip' or 'clean' + file. + + --set-timeout [n] + Set timeout for individual tests, where [n] is the number of + seconds. The default value is 60 seconds, or 300 seconds when + testing for memory leaks. + + --show-[all|php|skip|clean|exp|diff|out] + Show 'all' files, 'php' test file, 'skip' or 'clean' file. You + can also use this to show the output 'out', the expected result + 'exp' or the difference between them 'diff'. The result types + get written independent of the log format, however 'diff' only + exists when a test fails. + + --no-clean Do not execute clean section if any. + +HELP; + exit(1); + } + } + + if (!$is_switch) { + $testfile = realpath($argv[$i]); + + if (!$testfile && strpos($argv[$i], '*') !== false && function_exists('glob')) { + + if (preg_match("/\.phpt$/", $argv[$i])) { + $pattern_match = glob($argv[$i]); + } else if (preg_match("/\*$/", $argv[$i])) { + $pattern_match = glob($argv[$i] . '.phpt'); + } else { + die("bogus test name " . $argv[$i] . "\n"); + } + + if (is_array($pattern_match)) { + $test_files = array_merge($test_files, $pattern_match); + } + + } else if (is_dir($testfile)) { + find_files($testfile); + } else if (preg_match("/\.phpt$/", $testfile)) { + $test_files[] = $testfile; + } else { + die("bogus test name " . $argv[$i] . "\n"); + } + } + } + + if (strlen($conf_passed)) { + if (substr(PHP_OS, 0, 3) == "WIN") { + $pass_options .= " -c " . escapeshellarg($conf_passed); + } else { + $pass_options .= " -c '$conf_passed'"; + } + } + + $test_files = array_unique($test_files); + $test_files = array_merge($test_files, $redir_tests); + + // Run selected tests. + $test_cnt = count($test_files); + + if ($test_cnt) { + putenv('NO_INTERACTION=1'); + verify_config(); + write_information($html_output); + usort($test_files, "test_sort"); + $start_time = time(); + + if (!$html_output) { + echo "Running selected tests.\n"; + } else { + show_start($start_time); + } + + $test_idx = 0; + run_all_tests($test_files, $environment); + $end_time = time(); + + if ($html_output) { + show_end($end_time); + } + + if ($failed_tests_file) { + fclose($failed_tests_file); + } + + if (count($test_files) || count($test_results)) { + compute_summary(); + if ($html_output) { + fwrite($html_file, "
\n" . get_summary(false, true)); + } + echo "====================================================================="; + echo get_summary(false, false); + } + + if ($html_output) { + fclose($html_file); + } + + if ($output_file != '' && $just_save_results) { + save_or_mail_results(); + } + + junit_save_xml(); + + if (getenv('REPORT_EXIT_STATUS') == 1 and preg_match('/FAILED(?: |$)/', implode(' ', $test_results))) { + exit(1); + } + + exit(0); + } +} + +verify_config(); +write_information($html_output); + +// Compile a list of all test files (*.phpt). +$test_files = array(); +$exts_tested = count($exts_to_test); +$exts_skipped = 0; +$ignored_by_ext = 0; +sort($exts_to_test); +$test_dirs = array(); +$optionals = array('tests', 'ext', 'Zend', 'ZendEngine2', 'sapi/cli', 'sapi/cgi'); + +foreach($optionals as $dir) { + if (@filetype($dir) == 'dir') { + $test_dirs[] = $dir; + } +} + +// Convert extension names to lowercase +foreach ($exts_to_test as $key => $val) { + $exts_to_test[$key] = strtolower($val); +} + +foreach ($test_dirs as $dir) { + find_files("{$cwd}/{$dir}", ($dir == 'ext')); +} + +foreach ($user_tests as $dir) { + find_files($dir, ($dir == 'ext')); +} + +function find_files($dir, $is_ext_dir = false, $ignore = false) +{ + global $test_files, $exts_to_test, $ignored_by_ext, $exts_skipped, $exts_tested; + + $o = opendir($dir) or error("cannot open directory: $dir"); + + while (($name = readdir($o)) !== false) { + + if (is_dir("{$dir}/{$name}") && !in_array($name, array('.', '..', '.svn'))) { + $skip_ext = ($is_ext_dir && !in_array(strtolower($name), $exts_to_test)); + if ($skip_ext) { + $exts_skipped++; + } + find_files("{$dir}/{$name}", false, $ignore || $skip_ext); + } + + // Cleanup any left-over tmp files from last run. + if (substr($name, -4) == '.tmp') { + @unlink("$dir/$name"); + continue; + } + + // Otherwise we're only interested in *.phpt files. + if (substr($name, -5) == '.phpt') { + if ($ignore) { + $ignored_by_ext++; + } else { + $testfile = realpath("{$dir}/{$name}"); + $test_files[] = $testfile; + } + } + } + + closedir($o); +} + +function test_name($name) +{ + if (is_array($name)) { + return $name[0] . ':' . $name[1]; + } else { + return $name; + } +} + +function test_sort($a, $b) +{ + global $cwd; + + $a = test_name($a); + $b = test_name($b); + + $ta = strpos($a, "{$cwd}/tests") === 0 ? 1 + (strpos($a, "{$cwd}/tests/run-test") === 0 ? 1 : 0) : 0; + $tb = strpos($b, "{$cwd}/tests") === 0 ? 1 + (strpos($b, "{$cwd}/tests/run-test") === 0 ? 1 : 0) : 0; + + if ($ta == $tb) { + return strcmp($a, $b); + } else { + return $tb - $ta; + } +} + +$test_files = array_unique($test_files); +usort($test_files, "test_sort"); + +$start_time = time(); +show_start($start_time); + +$test_cnt = count($test_files); +$test_idx = 0; +run_all_tests($test_files, $environment); +$end_time = time(); + +if ($failed_tests_file) { + fclose($failed_tests_file); +} + +// Summarize results + +if (0 == count($test_results)) { + echo "No tests were run.\n"; + return; +} + +compute_summary(); + +show_end($end_time); +show_summary(); + +if ($html_output) { + fclose($html_file); +} + +save_or_mail_results(); + +junit_save_xml(); + +if (getenv('REPORT_EXIT_STATUS') == 1 and $sum_results['FAILED']) { + exit(1); +} +exit(0); + +// +// Send Email to QA Team +// + +function mail_qa_team($data, $compression, $status = false) +{ + $url_bits = parse_url(QA_SUBMISSION_PAGE); + + if (($proxy = getenv('http_proxy'))) { + $proxy = parse_url($proxy); + $path = $url_bits['host'].$url_bits['path']; + $host = $proxy['host']; + if (empty($proxy['port'])) { + $proxy['port'] = 80; + } + $port = $proxy['port']; + } else { + $path = $url_bits['path']; + $host = $url_bits['host']; + $port = empty($url_bits['port']) ? 80 : $port = $url_bits['port']; + } + + $data = "php_test_data=" . urlencode(base64_encode(str_replace("\00", '[0x0]', $data))); + $data_length = strlen($data); + + $fs = fsockopen($host, $port, $errno, $errstr, 10); + + if (!$fs) { + return false; + } + + $php_version = urlencode(TESTED_PHP_VERSION); + + echo "\nPosting to ". QA_SUBMISSION_PAGE . "\n"; + fwrite($fs, "POST " . $path . "?status=$status&version=$php_version HTTP/1.1\r\n"); + fwrite($fs, "Host: " . $host . "\r\n"); + fwrite($fs, "User-Agent: QA Browser 0.1\r\n"); + fwrite($fs, "Content-Type: application/x-www-form-urlencoded\r\n"); + fwrite($fs, "Content-Length: " . $data_length . "\r\n\r\n"); + fwrite($fs, $data); + fwrite($fs, "\r\n\r\n"); + fclose($fs); + + return 1; +} + + +// +// Write the given text to a temporary file, and return the filename. +// + +function save_text($filename, $text, $filename_copy = null) +{ + global $DETAILED; + + if ($filename_copy && $filename_copy != $filename) { + if (file_put_contents($filename_copy, $text, FILE_BINARY) === false) { + error("Cannot open file '" . $filename_copy . "' (save_text)"); + } + } + + if (file_put_contents($filename, $text, FILE_BINARY) === false) { + error("Cannot open file '" . $filename . "' (save_text)"); + } + + if (1 < $DETAILED) echo " +FILE $filename {{{ +$text +}}} +"; +} + +// +// Write an error in a format recognizable to Emacs or MSVC. +// + +function error_report($testname, $logname, $tested) +{ + $testname = realpath($testname); + $logname = realpath($logname); + + switch (strtoupper(getenv('TEST_PHP_ERROR_STYLE'))) { + case 'MSVC': + echo $testname . "(1) : $tested\n"; + echo $logname . "(1) : $tested\n"; + break; + case 'EMACS': + echo $testname . ":1: $tested\n"; + echo $logname . ":1: $tested\n"; + break; + } +} + +function system_with_timeout($commandline, $env = null, $stdin = null) +{ + global $leak_check, $cwd; + + $data = ''; + + $bin_env = array(); + foreach((array)$env as $key => $value) { + $bin_env[$key] = $value; + } + + $proc = proc_open($commandline, array( + 0 => array('pipe', 'r'), + 1 => array('pipe', 'w'), + 2 => array('pipe', 'w') + ), $pipes, $cwd, $bin_env, array('suppress_errors' => true, 'binary_pipes' => true)); + + if (!$proc) { + return false; + } + + if (!is_null($stdin)) { + fwrite($pipes[0], $stdin); + } + fclose($pipes[0]); + + $timeout = $leak_check ? 300 : (isset($env['TEST_TIMEOUT']) ? $env['TEST_TIMEOUT'] : 60); + + while (true) { + /* hide errors from interrupted syscalls */ + $r = $pipes; + $w = null; + $e = null; + + $n = @stream_select($r, $w, $e, $timeout); + + if ($n === false) { + break; + } else if ($n === 0) { + /* timed out */ + $data .= "\n ** ERROR: process timed out **\n"; + proc_terminate($proc, 9); + return $data; + } else if ($n > 0) { + $line = fread($pipes[1], 8192); + if (strlen($line) == 0) { + /* EOF */ + break; + } + $data .= $line; + } + } + + $stat = proc_get_status($proc); + + if ($stat['signaled']) { + $data .= "\nTermsig=" . $stat['stopsig']; + } + + $code = proc_close($proc); + return $data; +} + +function run_all_tests($test_files, $env, $redir_tested = null) +{ + global $test_results, $failed_tests_file, $php, $test_cnt, $test_idx; + + foreach($test_files as $name) { + + if (is_array($name)) { + $index = "# $name[1]: $name[0]"; + + if ($redir_tested) { + $name = $name[0]; + } + } else if ($redir_tested) { + $index = "# $redir_tested: $name"; + } else { + $index = $name; + } + $test_idx++; + $result = run_test($php, $name, $env); + + if (!is_array($name) && $result != 'REDIR') { + $test_results[$index] = $result; + if ($failed_tests_file && ($result == 'XFAILED' || $result == 'FAILED' || $result == 'WARNED' || $result == 'LEAKED')) { + fwrite($failed_tests_file, "$index\n"); + } + } + } +} + +// +// Show file or result block +// +function show_file_block($file, $block, $section = null) +{ + global $cfg; + + if ($cfg['show'][$file]) { + + if (is_null($section)) { + $section = strtoupper($file); + } + + echo "\n========" . $section . "========\n"; + echo rtrim($block); + echo "\n========DONE========\n"; + } +} + +// +// Run an individual test case. +// +function run_test($php, $file, $env) +{ + global $log_format, $info_params, $ini_overwrites, $cwd, $PHP_FAILED_TESTS; + global $pass_options, $DETAILED, $IN_REDIRECT, $test_cnt, $test_idx; + global $leak_check, $temp_source, $temp_target, $cfg, $environment; + global $no_clean; + global $valgrind_version; + global $JUNIT; + $temp_filenames = null; + $org_file = $file; + + if (isset($env['TEST_PHP_CGI_EXECUTABLE'])) { + $php_cgi = $env['TEST_PHP_CGI_EXECUTABLE']; + } + + if (is_array($file)) { + $file = $file[0]; + } + + if ($DETAILED) echo " +================= +TEST $file +"; + + // Load the sections of the test file. + $section_text = array('TEST' => ''); + + $fp = fopen($file, "rb") or error("Cannot open test file: $file"); + + $borked = false; + $bork_info = ''; + + if (!feof($fp)) { + $line = fgets($fp); + + if ($line === false) { + $bork_info = "cannot read test"; + $borked = true; + } + } else { + $bork_info = "empty test [$file]"; + $borked = true; + } + if (!$borked && strncmp('--TEST--', $line, 8)) { + $bork_info = "tests must start with --TEST-- [$file]"; + $borked = true; + } + + $section = 'TEST'; + $secfile = false; + $secdone = false; + + while (!feof($fp)) { + $line = fgets($fp); + + if ($line === false) { + break; + } + + // Match the beginning of a section. + if (preg_match('/^--([_A-Z]+)--/', $line, $r)) { + $section = $r[1]; + settype($section, 'string'); + + if (isset($section_text[$section])) { + $bork_info = "duplicated $section section"; + $borked = true; + } + + $section_text[$section] = ''; + $secfile = $section == 'FILE' || $section == 'FILEEOF' || $section == 'FILE_EXTERNAL'; + $secdone = false; + continue; + } + + // Add to the section text. + if (!$secdone) { + $section_text[$section] .= $line; + } + + // End of actual test? + if ($secfile && preg_match('/^===DONE===\s*$/', $line)) { + $secdone = true; + } + } + + // the redirect section allows a set of tests to be reused outside of + // a given test dir + if (!$borked) { + if (@count($section_text['REDIRECTTEST']) == 1) { + + if ($IN_REDIRECT) { + $borked = true; + $bork_info = "Can't redirect a test from within a redirected test"; + } else { + $borked = false; + } + + } else { + + if (@count($section_text['FILE']) + @count($section_text['FILEEOF']) + @count($section_text['FILE_EXTERNAL']) != 1) { + $bork_info = "missing section --FILE--"; + $borked = true; + } + + if (@count($section_text['FILEEOF']) == 1) { + $section_text['FILE'] = preg_replace("/[\r\n]+$/", '', $section_text['FILEEOF']); + unset($section_text['FILEEOF']); + } + + if (@count($section_text['FILE_EXTERNAL']) == 1) { + // don't allow tests to retrieve files from anywhere but this subdirectory + $section_text['FILE_EXTERNAL'] = dirname($file) . '/' . trim(str_replace('..', '', $section_text['FILE_EXTERNAL'])); + + if (file_exists($section_text['FILE_EXTERNAL'])) { + $section_text['FILE'] = file_get_contents($section_text['FILE_EXTERNAL'], FILE_BINARY); + unset($section_text['FILE_EXTERNAL']); + } else { + $bork_info = "could not load --FILE_EXTERNAL-- " . dirname($file) . '/' . trim($section_text['FILE_EXTERNAL']); + $borked = true; + } + } + + if ((@count($section_text['EXPECT']) + @count($section_text['EXPECTF']) + @count($section_text['EXPECTREGEX'])) != 1) { + $bork_info = "missing section --EXPECT--, --EXPECTF-- or --EXPECTREGEX--"; + $borked = true; + } + } + } + fclose($fp); + + $shortname = str_replace($cwd . '/', '', $file); + $tested_file = $shortname; + + if ($borked) { + show_result("BORK", $bork_info, $tested_file); + $PHP_FAILED_TESTS['BORKED'][] = array ( + 'name' => $file, + 'test_name' => '', + 'output' => '', + 'diff' => '', + 'info' => "$bork_info [$file]", + ); + + junit_mark_test_as('BORK', $shortname, $tested_file, 0, $bork_info); + return 'BORKED'; + } + + $tested = trim($section_text['TEST']); + + /* For GET/POST/PUT tests, check if cgi sapi is available and if it is, use it. */ + if (!empty($section_text['GET']) || !empty($section_text['POST']) || !empty($section_text['GZIP_POST']) || !empty($section_text['DEFLATE_POST']) || !empty($section_text['POST_RAW']) || !empty($section_text['PUT']) || !empty($section_text['COOKIE']) || !empty($section_text['EXPECTHEADERS'])) { + if (isset($php_cgi)) { + $old_php = $php; + $php = $php_cgi . ' -C '; + } else if (!strncasecmp(PHP_OS, "win", 3) && file_exists(dirname($php) . "/php-cgi.exe")) { + $old_php = $php; + $php = realpath(dirname($php) . "/php-cgi.exe") . ' -C '; + } else { + if (file_exists(dirname($php) . "/../../sapi/cgi/php-cgi")) { + $old_php = $php; + $php = realpath(dirname($php) . "/../../sapi/cgi/php-cgi") . ' -C '; + } else if (file_exists("./sapi/cgi/php-cgi")) { + $old_php = $php; + $php = realpath("./sapi/cgi/php-cgi") . ' -C '; + } else if (file_exists(dirname($php) . "/php-cgi")) { + $old_php = $php; + $php = realpath(dirname($php) . "/php-cgi") . ' -C '; + } else { + show_result('SKIP', $tested, $tested_file, "reason: CGI not available"); + + junit_mark_test_as('SKIP', $shortname, $tested, 0, 'CGI not available'); + return 'SKIPPED'; + } + } + } + + show_test($test_idx, $shortname); + + if (is_array($IN_REDIRECT)) { + $temp_dir = $test_dir = $IN_REDIRECT['dir']; + } else { + $temp_dir = $test_dir = realpath(dirname($file)); + } + + if ($temp_source && $temp_target) { + $temp_dir = str_replace($temp_source, $temp_target, $temp_dir); + } + + $main_file_name = basename($file,'phpt'); + + $diff_filename = $temp_dir . DIRECTORY_SEPARATOR . $main_file_name . 'diff'; + $log_filename = $temp_dir . DIRECTORY_SEPARATOR . $main_file_name . 'log'; + $exp_filename = $temp_dir . DIRECTORY_SEPARATOR . $main_file_name . 'exp'; + $output_filename = $temp_dir . DIRECTORY_SEPARATOR . $main_file_name . 'out'; + $memcheck_filename = $temp_dir . DIRECTORY_SEPARATOR . $main_file_name . 'mem'; + $sh_filename = $temp_dir . DIRECTORY_SEPARATOR . $main_file_name . 'sh'; + $temp_file = $temp_dir . DIRECTORY_SEPARATOR . $main_file_name . 'php'; + $test_file = $test_dir . DIRECTORY_SEPARATOR . $main_file_name . 'php'; + $temp_skipif = $temp_dir . DIRECTORY_SEPARATOR . $main_file_name . 'skip.php'; + $test_skipif = $test_dir . DIRECTORY_SEPARATOR . $main_file_name . 'skip.php'; + $temp_clean = $temp_dir . DIRECTORY_SEPARATOR . $main_file_name . 'clean.php'; + $test_clean = $test_dir . DIRECTORY_SEPARATOR . $main_file_name . 'clean.php'; + $tmp_post = $temp_dir . DIRECTORY_SEPARATOR . uniqid('/phpt.'); + $tmp_relative_file = str_replace(__DIR__ . DIRECTORY_SEPARATOR, '', $test_file) . 't'; + + if ($temp_source && $temp_target) { + $temp_skipif .= 's'; + $temp_file .= 's'; + $temp_clean .= 's'; + $copy_file = $temp_dir . DIRECTORY_SEPARATOR . basename(is_array($file) ? $file[1] : $file) . '.phps'; + + if (!is_dir(dirname($copy_file))) { + mkdir(dirname($copy_file), 0777, true) or error("Cannot create output directory - " . dirname($copy_file)); + } + + if (isset($section_text['FILE'])) { + save_text($copy_file, $section_text['FILE']); + } + + $temp_filenames = array( + 'file' => $copy_file, + 'diff' => $diff_filename, + 'log' => $log_filename, + 'exp' => $exp_filename, + 'out' => $output_filename, + 'mem' => $memcheck_filename, + 'sh' => $sh_filename, + 'php' => $temp_file, + 'skip' => $temp_skipif, + 'clean'=> $temp_clean); + } + + if (is_array($IN_REDIRECT)) { + $tested = $IN_REDIRECT['prefix'] . ' ' . trim($section_text['TEST']); + $tested_file = $tmp_relative_file; + } + + // unlink old test results + @unlink($diff_filename); + @unlink($log_filename); + @unlink($exp_filename); + @unlink($output_filename); + @unlink($memcheck_filename); + @unlink($sh_filename); + @unlink($temp_file); + @unlink($test_file); + @unlink($temp_skipif); + @unlink($test_skipif); + @unlink($tmp_post); + @unlink($temp_clean); + @unlink($test_clean); + + // Reset environment from any previous test. + $env['REDIRECT_STATUS'] = ''; + $env['QUERY_STRING'] = ''; + $env['PATH_TRANSLATED'] = ''; + $env['SCRIPT_FILENAME'] = ''; + $env['REQUEST_METHOD'] = ''; + $env['CONTENT_TYPE'] = ''; + $env['CONTENT_LENGTH'] = ''; + $env['TZ'] = ''; + + if (!empty($section_text['ENV'])) { + + foreach(explode("\n", trim($section_text['ENV'])) as $e) { + $e = explode('=', trim($e), 2); + + if (!empty($e[0]) && isset($e[1])) { + $env[$e[0]] = $e[1]; + } + } + } + + // Default ini settings + $ini_settings = array(); + // additional ini overwrites + //$ini_overwrites[] = 'setting=value'; + settings2array($ini_overwrites, $ini_settings); + + // Any special ini settings + // these may overwrite the test defaults... + if (array_key_exists('INI', $section_text)) { + if (strpos($section_text['INI'], '{PWD}') !== false) { + $section_text['INI'] = str_replace('{PWD}', dirname($file), $section_text['INI']); + } + settings2array(preg_split( "/[\n\r]+/", $section_text['INI']), $ini_settings); + } + + // Additional required extensions + if (array_key_exists('EXTENSIONS', $section_text)) { + $ext_dir=`$php -r 'echo ini_get("extension_dir");'`; + $extensions = preg_split("/[\n\r]+/", trim($section_text['EXTENSIONS'])); + $loaded = explode(",", `$php -n -r 'echo join(",", get_loaded_extensions());'`); + foreach ($extensions as $req_ext) { + if (!in_array($req_ext, $loaded)) { + $ini_settings['extension'][] = $ext_dir . DIRECTORY_SEPARATOR . $req_ext . '.' . PHP_SHLIB_SUFFIX; + } + } + } + + settings2params($ini_settings); + + // Check if test should be skipped. + $info = ''; + $warn = false; + + if (array_key_exists('SKIPIF', $section_text)) { + + if (trim($section_text['SKIPIF'])) { + show_file_block('skip', $section_text['SKIPIF']); + save_text($test_skipif, $section_text['SKIPIF'], $temp_skipif); + $extra = substr(PHP_OS, 0, 3) !== "WIN" ? + "unset REQUEST_METHOD; unset QUERY_STRING; unset PATH_TRANSLATED; unset SCRIPT_FILENAME; unset REQUEST_METHOD;": ""; + + if ($leak_check) { + $env['USE_ZEND_ALLOC'] = '0'; + $env['ZEND_DONT_UNLOAD_MODULES'] = 1; + } else { + $env['USE_ZEND_ALLOC'] = '1'; + $env['ZEND_DONT_UNLOAD_MODULES'] = 0; + } + + junit_start_timer($shortname); + + $output = system_with_timeout("$extra $php $pass_options -q $ini_settings -d display_errors=0 \"$test_skipif\"", $env); + + junit_finish_timer($shortname); + + if (!$cfg['keep']['skip']) { + @unlink($test_skipif); + } + + if (!strncasecmp('skip', ltrim($output), 4)) { + + if (preg_match('/^\s*skip\s*(.+)\s*/i', $output, $m)) { + show_result('SKIP', $tested, $tested_file, "reason: $m[1]", $temp_filenames); + } else { + show_result('SKIP', $tested, $tested_file, '', $temp_filenames); + } + + if (isset($old_php)) { + $php = $old_php; + } + + if (!$cfg['keep']['skip']) { + @unlink($test_skipif); + } + + $message = !empty($m[1]) ? $m[1] : ''; + junit_mark_test_as('SKIP', $shortname, $tested, null, ""); + return 'SKIPPED'; + } + + if (!strncasecmp('info', ltrim($output), 4)) { + if (preg_match('/^\s*info\s*(.+)\s*/i', $output, $m)) { + $info = " (info: $m[1])"; + } + } + + if (!strncasecmp('warn', ltrim($output), 4)) { + if (preg_match('/^\s*warn\s*(.+)\s*/i', $output, $m)) { + $warn = true; /* only if there is a reason */ + $info = " (warn: $m[1])"; + } + } + } + } + + if (@count($section_text['REDIRECTTEST']) == 1) { + $test_files = array(); + + $IN_REDIRECT = eval($section_text['REDIRECTTEST']); + $IN_REDIRECT['via'] = "via [$shortname]\n\t"; + $IN_REDIRECT['dir'] = realpath(dirname($file)); + $IN_REDIRECT['prefix'] = trim($section_text['TEST']); + + if (count($IN_REDIRECT['TESTS']) == 1) { + + if (is_array($org_file)) { + $test_files[] = $org_file[1]; + } else { + $GLOBALS['test_files'] = $test_files; + find_files($IN_REDIRECT['TESTS']); + + foreach($GLOBALS['test_files'] as $f) { + $test_files[] = array($f, $file); + } + } + $test_cnt += @count($test_files) - 1; + $test_idx--; + + show_redirect_start($IN_REDIRECT['TESTS'], $tested, $tested_file); + + // set up environment + $redirenv = array_merge($environment, $IN_REDIRECT['ENV']); + $redirenv['REDIR_TEST_DIR'] = realpath($IN_REDIRECT['TESTS']) . DIRECTORY_SEPARATOR; + + usort($test_files, "test_sort"); + run_all_tests($test_files, $redirenv, $tested); + + show_redirect_ends($IN_REDIRECT['TESTS'], $tested, $tested_file); + + // a redirected test never fails + $IN_REDIRECT = false; + + junit_mark_test_as('PASS', $shortname, $tested); + return 'REDIR'; + + } else { + + $bork_info = "Redirect info must contain exactly one TEST string to be used as redirect directory."; + show_result("BORK", $bork_info, '', $temp_filenames); + $PHP_FAILED_TESTS['BORKED'][] = array ( + 'name' => $file, + 'test_name' => '', + 'output' => '', + 'diff' => '', + 'info' => "$bork_info [$file]", + ); + } + } + + if (is_array($org_file) || @count($section_text['REDIRECTTEST']) == 1) { + + if (is_array($org_file)) { + $file = $org_file[0]; + } + + $bork_info = "Redirected test did not contain redirection info"; + show_result("BORK", $bork_info, '', $temp_filenames); + $PHP_FAILED_TESTS['BORKED'][] = array ( + 'name' => $file, + 'test_name' => '', + 'output' => '', + 'diff' => '', + 'info' => "$bork_info [$file]", + ); + + junit_mark_test_as('BORK', $shortname, $tested, null, $bork_info); + + return 'BORKED'; + } + + // We've satisfied the preconditions - run the test! + show_file_block('php', $section_text['FILE'], 'TEST'); + save_text($test_file, $section_text['FILE'], $temp_file); + + if (array_key_exists('GET', $section_text)) { + $query_string = trim($section_text['GET']); + } else { + $query_string = ''; + } + + $env['REDIRECT_STATUS'] = '1'; + $env['QUERY_STRING'] = $query_string; + $env['PATH_TRANSLATED'] = $test_file; + $env['SCRIPT_FILENAME'] = $test_file; + + if (array_key_exists('COOKIE', $section_text)) { + $env['HTTP_COOKIE'] = trim($section_text['COOKIE']); + } else { + $env['HTTP_COOKIE'] = ''; + } + + $args = isset($section_text['ARGS']) ? ' -- ' . $section_text['ARGS'] : ''; + + if (array_key_exists('POST_RAW', $section_text) && !empty($section_text['POST_RAW'])) { + + $post = trim($section_text['POST_RAW']); + $raw_lines = explode("\n", $post); + + $request = ''; + $started = false; + + foreach ($raw_lines as $line) { + + if (empty($env['CONTENT_TYPE']) && preg_match('/^Content-Type:(.*)/i', $line, $res)) { + $env['CONTENT_TYPE'] = trim(str_replace("\r", '', $res[1])); + continue; + } + + if ($started) { + $request .= "\n"; + } + + $started = true; + $request .= $line; + } + + $env['CONTENT_LENGTH'] = strlen($request); + $env['REQUEST_METHOD'] = 'POST'; + + if (empty($request)) { + junit_mark_test_as('BORK', $shortname, $tested, null, 'empty $request'); + return 'BORKED'; + } + + save_text($tmp_post, $request); + $cmd = "$php $pass_options $ini_settings -f \"$test_file\" 2>&1 < \"$tmp_post\""; + + } elseif (array_key_exists('PUT', $section_text) && !empty($section_text['PUT'])) { + + $post = trim($section_text['PUT']); + $raw_lines = explode("\n", $post); + + $request = ''; + $started = false; + + foreach ($raw_lines as $line) { + + if (empty($env['CONTENT_TYPE']) && preg_match('/^Content-Type:(.*)/i', $line, $res)) { + $env['CONTENT_TYPE'] = trim(str_replace("\r", '', $res[1])); + continue; + } + + if ($started) { + $request .= "\n"; + } + + $started = true; + $request .= $line; + } + + $env['CONTENT_LENGTH'] = strlen($request); + $env['REQUEST_METHOD'] = 'PUT'; + + if (empty($request)) { + junit_mark_test_as('BORK', $shortname, $tested, null, 'empty $request'); + return 'BORKED'; + } + + save_text($tmp_post, $request); + $cmd = "$php $pass_options $ini_settings -f \"$test_file\" 2>&1 < \"$tmp_post\""; + + } else if (array_key_exists('POST', $section_text) && !empty($section_text['POST'])) { + + $post = trim($section_text['POST']); + save_text($tmp_post, $post); + $content_length = strlen($post); + + $env['REQUEST_METHOD'] = 'POST'; + $env['CONTENT_TYPE'] = 'application/x-www-form-urlencoded'; + $env['CONTENT_LENGTH'] = $content_length; + + $cmd = "$php $pass_options $ini_settings -f \"$test_file\" 2>&1 < \"$tmp_post\""; + + } else if (array_key_exists('GZIP_POST', $section_text) && !empty($section_text['GZIP_POST'])) { + + $post = trim($section_text['GZIP_POST']); + $post = gzencode($post, 9, FORCE_GZIP); + $env['HTTP_CONTENT_ENCODING'] = 'gzip'; + + save_text($tmp_post, $post); + $content_length = strlen($post); + + $env['REQUEST_METHOD'] = 'POST'; + $env['CONTENT_TYPE'] = 'application/x-www-form-urlencoded'; + $env['CONTENT_LENGTH'] = $content_length; + + $cmd = "$php $pass_options $ini_settings -f \"$test_file\" 2>&1 < \"$tmp_post\""; + + } else if (array_key_exists('DEFLATE_POST', $section_text) && !empty($section_text['DEFLATE_POST'])) { + $post = trim($section_text['DEFLATE_POST']); + $post = gzcompress($post, 9); + $env['HTTP_CONTENT_ENCODING'] = 'deflate'; + save_text($tmp_post, $post); + $content_length = strlen($post); + + $env['REQUEST_METHOD'] = 'POST'; + $env['CONTENT_TYPE'] = 'application/x-www-form-urlencoded'; + $env['CONTENT_LENGTH'] = $content_length; + + $cmd = "$php $pass_options $ini_settings -f \"$test_file\" 2>&1 < \"$tmp_post\""; + + + } else { + + $env['REQUEST_METHOD'] = 'GET'; + $env['CONTENT_TYPE'] = ''; + $env['CONTENT_LENGTH'] = ''; + + $cmd = "$php $pass_options $ini_settings -f \"$test_file\" $args 2>&1"; + } + + if ($leak_check) { + $env['USE_ZEND_ALLOC'] = '0'; + $env['ZEND_DONT_UNLOAD_MODULES'] = 1; + + if ($valgrind_version >= 330) { + /* valgrind 3.3.0+ doesn't have --log-file-exactly option */ + $cmd = "valgrind -q --tool=memcheck --trace-children=yes --log-file=$memcheck_filename $cmd"; + } else { + $cmd = "valgrind -q --tool=memcheck --trace-children=yes --log-file-exactly=$memcheck_filename $cmd"; + } + + } else { + $env['USE_ZEND_ALLOC'] = '1'; + $env['ZEND_DONT_UNLOAD_MODULES'] = 0; + } + + if ($DETAILED) echo " +CONTENT_LENGTH = " . $env['CONTENT_LENGTH'] . " +CONTENT_TYPE = " . $env['CONTENT_TYPE'] . " +PATH_TRANSLATED = " . $env['PATH_TRANSLATED'] . " +QUERY_STRING = " . $env['QUERY_STRING'] . " +REDIRECT_STATUS = " . $env['REDIRECT_STATUS'] . " +REQUEST_METHOD = " . $env['REQUEST_METHOD'] . " +SCRIPT_FILENAME = " . $env['SCRIPT_FILENAME'] . " +HTTP_COOKIE = " . $env['HTTP_COOKIE'] . " +COMMAND $cmd +"; + + junit_start_timer($shortname); + + $out = system_with_timeout($cmd, $env, isset($section_text['STDIN']) ? $section_text['STDIN'] : null); + + junit_finish_timer($shortname); + + if (array_key_exists('CLEAN', $section_text) && (!$no_clean || $cfg['keep']['clean'])) { + + if (trim($section_text['CLEAN'])) { + show_file_block('clean', $section_text['CLEAN']); + save_text($test_clean, trim($section_text['CLEAN']), $temp_clean); + + if (!$no_clean) { + $clean_params = array(); + settings2array($ini_overwrites, $clean_params); + settings2params($clean_params); + $extra = substr(PHP_OS, 0, 3) !== "WIN" ? + "unset REQUEST_METHOD; unset QUERY_STRING; unset PATH_TRANSLATED; unset SCRIPT_FILENAME; unset REQUEST_METHOD;": ""; + system_with_timeout("$extra $php $pass_options -q $clean_params \"$test_clean\"", $env); + } + + if (!$cfg['keep']['clean']) { + @unlink($test_clean); + } + } + } + + @unlink($tmp_post); + + $leaked = false; + $passed = false; + + if ($leak_check) { // leak check + $leaked = filesize($memcheck_filename) > 0; + + if (!$leaked) { + @unlink($memcheck_filename); + } + } + + // Does the output match what is expected? + $output = preg_replace("/\r\n/", "\n", trim($out)); + + /* when using CGI, strip the headers from the output */ + $headers = ""; + + if (isset($old_php) && preg_match("/^(.*?)\r?\n\r?\n(.*)/s", $out, $match)) { + $output = trim($match[2]); + $rh = preg_split("/[\n\r]+/", $match[1]); + $headers = array(); + + foreach ($rh as $line) { + if (strpos($line, ':') !== false) { + $line = explode(':', $line, 2); + $headers[trim($line[0])] = trim($line[1]); + } + } + } + + $failed_headers = false; + + if (isset($section_text['EXPECTHEADERS'])) { + $want = array(); + $wanted_headers = array(); + $lines = preg_split("/[\n\r]+/", $section_text['EXPECTHEADERS']); + + foreach($lines as $line) { + if (strpos($line, ':') !== false) { + $line = explode(':', $line, 2); + $want[trim($line[0])] = trim($line[1]); + $wanted_headers[] = trim($line[0]) . ': ' . trim($line[1]); + } + } + + $org_headers = $headers; + $headers = array(); + $output_headers = array(); + + foreach($want as $k => $v) { + + if (isset($org_headers[$k])) { + $headers = $org_headers[$k]; + $output_headers[] = $k . ': ' . $org_headers[$k]; + } + + if (!isset($org_headers[$k]) || $org_headers[$k] != $v) { + $failed_headers = true; + } + } + + ksort($wanted_headers); + $wanted_headers = join("\n", $wanted_headers); + ksort($output_headers); + $output_headers = join("\n", $output_headers); + } + + show_file_block('out', $output); + + if (isset($section_text['EXPECTF']) || isset($section_text['EXPECTREGEX'])) { + + if (isset($section_text['EXPECTF'])) { + $wanted = trim($section_text['EXPECTF']); + } else { + $wanted = trim($section_text['EXPECTREGEX']); + } + + show_file_block('exp', $wanted); + $wanted_re = preg_replace('/\r\n/', "\n", $wanted); + + if (isset($section_text['EXPECTF'])) { + + // do preg_quote, but miss out any %r delimited sections + $temp = ""; + $r = "%r"; + $startOffset = 0; + $length = strlen($wanted_re); + while($startOffset < $length) { + $start = strpos($wanted_re, $r, $startOffset); + if ($start !== false) { + // we have found a start tag + $end = strpos($wanted_re, $r, $start+2); + if ($end === false) { + // unbalanced tag, ignore it. + $end = $start = $length; + } + } else { + // no more %r sections + $start = $end = $length; + } + // quote a non re portion of the string + $temp = $temp . preg_quote(substr($wanted_re, $startOffset, ($start - $startOffset)), '/'); + // add the re unquoted. + if ($end > $start) { + $temp = $temp . '(' . substr($wanted_re, $start+2, ($end - $start-2)). ')'; + } + $startOffset = $end + 2; + } + $wanted_re = $temp; + + $wanted_re = str_replace( + array('%binary_string_optional%'), + 'string', + $wanted_re + ); + $wanted_re = str_replace( + array('%unicode_string_optional%'), + 'string', + $wanted_re + ); + $wanted_re = str_replace( + array('%unicode\|string%', '%string\|unicode%'), + 'string', + $wanted_re + ); + $wanted_re = str_replace( + array('%u\|b%', '%b\|u%'), + '', + $wanted_re + ); + // Stick to basics + $wanted_re = str_replace('%e', '\\' . DIRECTORY_SEPARATOR, $wanted_re); + $wanted_re = str_replace('%s', '[^\r\n]+', $wanted_re); + $wanted_re = str_replace('%S', '[^\r\n]*', $wanted_re); + $wanted_re = str_replace('%a', '.+', $wanted_re); + $wanted_re = str_replace('%A', '.*', $wanted_re); + $wanted_re = str_replace('%w', '\s*', $wanted_re); + $wanted_re = str_replace('%i', '[+-]?\d+', $wanted_re); + $wanted_re = str_replace('%d', '\d+', $wanted_re); + $wanted_re = str_replace('%x', '[0-9a-fA-F]+', $wanted_re); + $wanted_re = str_replace('%f', '[+-]?\.?\d+\.?\d*(?:[Ee][+-]?\d+)?', $wanted_re); + $wanted_re = str_replace('%c', '.', $wanted_re); + // %f allows two points "-.0.0" but that is the best *simple* expression + } +/* DEBUG YOUR REGEX HERE + var_dump($wanted_re); + print(str_repeat('=', 80) . "\n"); + var_dump($output); +*/ + if (preg_match("/^$wanted_re\$/s", $output)) { + $passed = true; + if (!$cfg['keep']['php']) { + @unlink($test_file); + } + if (isset($old_php)) { + $php = $old_php; + } + + if (!$leaked && !$failed_headers) { + if (isset($section_text['XFAIL'] )) { + $warn = true; + $info = " (warn: XFAIL section but test passes)"; + }else { + show_result("PASS", $tested, $tested_file, '', $temp_filenames); + junit_mark_test_as('PASS', $shortname, $tested); + return 'PASSED'; + } + } + } + + } else { + + $wanted = trim($section_text['EXPECT']); + $wanted = preg_replace('/\r\n/',"\n", $wanted); + show_file_block('exp', $wanted); + + // compare and leave on success + if (!strcmp($output, $wanted)) { + $passed = true; + + if (!$cfg['keep']['php']) { + @unlink($test_file); + } + + if (isset($old_php)) { + $php = $old_php; + } + + if (!$leaked && !$failed_headers) { + if (isset($section_text['XFAIL'] )) { + $warn = true; + $info = " (warn: XFAIL section but test passes)"; + }else { + show_result("PASS", $tested, $tested_file, '', $temp_filenames); + junit_mark_test_as('PASS', $shortname, $tested); + return 'PASSED'; + } + } + } + + $wanted_re = null; + } + + // Test failed so we need to report details. + if ($failed_headers) { + $passed = false; + $wanted = $wanted_headers . "\n--HEADERS--\n" . $wanted; + $output = $output_headers . "\n--HEADERS--\n" . $output; + + if (isset($wanted_re)) { + $wanted_re = preg_quote($wanted_headers . "\n--HEADERS--\n", '/') . $wanted_re; + } + } + + if ($leaked) { + $restype[] = 'LEAK'; + } + + if ($warn) { + $restype[] = 'WARN'; + } + + if (!$passed) { + if (isset($section_text['XFAIL'])) { + $restype[] = 'XFAIL'; + $info = ' XFAIL REASON: ' . rtrim($section_text['XFAIL']); + } else { + $restype[] = 'FAIL'; + } + } + + if (!$passed) { + + // write .exp + if (strpos($log_format, 'E') !== false && file_put_contents($exp_filename, $wanted, FILE_BINARY) === false) { + error("Cannot create expected test output - $exp_filename"); + } + + // write .out + if (strpos($log_format, 'O') !== false && file_put_contents($output_filename, $output, FILE_BINARY) === false) { + error("Cannot create test output - $output_filename"); + } + + // write .diff + $diff = generate_diff($wanted, $wanted_re, $output); + if (is_array($IN_REDIRECT)) { + $diff = "# original source file: $shortname\n" . $diff; + } + show_file_block('diff', $diff); + if (strpos($log_format, 'D') !== false && file_put_contents($diff_filename, $diff, FILE_BINARY) === false) { + error("Cannot create test diff - $diff_filename"); + } + + // write .sh + if (strpos($log_format, 'S') !== false && file_put_contents($sh_filename, "#!/bin/sh + +{$cmd} +", FILE_BINARY) === false) { + error("Cannot create test shell script - $sh_filename"); + } + chmod($sh_filename, 0755); + + // write .log + if (strpos($log_format, 'L') !== false && file_put_contents($log_filename, " +---- EXPECTED OUTPUT +$wanted +---- ACTUAL OUTPUT +$output +---- FAILED +", FILE_BINARY) === false) { + error("Cannot create test log - $log_filename"); + error_report($file, $log_filename, $tested); + } + } + + show_result(implode('&', $restype), $tested, $tested_file, $info, $temp_filenames); + + foreach ($restype as $type) { + $PHP_FAILED_TESTS[$type.'ED'][] = array ( + 'name' => $file, + 'test_name' => (is_array($IN_REDIRECT) ? $IN_REDIRECT['via'] : '') . $tested . " [$tested_file]", + 'output' => $output_filename, + 'diff' => $diff_filename, + 'info' => $info, + ); + } + + if (isset($old_php)) { + $php = $old_php; + } + + $diff = empty($diff) ? '' : "', $diff) . "\n]]>"; + + junit_mark_test_as($restype, str_replace($cwd . '/', '', $tested_file), $tested, null, $info, $diff); + + return $restype[0] . 'ED'; +} + +function comp_line($l1, $l2, $is_reg) +{ + if ($is_reg) { + return preg_match('/^'. $l1 . '$/s', $l2); + } else { + return !strcmp($l1, $l2); + } +} + +function count_array_diff($ar1, $ar2, $is_reg, $w, $idx1, $idx2, $cnt1, $cnt2, $steps) +{ + $equal = 0; + + while ($idx1 < $cnt1 && $idx2 < $cnt2 && comp_line($ar1[$idx1], $ar2[$idx2], $is_reg)) { + $idx1++; + $idx2++; + $equal++; + $steps--; + } + if (--$steps > 0) { + $eq1 = 0; + $st = $steps / 2; + + for ($ofs1 = $idx1 + 1; $ofs1 < $cnt1 && $st-- > 0; $ofs1++) { + $eq = @count_array_diff($ar1, $ar2, $is_reg, $w, $ofs1, $idx2, $cnt1, $cnt2, $st); + + if ($eq > $eq1) { + $eq1 = $eq; + } + } + + $eq2 = 0; + $st = $steps; + + for ($ofs2 = $idx2 + 1; $ofs2 < $cnt2 && $st-- > 0; $ofs2++) { + $eq = @count_array_diff($ar1, $ar2, $is_reg, $w, $idx1, $ofs2, $cnt1, $cnt2, $st); + if ($eq > $eq2) { + $eq2 = $eq; + } + } + + if ($eq1 > $eq2) { + $equal += $eq1; + } else if ($eq2 > 0) { + $equal += $eq2; + } + } + + return $equal; +} + +function generate_array_diff($ar1, $ar2, $is_reg, $w) +{ + $idx1 = 0; $ofs1 = 0; $cnt1 = @count($ar1); + $idx2 = 0; $ofs2 = 0; $cnt2 = @count($ar2); + $diff = array(); + $old1 = array(); + $old2 = array(); + + while ($idx1 < $cnt1 && $idx2 < $cnt2) { + + if (comp_line($ar1[$idx1], $ar2[$idx2], $is_reg)) { + $idx1++; + $idx2++; + continue; + } else { + + $c1 = @count_array_diff($ar1, $ar2, $is_reg, $w, $idx1+1, $idx2, $cnt1, $cnt2, 10); + $c2 = @count_array_diff($ar1, $ar2, $is_reg, $w, $idx1, $idx2+1, $cnt1, $cnt2, 10); + + if ($c1 > $c2) { + $old1[$idx1] = sprintf("%03d- ", $idx1+1) . $w[$idx1++]; + $last = 1; + } else if ($c2 > 0) { + $old2[$idx2] = sprintf("%03d+ ", $idx2+1) . $ar2[$idx2++]; + $last = 2; + } else { + $old1[$idx1] = sprintf("%03d- ", $idx1+1) . $w[$idx1++]; + $old2[$idx2] = sprintf("%03d+ ", $idx2+1) . $ar2[$idx2++]; + } + } + } + + reset($old1); $k1 = key($old1); $l1 = -2; + reset($old2); $k2 = key($old2); $l2 = -2; + + while ($k1 !== null || $k2 !== null) { + + if ($k1 == $l1 + 1 || $k2 === null) { + $l1 = $k1; + $diff[] = current($old1); + $k1 = next($old1) ? key($old1) : null; + } else if ($k2 == $l2 + 1 || $k1 === null) { + $l2 = $k2; + $diff[] = current($old2); + $k2 = next($old2) ? key($old2) : null; + } else if ($k1 < $k2) { + $l1 = $k1; + $diff[] = current($old1); + $k1 = next($old1) ? key($old1) : null; + } else { + $l2 = $k2; + $diff[] = current($old2); + $k2 = next($old2) ? key($old2) : null; + } + } + + while ($idx1 < $cnt1) { + $diff[] = sprintf("%03d- ", $idx1 + 1) . $w[$idx1++]; + } + + while ($idx2 < $cnt2) { + $diff[] = sprintf("%03d+ ", $idx2 + 1) . $ar2[$idx2++]; + } + + return $diff; +} + +function generate_diff($wanted, $wanted_re, $output) +{ + $w = explode("\n", $wanted); + $o = explode("\n", $output); + $r = is_null($wanted_re) ? $w : explode("\n", $wanted_re); + $diff = generate_array_diff($r, $o, !is_null($wanted_re), $w); + + return implode("\r\n", $diff); +} + +function error($message) +{ + echo "ERROR: {$message}\n"; + exit(1); +} + +function settings2array($settings, &$ini_settings) +{ + foreach($settings as $setting) { + + if (strpos($setting, '=') !== false) { + $setting = explode("=", $setting, 2); + $name = trim($setting[0]); + $value = trim($setting[1]); + + if ($name == 'extension') { + + if (!isset($ini_settings[$name])) { + $ini_settings[$name] = array(); + } + + $ini_settings[$name][] = $value; + + } else { + $ini_settings[$name] = $value; + } + } + } +} + +function settings2params(&$ini_settings) +{ + $settings = ''; + + foreach($ini_settings as $name => $value) { + + if (is_array($value)) { + foreach($value as $val) { + $val = addslashes($val); + $settings .= " -d \"$name=$val\""; + } + } else { + if (substr(PHP_OS, 0, 3) == "WIN" && !empty($value) && $value{0} == '"') { + $len = strlen($value); + + if ($value{$len - 1} == '"') { + $value{0} = "'"; + $value{$len - 1} = "'"; + } + } else { + $value = addslashes($value); + } + + $settings .= " -d \"$name=$value\""; + } + } + + $ini_settings = $settings; +} + +function compute_summary() +{ + global $n_total, $test_results, $ignored_by_ext, $sum_results, $percent_results; + + $n_total = count($test_results); + $n_total += $ignored_by_ext; + $sum_results = array( + 'PASSED' => 0, + 'WARNED' => 0, + 'SKIPPED' => 0, + 'FAILED' => 0, + 'BORKED' => 0, + 'LEAKED' => 0, + 'XFAILED' => 0 + ); + + foreach ($test_results as $v) { + $sum_results[$v]++; + } + + $sum_results['SKIPPED'] += $ignored_by_ext; + $percent_results = array(); + + while (list($v, $n) = each($sum_results)) { + $percent_results[$v] = (100.0 * $n) / $n_total; + } +} + +function get_summary($show_ext_summary, $show_html) +{ + global $exts_skipped, $exts_tested, $n_total, $sum_results, $percent_results, $end_time, $start_time, $failed_test_summary, $PHP_FAILED_TESTS, $leak_check; + + $x_total = $n_total - $sum_results['SKIPPED'] - $sum_results['BORKED']; + + if ($x_total) { + $x_warned = (100.0 * $sum_results['WARNED']) / $x_total; + $x_failed = (100.0 * $sum_results['FAILED']) / $x_total; + $x_xfailed = (100.0 * $sum_results['XFAILED']) / $x_total; + $x_leaked = (100.0 * $sum_results['LEAKED']) / $x_total; + $x_passed = (100.0 * $sum_results['PASSED']) / $x_total; + } else { + $x_warned = $x_failed = $x_passed = $x_leaked = $x_xfailed = 0; + } + + $summary = ''; + + if ($show_html) { + $summary .= "
\n";
+	}
+
+	if ($show_ext_summary) {
+		$summary .= '
+=====================================================================
+TEST RESULT SUMMARY
+---------------------------------------------------------------------
+Exts skipped    : ' . sprintf('%4d', $exts_skipped) . '
+Exts tested     : ' . sprintf('%4d', $exts_tested) . '
+---------------------------------------------------------------------
+';
+	}
+
+	$summary .= '
+Number of tests : ' . sprintf('%4d', $n_total) . '          ' . sprintf('%8d', $x_total);
+
+	if ($sum_results['BORKED']) {
+		$summary .= '
+Tests borked    : ' . sprintf('%4d (%5.1f%%)', $sum_results['BORKED'], $percent_results['BORKED']) . ' --------';
+	}
+
+	$summary .= '
+Tests skipped   : ' . sprintf('%4d (%5.1f%%)', $sum_results['SKIPPED'], $percent_results['SKIPPED']) . ' --------
+Tests warned    : ' . sprintf('%4d (%5.1f%%)', $sum_results['WARNED'], $percent_results['WARNED']) . ' ' . sprintf('(%5.1f%%)', $x_warned) . '
+Tests failed    : ' . sprintf('%4d (%5.1f%%)', $sum_results['FAILED'], $percent_results['FAILED']) . ' ' . sprintf('(%5.1f%%)', $x_failed) . '
+Expected fail   : ' . sprintf('%4d (%5.1f%%)', $sum_results['XFAILED'], $percent_results['XFAILED']) . ' ' . sprintf('(%5.1f%%)', $x_xfailed);
+
+	if ($leak_check) {
+		$summary .= '
+Tests leaked    : ' . sprintf('%4d (%5.1f%%)', $sum_results['LEAKED'], $percent_results['LEAKED']) . ' ' . sprintf('(%5.1f%%)', $x_leaked);
+	}
+
+	$summary .= '
+Tests passed    : ' . sprintf('%4d (%5.1f%%)', $sum_results['PASSED'], $percent_results['PASSED']) . ' ' . sprintf('(%5.1f%%)', $x_passed) . '
+---------------------------------------------------------------------
+Time taken      : ' . sprintf('%4d seconds', $end_time - $start_time) . '
+=====================================================================
+';
+	$failed_test_summary = '';
+
+	if (count($PHP_FAILED_TESTS['XFAILED'])) {
+		$failed_test_summary .= '
+=====================================================================
+EXPECTED FAILED TEST SUMMARY
+---------------------------------------------------------------------
+';
+		foreach ($PHP_FAILED_TESTS['XFAILED'] as $failed_test_data) {
+			$failed_test_summary .= $failed_test_data['test_name'] . $failed_test_data['info'] . "\n";
+		}
+		$failed_test_summary .=  "=====================================================================\n";
+	}
+
+	if (count($PHP_FAILED_TESTS['BORKED'])) {
+		$failed_test_summary .= '
+=====================================================================
+BORKED TEST SUMMARY
+---------------------------------------------------------------------
+';
+		foreach ($PHP_FAILED_TESTS['BORKED'] as $failed_test_data) {
+			$failed_test_summary .= $failed_test_data['info'] . "\n";
+		}
+
+		$failed_test_summary .=  "=====================================================================\n";
+	}
+
+	if (count($PHP_FAILED_TESTS['FAILED'])) {
+		$failed_test_summary .= '
+=====================================================================
+FAILED TEST SUMMARY
+---------------------------------------------------------------------
+';
+		foreach ($PHP_FAILED_TESTS['FAILED'] as $failed_test_data) {
+			$failed_test_summary .= $failed_test_data['test_name'] . $failed_test_data['info'] . "\n";
+		}
+		$failed_test_summary .=  "=====================================================================\n";
+	}
+	if (count($PHP_FAILED_TESTS['WARNED'])) {
+		$failed_test_summary .= '
+=====================================================================
+WARNED TEST SUMMARY
+---------------------------------------------------------------------
+';
+		foreach ($PHP_FAILED_TESTS['WARNED'] as $failed_test_data) {
+			$failed_test_summary .= $failed_test_data['test_name'] . $failed_test_data['info'] . "\n";
+		}
+
+		$failed_test_summary .=  "=====================================================================\n";
+	}
+
+	if (count($PHP_FAILED_TESTS['LEAKED'])) {
+		$failed_test_summary .= '
+=====================================================================
+LEAKED TEST SUMMARY
+---------------------------------------------------------------------
+';
+		foreach ($PHP_FAILED_TESTS['LEAKED'] as $failed_test_data) {
+			$failed_test_summary .= $failed_test_data['test_name'] . $failed_test_data['info'] . "\n";
+		}
+
+		$failed_test_summary .=  "=====================================================================\n";
+	}
+
+	if ($failed_test_summary && !getenv('NO_PHPTEST_SUMMARY')) {
+		$summary .= $failed_test_summary;
+	}
+
+	if ($show_html) {
+		$summary .= "
"; + } + + return $summary; +} + +function show_start($start_time) +{ + global $html_output, $html_file; + + if ($html_output) { + fwrite($html_file, "

Time Start: " . date('Y-m-d H:i:s', $start_time) . "

\n"); + fwrite($html_file, "\n"); + } + + echo "TIME START " . date('Y-m-d H:i:s', $start_time) . "\n=====================================================================\n"; +} + +function show_end($end_time) +{ + global $html_output, $html_file; + + if ($html_output) { + fwrite($html_file, "
\n"); + fwrite($html_file, "

Time End: " . date('Y-m-d H:i:s', $end_time) . "

\n"); + } + + echo "=====================================================================\nTIME END " . date('Y-m-d H:i:s', $end_time) . "\n"; +} + +function show_summary() +{ + global $html_output, $html_file; + + if ($html_output) { + fwrite($html_file, "
\n" . get_summary(true, true)); + } + + echo get_summary(true, false); +} + +function show_redirect_start($tests, $tested, $tested_file) +{ + global $html_output, $html_file, $line_length, $SHOW_ONLY_GROUPS; + + if ($html_output) { + fwrite($html_file, "---> $tests ($tested [$tested_file]) begin\n"); + } + + if (!$SHOW_ONLY_GROUPS || in_array('REDIRECT', $SHOW_ONLY_GROUPS)) { + echo "REDIRECT $tests ($tested [$tested_file]) begin\n"; + } else { + // Write over the last line to avoid random trailing chars on next echo + echo str_repeat(" ", $line_length), "\r"; + } +} + +function show_redirect_ends($tests, $tested, $tested_file) +{ + global $html_output, $html_file, $line_length, $SHOW_ONLY_GROUPS; + + if ($html_output) { + fwrite($html_file, "---> $tests ($tested [$tested_file]) done\n"); + } + + if (!$SHOW_ONLY_GROUPS || in_array('REDIRECT', $SHOW_ONLY_GROUPS)) { + echo "REDIRECT $tests ($tested [$tested_file]) done\n"; + } else { + // Write over the last line to avoid random trailing chars on next echo + echo str_repeat(" ", $line_length), "\r"; + } +} + +function show_test($test_idx, $shortname) +{ + global $test_cnt; + global $line_length; + + $str = "TEST $test_idx/$test_cnt [$shortname]\r"; + $line_length = strlen($str); + echo $str; + flush(); +} + +function show_result($result, $tested, $tested_file, $extra = '', $temp_filenames = null) +{ + global $html_output, $html_file, $temp_target, $temp_urlbase, $line_length, $SHOW_ONLY_GROUPS; + + if (!$SHOW_ONLY_GROUPS || in_array($result, $SHOW_ONLY_GROUPS)) { + echo "$result $tested [$tested_file] $extra\n"; + } else { + // Write over the last line to avoid random trailing chars on next echo + echo str_repeat(" ", $line_length), "\r"; + } + + if ($html_output) { + + if (isset($temp_filenames['file']) && file_exists($temp_filenames['file'])) { + $url = str_replace($temp_target, $temp_urlbase, $temp_filenames['file']); + $tested = "$tested"; + } + + if (isset($temp_filenames['skip']) && file_exists($temp_filenames['skip'])) { + + if (empty($extra)) { + $extra = "skipif"; + } + + $url = str_replace($temp_target, $temp_urlbase, $temp_filenames['skip']); + $extra = "$extra"; + + } else if (empty($extra)) { + $extra = " "; + } + + if (isset($temp_filenames['diff']) && file_exists($temp_filenames['diff'])) { + $url = str_replace($temp_target, $temp_urlbase, $temp_filenames['diff']); + $diff = "diff"; + } else { + $diff = " "; + } + + if (isset($temp_filenames['mem']) && file_exists($temp_filenames['mem'])) { + $url = str_replace($temp_target, $temp_urlbase, $temp_filenames['mem']); + $mem = "leaks"; + } else { + $mem = " "; + } + + fwrite($html_file, + "" . + "$result" . + "$tested" . + "$extra" . + "$diff" . + "$mem" . + "\n"); + } +} + +function junit_init() { + // Check whether a junit log is wanted. + $JUNIT = getenv('TEST_PHP_JUNIT'); + if (empty($JUNIT)) { + $JUNIT = FALSE; + } elseif (!$fp = fopen($JUNIT, 'w')) { + error("Failed to open $JUNIT for writing."); + } else { + $JUNIT = array( + 'fp' => $fp, + 'name' => 'php-src', + 'test_total' => 0, + 'test_pass' => 0, + 'test_fail' => 0, + 'test_error' => 0, + 'test_skip' => 0, + 'execution_time'=> 0, + 'suites' => array(), + 'files' => array() + ); + } + + $GLOBALS['JUNIT'] = $JUNIT; +} + +function junit_save_xml() { + global $JUNIT; + if (!junit_enabled()) return; + + $xml = ''. PHP_EOL . + '' . PHP_EOL; + $xml .= junit_get_suite_xml(); + $xml .= ''; + fwrite($JUNIT['fp'], $xml); +} + +function junit_get_suite_xml($suite_name = '') { + global $JUNIT; + + $suite = $suite_name ? $JUNIT['suites'][$suite_name] : $JUNIT; + + $result = sprintf( + '' . PHP_EOL, + $suite['name'], $suite['test_total'], $suite['test_fail'], $suite['test_error'], $suite['test_skip'], + $suite['execution_time'] + ); + + foreach($suite['suites'] as $sub_suite) { + $result .= junit_get_suite_xml($sub_suite['name']); + } + + // Output files only in subsuites + if (!empty($suite_name)) { + foreach($suite['files'] as $file) { + $result .= $JUNIT['files'][$file]['xml']; + } + } + + $result .= '' . PHP_EOL; + + return $result; +} + +function junit_enabled() { + global $JUNIT; + return !empty($JUNIT); +} + +/** + * @param array|string $type + * @param string $file_name + * @param string $test_name + * @param int|string $time + * @param string $message + * @param string $details + * @return void + */ +function junit_mark_test_as($type, $file_name, $test_name, $time = null, $message = '', $details = '') { + global $JUNIT; + if (!junit_enabled()) return; + + $suite = junit_get_suitename_for($file_name); + + junit_suite_record($suite, 'test_total'); + + $time = null !== $time ? $time : junit_get_timer($file_name); + junit_suite_record($suite, 'execution_time', $time); + + $escaped_details = htmlspecialchars($details, ENT_QUOTES, 'UTF-8'); + + $escaped_test_name = basename($file_name) . ' - ' . htmlspecialchars($test_name, ENT_QUOTES); + $JUNIT['files'][$file_name]['xml'] = "\n"; + + if (is_array($type)) { + $output_type = $type[0] . 'ED'; + $temp = array_intersect(array('XFAIL', 'FAIL'), $type); + $type = reset($temp); + } else { + $output_type = $type . 'ED'; + } + + if ('PASS' == $type || 'XFAIL' == $type) { + junit_suite_record($suite, 'test_pass'); + } elseif ('BORK' == $type) { + junit_suite_record($suite, 'test_error'); + $JUNIT['files'][$file_name]['xml'] .= "\n"; + } elseif ('SKIP' == $type) { + junit_suite_record($suite, 'test_skip'); + $JUNIT['files'][$file_name]['xml'] .= "$message\n"; + } elseif('FAIL' == $type) { + junit_suite_record($suite, 'test_fail'); + $JUNIT['files'][$file_name]['xml'] .= "$escaped_details\n"; + } else { + junit_suite_record($suite, 'test_error'); + $JUNIT['files'][$file_name]['xml'] .= "$escaped_details\n"; + } + + $JUNIT['files'][$file_name]['xml'] .= "\n"; + +} + +function junit_suite_record($suite, $param, $value = 1) { + global $JUNIT; + + $JUNIT[$param] += $value; + $JUNIT['suites'][$suite][$param] += $value; +} + +function junit_get_timer($file_name) { + global $JUNIT; + if (!junit_enabled()) return 0; + + if (isset($JUNIT['files'][$file_name]['total'])) { + return number_format($JUNIT['files'][$file_name]['total'], 4); + } + + return 0; +} + +function junit_start_timer($file_name) { + global $JUNIT; + if (!junit_enabled()) return; + + if (!isset($JUNIT['files'][$file_name]['start'])) { + $JUNIT['files'][$file_name]['start'] = microtime(true); + + $suite = junit_get_suitename_for($file_name); + junit_init_suite($suite); + $JUNIT['suites'][$suite]['files'][$file_name] = $file_name; + } +} + +function junit_get_suitename_for($file_name) { + return junit_path_to_classname(dirname($file_name)); +} + +function junit_path_to_classname($file_name) { + global $JUNIT; + return $JUNIT['name'] . '.' . str_replace(DIRECTORY_SEPARATOR, '.', $file_name); +} + +function junit_init_suite($suite_name) { + global $JUNIT; + if (!junit_enabled()) return; + + if (!empty($JUNIT['suites'][$suite_name])) { + return; + } + + $JUNIT['suites'][$suite_name] = array( + 'name' => $suite_name, + 'test_total' => 0, + 'test_pass' => 0, + 'test_fail' => 0, + 'test_error' => 0, + 'test_skip' => 0, + 'suites' => array(), + 'files' => array(), + 'execution_time'=> 0, + ); +} + +function junit_finish_timer($file_name) { + global $JUNIT; + if (!junit_enabled()) return; + + if (!isset($JUNIT['files'][$file_name]['start'])) { + error("Timer for $file_name was not started!"); + } + + if (!isset($JUNIT['files'][$file_name]['total'])) { + $JUNIT['files'][$file_name]['total'] = 0; + } + + $start = $JUNIT['files'][$file_name]['start']; + $JUNIT['files'][$file_name]['total'] += microtime(true) - $start; + unset($JUNIT['files'][$file_name]['start']); +} + +/* + * Local variables: + * tab-width: 4 + * c-basic-offset: 4 + * End: + * vim: noet sw=4 ts=4 + */ +?> diff --git a/coregrade/src/shared_tool/account.cc b/coregrade/src/shared_tool/account.cc new file mode 100644 index 0000000..98fc73f --- /dev/null +++ b/coregrade/src/shared_tool/account.cc @@ -0,0 +1,752 @@ +// Account management toosl +#include "clog.h" +#include "cgi.h" +#include "input.h" +#include "coregrade_api.h" +#include "account.h" +#include "email.h" +#include "safestring.h" +#include +#include "pgsql.h" +#include "pgsql_wrapper.h" +#include "cfg.h" +#include + +#define CREATE_BY_EMAIL 1000 +#define CREATE_BY_PHONE 2000 + +struct MemoryStruct { + char *memory; + size_t size; +}; + + +static size_t +WriteMemoryCallback(void *contents, size_t size, size_t nmemb, void *userp) +{ + size_t realsize = size * nmemb; + struct MemoryStruct *mem = (struct MemoryStruct *)userp; + + mem->memory = (char*)realloc(mem->memory, mem->size + realsize + 1); + if(mem->memory == NULL) { + /* out of memory! */ + logfmt( logINFO, "not enough memory (realloc returned NULL)" ); + return 0; + } + + memcpy(&(mem->memory[mem->size]), contents, realsize); + mem->size += realsize; + mem->memory[mem->size] = 0; + + return realsize; +} + +static const string base64_chars = + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz" + "0123456789+/"; + +static inline bool is_base64(unsigned char c) { + return (isalnum(c) || (c == '+') || (c == '/')); +} + +string base64_decode(string const& encoded_string) { + int in_len = encoded_string.size(); + int i = 0; + int j = 0; + int in_ = 0; + unsigned char char_array_4[4], char_array_3[3]; + std::string ret; + + while (in_len-- && ( encoded_string[in_] != '=') && is_base64(encoded_string[in_])) { + char_array_4[i++] = encoded_string[in_]; in_++; + if (i ==4) { + for (i = 0; i <4; i++) + char_array_4[i] = base64_chars.find(char_array_4[i]); + + char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4); + char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2); + char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; + + for (i = 0; (i < 3); i++) + ret += char_array_3[i]; + i = 0; + } + } + + if (i) { + for (j = i; j <4; j++) + char_array_4[j] = 0; + + for (j = 0; j <4; j++) + char_array_4[j] = base64_chars.find(char_array_4[j]); + + char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4); + char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2); + char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; + + for (j = 0; (j < i - 1); j++) ret += char_array_3[j]; + } + + return ret; +} + + +long account_calls(CVars in, CVars &out) +{ + logfmt( logINFO, "account_calls()" ); + out["result"] = "YES I GET TO BACK END"; + long action = REQ_LONG( in, "action", 0, -1); + switch( action ) + { + case COREGRADE_ACCOUNT_TESTEMAIL: + + break; + + case COREGRADE_ACCOUNT_LOGIN: + return LoginCoreGradeAccount( in, out); + break; + + case COREGRADE_ACCOUNT_PENDING: + return CreateCoreGradeAccountPending(in, out); + break; + + case COREGRADE_ACCOUNT_CREATEACC: + return CreateCoreGradeAccount( in, out); + break; + } + logfmt( logINFO, "/account_calls()" ); + return 0; +} + +/**************************************************************************************************************************/ +long account_session_check(CVars in, CVars out) +{ + logfmt( logINFO, "long account_session_check(CVars in, CVars out)" ); + long ret = PHP_API_BAD_PARAM; + try { + REQ_STRING (in, "sessionid", 4, 40, "(.*)"); + if (load_db_record( out, "SELECT uid FROM members_session WHERE sessionid='%s'", in["sessionid"].c_str())>0) { + if (SessionCheck(out["uid"].Long(), in["sessionid"].c_str(), 0)>0) { + out["status"] = "Session valid"; + ret = PHP_API_OK; + } + } + } catch (bad_parameter) { + out["status"] = "Invalid session ID"; + } + logfmt( logINFO, "/long account_session_check(CVars in, CVars out)" ); + return ret; +} + +/**************************************************************************************************************************/ +long SessionCheck(long uid, const char *sessionid, int create ) +{ + logfmt( logINFO, "long SessionCheck(long uid, const char *sessionid, int create )" ); + // Sanity check + if (uid<1 || sessionid==NULL || strlen(sessionid)<4) { + return -1L; // Invalif parameters + } + // Clean old sessions + pgsql_exec("DELETE FROM members_session WHERE uid=%ld AND updated < (now() - interval '15 minutes')", uid); + // Update/check existing session + if (create==0 && pgsql_exec("UPDATE members_session SET updated=NOW() WHERE uid=%ld AND sessionid='%s'", uid, sessionid)>0) { + return 1L; // Session updated + } + if (create>0) { + // Check session i? + const PGresult *res = pgsql_query("SELECT * FROM members_session WHERE uid=%ld AND sessionid<>'%s'", uid, sessionid); + if (res!=NULL && pgsql_num_rows(res)>0) { + return -2L; // Active sessions found + } + CVars sess; // Do we have the same session already? + if (load_db_record( sess, "SELECT * FROM members_session WHERE uid=%lu AND sessionid='%s'", uid, sessionid)>0) { + pgsql_exec("UPDATE members_session SET updated=NOW() WHERE uid=%ld AND sessionid='%s'", uid, sessionid); + return sess["id"].Long(); + } + // Create a new session + sess["uid"] = uid; sess["uid"].set_valid(true); + sess["sessionid"] = sessionid; sess["sessionid"].set_valid(true); + long sid = insert_db_record( DBS_VALID, "members_session", "members_session_id_seq", sess ); + if (sid>0) { + return sid; // New session created + } + return -3L; // Failed to create new session + } + logfmt( logINFO, "/long SessionCheck(long uid, const char *sessionid, int create )" ); + return 0L; // No route +} + +long LoginCoreGradeAccount( CVars in, CVars &out ) +{ + long ret = PHP_API_BAD_PARAM; + logfmt( logINFO, "LoginCoreGradeAccount()" ); + REQ_STRING (in, "username", 5, 49, "(.*)"); + REQ_STRING (in, "password", 5, 49, "(.*)"); + REQ_STRING (in, "sessionid", 4, 40, "(.*)"); + OPTIONAL( in, "loc" ) REQ_STRING (in, "loc", 3, 15, "(.*)"); + + ret = load_db_record( out, "SELECT *,id AS member_id FROM members WHERE status=1 AND LOWER(username)=LOWER('%s') AND password= md5('%s')", in["username"].c_str(), in["password"].c_str() ); + if (ret) { + if (SessionCheck(out["id"].Long(), in["sessionid"].c_str(), 1)>0) { + out["stauts"] = "OK"; + ret = PHP_API_OK; + } else { + out["status"] = "Session check failed"; + } + } else { + out["status"] = "Invalid username and/or password"; + } + + + logfmt( logINFO, "/LoginCoreGradeAccount()" ); + return ret; +} + +long CreateCoreGradeAccountPending(CVars in, CVars &out) +{ + long ret = PHP_API_BAD_PARAM; + out =in; + + /* + CREATE TABLE members_pending ( + id SERIAL, + username VARCHAR(15) UNIQUE NOT NULL, + firstname VARCHAR(50), + lastname VARCHAR(50), + email VARCHAR(50), + phone VARCHAR(25), + status integer DEFAULT 1, + added timestamp without time zone DEFAULT now(), + verify_link VARCHAR(100), + expire timestamp without time zone DEFAULT now() +'30 days' +); +ALTER TABLE ONLY members_pending + ADD CONSTRAINT members_pending_id_key UNIQUE (id); + */ + REQ_STRING (in, "username", 5, 49, "(.*)"); + REQ_STRING (in, "firstname", 2, 49, "(.*)"); + REQ_STRING (in, "lastname", 2, 49, "(.*)"); + REQ_STRING (in, "email", 5, 49, "(.*)"); + OPTIONAL( in, "phone" ) REQ_STRING (in, "phone", 3, 15, "(.*)"); + OPTIONAL( in, "loc" ) REQ_STRING (in, "loc", 3, 15, "(.*)"); + + int r1,r2,r3; + char verify_link[100]; + srand(time(NULL)); + r1 = abs( rand()*100000000); + srand(time(NULL)); + r2 = abs( rand()*r1); + srand(time(NULL)); + r3 = abs( rand()*r2); + + sprintf( verify_link, "RS-%09lu-%08lu-%08lu", r1, r2, r3 ); + + + CVars x; + x["username"] = in["username"]; x["username"].set_valid( true ); + x["firstname"] = in["firstname"]; x["firstname"].set_valid( true ); + x["lastname"] = in["lastname"]; x["lastname"].set_valid( true ); + x["email"] = in["email"]; x["email"].set_valid( true ); + x["phone"] = in["phone"]; x["phone"].set_valid( true ); + x["loc"] = in["loc"]; x["loc"].set_valid( true ); + x["verify_link"] = verify_link; x["verify_link"].set_valid( true ); + ret = insert_db_record( DBS_VALID, "members_pending", "members_pending_id_seq", x ); + + if ( ret > 0 ) + { out["pending_id"] = ret; out["pending_id"].set_valid( true ); + x["pending_id"] = ret; x["pending_id"].set_valid( true ); + AccountPendingMail(x); + } + + return ret; +} +//****************************************************************************** +long CreateCoreGradeAccount(CVars in, CVars &out) +{ + logfmt( logINFO, "CreateCoreGradeAccount()" ); + long ret = PHP_API_BAD_PARAM; + REQ_STRING (in, "verify_link", 2, 120, "(.*)"); + REQ_STRING (in, "pass1", 3, 15, "(.*)"); + OPTIONAL( in, "loc" ) REQ_STRING (in, "loc", 3, 15, "(.*)"); + try { + long lonkF = load_db_record( out, "SELECT *,id AS pending_id FROM members_pending WHERE verify_link ='%s' AND expire > now() LIMIT 1", in["verify_link"].c_str() ); + if( lonkF ) + { + out["status"] = "prepare to create account"; + CVars x; + x["username"] = out["username"]; x["username"].set_valid( true ); + x["firstname"] = out["firstname"]; x["firstname"].set_valid( true ); + x["lastname"] = out["lastname"]; x["lastname"].set_valid( true ); + x["email"] = out["email"]; x["email"].set_valid( true ); + x["phone"] = out["phone"]; x["phone"].set_valid( true ); + x["loc"] = in["loc"]; x["loc"].set_valid( true ); + x["password"] = "1234567890"; x["password"].set_valid( true ); + + ret = insert_db_record( DBS_VALID, "members", "members_id_seq", x ); + + if ( ret > 0 ) + { out["member_id"] = ret; out["member_id"].set_valid( true ); + x["member_id"] = ret; x["member_id"].set_valid( true ); + pgsql_query("UPDATE members SET password = md5('%s') WHERE id = %lu",in["pass1"].c_str(),ret); + pgsql_query("UPDATE members_pending SET status = 5 WHERE id = %lu",out["pending_id"].Long()); + + AccountPendingMail(x); + } + + + } + + + + + + + + + } catch(bad_parameter) { + out["status"] = "ERROR"; + } + + logfmt( logINFO, "/CreateCoreGradeAccount()" ); + return ret; +} + +//****************************************************************************** + + + + + + + + + +long AddMobileTopuNumber(CVars in, CVars &out) +{ + long ret = -1; + long pin = REQ_LONG( in, "pin", 1, -1 ); + long customer_id = REQ_LONG( in, "customer_id", 1, -1 ); + OPTIONAL( in, "loc" ) REQ_STRING (in, "loc", 3, 15, "(.*)"); + REQ_STRING (in, "seller_number", 10, 11, "(.*)"); + + CVars x; + x["pin"] = in["pin"]; x["pin"].set_valid( true ); + x["customer_id"] = in["customer_id"]; x["customer_id"].set_valid( true ); + x["loc"] = in["loc"]; x["loc"].set_valid( true ); + x["seller_number"] = in["seller_number"]; x["seller_number"].set_valid( true ); + + ret = insert_db_record( DBS_VALID, "mobile_sales_auth", "mobile_sales_auth_id_seq", x ); + + out["status"] = ret; + out["auth_id"] = ret; + + + + return ret; +} + + +//****************************************************************************** +long InitiateAddCustomerBalance(CVars in, CVars &out) +{ + logfmt( logINFO, "AddCustomerBalance()" ); + long ret = PHP_API_BAD_PARAM; + try { + // REQ_LONG( in, "whattodo", 1, -1 ); + + + + } catch(bad_parameter) { + out["status"] = "ERROR"; + } + + logfmt( logINFO, "/AddCustomerBalance()" ); + return ret; +} + +long CompleteAddCustomerBalance(CVars in, CVars &out) +{ + logfmt( logINFO, "AddCustomerBalance()" ); + long ret = PHP_API_BAD_PARAM; + try { + // REQ_LONG( in, "whattodo", 1, -1 ); + + + + } catch(bad_parameter) { + out["status"] = "ERROR"; + } + + logfmt( logINFO, "/AddCustomerBalance()" ); + return ret; +} + +//****************************************************************************** + + + + +//****************************************************************************** + +long VerifyEmailCoreGradeAccount(CVars in, CVars &out) +{ + logfmt( logINFO, "VerifyEmailCoreGradeAccount()" ); + long ret = PHP_API_BAD_PARAM; + try { + long account_id = REQ_LONG( in, "account_id", 1, -1 ); + // ret = load_db_record( out, "SELECT * FROM members WHERE id = %lu", account_id ); + + + } catch(bad_parameter) { + out["status"] = "ERROR"; + } + + logfmt( logINFO, "/VerifyEmailCoreGradeAccount()" ); + return ret; +} +//****************************************************************************** +long VerifyPhoneCoreGradeAccount(CVars in, CVars &out) +{ + logfmt( logINFO, "VerifyPhoneCoreGradeAccount()" ); + long ret = PHP_API_BAD_PARAM; + try { + // REQ_LONG( in, "whattodo", 1, -1 ); + + + + } catch(bad_parameter) { + out["status"] = "ERROR"; + } + + logfmt( logINFO, "/VerifyPhoneCoreGradeAccount()" ); + return ret; +} +//****************************************************************************** +long EditProfileCoreGradeAccount(CVars in, CVars &out) +{ + logfmt( logINFO, "EditProfileCoreGradeAccount()" ); + long ret = PHP_API_BAD_PARAM; + try { + long account_id = REQ_LONG( in, "account_id", 1, -1 ); + REQ_STRING (in, "State", 2, 20, "(.*)"); + REQ_STRING (in, "Zipcode", 3, 15, "(.*)"); + REQ_STRING (in, "Country", 2, 5, "(.*)"); + + + + } catch(bad_parameter) { + out["status"] = "ERROR"; + } + + logfmt( logINFO, "/EditProfileCoreGradeAccount()" ); + return ret; +} +//****************************************************************************** +long LoadProfileCoreGradeAccount(CVars in, CVars &out) +{ + logfmt( logINFO, "LoadProfileCoreGradeAccount()" ); + long ret = PHP_API_BAD_PARAM; + try { + long account_id = REQ_LONG( in, "account_id", 1, -1 ); + const PGresult* res = pgsql_query("SELECT * FROM members WHERE id = %lu",account_id ); + if (res && pgsql_num_rows(res)>0) { } + + } catch(bad_parameter) { + out["status"] = "ERROR"; + } + + logfmt( logINFO, "/LoadProfileCoreGradeAccount()" ); + return ret; +} +//****************************************************************************** +//*****************************************************************************/ +long ETSL_configure(CVars in, CVars &out) +{ + logfmt( logINFO, "long ETSL_configure(CVars in, CVars &out)"); + long ret = PHP_API_BAD_PARAM; + try { + + out["etisalat_endpoint"] = "http://etisalat.service.chiefsoft.com/etisalat_payquic.php"; + + + ret = PHP_API_OK; + + } catch (bad_parameter) { + + out["status"] = "Bad parameter"; + + } catch ( ... ) { + + out["status"] = "Unhandled exception in INTW_configure"; + + } + logfmt( logINFO, "/long ETSL_configure(CVars in, CVars &out)"); + return ret; +} + +long DeliverMobilseEtisalat(CVars in, CVars &out) +{ + logfmt( logINFO, "long INTW_sendBillPaymentAdvice(CVars in, CVars &out)"); + long ret = PHP_API_BAD_PARAM; + try { + int customerId = REQ_LONG( in, "customerid", 1, -1 ); + int paymentItemId = REQ_LONG( in, "paymentitemid", 1, -1 ); + int amount = REQ_LONG( in, "amount", 0, -1 ); + + REQ_STRING( in, "customermobile", 5, 15, "(.*)"); + OPTIONAL (in, "customeremail") REQ_STRING( in, "customeremail", 1, 100, "(.*)"); + OPTIONAL (in, "order_id") REQ_STRING( in, "order_id", 1, 25, "(.*)"); + char CustomerMobile[15]; + char CustomerEmail[100]; + + + + + + sprintf( CustomerEmail, "%s", in["customeremail"].c_str() ); + sprintf( CustomerMobile, "%s", in["customermobile"].c_str() ); + + + //topalert = "sales@payquic.com"; + out["topalert"] = CfgReadChar("transnotif.topalert"); + sprintf( CustomerEmail, "%s", out["topalert"].c_str() ); + + + CVars customer; // Load customer + ret = load_db_record( customer, "SELECT email,firstname,lastname FROM customer WHERE status=1 AND id = %lu", customerId ); + if (ret<1L) { + throw new bad_parameter(out, "customerid"); + } + + CVars paymentitem; // Load payment item + ret = load_db_record( paymentitem, "SELECT id,billerid,billername,name,amount,paymentcode FROM interswitch_biller_payment_items WHERE gid = %lu", paymentItemId); + if (ret<1L) { + out["advice"] = "PaymentID not found or not valid !!!"; + throw new bad_parameter(out, "paymentitemid"); + } + + // Check amount + if (amount<1L) { + amount = paymentitem["amount"].Long(); + } + + + + + + + // Create record + CVars advice; + + advice["customerid"] = customerId; advice["customerid"].set_valid(true); + advice["billerid"] = paymentitem["billerid"]; advice["billerid"].set_valid(true); + advice["billerpaymentitemgid"] = paymentItemId; advice["billerpaymentitemgid"].set_valid(true); + advice["amount"] = amount; advice["amount"].set_valid(true); + advice["paymentcode"] = paymentitem["paymentcode"]; advice["paymentcode"].set_valid(true); + advice["order_id"] = in["order_id"]; advice["order_id"].set_valid(true); + advice["customeremail"] = in["customeremail"]; advice["customeremail"].set_valid(true); + advice["customermobile"] = in["customermobile"]; advice["customermobile"].set_valid(true); + + out["bill_payment_advice_id"] = insert_db_record( DBS_VALID, "interswitch_bill_payment_advice", "interswitch_bill_payment_advice_id_seq", advice ); + if (out["bill_payment_advice_id"].Long()<1L) { + //throw new runtime_error("Failed to create interswitch bill payment advice record"); + return PHP_API_BAD_PARAM; + } + + // Initiate interswitch session + CVars setup; + ETSL_configure(in, setup); + + + + CVars transaction; + + + + transaction["detail_id"] = out["bill_payment_advice_id"]; transaction["detail_id"].set_valid(true); + transaction["type"] = 1L; /* SendBillPaymentAdvice */ transaction["type"].set_valid(true); + out["transaction_id"] = insert_db_record( DBS_VALID, "interswitch_transaction", "interswitch_transaction_id_seq", transaction ); + if (out["transaction_id"].Long()<1L) { + // throw new runtime_error("Failed to create interswitch transaction record"); + return PHP_API_BAD_PARAM; + } + + + char uniqueRef[20]; + memset(uniqueRef, 0, 20); + // TransferCode - RequestReference - UniqueRef => request prefix for terminal owner + ID + sprintf( uniqueRef, "ETSL%08lu", out["transaction_id"].Long() ); + //sprintf( uniqueRef, "%s%09s", setup["interswitch_pfix"].c_str(), out["transaction_id"].c_str() ); + transaction["transfer_code"] = uniqueRef; transaction["transfer_code"].set_valid(true); + + CVars cxc; + cxc["transfer_code"] = transaction["transfer_code"]; + cxc["transfer_code"].set_valid(true); + update_db_record( DBS_VALID, "interswitch_transaction", cxc, out["transaction_id"].Long()); + logfmt( logINFO, "Here -> 1"); + logfmt( logINFO, "SENDING TRANSACTION - setup[interswitch_tid].c_str() ->%s",setup["interswitch_tid"].c_str()); + // Prepare call + const int statusSize = 1024; + char status[statusSize]; + char transactionRef[statusSize]; + memset(status, 0, statusSize); // Clear? + memset(transactionRef, 0, statusSize); // Clear? + + char xtid[12]; + + sprintf( xtid, "%s", setup["interswitch_tid"].c_str() ); + + logfmt( logINFO, "SENDING PAQUIC ETISALAT TRANSACTION->%s",xtid); + out["ResponseCode"] = "99999"; + long ret1 = GateDeliverMobilseEtisalat(in,out); + + if ( out["statusCode"].Long() == 0 && out["errorCode"].Long() == 0 ) + { + ret = 90000L; + //'message' => '00Successful Transaction 03050557550744730305055755074473' + + try + { + CVars txt; + txt["responsecode"] = "90000"; txt["responsecode"].set_valid(true); + txt["transactionref"] = out["errorDescription"]; txt["transactionref"].set_valid(true); + update_db_record( DBS_VALID, "interswitch_transaction", txt, out["transaction_id"].Long()); + } + catch ( ... ) { out["status"] = "I see no good response from interswitch"; } + + CVars fr0; + fr0["status"] = "5"; fr0["status"].set_valid(true); + update_db_record( DBS_VALID, "interswitch_bill_payment_advice", fr0, out["bill_payment_advice_id"].Long()); + + } + else + { + + try + { + CVars txt0; + txt0["responsecode"] = "99999"; txt0["responsecode"].set_valid(true); + txt0["transactionref"] = out["errorDescription"]; txt0["transactionref"].set_valid(true); + update_db_record( DBS_VALID, "interswitch_transaction", txt0, out["transaction_id"].Long()); + } + catch ( ... ) { out["status"] = "I see no good response from interswitch"; } + + CVars fr1; + fr1["status"] = "7"; fr1["status"].set_valid(true); + update_db_record( DBS_VALID, "interswitch_bill_payment_advice", fr1, out["bill_payment_advice_id"].Long()); + } + + out["statusCode"].set_valid( true ); + + + } catch (bad_parameter) { + out["status"] = "Incorrect parameter"; + ret = PHP_API_BAD_PARAM; + } catch ( ... ) { + out["status"] = "Unhandled exception in INTW_sendBillPaymentAdvice"; + } + logfmt( logINFO, "/long INTW_sendBillPaymentAdvice(CVars in, CVars &out)"); + return ret; + + + +} + +long GateDeliverMobilseEtisalat(CVars in, CVars &out) +{ + logfmt( logINFO, "long DeliverMobilseEtisalat(CVars in, CVars &out)" ); + long ret = PHP_API_BAD_PARAM; + + CURL *curl; + CURLcode res; + + struct MemoryStruct chunk; + + chunk.memory = (char*)malloc(1); /* will be grown as needed by the realloc above */ + chunk.size = 0; /* no data at this point */ + + curl_global_init(CURL_GLOBAL_ALL); + + /* get a curl handle */ + curl = curl_easy_init(); + + if(curl) { + // Prepare data + string data = ""; + CVars::iterator i; + int j = 0; // Will limit to 200 variables + for ( i =in.begin(); i != in.end() && j<200 ; i++ ) { + logfmt( logINFO, "IN: %s=%s", i->first.c_str(), i->second.c_str() ); + if (j>0) { + data += "&"; + } + data += i->first.c_str(); + data += "="; + data += i->second.c_str(); + j++; + } + logfmt( logINFO, "DATA: %s", data.c_str()); + curl_easy_setopt(curl, CURLOPT_URL, "http://etisalat.service.chiefsoft.com/etisalat_payquic.php"); + curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data.c_str()); + curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteMemoryCallback); + curl_easy_setopt(curl, CURLOPT_WRITEDATA, (void *)&chunk); + res = curl_easy_perform(curl); + if(res != CURLE_OK) { + // Error + out["status"] = curl_easy_strerror(res); + logfmt( logINFO, "ERROR: %s", out["status"].c_str()); + ret = PHP_API_BAD_PARAM; + } else { + logfmt( logINFO, "%lu bytes retrieved\n", (long)chunk.size); + data = (const char *)chunk.memory; + istringstream buffer(data); + string temp, key, val; size_t found; + while (std::getline(buffer, temp)) { + logfmt( logINFO, "line: %s", temp.c_str()); + found = temp.find_first_of("="); + key = temp.substr(0, found); + val = temp.substr(found+1); + out[key] = base64_decode(val); + logfmt( logINFO, "'%s' => '%s'", key.c_str(), out[key].c_str() ); + } + ret = PHP_API_OK; + } + curl_easy_cleanup(curl); + + if(chunk.memory) { + free(chunk.memory); + } + } + curl_global_cleanup(); + logfmt( logINFO, "/long DeliverMobilseEtisalat(CVars in, CVars &out)" ); + return ret; +} + +/* +void TeleSignAddJob(const char *CustomerId, const char *AutheticationId, const char *CountryCode, const char *PhoneNumber, const char *PIN) { + // I make sure that headerlist is erased before rebuilding it with the soap function + curl_slist_free_all(headerlist); + headerlist = curl_slist_append(headerlist, "Host: www.telesign.com"); + headerlist = curl_slist_append(headerlist, "Content-Type: text/xml"); + headerlist = curl_slist_append(headerlist, "SOAPAction: \"https://www.telesign.com/api/RequestCALL\""); + sprintf(TeleSignSoapReq, "\ +\ + \ + \ + %s\ + %s\ + %s\ + %s\ + %s\ + 1\ + \ +\ +", CustomerId, AutheticationId, CountryCode, PhoneNumber, PIN); + //FILE_LOG(logINFO) << TeleSignSoapReq; + curl_easy_setopt(ch, CURLOPT_POSTFIELDS, TeleSignSoapReq); + curl_easy_setopt(ch, CURLOPT_HTTPHEADER, headerlist); + curl_easy_perform(ch); +} +*/ diff --git a/coregrade/src/shared_tool/coregrade_api_main.cc b/coregrade/src/shared_tool/coregrade_api_main.cc new file mode 100644 index 0000000..1440a85 --- /dev/null +++ b/coregrade/src/shared_tool/coregrade_api_main.cc @@ -0,0 +1,925 @@ +#include "coregrade_api_main.h" +#include "coregrade_api.h" +#include "clog.h" +#include "input.h" +#include "interswitch_sendmoney.h" +#include "pgsql.h" +#include "email.h" +#include "account.h" +#include "groups.h" +#include "topups.h" +#include "storeface.h" +#include "pgsql_wrapper.h" + +//extern CSQL *sql; + +long coregrade_api_main(CVars in, CVars &out) +{ + logfmt( logINFO, "SystemStatus()09-09-********~************"); + + // SystemStatus(); + CVars recipient; + CVars cust; + CVars xx; + + long maxAirtime = 0; + int r; + char ptid[180]; + char xtid[12]; + //int channel_code = 3; + + + logfmt( logINFO, "long coregrade_api_main(CVars in, CVars &out)"); + long retval = PHP_API_BAD_PARAM; + long action = REQ_LONG( in, "action", 0, -1); + + if ( action >= COREGRADE_ACCOUNT_START && action <= COREGRADE_ACCOUNT_END ) + { + logfmt( logINFO, "account calls"); + return account_calls(in, out); + } + + if ( action >= COREGRADE_GROUP_START && action <= COREGRADE_GROUP_END ) + { + logfmt( logINFO, "groups calls"); + return groups_calls(in, out); + } + + switch (action) { + + default: out["status"] = "Unknown action"; + } + + + + + switch( action ) + { + case COREGRADE_LOG_ENTRY: + out = in; + insert_db_record(DBS_VALID,"raw_message","raw_message_id_seq",in); + break; + + case COREGRADE_SESSION_CHECK: + retval = account_session_check(in, out); + break; + + case 1000000055: + //bonus_balance.mailfile + return CustomerBalanceBonusEmail( in ); + break; + + case COREGRADE_ADD_MOBILE_TOPUPNUM: + return AddMobileTopuNumber(in, out); + break; + + case COREGRADE_PROMO_CALL: + REQ_LONG( in, "pmode", 1, -1 ); + REQ_LONG( in, "customer_id", 1, -1 ); + REQ_LONG( in, "pro_id", 1, -1 ); + + if ( load_db_record( out, "SELECT p.id,c.email,c.firstname,c.lastname FROM promotion p LEFT JOIN customer c ON c.id=p.customer_id WHERE p.promo%lu IS NULL AND p.id=%lu",in["pmode"].Long(), in["pro_id"].Long() ) ) + { + out["pmode"] = in["pmode"]; out["pmode"].set_valid(true); + pgsql_exec( "UPDATE promotion SET promo%lu = now() WHERE id = %lu ",out["pmode"].Long(),in["pro_id"].Long()); + + SendPromoEmail(out); + out["status"] ="I passed this point"; + } + + break; + + + + case COREGRADE_PAYPAL_IPNMSG: + /* +CREATE TABLE ipn_message ( + id serial NOT NULL, + payment_date TIMESTAMP, + mc_currency character varying(5) , + last_name character varying(100) , + first_name character varying(100), + payer_email character varying(100), + receiver_email character varying(100), + payer_id character varying(50), + receiver_id character varying(50), + txn_id character varying(50), + item_number character varying(25), + item_name character varying(100), + payment_gross float, + mc_gross float, + ipn_track_id character varying(100), + status integer DEFAULT 1, + added TIMESTAMP DEFAULT NOW() +); +*/ + out["ipn_id"] = "0"; + + if ( load_db_record( out, "SELECT id AS ipn_id FROM ipn_message WHERE txn_id = '%s'",in["txn_id"].c_str() ) ) + { + out["status"] ="I passed this point"; + } + else + { + + } + + if ( out["ipn_id"].Long() == 0 ) + { + xx["payment_date"] =in["payment_date"]; xx["payment_date"].set_valid(true); + xx["mc_currency"] =in["mc_currency"]; xx["mc_currency"].set_valid(true); + xx["last_name"] =in["last_name"]; xx["last_name"].set_valid(true); + xx["first_name"] =in["first_name"]; xx["first_name"].set_valid(true); + xx["payer_email"] =in["payer_email"]; xx["payer_email"].set_valid(true); + xx["receiver_email"] =in["receiver_email"]; xx["receiver_email"].set_valid(true); + xx["payer_id"] =in["payer_id"]; xx["payer_id"].set_valid(true); + xx["receiver_id"] =in["receiver_id"]; xx["receiver_id"].set_valid(true); + xx["txn_id"] =in["txn_id"]; xx["txn_id"].set_valid(true); + xx["item_number"] =in["item_number"]; xx["item_number"].set_valid(true); + xx["item_name"] =in["item_name"]; xx["item_name"].set_valid(true); + xx["payment_gross"] =in["payment_gross"]; xx["payment_gross"].set_valid(true); + xx["mc_gross"] =in["mc_gross"]; xx["mc_gross"].set_valid(true); + xx["ipn_track_id"] =in["ipn_track_id"]; xx["ipn_track_id"].set_valid(true); + insert_db_record(DBS_VALID,"ipn_message","ipn_message_id_seq",xx); + } + + + return 0; + + break; + + case COREGRADE_COMPLETE_ADDMONEY: + REQ_LONG( in, "request_id", 1, -1 ); + REQ_LONG( in, "customer_id", 1, -1 ); + REQ_LONG( in, "csr_id2", 1, -1 ); + REQ_LONG( in, "status", 1, -1 ); + REQ_STRING( in, "ip2", 1, 20, "(.*)"); + + if ( in["status"] == APPROVED_BALANCE ) + { + + if ( load_db_record( out, " SELECT c.*,c.amount AS prop_amount,cc.balance AS curr_balance FROM customer_addbalance c LEFT JOIN customer cc ON cc.id=c.customer_id WHERE c.status = 1 AND c.id = %lu AND c.customer_id = %lu",in["request_id"].Long(),in["customer_id"].Long() ) ) + { + pgsql_exec( "UPDATE customer SET balance = balance + %lu WHERE id = %lu ",out["prop_amount"].Long(),out["customer_id"].Long()); + load_db_record( out, "SELECT balance AS fin_balance FROM customer WHERE id=%lu",out["customer_id"].Long() ) ; + pgsql_exec( "UPDATE customer_addbalance SET status=%d,completed= now(),ip2='%s',csr_id2=%lu,cur_balance =%lu,fin_balance= %lu WHERE id = %lu ",APPROVED_BALANCE, in["ip2"].c_str(),in["csr_id2"].Long(),out["curr_balance"].Long(),out["fin_balance"].Long(),in["request_id"].Long()); + out["result"] ="Completed"; + SendBalanceCompleteAlert(in); + } + else{ + out["result"] ="Invalid call for approval"; + } + + + } + + if ( in["status"] == DISAPROVE_BALANCE ) + { + + + } + + /* + $inx["request_id"] = $request_id; + $inx["customer_id"] = $customer_id; + $inx["csr_id2"] = $csr_id2; + $inx["status"] = APPROVED_BALANCE; + $inx["action"] = COREGRADE_COMPLETE_ADDMONEY; + */ + break; + + case COREGRADE_START_ADDMONEY: + + REQ_LONG( in, "customer_id", 1, -1 ); + REQ_LONG( in, "csr_id", 1, -1 ); + REQ_LONG( in, "amount", 1, -1 ); + REQ_STRING( in, "ip", 1, 20, "(.*)"); + + xx["customer_id"] =in["customer_id"]; xx["customer_id"].set_valid(true); + xx["csr_id"] =in["csr_id"]; xx["csr_id"].set_valid(true); + xx["amount"] =in["amount"]; xx["amount"].set_valid(true); + xx["ip"] =in["ip"]; xx["ip"].set_valid(true); + out["request_id"] = insert_db_record( DBS_VALID, "customer_addbalance", "customer_addbalance_id_seq", xx ); + if ( out["request_id"].Long() > 0 ) + { + in["request_id"] = out["request_id"]; in["request_id"].set_valid( true ); + SendBalanceRequestAlert(in); + } + + break; + + + + case COREGRADE_COMPLETE_PASSWORDRESET: + REQ_STRING( in, "reset_link", 1, 100, "(.*)"); + REQ_STRING( in, "newpass", 1, 20, "(.*)"); + if ( load_db_record( out, "SELECT l.id AS lostpass_id,c.firstname,c.lastname,c.email,l.customer_id,c.username FROM lostpass l LEFT JOIN customer c ON c.id = l.customer_id WHERE l.reset_link = '%s' AND l.status IN (1,3)",in["reset_link"].c_str() ) ) + { + pgsql_exec( "UPDATE lostpass SET status = 5 WHERE status IN (1,3) AND customer_id=%lu AND id = %lu ",out["customer_id"].Long(),out["lostpass_id"].Long()); + + pgsql_exec( "UPDATE customer SET pass =md5('%s') WHERE id = %lu ",in["newpass"].c_str(),out["customer_id"].Long()); +//complete_losspass.mailfile +CompletePassResetEmail(out); + } + else + { + out["status_message"] = "Pass Reset Failed"; + } + + break; + + case COREGRADE_START_PASSWORDRESET: + REQ_STRING( in, "email", 1, 100, "(.*)"); + if ( load_db_record( out, "SELECT id as customer_id,* FROM customer WHERE LOWER(email)=LOWER('%s') AND status=1",in["email"].c_str() ) ) + { + xx["customer_id"] = out["id"]; xx["customer_id"].set_valid(true); + srand(time(NULL)); + r = abs( rand()*100000000); + sprintf( ptid, "RS-%09lu-%08lu", out["id"].Long(), r ); + xx["reset_link"] =ptid; xx["reset_link"].set_valid(true); + xx["loc"] = in["loc"]; xx["loc"].set_valid(true); + out["reset_id"] = insert_db_record( DBS_VALID, "lostpass", "lostpass_id_seq", xx ); + if ( out["reset_id"].Long() > 0 ) + { + pgsql_exec( "UPDATE lostpass SET status = 777 WHERE status IN (1,2,3) AND customer_id=%lu AND id <> %lu ",out["customer_id"].Long(),out["reset_id"].Long()); + + pgsql_exec( "UPDATE lostpass SET expire = now() + '15 minutes' WHERE id=%lu ",out["reset_id"].Long()); + StartPassResetEmail(out); + } + } + break; + + case COREGRADE_BULKTOPUP_ORDER: + return CreateBulkTopupBatch(in, out); + break; + + case COREGRADE_BULKTOPUP_ITEM: + return AddBulkTopupBatchItem(in, out); + break; + + case COREGRADE_BULKTOPUP_ITEMUPDATE: + return UpdateBulkTopupItem(in, out); + break; + + case COREGRADE_BULKTOPUP_DELIVER: + return DeliverBulkTopupItem(in, out); + break; + + case COREGRADE_CREATE_USER_ACCOUNT: + + out=in; + REQ_STRING( in, "firstname", 1, 50, "(.*)"); + REQ_STRING( in, "lastname", 1, 50, "(.*)"); + REQ_STRING( in, "email", 1, 100, "(.*)"); + REQ_STRING( in, "pass", 5, 12, "(.*)"); + REQ_STRING( in, "username", 1, 100, "(.*)"); + + OPTIONAL( in, "country" ) + REQ_STRING( in, "country", 1, 4, "(.*)" ); + + + cust["firstname"] = in["firstname"]; cust["firstname"].set_valid(true); + cust["lastname"] = in["lastname"]; cust["lastname"].set_valid(true); + cust["email"] = in["email"]; cust["email"].set_valid(true); + cust["pass"] = in["pass"]; cust["pass"].set_valid(true); + cust["username"] = in["username"]; cust["username"].set_valid(true); + cust["country"] = in["country"]; cust["country"].set_valid(true); + + + out["user_id"] = insert_db_record( DBS_VALID, "customer", "customer_id_seq", cust ); + if (out["user_id"].Long() > 0 ) + { + pgsql_exec( "UPDATE customer SET pass=md5('%s') WHERE id=%lu AND username='%s'",cust["pass"].c_str(),out["user_id"].Long(),cust["username"].c_str()); + SendAccountCreateAlert(out["user_id"].Long()); + CustomerEmailWelcome(out); + } + + break; + + + //#define COREGRADE_BALANCE_TOPUP_ORDER 800020 + //#define COREGRADE_BALANCE_TOPUP_PURCHASE 800030 + case COREGRADE_BALANCE_TOPUP_PAYMENT: + REQ_STRING( in, "orderid", 1, 50, "(.*)"); + // this is used to send email about payment only + return CustomerAirSalePayment(in); + break; + + + case COREGRADE_BALANCE_TOPUP_ORDER: + REQ_LONG( in, "amount", 1, -1 ); + REQ_LONG( in, "customer_id", 1, -1 ); + + // CustomerAirSalePayment(in); + + + /* + CREATE TABLE trans_balance_topup ( + id serial NOT NULL, + customer_id INT NOT NULL references customer(id), + orderid character varying(25) NOT NULL, + description VARCHAR(100), + amount INT DEFAULT 0, + txnref character varying(25), + payref character varying(200), + retref character varying(50), + status integer DEFAULT 1, + added timestamp without time zone DEFAULT now(), + recipient_id INT NOT NULL references customer(id), + completed timestamp without time zone DEFAULT NULL, + appramt integer DEFAULT 0, + rspcode character varying(10) + ); + + */ + srand(time(NULL)); + r = abs( rand()*100000000); + out["orderid"] =""; + cust["customer_id"] = in["customer_id"]; cust["customer_id"].set_valid(true); + cust["amount"] = in["amount"]; cust["amount"].set_valid(true); + cust["orderid"] = r; cust["orderid"].set_valid(true); + cust["recipient_id"] = in["customer_id"]; cust["recipient_id"].set_valid(true); + out["order_id"] = insert_db_record( DBS_VALID, "trans_balance_topup", "trans_balance_topup_id_seq", cust ); + if (out["order_id"].Long() > 0 ) + { + sprintf( xtid, "7%08lu", out["order_id"].Long() ); + xx["orderid"] = xtid; + pgsql_exec( "UPDATE trans_balance_topup SET orderid ='%s',recipient_id=%lu WHERE id=%lu AND customer_id = %lu ",xtid,in["customer_id"].Long(),out["order_id"].Long(),in["customer_id"].Long()); + out["orderid"] = xtid; + } + else + { + out["orderid"] = ""; + } + + out["balanceorderid"] = xtid; //"AMEYE000000011"; + break; + + case COREGRADE_BALANCE_TOPUP_PURCHASE: + REQ_STRING( in, "orderid", 1, 50, "(.*)"); + + if ( load_db_record( out, "SELECT id AS trans_not_id, * FROM trans_balance_topup WHERE orderid='%s' AND resp='00' AND completed IS NULL",in["orderid"].c_str() ) ) + { + + if ( out["amount"].Long()*100 == out["appramt"].Long() ) + { + in["customer_id"] = out["customer_id"]; in["customer_id"].set_valid(true); + // find customer + if ( load_db_record( out, "SELECT balance FROM customer WHERE id = %lu ",in["customer_id"].Long() ) ) + { + + /* + + CREATE TABLE balance_topup ( + id serial NOT NULL, + customer_id INT NOT NULL references customer(id), + orderid character varying(25) NOT NULL, + amount INT DEFAULT 0, + curr_balance INT DEFAULT 0, + final_balance INT DEFAULT 0, + status integer DEFAULT 1, + added timestamp without time zone DEFAULT now(), + completed timestamp without time zone DEFAULT NULL + ); + + + */ + + + xx["orderid"] = in["orderid"]; xx["orderid"].set_valid(true); + xx["customer_id"] = out["customer_id"]; xx["customer_id"].set_valid(true); + xx["curr_balance"] = out["balance"]; xx["curr_balance"].set_valid(true); + xx["amount"] = out["appramt"]; xx["amount"].set_valid(true); + out["topup_id"] = insert_db_record( DBS_VALID, "balance_topup", "balance_topup_id_seq", xx ); + //-------------------------------------------------- + pgsql_exec( "UPDATE customer SET balance = balance + %lu WHERE id=%lu ",out["appramt"].Long(),in["customer_id"].Long()); + //-------------------------------------------------- + load_db_record( out, "SELECT balance AS final_balance FROM customer WHERE id = %lu ",in["customer_id"].Long() ); + pgsql_exec( "UPDATE balance_topup SET final_balance = %lu, completed = now() WHERE id=%lu ",out["final_balance"].Long(),out["topup_id"].Long()); + pgsql_exec( "UPDATE trans_balance_topup SET completed = now() WHERE id=%lu ",out["trans_not_id"].Long()); + out["status"] = "Completed"; + BalanceUpdateAlert( in); + CustomerBalanceEmail( in); + + } + else + { + out["status"] = "Error Processing request, customer not found"; + } + } + else + { // amount error + out["status"] = "Error Processing request, amount error"; + } + + + + } + else + { + out["status"] = "Unable to process or the order was completed"; + } + + + // out["status"] = "Yes we get this in backend"; + + // BalanceUpdateAlert(out); // contains everythinng + break; + + case COREGRADE_TOPUP_ORDER_PURCHASE: + out=in; + + REQ_LONG( in, "pmode", 1, -1 ); + REQ_LONG( in, "paymentitemid", 1, -1 ); + REQ_STRING( in, "orderid", 1, 50, "(.*)"); + REQ_LONG( in, "payment_code", 1, -1 ); + + if ( in["pmode"].Long() == PAY_MODE_BALANCE ) // paying with balance + { + REQ_LONG( in, "customer_id", 1, -1 ); + } + + out["route_id"] = "0"; + out["route_etisalat"] = "0"; + if( load_db_record( out,"SELECT id AS route_id FROM airtime_route WHERE payment_code ='%s'",in["payment_code"].c_str() ) ) + { + out["route_etisalat"] = "1"; + }else{ } + + + + out["status"] = ""; + out["status_code"] = ""; + + if ( load_db_record( out, "SELECT gid AS paymentitemid FROM interswitch_biller_payment_items WHERE paymentcode = '%lu'",in["payment_code"].Long() ) ) + { + in["paymentitemid"] = out["paymentitemid"]; + in["paymentitemid"].set_valid( true ); + } + + + + + // ret = load_db_record( paymentitem, "SELECT id,billerid,billername,name,amount,paymentcode FROM interswitch_biller_payment_items WHERE gid = %lu", paymentItemId); + + if ( load_db_record( out, "SELECT id AS trans_not_id, * FROM trans_notification WHERE orderid='%s' AND customer_id = %lu AND completed IS NULL",in["orderid"].c_str(),in["customer_id"].Long() ) ) + { + in["amount"] = out["amount"].Long()*100; + in["amount"].set_valid( true ); + + in["customermobile"] = out["recipient_no"]; + in["customermobile"].set_valid( true ); + in["order_id"] =in["orderid"]; in["order_id"].set_valid( true ); + + REQ_LONG( in, "amount", 1, -1 ); + load_db_record( out, "SELECT value AS max_topup FROM global_settings WHERE name = 'MAXIMUM_TOPUP_KOGO'"); + maxAirtime = out["max_topup"].Long(); + if ( maxAirtime>=in["amount"].Long() ) + { + + if ( in["pmode"].Long() == PAY_MODE_BONUS ) // paying with balance + { + if ( load_db_record( out, "SELECT * FROM customer WHERE id = %lu AND bonus_pend = 1",in["customer_id"].Long() ) ) + { + + //-------------------------------------------------- + pgsql_exec( "UPDATE customer SET bonus_pend=3 WHERE id=%lu ",in["customer_id"].Long()); + //-------------------------------------------------- + // retval = INTW_sendBillPaymentAdvice( in, out ); + if ( out["route_etisalat"].Long() > 0 && out["route_id"].Long() > 0 ) + { + retval = DeliverMobilseEtisalat( in, out ); + out["ResponseCode"] = retval; + } + else + { + retval = INTW_sendBillPaymentAdvice( in, out ); + } + + if (out["ResponseCode"].Long() == 90000L) { + out["status"] = "Completed"; + out["status_code"] = "A0001"; + pgsql_exec( "UPDATE trans_notification SET completed = now(),description='Bonus to %s' WHERE id=%lu AND customer_id = %lu ",in["customermobile"].c_str(),out["trans_not_id"].Long(),in["customer_id"].Long()); + pgsql_exec( "UPDATE customer SET bonus_pend=5 WHERE id=%lu ",in["customer_id"].Long()); + out["email_alert"] = "I am sending Email of Success"; + CustomerAirBonus( in); + VirtualAirSaleAlert(out); + } + else + { + //-------------------------------------------------- + // pgsql_exec( "UPDATE customer SET balance = balance + %lu WHERE id=%lu ",in["amount"].Long(),in["customer_id"].Long()); + //-------------------------------------------------- + //VirtualAirSaleAlert(out); + out["email_alert"] = "I am sending Email of Failure"; + out["status"] = "Unable to deliver topup"; + out["status_code"] = "F0005"; + + } + + } + else + { // customer not found + out["status"] = "Account not found"; + out["status_code"] = "F0003"; + } + } + + + if ( in["pmode"].Long() == PAY_MODE_BALANCE ) // paying with balance + { + if ( load_db_record( out, "SELECT * FROM customer WHERE id = %lu",in["customer_id"].Long() ) ) + { + if ( out["balance"].Long() < in["amount"].Long() ) + { + out["status"] = "Insufficient Balance for Purchase"; + out["status_code"] = "F0004"; + } + else + { + //-------------------------------------------------- + pgsql_exec( "UPDATE customer SET balance = balance - %lu WHERE id=%lu ",in["amount"].Long(),in["customer_id"].Long()); + //-------------------------------------------------- + //retval = INTW_sendBillPaymentAdvice( in, out ); + if ( out["route_etisalat"].Long() > 0 && out["route_id"].Long() > 0 ) + { + retval = DeliverMobilseEtisalat( in, out ); + out["ResponseCode"] = retval; + } + else + { + retval = INTW_sendBillPaymentAdvice( in, out ); + } + if (out["ResponseCode"].Long() == 90000L) { + out["status"] = "Completed"; + out["status_code"] = "A0001"; + pgsql_exec( "UPDATE trans_notification SET completed = now() WHERE id=%lu AND customer_id = %lu ",out["trans_not_id"].Long(),in["customer_id"].Long()); + out["email_alert"] = "I am sending Email of Success"; + CustomerAirSale( in); + VirtualAirSaleAlert(out); + } + else + { + //-------------------------------------------------- + pgsql_exec( "UPDATE customer SET balance = balance + %lu WHERE id=%lu ",in["amount"].Long(),in["customer_id"].Long()); + //-------------------------------------------------- + VirtualAirSaleAlert(out); + out["email_alert"] = "I am sending Email of Failure"; + + out["status"] = "Unable to deliver topup"; + out["status_code"] = "F0005"; + + } + } + } + else + { // customer not found + out["status"] = "Account not found"; + out["status_code"] = "F0003"; + } + } + + if ( in["pmode"].Long() == PAY_MODE_CCARD ) // paying with balance + { + /* + $ordd["customer_id"] = $_SESSION["uid"]; + $ordd["customerid"] =$_SESSION["uid"]; + $in["amount"] = isset($_POST["amount"])?((int)(100*$_POST["amount"])):0; + $in["customeremail"] = $_SESSION["email"]; + $in["customermobile"] = GetPostVar('customermobile',''); //"08081009999"; + */ + if ( load_db_record( out, "SELECT id AS trans_not_id, * FROM trans_notification WHERE orderid='%s' AND rspcode='00' AND completed IS NULL",in["orderid"].c_str() ) ) + { + in["customermobile"] = out["recipient_no"]; + in["customermobile"].set_valid( true ); + + in["amount"] = out["amount"].Long() * 100; + in["amount"].set_valid( true ); + + in["customer_id"] = out["customer_id"]; + in["customer_id"].set_valid( true ); + + in["customerid"] = out["customer_id"]; + in["customerid"].set_valid( true ); + + //retval = INTW_sendBillPaymentAdvice( in, out ); + if ( out["route_etisalat"].Long() > 0 && out["route_id"].Long() > 0 ) + { + retval = DeliverMobilseEtisalat( in, out ); + out["ResponseCode"] = retval; + } + else + { + retval = INTW_sendBillPaymentAdvice( in, out ); + } + + if (out["ResponseCode"].Long() == 90000L) { + out["status"] = "Completed"; + out["status_code"] = "A0001"; + pgsql_exec( "UPDATE trans_notification SET completed = now() WHERE id=%lu AND customer_id = %lu ",out["trans_not_id"].Long(),in["customer_id"].Long()); + out["email_alert"] = "I am sending Email of Success"; + CustomerAirSale( in); + VirtualAirSaleAlert(out); + + } + else + { + out["email_alert"] = "I am sending Email of Failure"; + out["status"] = "Unable to deliver topup"; + out["status_code"] = "F0005"; + VirtualAirSaleAlert(out); + } + + + /* + id | customer_id | orderid | description | amount | txnref | payref | retref | status | added | resp | recipient_no | completed | appramt | rspcode + ----+-------------+------------+---------------------------------------------+--------+------------+-----------------------------------+--------------+--------+----------------------------+------+--------------+-----------+---------+--------- + 33 | 1 | 1625865344 | 08174596139 | 50 | | | | 1 | 2014-09-21 04:48:18.309023 | | 08174596139 | | 0 | + 32 | 1 | 1605802112 | 08174596139 | 50 | | | | 1 | 2014-09-21 04:38:27.146335 | | 08174596139 | | 0 | + 31 | 1 | 1476321664 | Success: Approved by Financial Institution | 1000 | 1476321664 | FBN|WEB|Mobilis|20-09-2014|022815 | 000000016906 | 1 | 2014-09-20 18:52:46.787728 | 00 | 08174596144 | | 100000 | 00 + + */ + + + + + } + + + + + } + + } + else + { + out["status"] = "Amount too large based on settings"; + out["status_code"] = "F0002"; + } + + + } + else + { + out["status"] = "Valid order not found"; + out["status_code"] = "F0001"; + retval = -1; + } + break; + + case COREGRADE_TOPUP_ORDER: // 900020 + REQ_LONG( in, "amount", 1, -1 ); + REQ_STRING( in, "recipient_no", 1, 15, "(.*)"); + REQ_LONG( in, "customer_id", 1, -1 ); + + OPTIONAL( in, "xrate" ) + REQ_LONG( in, "xrate", 1, -1 ); + + OPTIONAL( in, "dollar" ) + REQ_LONG( in, "dollar", 1, -1 ); + + + srand(time(NULL)); + r = abs( rand()*10000000); + + cust["orderid"] = r; + in["orderid"] = r; + + in["orderid"].set_valid(true); + + cust["amount"] = in["amount"]; cust["amount"].set_valid(true); + cust["description"] = in["description"]; cust["description"].set_valid(true); + cust["customer_id"] = in["customer_id"]; cust["customer_id"].set_valid(true); + cust["recipient_no"] = in["recipient_no"]; cust["recipient_no"].set_valid(true); + + cust["xrate"] = in["xrate"]; cust["xrate"].set_valid(true); + cust["dollar"] = in["dollar"]; cust["dollar"].set_valid(true); + + cust["orderid"].set_valid(true); + out=in; + + out["order_id"] = insert_db_record( DBS_VALID, "trans_notification", "trans_notification_id_seq", cust ); + + + if (out["order_id"].Long() > 0 ) + { + sprintf( xtid, "9%011lu", out["order_id"].Long() ); + xx["orderid"] = xtid; + pgsql_exec( "UPDATE trans_notification SET orderid ='%s' WHERE id=%lu AND customer_id = %lu ",xtid,out["order_id"].Long(),in["customer_id"].Long()); + out["orderid"] = xtid; + } + else + { + out["orderid"]=""; + } + + + break; + + case COREGRADE_USER_ACCOUNT_LOGIN: + + + break; + + + case VIRTUAL_AIRTOPUP: + out = in; + REQ_LONG( in, "amount", 1, -1 ); + load_db_record( out, "SELECT value AS max_topup FROM global_settings WHERE name = 'MAXIMUM_TOPUP_KOGO'"); + maxAirtime = out["max_topup"].Long(); + if ( maxAirtime>=in["amount"].Long() ) + { + retval = INTW_sendBillPaymentAdvice( in, out ); + if (retval==90000L) { + out["email_alert"] = "I am sending Email of Success"; + VirtualAirSaleAlert(out); + } + else + { + VirtualAirSaleAlert(out); + out["email_alert"] = "I am sending Email of Failure"; + } + + } + else + { + out["status"] = "Amount too large based on settings"; + } + + break; + + case COREGRADE_ADD_MONEYRECIPIENT: + + REQ_LONG( in, "customerid", 1, -1 ); + REQ_STRING( in, "bank_code", 1, 5, "(.*)"); + REQ_STRING( in, "lastname", 1, 50, "(.*)"); + REQ_STRING( in, "firstname", 1, 50, "(.*)"); + REQ_STRING( in, "account_no", 5, 12, "(.*)"); + REQ_LONG( in, "account_type", 1, -1 ); + + recipient["customerid"] = in["customerid"]; recipient["customerid"].set_valid(true); + recipient["bank_code"] = in["bank_code"]; recipient["bank_code"].set_valid(true); + recipient["firstname"] = in["firstname"]; recipient["firstname"].set_valid(true); + recipient["lastname"] = in["lastname"]; recipient["lastname"].set_valid(true); + recipient["account_no"] = in["account_no"]; recipient["account_no"].set_valid(true); + recipient["account_type"] = in["account_type"]; recipient["account_type"].set_valid(true); + + out=in; + out["sendmoney_recipient_id"] = insert_db_record( DBS_VALID, "sendmoney_recipient", "sendmoney_recipient_id_seq", recipient ); + break; + + case COREGRADE_CREDIT_TOPUP: + // REQUIRED STRING customer_number + REQ_LONG( in, "amount", 1, -1 ); + load_db_record( out, "SELECT value AS max_topup FROM global_settings WHERE name = 'MAXIMUM_TOPUP_KOGO'"); + maxAirtime = out["max_topup"].Long(); + if ( maxAirtime>=in["amount"].Long() ) + { + paylid_directAirTimeTopUp(in, out); + } + else + { + out["status"] = "Amount too large based on settings"; + } + + + break; + + case COREGRADE_USER_LOGIN: + REQ_STRING( in, "username", 1, 50, "(.*)"); + REQ_STRING( in, "pass", 3, 25, "(.*)"); + + if ( load_db_record( out, "SELECT * FROM customer WHERE username='%s' AND pass = md5('%s')", in["username"].c_str(),in["pass"].c_str() ) ) + { + + + } + else + { + + } + break; + case COREGRADE_USER_LOGOUT: +//#define COREGRADE_USER_LOGIN 300 +//#define COREGRADE_USER_LOGOUT 301 + break; + + case COREGRADE_CREATE_ACCOUNT: + retval = CreateCoreGradeAccount( in, out ); + break; + + case COREGRADE_GETBILLER_INTERSW: + retval = INTW_getBillers( in, out ); + break; + + case COREGRADE_INTERSW_GETBILLERPAYMENTINTEMS: // 558 + retval = INTW_getBillerPaymentItems( in, out ); + break; + + case COREGRADE_INTERSW_GETBILLERCATEGORIES: + retval = INTW_getBillerCategories( in, out ); + break; + + case COREGRADE_INTERSW_BILL_PAYMENT_ADVICE: + + REQ_LONG( in, "amount", 1, -1 ); + load_db_record( out, "SELECT value AS max_topup FROM global_settings WHERE name = 'MAXIMUM_TOPUP_KOGO'"); + maxAirtime = out["max_topup"].Long(); + if ( maxAirtime>=in["amount"].Long() ) + { + retval = INTW_sendBillPaymentAdvice( in, out ); + } + else + { + out["status"] = "Amount too large based on settings"; + } + + + + break; + + case COREGRADE_INTERSW_DO_TRANSFER: // 560 + retval = INTW_doTransfer( in, out ); + break; + + case COREGRADE_INTERSW_QUERY_TRANSACTION: // 561 + retval = INTW_queryTransaction( in, out ); + break; + + case COREGRADE_STOREFACE_GET_ACCOUNT_BALANCE: + retval = paylid_getAccountBalance( in, out ); + break; + + } + logfmt( logINFO, "/long coregrade_api_main(CVars in, CVars &out)"); + return retval; +} + + +//possible login $ret +#define GITS_VALID_LOGIN 101 +#define GITS_INVALID_LOGIN 800 + +long customer_login(CVars in, CVars &out ) +{ + +// plog->SetFileName( PREFIX"/logs/customer_access.log" ); + + try + { + + try + { + if ( in["lastip"].length() > 0 ) + { + int result = 0; + // result = pgsql_exec( "UPDATE customer SET last_login=now(),lastip='%s' WHERE id=%lu", in["lastip"].c_str(), uid); + if (result==1) { + // We are OK + } + // st.Select( "UPDATE customer SET last_login=now(),lastip='%s' WHERE id=%lu", in["lastip"].c_str(), uid); + } + else + { + // st.Select( "UPDATE customer SET last_login=now() WHERE id=%lu", uid); + } + + } + catch (bad_parameter) + { + // st.Select( "UPDATE customer SET last_login=now() WHERE id=%lu", uid); + + } + + + + + +/* + if ( session ) + out["sessionid"] = session->session_id; + session_to_php(); +*/ + + // out["uid"] = uid; + // out["account_no"] = account_no; + out["status"] = "Customer is logged in"; + + CVars x; + + // x["uid"] = uid; x["uid"].set_valid( true ); + x["status"] = "1"; x["status"].set_valid( true ); + + // track_customer_login(x, out); + + return GITS_VALID_LOGIN; + } + catch (bad_parameter) + { + out["status"] = "bad parameter"; + return PHP_API_BAD_PARAM; + } + return GITS_INVALID_LOGIN; +} + + diff --git a/coregrade/src/shared_tool/email.cc b/coregrade/src/shared_tool/email.cc new file mode 100644 index 0000000..a6973f2 --- /dev/null +++ b/coregrade/src/shared_tool/email.cc @@ -0,0 +1,666 @@ +#include "email.h" +#include "clog.h" +#include "cgi.h" +#include "input.h" +#include "coregrade_api.h" +#include "safestring.h" +#include "cfg.h" +#include +#include "pgsql_wrapper.h" + +void vars2form( CVars &v, C_CGI_Form &form ); + +extern int mailsend(CVars in,CVars &out); + + + +long AccountPendingMail(CVars in) +{ + REQ_LONG( in, "pending_id", 1, -1 ); + CVars x; + CVars out; + C_CGI_Form form("",""); + + char * server_name = getenv( "SERVER_NAME" ); + form.LetStr( "server_name", server_name ); + form.LetStr( "site_name", "CoreGrade" ); + + if ( load_db_record( x, "SELECT * FROM members_pending WHERE id = %lu ", in["pending_id"].Long()) ) + { + vars2form( x, form ); + form.LetStr( "email", x["email"].c_str() ); + form.Email( "ACCOUNT/member_pending.mailfile" ); + } + return 0; +} + +long WelcomeAccountMail(CVars in) +{ + REQ_LONG( in, "member_id", 1, -1 ); + CVars x; + CVars out; + C_CGI_Form form("",""); + + char * server_name = getenv( "SERVER_NAME" ); + form.LetStr( "server_name", server_name ); + form.LetStr( "site_name", "CoreGrade" ); + + if ( load_db_record( x, "SELECT * FROM members WHERE id = %lu ", in["member_id"].Long()) ) + { + vars2form( x, form ); + form.LetStr( "email", x["email"].c_str() ); + form.Email( "ACCOUNT/member_welcome.mailfile" ); + } + return 0; + +} + + long CreateCoreGradeGroupMail(CVars in) + { + REQ_LONG( in, "group_id", 1, -1 ); + CVars x; + CVars out; + C_CGI_Form form("",""); + + char * server_name = getenv( "SERVER_NAME" ); + form.LetStr( "server_name", server_name ); + form.LetStr( "site_name", "CoreGrade" ); + + if ( load_db_record( x, "select g.*,m.email,m.firstname,m.lastname from members_groups g LEFT JOIN members m ON m.id = g.member_id WHERE g.id = %lu ", in["group_id"].Long()) ) + { + vars2form( x, form ); + form.LetStr( "email", x["email"].c_str() ); + form.Email( "GROUP/group_added.mailfile" ); + } + return 0; + } + +long GroupCreateMemberMail(CVars in) + { + REQ_LONG( in, "group_id", 1, -1 ); + REQ_LONG( in, "group_member_id", 1, -1 ); + CVars x; + CVars out; + C_CGI_Form form("",""); + + char * server_name = getenv( "SERVER_NAME" ); + form.LetStr( "server_name", server_name ); + form.LetStr( "site_name", "CoreGrade" ); + + if ( load_db_record( x, "SELECT gm.*,m.*,e.email FROM group_members gm LEFT JOIN members_groups m ON m.id=gm.group_id LEFT JOIN members e ON e.id=gm.member_id WHERE gm.id = %lu", in["group_member_id"].Long()) ) + { + vars2form( x, form ); + form.LetStr( "email", x["email"].c_str() ); + form.Email( "GROUP/group_member_added.mailfile" ); + } + return 0; + return 0; + } +//============================================================================================================== + + +long send_email(CVars in, CVars &out) +{ + logfmt( logINFO, "send_email()" ); + long ret = PHP_API_BAD_PARAM; + try { + REQ_LONG( in, "whattodo", 1, -1 ); + switch(in["whattodo"].Long()) { + default: logfmt( logINFO, "Not implemented" ); + } + } catch(bad_parameter) { + out["status"] = "Unknow action supplied"; + } + logfmt( logINFO, "/send_email()" ); + return ret; +} + + +long EmailCustBalUpdt(CVars in) +{ + REQ_LONG( in, "balance_update_id", 1, -1 ); + C_CGI_Form form("",""); + char * server_name = getenv( "SERVER_NAME" ); + CVars x; + + vars2form( x, form ); + form.LetStr( "site", server_name ); + form.Email( "test.mailfile" ); + return 0; +} + +long SendPromoEmail(CVars in) +{ + long pmode = REQ_LONG( in, "pmode", 1, -1 ); + CVars x; + CVars out; + C_CGI_Form form("",""); + + vars2form( in, form ); + form.LetStr( "email", in["email"].c_str() ); + + switch( pmode ) + { + case 1: + form.Email( "promo/promotion1.mailfile" ); + break; + + case 2: + form.Email( "promo/promotion2.mailfile" ); + break; + + } + + + + return 0; +} + +long SendBalanceRequestAlert(CVars in) +{ + REQ_LONG( in, "request_id", 1, -1 ); + CVars x; + CVars out; + C_CGI_Form form("",""); + out["topupemail"] = CfgReadChar("transnotif.topupemail"); + + if ( load_db_record( x, "SELECT a.*,a.amount*0.01 AS req_amount,c.*,a.ip AS ip_loc,u.name FROM customer_addbalance a LEFT JOIN customer c ON c.id=a.customer_id LEFT JOIN bko_users u ON u.id=a.csr_id WHERE a.id = '%lu' ", in["request_id"].Long()) ) + { + + vars2form( x, form ); + form.LetStr( "email", out["topupemail"].c_str() ); + form.Email( "alerts/balancereq.mailfile" ); + + } + return 0; +} + +long SendBalanceCompleteAlert(CVars in) +{ + REQ_LONG( in, "request_id", 1, -1 ); + CVars x; + CVars out; + C_CGI_Form form("",""); + out["topupemail"] = CfgReadChar("transnotif.topupemail"); + + if ( load_db_record( x, "SELECT a.*,a.amount*0.01 AS req_amount,c.*,a.ip2 AS ip_loc,u.name,a.cur_balance*0.01 AS cur2, a.fin_balance*0.01 AS fin2 FROM customer_addbalance a LEFT JOIN customer c ON c.id=a.customer_id LEFT JOIN bko_users u ON u.id=a.csr_id WHERE a.id = '%lu' ", in["request_id"].Long()) ) + { + vars2form( x, form ); + form.LetStr( "email", out["topupemail"].c_str() ); + form.Email( "alerts/balancecomplete.mailfile" ); + + } + return 0; +} + + + + + +long SystemStatus() +{ + logfmt( logINFO, "SystemStatus()*************~************"); + + C_CGI_Form form("",""); + const char * server_name = getenv( "SERVER_NAME" ); + CVars x; + + vars2form( x, form ); + form.LetStr( "site", server_name ); + + form.LetStr( "message", server_name ); + form.LetStr( "email", "ses66181@gmail.com" ); +// form.LetStr( "email", "acidumirae@gmail.com" ); + + form.Email( "test.mailfile" ); + return 0l; +} + +long StartPassResetEmail(CVars in) +{ +//customer_id +// reset_id + C_CGI_Form form("",""); + const char * server_name = getenv( "SERVER_NAME" ); + CVars out; + CVars x; + load_db_record( x, "SELECT * FROM customer WHERE id = %lu",in["customer_id"].Long() ) ; + vars2form( x, form ); + + + form.LetStr( "site", server_name ); + /* + CREATE TABLE lostpass ( + id serial NOT NULL, + customer_id INT REFERENCES customer(id), + added TIMESTAMP DEFAULT NOW(), + updated TIMESTAMP DEFAULT NOW(), + loc INET, + reset_link VARCHAR(200) NOT NULL, + expire TIMESTAMP , + status integer DEFAULT 1 + ); + */ + load_db_record( out, "SELECT added AS lost_added,* FROM lostpass WHERE id = %lu",in["reset_id"].Long() ) ; + vars2form( out, form ); + + + form.LetStr( "email", x["email"].c_str() ); + form.Email( "start_losspass.mailfile" ); //customer notification + + + return 0; + //start_losspass.mailfile +} + +long CompletePassResetEmail(CVars in) +{ +//customer_id +// reset_id + C_CGI_Form form("",""); + const char * server_name = getenv( "SERVER_NAME" ); + CVars out; + CVars x; + load_db_record( x, "SELECT * FROM customer WHERE id = %lu",in["customer_id"].Long() ) ; + vars2form( x, form ); + + + form.LetStr( "site", server_name ); + + + + form.LetStr( "email", x["email"].c_str() ); + form.Email( "complete_losspass.mailfile" ); //customer notification + + + return 0; + //start_losspass.mailfile +} + +long CustomerAirSalePayment(CVars in) +{ +/* +payquic_test=> select t.*,c.* from trans_notification t LEFT JOIN customer c ON c.id = t.customer_id limit 1; + id | customer_id | orderid | description | amount | txnref | payref | retref | status | added | resp | recipient_no | completed | appramt | rspcode | id | username | firstname | lastname | email | pass + | status | added | balance +----+-------------+------------+-------------+--------+--------+--------+--------+--------+----------------------------+------+--------------+-----------+---------+---------+----+--------------------+-----------+----------+--------------------+------------------- +---------------+--------+----------------------------+--------- + 2 | 1 | 1452581056 | 08174596143 | 1000 | | | | 1 | 2014-09-15 21:00:39.921535 | | 08174596144 | | 0 | | 1 | ses66181@gmail.com | Olu | Amey | ses66181@gmail.com | d0fbea2563b377ea70 +74bced45c88dcb | 1 | 2014-07-09 13:52:02.478932 | 189700 +(1 row) + +*/ +CVars out; +out["topupemail"] = CfgReadChar("transnotif.topupemail"); + + logfmt( logINFO, "SystemStatus()*************~************"); + + C_CGI_Form form("",""); + const char * server_name = getenv( "SERVER_NAME" ); + CVars x,y; + load_db_record( x, "select t.*,c.*,c.loc AS loc_c,c.balance*0.01 AS balance2,t.amount AS amount2,c.email AS email2,t.added AS trans_date from trans_notification t LEFT JOIN customer c ON c.id = t.customer_id WHERE t.orderid='%s'",in["orderid"].c_str() ) ; + vars2form( x, form ); + + load_db_record( y, "SELECT country_code,country_name,continent_code,continent_name FROM ipligence2 WHERE ip_from <= ip2int('%s') AND ip_to>=ip2int('%s') LIMIT 1",x["loc_c"].c_str(),x["loc_c"].c_str()); + /* + country_code | country_name | continent_code | continent_name + --------------+---------------+----------------+---------------- + US | UNITED STATES | NA | NORTH AMERICA + */ + vars2form( y, form ); + + + if ( in["pmode"].Long() == PAY_MODE_BALANCE ) // paying with balance + { + form.LetStr( "paymode", "Payment with balance" ); + } + else + { + form.LetStr( "paymode", "Payment with card" ); + } + + + form.LetStr( "site", server_name ); + form.LetStr( "email", x["email2"].c_str() ); + form.Email( "topup_payment.mailfile" ); //customer notification + + + + form.LetStr( "email", out["topupemail"].c_str() ); + form.Email( "topup_payment_alert.mailfile" ); //customer notification + + + return 0l; + + +} + +long CustomerAirBonus(CVars in) +{ +/* +payquic_test=> select t.*,c.* from trans_notification t LEFT JOIN customer c ON c.id = t.customer_id limit 1; + id | customer_id | orderid | description | amount | txnref | payref | retref | status | added | resp | recipient_no | completed | appramt | rspcode | id | username | firstname | lastname | email | pass + | status | added | balance +----+-------------+------------+-------------+--------+--------+--------+--------+--------+----------------------------+------+--------------+-----------+---------+---------+----+--------------------+-----------+----------+--------------------+------------------- +---------------+--------+----------------------------+--------- + 2 | 1 | 1452581056 | 08174596143 | 1000 | | | | 1 | 2014-09-15 21:00:39.921535 | | 08174596144 | | 0 | | 1 | ses66181@gmail.com | Olu | Amey | ses66181@gmail.com | d0fbea2563b377ea70 +74bced45c88dcb | 1 | 2014-07-09 13:52:02.478932 | 189700 +(1 row) + +*/ +CVars out; +out["topupemail"] = CfgReadChar("transnotif.topupemail"); + + logfmt( logINFO, "SystemStatus()*************~************"); + + C_CGI_Form form("",""); + const char * server_name = getenv( "SERVER_NAME" ); + CVars x; + load_db_record( x, "select t.*,c.*,c.balance*0.01 AS balance2,t.amount AS amount2,c.email AS email2,t.added AS trans_date from trans_notification t LEFT JOIN customer c ON c.id = t.customer_id WHERE t.orderid='%s'",in["orderid"].c_str() ) ; + vars2form( x, form ); + + + if ( in["pmode"].Long() == PAY_MODE_BALANCE ) // paying with balance + { + form.LetStr( "paymode", "Payment with balance" ); + } + else + { + form.LetStr( "paymode", "Payment with card" ); + } + + + form.LetStr( "site", server_name ); + form.LetStr( "email", x["email2"].c_str() ); + form.Email( "topup_bonus_completed.mailfile" ); //customer notification + return 0l; + + +} + + +long CustomerAirSale(CVars in) +{ +/* +payquic_test=> select t.*,c.* from trans_notification t LEFT JOIN customer c ON c.id = t.customer_id limit 1; + id | customer_id | orderid | description | amount | txnref | payref | retref | status | added | resp | recipient_no | completed | appramt | rspcode | id | username | firstname | lastname | email | pass + | status | added | balance +----+-------------+------------+-------------+--------+--------+--------+--------+--------+----------------------------+------+--------------+-----------+---------+---------+----+--------------------+-----------+----------+--------------------+------------------- +---------------+--------+----------------------------+--------- + 2 | 1 | 1452581056 | 08174596143 | 1000 | | | | 1 | 2014-09-15 21:00:39.921535 | | 08174596144 | | 0 | | 1 | ses66181@gmail.com | Olu | Amey | ses66181@gmail.com | d0fbea2563b377ea70 +74bced45c88dcb | 1 | 2014-07-09 13:52:02.478932 | 189700 +(1 row) + +*/ +CVars out; +out["topupemail"] = CfgReadChar("transnotif.topupemail"); + + logfmt( logINFO, "SystemStatus()*************~************"); + + C_CGI_Form form("",""); + const char * server_name = getenv( "SERVER_NAME" ); + CVars x,y; + load_db_record( x, "select t.*,c.*,c.loc AS loc_c,c.balance*0.01 AS balance2,t.amount AS amount2,c.email AS email2,t.added AS trans_date from trans_notification t LEFT JOIN customer c ON c.id = t.customer_id WHERE t.orderid='%s'",in["orderid"].c_str() ) ; + vars2form( x, form ); + + load_db_record( y, "SELECT country_code,country_name,continent_code,continent_name FROM ipligence2 WHERE ip_from <= ip2int('%s') AND ip_to>=ip2int('%s') LIMIT 1",x["loc_c"].c_str(),x["loc_c"].c_str()); + /* + country_code | country_name | continent_code | continent_name + --------------+---------------+----------------+---------------- + US | UNITED STATES | NA | NORTH AMERICA + */ + vars2form( y, form ); + + + if ( in["pmode"].Long() == PAY_MODE_BALANCE ) // paying with balance + { + form.LetStr( "paymode", "Payment with balance" ); + } + else + { + form.LetStr( "paymode", "Payment with card" ); + } + + + form.LetStr( "site", server_name ); + form.LetStr( "email", x["email2"].c_str() ); + form.Email( "topup_completed.mailfile" ); //customer notification + return 0l; + + +} + + +long VirtualAirSaleCustomer(CVars in) +{ + +CVars out; +out["topupemail"] = CfgReadChar("transnotif.topupemail"); + + logfmt( logINFO, "SystemStatus()*************~************"); + + C_CGI_Form form("",""); + const char * server_name = getenv( "SERVER_NAME" ); + CVars x,y; + load_db_record( x, "select t.*,c.*,c.loc AS loc_c,c.balance*0.01 AS balance2,t.amount AS amount2,c.email AS email2,t.added AS trans_date from trans_notification t LEFT JOIN customer c ON c.id = t.customer_id WHERE t.orderid='%s'",in["orderid"].c_str() ) ; + vars2form( x, form ); + + load_db_record( y, "SELECT country_code,country_name,continent_code,continent_name FROM ipligence2 WHERE ip_from <= ip2int('%s') AND ip_to>=ip2int('%s') LIMIT 1",x["loc_c"].c_str(),x["loc_c"].c_str()); + /* + country_code | country_name | continent_code | continent_name + --------------+---------------+----------------+---------------- + US | UNITED STATES | NA | NORTH AMERICA + */ + vars2form( y, form ); + + CVars z; + load_db_record( z, "SELECT t.paymentcode,i.responsecode,i.transactionref FROM interswitch_bill_payment_advice t LEFT JOIN interswitch_transaction i ON i.detail_id=t.id WHERE t.order_id ='%s'",x["orderid"].c_str()); + vars2form( z, form ); + + if ( in["pmode"].Long() == PAY_MODE_BALANCE ) // paying with balance + { + form.LetStr( "paymode", "Payment with balance" ); + } + else + { + form.LetStr( "paymode", "Payment with card" ); + } + + + form.LetStr( "site", server_name ); + + form.LetStr( "message", server_name ); + form.LetStr( "email", out["topupemail"].c_str() ); + form.Email( "virtualtopup.mailfile" ); // this is alert + return 0l; + + +} + +void CustomerBalanceEmail(CVars in) +{ + REQ_STRING( in, "orderid", 1, 50, "(.*)"); + CVars x; + C_CGI_Form form("",""); + if ( load_db_record( x, "select c.*,t.*,t.added AS balance_date,appramt*0.01 AS appramt2,t.added AS trans_date,c.balance*0.01 AS balance2 from trans_balance_topup t LEFT JOIN customer c ON c.id = t.customer_id where t.orderid = '%s' AND completed IS NOT NULL", in["orderid"].c_str()) ) + { + vars2form( x, form ); + form.Email( "balance_updated.mailfile" ); + } + + +} + + +long CustomerBalanceBonusEmail(CVars in) +{ + //REQ_STRING( in, "orderid", 1, 50, "(.*)"); + REQ_LONG( in, "customer_id", 1, -1 ); + CVars x; + C_CGI_Form form("",""); + if ( load_db_record( x, "select * FROM customer WHERE id = %lu ", in["customer_id"].Long()) ) + { + vars2form( x, form ); + form.Email( "bonus_balance.mailfile" ); + } + + return 0; +} + +void PaymentAlert(CVars in) +{ + +} + +void BalanceUpdateAlert(CVars in) +{ + REQ_STRING( in, "orderid", 1, 50, "(.*)"); + CVars x; + CVars out; + C_CGI_Form form("",""); + out["topupemail"] = CfgReadChar("transnotif.topupemail"); + + if ( load_db_record( x, "select c.*,t.*,t.added AS balance_date,appramt*0.01 AS appramt2 ,c.balance*0.01 AS balance2 from trans_balance_topup t LEFT JOIN customer c ON c.id = t.customer_id where t.orderid = '%s' AND completed IS NOT NULL", in["orderid"].c_str()) ) + { + + vars2form( x, form ); + + + form.LetStr( "email", out["topupemail"].c_str() ); + form.Email( "alert_balance_updated.mailfile" ); + + } + + + +} + +void CustomerEmailWelcome(CVars in) +{ + long customer_id = in["user_id"].Long(); + C_CGI_Form form("",""); + const char * server_name = getenv( "SERVER_NAME" ); + CVars x; + load_db_record( x, "select *,email as email2 from customer WHERE id =%lu ",customer_id ) ; + vars2form( x, form ); + form.Email( "welcome.mailfile" ); +} + +/*****************************************************************************/ +long VirtualAirSaleAlert(CVars in) +{ +/* +payquic_test=> select t.*,c.* from trans_notification t LEFT JOIN customer c ON c.id = t.customer_id limit 1; + id | customer_id | orderid | description | amount | txnref | payref | retref | status | added | resp | recipient_no | completed | appramt | rspcode | id | username | firstname | lastname | email | pass + | status | added | balance +----+-------------+------------+-------------+--------+--------+--------+--------+--------+----------------------------+------+--------------+-----------+---------+---------+----+--------------------+-----------+----------+--------------------+------------------- +---------------+--------+----------------------------+--------- + 2 | 1 | 1452581056 | 08174596143 | 1000 | | | | 1 | 2014-09-15 21:00:39.921535 | | 08174596144 | | 0 | | 1 | ses66181@gmail.com | Olu | Amey | ses66181@gmail.com | d0fbea2563b377ea70 +74bced45c88dcb | 1 | 2014-07-09 13:52:02.478932 | 189700 +(1 row) + +*/ +CVars out; +out["topupemail"] = CfgReadChar("transnotif.topupemail"); + + logfmt( logINFO, "SystemStatus()*************~************"); + + C_CGI_Form form("",""); + const char * server_name = getenv( "SERVER_NAME" ); + CVars x,y; + load_db_record( x, "select t.*,c.*,c.loc as loc_c,c.balance*0.01 AS balance2,t.amount AS amount2,c.email AS email2 from trans_notification t LEFT JOIN customer c ON c.id = t.customer_id WHERE t.orderid='%s'",in["orderid"].c_str() ) ; + vars2form( x, form ); + + + load_db_record( y, "SELECT country_code,country_name,continent_code,continent_name FROM ipligence2 WHERE ip_from <= ip2int('%s') AND ip_to>=ip2int('%s') LIMIT 1",x["loc_c"].c_str(),x["loc_c"].c_str()); + /* + country_code | country_name | continent_code | continent_name + --------------+---------------+----------------+---------------- + US | UNITED STATES | NA | NORTH AMERICA + */ + vars2form( y, form ); + + CVars z; + load_db_record( z, "SELECT t.paymentcode,i.responsecode,i.transactionref FROM interswitch_bill_payment_advice t LEFT JOIN interswitch_transaction i ON i.detail_id=t.id WHERE t.order_id ='%s'",x["orderid"].c_str()); + vars2form( z, form ); + + if ( in["pmode"].Long() == PAY_MODE_BALANCE ) // paying with balance + { + form.LetStr( "paymode", "Payment with balance" ); + } + else if ( in["pmode"].Long() == PAY_MODE_BONUS ) // paying bonus + { + form.LetStr( "paymode", "Bonus Payment" ); + } + else + { + form.LetStr( "paymode", "Payment with card" ); + } + + + form.LetStr( "site", server_name ); + + form.LetStr( "message", server_name ); + //form.LetStr( "email", "ses66181@gmail.com,oladeji@gmail.com" ); + form.LetStr( "email", out["topupemail"].c_str() ); + +// form.LetStr( "email", "acidumirae@gmail.com" ); + + form.Email( "virtualtopup.mailfile" ); + return 0l; +} +/*****************************************************************************/ + +void SendAccountCreateAlert(long customer_id) +{ + +CVars out; +out["topupemail"] = CfgReadChar("transnotif.topupemail"); + + logfmt( logINFO, "SystemStatus()*************~************"); + + C_CGI_Form form("",""); + const char * server_name = getenv( "SERVER_NAME" ); + CVars x,y; + load_db_record( x, "SELECT *,email as email2,balance*0.01 AS balance2,dollar_balance*0.01 AS dollar_balance2 from customer WHERE id =%lu ",customer_id ) ; + vars2form( x, form ); + + load_db_record( y, "SELECT country_code,country_name,continent_code,continent_name FROM ipligence2 WHERE ip_from <= ip2int('%s') AND ip_to>=ip2int('%s') LIMIT 1",x["loc"].c_str(),x["loc"].c_str()); + /* + country_code | country_name | continent_code | continent_name +--------------+---------------+----------------+---------------- + US | UNITED STATES | NA | NORTH AMERICA +*/ + vars2form( y, form ); + form.LetStr( "site", server_name ); + form.LetStr( "message", server_name ); + form.LetStr( "email", out["topupemail"].c_str() ); + +// form.LetStr( "email", "acidumirae@gmail.com" ); + + form.Email( "alert_accountcreated.mailfile" ); +//alert_accountcreated.mailfile +} +/*****************************************************************************/ +void vars2form( CVars &v, C_CGI_Form &form ) +{ + CVars::const_iterator i; + for ( i=v.begin(); i != v.end(); i++ ) { + char name[30]; + strsafecpy( name, i->first.c_str(), sizeof(name) ); + // &fee, tax, total + if ( strcasecmp( name, "tax" )==0 || + strcasecmp( name, "total" )==0 || + strcasecmp( name, "price" )==0 || + strcasecmp( name, "amount" )==0 || + strcasecmp( name, "shipping" )==0 || + strcasecmp( name, "subtotal" )==0 || + ( strlen(name)>=3 && strcasecmp( &name[strlen(name)-3], "fee" )==0 )) { + form.LetStrf( name, "%.2f", i->second.Long()/100.0 ); + } else { + form.LetStr( i->first.c_str(), i->second.c_str() ); + } + } +} +/*****************************************************************************/ + diff --git a/coregrade/src/shared_tool/envC.cc b/coregrade/src/shared_tool/envC.cc new file mode 100644 index 0000000..fc1650e --- /dev/null +++ b/coregrade/src/shared_tool/envC.cc @@ -0,0 +1,1388 @@ +/* envC.cpp + Generated by gSOAP 2.8.16 from env.h + +Copyright(C) 2000-2013, Robert van Engelen, Genivia Inc. All Rights Reserved. +The generated code is released under one of the following licenses: +GPL or Genivia's license for commercial use. +This program is released under the GPL with the additional exemption that +compiling, linking, and/or using OpenSSL is allowed. +*/ + +#if defined(__BORLANDC__) +#pragma option push -w-8060 +#pragma option push -w-8004 +#endif + +#include "envH.h" + +SOAP_SOURCE_STAMP("@(#) envC.cpp ver 2.8.16 2018-10-02 17:03:37 GMT") + + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 int SOAP_FMAC4 soap_getheader(struct soap *soap) +{ + soap->part = SOAP_IN_HEADER; + soap->header = soap_in_SOAP_ENV__Header(soap, "SOAP-ENV:Header", soap->header, NULL); + soap->part = SOAP_END_HEADER; + return soap->header == NULL; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_putheader(struct soap *soap) +{ + if (soap->version && soap->header) + { soap->part = SOAP_IN_HEADER; + if (soap_out_SOAP_ENV__Header(soap, "SOAP-ENV:Header", 0, soap->header, NULL)) + return soap->error; + soap->part = SOAP_END_HEADER; + } + return SOAP_OK; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serializeheader(struct soap *soap) +{ + if (soap->version && soap->header) + soap_serialize_SOAP_ENV__Header(soap, soap->header); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_header(struct soap *soap) +{ + if (soap->header == NULL) + { if ((soap->header = soap_new_SOAP_ENV__Header(soap, -1))) + soap_default_SOAP_ENV__Header(soap, soap->header); + } +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_fault(struct soap *soap) +{ + if (soap->fault == NULL) + { soap->fault = soap_new_SOAP_ENV__Fault(soap, -1); + if (soap->fault == NULL) + return; + soap_default_SOAP_ENV__Fault(soap, soap->fault); + } + if (soap->version == 2 && !soap->fault->SOAP_ENV__Code) + { soap->fault->SOAP_ENV__Code = soap_new_SOAP_ENV__Code(soap, -1); + soap_default_SOAP_ENV__Code(soap, soap->fault->SOAP_ENV__Code); + } + if (soap->version == 2 && !soap->fault->SOAP_ENV__Reason) + { soap->fault->SOAP_ENV__Reason = soap_new_SOAP_ENV__Reason(soap, -1); + soap_default_SOAP_ENV__Reason(soap, soap->fault->SOAP_ENV__Reason); + } +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serializefault(struct soap *soap) +{ + soap_fault(soap); + if (soap->fault) + soap_serialize_SOAP_ENV__Fault(soap, soap->fault); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_putfault(struct soap *soap) +{ + if (soap->fault) + return soap_put_SOAP_ENV__Fault(soap, soap->fault, "SOAP-ENV:Fault", NULL); + return SOAP_OK; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_getfault(struct soap *soap) +{ + return (soap->fault = soap_get_SOAP_ENV__Fault(soap, NULL, "SOAP-ENV:Fault", NULL)) == NULL; +} + +SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultcode(struct soap *soap) +{ + soap_fault(soap); + if (soap->version == 2 && soap->fault->SOAP_ENV__Code) + return (const char**)&soap->fault->SOAP_ENV__Code->SOAP_ENV__Value; + return (const char**)&soap->fault->faultcode; +} + +SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultsubcode(struct soap *soap) +{ + soap_fault(soap); + if (soap->version == 2) + { if (soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode == NULL) + { soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode = soap_new_SOAP_ENV__Code(soap, -1); + soap_default_SOAP_ENV__Code(soap, soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode); + } + return (const char**)&soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode->SOAP_ENV__Value; + } + return (const char**)&soap->fault->faultcode; +} + +SOAP_FMAC3 const char * SOAP_FMAC4 soap_check_faultsubcode(struct soap *soap) +{ + soap_fault(soap); + if (soap->version == 2) + { if (soap->fault->SOAP_ENV__Code && soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode && soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode) + return soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode->SOAP_ENV__Value; + return NULL; + } + return soap->fault->faultcode; +} + +SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultstring(struct soap *soap) +{ + soap_fault(soap); + if (soap->version == 2) + return (const char**)&soap->fault->SOAP_ENV__Reason->SOAP_ENV__Text; + return (const char**)&soap->fault->faultstring; +} + +SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultdetail(struct soap *soap) +{ + soap_fault(soap); + if (soap->version == 2) + { if (soap->fault->SOAP_ENV__Detail == NULL) + { soap->fault->SOAP_ENV__Detail = soap_new_SOAP_ENV__Detail(soap, -1); + soap_default_SOAP_ENV__Detail(soap, soap->fault->SOAP_ENV__Detail); + } + return (const char**)&soap->fault->SOAP_ENV__Detail->__any; + } + if (soap->fault->detail == NULL) + { soap->fault->detail = soap_new_SOAP_ENV__Detail(soap, -1); + soap_default_SOAP_ENV__Detail(soap, soap->fault->detail); + } + return (const char**)&soap->fault->detail->__any; +} + +SOAP_FMAC3 const char * SOAP_FMAC4 soap_check_faultdetail(struct soap *soap) +{ + soap_fault(soap); + if (soap->version == 2 && soap->fault->SOAP_ENV__Detail) + return soap->fault->SOAP_ENV__Detail->__any; + if (soap->fault->detail) + return soap->fault->detail->__any; + return NULL; +} + +#endif + +#ifndef WITH_NOIDREF +SOAP_FMAC3 int SOAP_FMAC4 soap_getindependent(struct soap *soap) +{ + int t; + if (soap->version == 1) + { for (;;) + { if (!soap_getelement(soap, &t)) + if (soap->error || soap_ignore_element(soap)) + break; + } + } + if (soap->error == SOAP_NO_TAG || soap->error == SOAP_EOF) + soap->error = SOAP_OK; + return soap->error; +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif +SOAP_FMAC3 void * SOAP_FMAC4 soap_getelement(struct soap *soap, int *type) +{ (void)type; + if (soap_peek_element(soap)) + return NULL; +#ifndef WITH_NOIDREF + if (!*soap->id || !(*type = soap_lookup_type(soap, soap->id))) + *type = soap_lookup_type(soap, soap->href); + switch (*type) + { + case SOAP_TYPE_byte: + return soap_in_byte(soap, NULL, NULL, "xsd:byte"); + case SOAP_TYPE_int: + return soap_in_int(soap, NULL, NULL, "xsd:int"); + case SOAP_TYPE__QName: + { char **s; + s = soap_in__QName(soap, NULL, NULL, "xsd:QName"); + return s ? *s : NULL; + } + case SOAP_TYPE_string: + { char **s; + s = soap_in_string(soap, NULL, NULL, "xsd:string"); + return s ? *s : NULL; + } + default: +#else + *type = 0; +#endif + { const char *t = soap->type; + if (!*t) + t = soap->tag; + if (!soap_match_tag(soap, t, "xsd:byte")) + { *type = SOAP_TYPE_byte; + return soap_in_byte(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:int")) + { *type = SOAP_TYPE_int; + return soap_in_int(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:QName")) + { char **s; + *type = SOAP_TYPE__QName; + s = soap_in__QName(soap, NULL, NULL, NULL); + return s ? *s : NULL; + } + if (!soap_match_tag(soap, t, "xsd:string")) + { char **s; + *type = SOAP_TYPE_string; + s = soap_in_string(soap, NULL, NULL, NULL); + return s ? *s : NULL; + } + t = soap->tag; +#ifndef WITH_NOIDREF + } +#endif + } + soap->error = SOAP_TAG_MISMATCH; + return NULL; +} + +#ifdef __cplusplus +} +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_ignore_element(struct soap *soap) +{ + if (!soap_peek_element(soap)) + { int t; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Unexpected element '%s' in input (level=%u, %d)\n", soap->tag, soap->level, soap->body)); + if (soap->mustUnderstand && !soap->other) + return soap->error = SOAP_MUSTUNDERSTAND; + if (((soap->mode & SOAP_XML_STRICT) && soap->part != SOAP_IN_HEADER) || !soap_match_tag(soap, soap->tag, "SOAP-ENV:")) + { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "REJECTING element '%s'\n", soap->tag)); + return soap->error = SOAP_TAG_MISMATCH; + } + if (!*soap->id || !soap_getelement(soap, &t)) + { soap->peeked = 0; + if (soap->fignore) + soap->error = soap->fignore(soap, soap->tag); + else + soap->error = SOAP_OK; + DBGLOG(TEST, if (!soap->error) SOAP_MESSAGE(fdebug, "IGNORING element '%s'\n", soap->tag)); + if (!soap->error && soap->body) + { soap->level++; + while (!soap_ignore_element(soap)) + ; + if (soap->error == SOAP_NO_TAG) + soap->error = soap_element_end_in(soap, NULL); + } + } + } + return soap->error; +} + +#ifndef WITH_NOIDREF +SOAP_FMAC3 int SOAP_FMAC4 soap_putindependent(struct soap *soap) +{ + int i; + struct soap_plist *pp; + if (soap->version == 1 && soap->encodingStyle && !(soap->mode & (SOAP_XML_TREE | SOAP_XML_GRAPH))) + for (i = 0; i < SOAP_PTRHASH; i++) + for (pp = soap->pht[i]; pp; pp = pp->next) + if (pp->mark1 == 2 || pp->mark2 == 2) + if (soap_putelement(soap, pp->ptr, "id", pp->id, pp->type)) + return soap->error; + return SOAP_OK; +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif +SOAP_FMAC3 int SOAP_FMAC4 soap_putelement(struct soap *soap, const void *ptr, const char *tag, int id, int type) +{ (void)tag; + switch (type) + { + case SOAP_TYPE_byte: + return soap_out_byte(soap, tag, id, (const char *)ptr, "xsd:byte"); + case SOAP_TYPE_int: + return soap_out_int(soap, tag, id, (const int *)ptr, "xsd:int"); + case SOAP_TYPE__QName: + return soap_out_string(soap, tag, id, (char*const*)&ptr, "xsd:QName"); + case SOAP_TYPE_string: + return soap_out_string(soap, tag, id, (char*const*)&ptr, "xsd:string"); + } + return SOAP_OK; +} + +#ifdef __cplusplus +} +#endif + +#ifndef WITH_NOIDREF + +#ifdef __cplusplus +extern "C" { +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_markelement(struct soap *soap, const void *ptr, int type) +{ + (void)soap; (void)ptr; (void)type; /* appease -Wall -Werror */ + switch (type) + { + case SOAP_TYPE__QName: + soap_serialize_string(soap, (char*const*)&ptr); + break; + case SOAP_TYPE_string: + soap_serialize_string(soap, (char*const*)&ptr); + break; + } +} + +#ifdef __cplusplus +} +#endif +#endif + +SOAP_FMAC3 void * SOAP_FMAC4 env_instantiate(struct soap *soap, int t, const char *type, const char *arrayType, size_t *n) +{ (void)type; + switch (t) + { +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_SOAP_ENV__Header: + return (void*)soap_instantiate_SOAP_ENV__Header(soap, -1, type, arrayType, n); +#endif +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_SOAP_ENV__Code: + return (void*)soap_instantiate_SOAP_ENV__Code(soap, -1, type, arrayType, n); +#endif +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_SOAP_ENV__Detail: + return (void*)soap_instantiate_SOAP_ENV__Detail(soap, -1, type, arrayType, n); +#endif +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_SOAP_ENV__Reason: + return (void*)soap_instantiate_SOAP_ENV__Reason(soap, -1, type, arrayType, n); +#endif +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_SOAP_ENV__Fault: + return (void*)soap_instantiate_SOAP_ENV__Fault(soap, -1, type, arrayType, n); +#endif + } + return NULL; +} + +SOAP_FMAC3 int SOAP_FMAC4 env_fdelete(struct soap_clist *p) +{ switch (p->type) + { +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_SOAP_ENV__Header: + if (p->size < 0) + SOAP_DELETE((struct SOAP_ENV__Header*)p->ptr); + else + SOAP_DELETE_ARRAY((struct SOAP_ENV__Header*)p->ptr); + break; +#endif +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_SOAP_ENV__Code: + if (p->size < 0) + SOAP_DELETE((struct SOAP_ENV__Code*)p->ptr); + else + SOAP_DELETE_ARRAY((struct SOAP_ENV__Code*)p->ptr); + break; +#endif +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_SOAP_ENV__Detail: + if (p->size < 0) + SOAP_DELETE((struct SOAP_ENV__Detail*)p->ptr); + else + SOAP_DELETE_ARRAY((struct SOAP_ENV__Detail*)p->ptr); + break; +#endif +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_SOAP_ENV__Reason: + if (p->size < 0) + SOAP_DELETE((struct SOAP_ENV__Reason*)p->ptr); + else + SOAP_DELETE_ARRAY((struct SOAP_ENV__Reason*)p->ptr); + break; +#endif +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_SOAP_ENV__Fault: + if (p->size < 0) + SOAP_DELETE((struct SOAP_ENV__Fault*)p->ptr); + else + SOAP_DELETE_ARRAY((struct SOAP_ENV__Fault*)p->ptr); + break; +#endif + default: return SOAP_ERR; + } + return SOAP_OK; +} + +SOAP_FMAC3 void* SOAP_FMAC4 soap_class_id_enter(struct soap *soap, const char *id, void *p, int t, size_t n, const char *type, const char *arrayType) +{ return soap_id_enter(soap, id, p, t, n, 0, type, arrayType, env_instantiate); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_byte(struct soap *soap, char *a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_byte + *a = SOAP_DEFAULT_byte; +#else + *a = (char)0; +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_byte(struct soap *soap, const char *tag, int id, const char *a, const char *type) +{ (void)soap; (void)type; (void)tag; (void)id; + return soap_outbyte(soap, tag, id, a, type, SOAP_TYPE_byte); +} + +SOAP_FMAC3 char * SOAP_FMAC4 soap_in_byte(struct soap *soap, const char *tag, char *a, const char *type) +{ char *p; + p = soap_inbyte(soap, tag, a, type, SOAP_TYPE_byte); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_byte(struct soap *soap, const char *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_byte); + if (soap_out_byte(soap, tag?tag:"byte", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 char * SOAP_FMAC4 soap_get_byte(struct soap *soap, char *p, const char *tag, const char *type) +{ + if ((p = soap_in_byte(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_int(struct soap *soap, int *a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_int + *a = SOAP_DEFAULT_int; +#else + *a = (int)0; +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_int(struct soap *soap, const char *tag, int id, const int *a, const char *type) +{ (void)soap; (void)type; (void)tag; (void)id; + return soap_outint(soap, tag, id, a, type, SOAP_TYPE_int); +} + +SOAP_FMAC3 int * SOAP_FMAC4 soap_in_int(struct soap *soap, const char *tag, int *a, const char *type) +{ int *p; + p = soap_inint(soap, tag, a, type, SOAP_TYPE_int); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_int(struct soap *soap, const int *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_int); + if (soap_out_int(soap, tag?tag:"int", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 int * SOAP_FMAC4 soap_get_int(struct soap *soap, int *p, const char *tag, const char *type) +{ + if ((p = soap_in_int(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Fault(struct soap *soap, struct SOAP_ENV__Fault *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default__QName(soap, &a->faultcode); + soap_default_string(soap, &a->faultstring); + soap_default_string(soap, &a->faultactor); + a->detail = NULL; + a->SOAP_ENV__Code = NULL; + a->SOAP_ENV__Reason = NULL; + soap_default_string(soap, &a->SOAP_ENV__Node); + soap_default_string(soap, &a->SOAP_ENV__Role); + a->SOAP_ENV__Detail = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Fault(struct soap *soap, const struct SOAP_ENV__Fault *a) +{ +#ifndef WITH_NOIDREF + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize__QName(soap, &a->faultcode); + soap_serialize_string(soap, &a->faultstring); + soap_serialize_string(soap, &a->faultactor); + soap_serialize_PointerToSOAP_ENV__Detail(soap, &a->detail); + soap_serialize_PointerToSOAP_ENV__Code(soap, &a->SOAP_ENV__Code); + soap_serialize_PointerToSOAP_ENV__Reason(soap, &a->SOAP_ENV__Reason); + soap_serialize_string(soap, &a->SOAP_ENV__Node); + soap_serialize_string(soap, &a->SOAP_ENV__Role); + soap_serialize_PointerToSOAP_ENV__Detail(soap, &a->SOAP_ENV__Detail); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Fault(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Fault *a, const char *type) +{ + const char *soap_tmp_faultcode = soap_QName2s(soap, a->faultcode); + (void)soap; (void)tag; (void)id; (void)type; + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_SOAP_ENV__Fault), type)) + return soap->error; + if (soap_out__QName(soap, "faultcode", -1, (char*const*)&soap_tmp_faultcode, "")) + return soap->error; + if (soap_out_string(soap, "faultstring", -1, &a->faultstring, "")) + return soap->error; + if (soap_out_string(soap, "faultactor", -1, &a->faultactor, "")) + return soap->error; + if (soap_out_PointerToSOAP_ENV__Detail(soap, "detail", -1, &a->detail, "")) + return soap->error; + if (soap_out_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Code", -1, &a->SOAP_ENV__Code, "")) + return soap->error; + if (soap_out_PointerToSOAP_ENV__Reason(soap, "SOAP-ENV:Reason", -1, &a->SOAP_ENV__Reason, "")) + return soap->error; + if (soap_out_string(soap, "SOAP-ENV:Node", -1, &a->SOAP_ENV__Node, "")) + return soap->error; + if (soap_out_string(soap, "SOAP-ENV:Role", -1, &a->SOAP_ENV__Role, "")) + return soap->error; + if (soap_out_PointerToSOAP_ENV__Detail(soap, "SOAP-ENV:Detail", -1, &a->SOAP_ENV__Detail, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_in_SOAP_ENV__Fault(struct soap *soap, const char *tag, struct SOAP_ENV__Fault *a, const char *type) +{ + size_t soap_flag_faultcode = 1; + size_t soap_flag_faultstring = 1; + size_t soap_flag_faultactor = 1; + size_t soap_flag_detail = 1; + size_t soap_flag_SOAP_ENV__Code = 1; + size_t soap_flag_SOAP_ENV__Reason = 1; + size_t soap_flag_SOAP_ENV__Node = 1; + size_t soap_flag_SOAP_ENV__Role = 1; + size_t soap_flag_SOAP_ENV__Detail = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct SOAP_ENV__Fault *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_SOAP_ENV__Fault, sizeof(struct SOAP_ENV__Fault), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default_SOAP_ENV__Fault(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_faultcode && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in__QName(soap, "faultcode", &a->faultcode, "")) + { soap_flag_faultcode--; + continue; + } + if (soap_flag_faultstring && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_string(soap, "faultstring", &a->faultstring, "xsd:string")) + { soap_flag_faultstring--; + continue; + } + if (soap_flag_faultactor && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_string(soap, "faultactor", &a->faultactor, "xsd:string")) + { soap_flag_faultactor--; + continue; + } + if (soap_flag_detail && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerToSOAP_ENV__Detail(soap, "detail", &a->detail, "")) + { soap_flag_detail--; + continue; + } + if (soap_flag_SOAP_ENV__Code && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Code", &a->SOAP_ENV__Code, "")) + { soap_flag_SOAP_ENV__Code--; + continue; + } + if (soap_flag_SOAP_ENV__Reason && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerToSOAP_ENV__Reason(soap, "SOAP-ENV:Reason", &a->SOAP_ENV__Reason, "")) + { soap_flag_SOAP_ENV__Reason--; + continue; + } + if (soap_flag_SOAP_ENV__Node && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_string(soap, "SOAP-ENV:Node", &a->SOAP_ENV__Node, "xsd:string")) + { soap_flag_SOAP_ENV__Node--; + continue; + } + if (soap_flag_SOAP_ENV__Role && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_string(soap, "SOAP-ENV:Role", &a->SOAP_ENV__Role, "xsd:string")) + { soap_flag_SOAP_ENV__Role--; + continue; + } + if (soap_flag_SOAP_ENV__Detail && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerToSOAP_ENV__Detail(soap, "SOAP-ENV:Detail", &a->SOAP_ENV__Detail, "")) + { soap_flag_SOAP_ENV__Detail--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct SOAP_ENV__Fault *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_SOAP_ENV__Fault, 0, sizeof(struct SOAP_ENV__Fault), 0, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Fault(struct soap *soap, const struct SOAP_ENV__Fault *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_SOAP_ENV__Fault); + if (soap_out_SOAP_ENV__Fault(soap, tag?tag:"SOAP-ENV:Fault", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_get_SOAP_ENV__Fault(struct soap *soap, struct SOAP_ENV__Fault *p, const char *tag, const char *type) +{ + if ((p = soap_in_SOAP_ENV__Fault(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct SOAP_ENV__Fault * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Fault(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Fault(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_SOAP_ENV__Fault, n, env_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Fault); + if (size) + *size = sizeof(struct SOAP_ENV__Fault); + } + else + { cp->ptr = (void*)SOAP_NEW_ARRAY(struct SOAP_ENV__Fault, n); + if (size) + *size = n * sizeof(struct SOAP_ENV__Fault); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + if (!cp->ptr) + soap->error = SOAP_EOM; + return (struct SOAP_ENV__Fault*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Fault(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)tt; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Fault %p -> %p\n", q, p)); + *(struct SOAP_ENV__Fault*)p = *(struct SOAP_ENV__Fault*)q; +} + +#endif + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_string(soap, &a->SOAP_ENV__Text); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Reason(struct soap *soap, const struct SOAP_ENV__Reason *a) +{ +#ifndef WITH_NOIDREF + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_string(soap, &a->SOAP_ENV__Text); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Reason(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Reason *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)type; + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_SOAP_ENV__Reason), type)) + return soap->error; + if (soap->lang) + soap_set_attr(soap, "xml:lang", soap->lang, 1); + if (soap_out_string(soap, "SOAP-ENV:Text", -1, &a->SOAP_ENV__Text, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_in_SOAP_ENV__Reason(struct soap *soap, const char *tag, struct SOAP_ENV__Reason *a, const char *type) +{ + size_t soap_flag_SOAP_ENV__Text = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct SOAP_ENV__Reason *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_SOAP_ENV__Reason, sizeof(struct SOAP_ENV__Reason), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default_SOAP_ENV__Reason(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_SOAP_ENV__Text && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_string(soap, "SOAP-ENV:Text", &a->SOAP_ENV__Text, "xsd:string")) + { soap_flag_SOAP_ENV__Text--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct SOAP_ENV__Reason *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_SOAP_ENV__Reason, 0, sizeof(struct SOAP_ENV__Reason), 0, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Reason(struct soap *soap, const struct SOAP_ENV__Reason *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_SOAP_ENV__Reason); + if (soap_out_SOAP_ENV__Reason(soap, tag?tag:"SOAP-ENV:Reason", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_get_SOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *p, const char *tag, const char *type) +{ + if ((p = soap_in_SOAP_ENV__Reason(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct SOAP_ENV__Reason * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Reason(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Reason(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_SOAP_ENV__Reason, n, env_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Reason); + if (size) + *size = sizeof(struct SOAP_ENV__Reason); + } + else + { cp->ptr = (void*)SOAP_NEW_ARRAY(struct SOAP_ENV__Reason, n); + if (size) + *size = n * sizeof(struct SOAP_ENV__Reason); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + if (!cp->ptr) + soap->error = SOAP_EOM; + return (struct SOAP_ENV__Reason*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Reason(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)tt; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Reason %p -> %p\n", q, p)); + *(struct SOAP_ENV__Reason*)p = *(struct SOAP_ENV__Reason*)q; +} + +#endif + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->__any = NULL; + a->__type = 0; + a->fault = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Detail(struct soap *soap, const struct SOAP_ENV__Detail *a) +{ +#ifndef WITH_NOIDREF + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_markelement(soap, a->fault, a->__type); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Detail(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Detail *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)type; + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_SOAP_ENV__Detail), type)) + return soap->error; + soap_outliteral(soap, "-any", &a->__any, NULL); + if (soap_putelement(soap, a->fault, "fault", -1, a->__type)) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_in_SOAP_ENV__Detail(struct soap *soap, const char *tag, struct SOAP_ENV__Detail *a, const char *type) +{ + size_t soap_flag___any = 1; + size_t soap_flag_fault = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct SOAP_ENV__Detail *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_SOAP_ENV__Detail, sizeof(struct SOAP_ENV__Detail), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default_SOAP_ENV__Detail(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_fault && soap->error == SOAP_TAG_MISMATCH) + if ((a->fault = soap_getelement(soap, &a->__type))) + { soap_flag_fault = 0; + continue; + } + if (soap_flag___any && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_inliteral(soap, "-any", &a->__any)) + { soap_flag___any--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct SOAP_ENV__Detail *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_SOAP_ENV__Detail, 0, sizeof(struct SOAP_ENV__Detail), 0, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Detail(struct soap *soap, const struct SOAP_ENV__Detail *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_SOAP_ENV__Detail); + if (soap_out_SOAP_ENV__Detail(soap, tag?tag:"SOAP-ENV:Detail", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_get_SOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *p, const char *tag, const char *type) +{ + if ((p = soap_in_SOAP_ENV__Detail(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct SOAP_ENV__Detail * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Detail(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Detail(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_SOAP_ENV__Detail, n, env_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Detail); + if (size) + *size = sizeof(struct SOAP_ENV__Detail); + } + else + { cp->ptr = (void*)SOAP_NEW_ARRAY(struct SOAP_ENV__Detail, n); + if (size) + *size = n * sizeof(struct SOAP_ENV__Detail); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + if (!cp->ptr) + soap->error = SOAP_EOM; + return (struct SOAP_ENV__Detail*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Detail(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)tt; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Detail %p -> %p\n", q, p)); + *(struct SOAP_ENV__Detail*)p = *(struct SOAP_ENV__Detail*)q; +} + +#endif + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default__QName(soap, &a->SOAP_ENV__Value); + a->SOAP_ENV__Subcode = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Code(struct soap *soap, const struct SOAP_ENV__Code *a) +{ +#ifndef WITH_NOIDREF + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize__QName(soap, &a->SOAP_ENV__Value); + soap_serialize_PointerToSOAP_ENV__Code(soap, &a->SOAP_ENV__Subcode); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Code(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Code *a, const char *type) +{ + const char *soap_tmp_SOAP_ENV__Value = soap_QName2s(soap, a->SOAP_ENV__Value); + (void)soap; (void)tag; (void)id; (void)type; + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_SOAP_ENV__Code), type)) + return soap->error; + if (soap_out__QName(soap, "SOAP-ENV:Value", -1, (char*const*)&soap_tmp_SOAP_ENV__Value, "")) + return soap->error; + if (soap_out_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Subcode", -1, &a->SOAP_ENV__Subcode, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_in_SOAP_ENV__Code(struct soap *soap, const char *tag, struct SOAP_ENV__Code *a, const char *type) +{ + size_t soap_flag_SOAP_ENV__Value = 1; + size_t soap_flag_SOAP_ENV__Subcode = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct SOAP_ENV__Code *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_SOAP_ENV__Code, sizeof(struct SOAP_ENV__Code), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default_SOAP_ENV__Code(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_SOAP_ENV__Value && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in__QName(soap, "SOAP-ENV:Value", &a->SOAP_ENV__Value, "")) + { soap_flag_SOAP_ENV__Value--; + continue; + } + if (soap_flag_SOAP_ENV__Subcode && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Subcode", &a->SOAP_ENV__Subcode, "")) + { soap_flag_SOAP_ENV__Subcode--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct SOAP_ENV__Code *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_SOAP_ENV__Code, 0, sizeof(struct SOAP_ENV__Code), 0, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Code(struct soap *soap, const struct SOAP_ENV__Code *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_SOAP_ENV__Code); + if (soap_out_SOAP_ENV__Code(soap, tag?tag:"SOAP-ENV:Code", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_get_SOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *p, const char *tag, const char *type) +{ + if ((p = soap_in_SOAP_ENV__Code(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct SOAP_ENV__Code * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Code(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Code(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_SOAP_ENV__Code, n, env_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Code); + if (size) + *size = sizeof(struct SOAP_ENV__Code); + } + else + { cp->ptr = (void*)SOAP_NEW_ARRAY(struct SOAP_ENV__Code, n); + if (size) + *size = n * sizeof(struct SOAP_ENV__Code); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + if (!cp->ptr) + soap->error = SOAP_EOM; + return (struct SOAP_ENV__Code*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Code(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)tt; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Code %p -> %p\n", q, p)); + *(struct SOAP_ENV__Code*)p = *(struct SOAP_ENV__Code*)q; +} + +#endif + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Header(struct soap *soap, struct SOAP_ENV__Header *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Header(struct soap *soap, const struct SOAP_ENV__Header *a) +{ +#ifndef WITH_NOIDREF + (void)soap; (void)a; /* appease -Wall -Werror */ +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Header(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Header *a, const char *type) +{ + (void)soap; (void)tag; (void)id; (void)type; + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_SOAP_ENV__Header), type)) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_in_SOAP_ENV__Header(struct soap *soap, const char *tag, struct SOAP_ENV__Header *a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct SOAP_ENV__Header *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_SOAP_ENV__Header, sizeof(struct SOAP_ENV__Header), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default_SOAP_ENV__Header(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct SOAP_ENV__Header *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_SOAP_ENV__Header, 0, sizeof(struct SOAP_ENV__Header), 0, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Header(struct soap *soap, const struct SOAP_ENV__Header *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_SOAP_ENV__Header); + if (soap_out_SOAP_ENV__Header(soap, tag?tag:"SOAP-ENV:Header", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_get_SOAP_ENV__Header(struct soap *soap, struct SOAP_ENV__Header *p, const char *tag, const char *type) +{ + if ((p = soap_in_SOAP_ENV__Header(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct SOAP_ENV__Header * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Header(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Header(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_SOAP_ENV__Header, n, env_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Header); + if (size) + *size = sizeof(struct SOAP_ENV__Header); + } + else + { cp->ptr = (void*)SOAP_NEW_ARRAY(struct SOAP_ENV__Header, n); + if (size) + *size = n * sizeof(struct SOAP_ENV__Header); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + if (!cp->ptr) + soap->error = SOAP_EOM; + return (struct SOAP_ENV__Header*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Header(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)tt; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Header %p -> %p\n", q, p)); + *(struct SOAP_ENV__Header*)p = *(struct SOAP_ENV__Header*)q; +} + +#endif + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *const*a) +{ +#ifndef WITH_NOIDREF + if (!soap_reference(soap, *a, SOAP_TYPE_SOAP_ENV__Reason)) + soap_serialize_SOAP_ENV__Reason(soap, *a); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Reason(struct soap *soap, const char *tag, int id, struct SOAP_ENV__Reason *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_SOAP_ENV__Reason); + if (id < 0) + return soap->error; + return soap_out_SOAP_ENV__Reason(soap, tag, id, *a, type); +} + +SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Reason(struct soap *soap, const char *tag, struct SOAP_ENV__Reason **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (struct SOAP_ENV__Reason **)soap_malloc(soap, sizeof(struct SOAP_ENV__Reason *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = soap_in_SOAP_ENV__Reason(soap, tag, *a, type))) + return NULL; + } + else + { a = (struct SOAP_ENV__Reason **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_SOAP_ENV__Reason, sizeof(struct SOAP_ENV__Reason), 0); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_PointerToSOAP_ENV__Reason); + if (soap_out_PointerToSOAP_ENV__Reason(soap, tag?tag:"SOAP-ENV:Reason", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerToSOAP_ENV__Reason(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +#endif + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *const*a) +{ +#ifndef WITH_NOIDREF + if (!soap_reference(soap, *a, SOAP_TYPE_SOAP_ENV__Detail)) + soap_serialize_SOAP_ENV__Detail(soap, *a); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Detail(struct soap *soap, const char *tag, int id, struct SOAP_ENV__Detail *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_SOAP_ENV__Detail); + if (id < 0) + return soap->error; + return soap_out_SOAP_ENV__Detail(soap, tag, id, *a, type); +} + +SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Detail(struct soap *soap, const char *tag, struct SOAP_ENV__Detail **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (struct SOAP_ENV__Detail **)soap_malloc(soap, sizeof(struct SOAP_ENV__Detail *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = soap_in_SOAP_ENV__Detail(soap, tag, *a, type))) + return NULL; + } + else + { a = (struct SOAP_ENV__Detail **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_SOAP_ENV__Detail, sizeof(struct SOAP_ENV__Detail), 0); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_PointerToSOAP_ENV__Detail); + if (soap_out_PointerToSOAP_ENV__Detail(soap, tag?tag:"SOAP-ENV:Detail", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerToSOAP_ENV__Detail(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +#endif + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *const*a) +{ +#ifndef WITH_NOIDREF + if (!soap_reference(soap, *a, SOAP_TYPE_SOAP_ENV__Code)) + soap_serialize_SOAP_ENV__Code(soap, *a); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Code(struct soap *soap, const char *tag, int id, struct SOAP_ENV__Code *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_SOAP_ENV__Code); + if (id < 0) + return soap->error; + return soap_out_SOAP_ENV__Code(soap, tag, id, *a, type); +} + +SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Code(struct soap *soap, const char *tag, struct SOAP_ENV__Code **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (struct SOAP_ENV__Code **)soap_malloc(soap, sizeof(struct SOAP_ENV__Code *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = soap_in_SOAP_ENV__Code(soap, tag, *a, type))) + return NULL; + } + else + { a = (struct SOAP_ENV__Code **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_SOAP_ENV__Code, sizeof(struct SOAP_ENV__Code), 0); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_PointerToSOAP_ENV__Code); + if (soap_out_PointerToSOAP_ENV__Code(soap, tag?tag:"SOAP-ENV:Code", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerToSOAP_ENV__Code(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +#endif + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize__QName(struct soap *soap, char *const*a) +{ +#ifndef WITH_NOIDREF + soap_reference(soap, *a, SOAP_TYPE__QName); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__QName(struct soap *soap, const char *tag, int id, char *const*a, const char *type) +{ + return soap_outstring(soap, tag, id, a, type, SOAP_TYPE__QName); +} + +SOAP_FMAC3 char * * SOAP_FMAC4 soap_in__QName(struct soap *soap, const char *tag, char **a, const char *type) +{ char **p; + p = soap_instring(soap, tag, a, type, SOAP_TYPE__QName, 2, 0, -1); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put__QName(struct soap *soap, char *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE__QName); + if (soap_out__QName(soap, tag?tag:"byte", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 char ** SOAP_FMAC4 soap_get__QName(struct soap *soap, char **p, const char *tag, const char *type) +{ + if ((p = soap_in__QName(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_string(struct soap *soap, char **a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_string + *a = SOAP_DEFAULT_string; +#else + *a = (char *)0; +#endif +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_string(struct soap *soap, char *const*a) +{ +#ifndef WITH_NOIDREF + soap_reference(soap, *a, SOAP_TYPE_string); +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_string(struct soap *soap, const char *tag, int id, char *const*a, const char *type) +{ + return soap_outstring(soap, tag, id, a, type, SOAP_TYPE_string); +} + +SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_string(struct soap *soap, const char *tag, char **a, const char *type) +{ char **p; + p = soap_instring(soap, tag, a, type, SOAP_TYPE_string, 1, 0, -1); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_string(struct soap *soap, char *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_string); + if (soap_out_string(soap, tag?tag:"byte", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_string(struct soap *soap, char **p, const char *tag, const char *type) +{ + if ((p = soap_in_string(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +#if defined(__BORLANDC__) +#pragma option pop +#pragma option pop +#endif + +/* End of envC.cpp */ diff --git a/coregrade/src/shared_tool/groups.cc b/coregrade/src/shared_tool/groups.cc new file mode 100644 index 0000000..5daf383 --- /dev/null +++ b/coregrade/src/shared_tool/groups.cc @@ -0,0 +1,130 @@ +// Account management toosl +#include "clog.h" +#include "cgi.h" +#include "input.h" +#include "coregrade_api.h" +#include "groups.h" +#include "email.h" +#include "safestring.h" +#include +#include "pgsql.h" +#include "pgsql_wrapper.h" +#include "cfg.h" +#include + + + +long groups_calls(CVars in, CVars &out) +{ + logfmt( logINFO, "groups_calls()" ); + out["result"] = "YES I GET TO BACK END"; + long action = REQ_LONG( in, "action", 0, -1); + switch( action ) + { + + + case COREGRADE_GROUP_ACCEPTGROUP: + //return LoginCoreGradeAccount( in, out); + break; + + case COREGRADE_GROUP_INVITEGROUP: + //return CreateCoreGradeAccountPending(in, out); + break; + + case COREGRADE_GROUP_CREATEGROUP: + return CreateCoreGradeGroup( in, out); + break; + } + logfmt( logINFO, "/groups_calls()" ); + return 0; +} + +long CreateCoreGradeGroup(CVars in, CVars &out) +{ + long ret = PHP_API_BAD_PARAM; + out =in; + + REQ_STRING (in, "group_name", 5, 99, "(.*)"); + OPTIONAL( in, "description" ) REQ_STRING (in, "description", 1, 249, "(.*)"); + REQ_LONG( in, "contribute", 1, -1 ); + REQ_LONG( in, "member_id", 1, -1 ); + OPTIONAL( in, "loc" ) REQ_STRING (in, "loc", 3, 15, "(.*)"); + + CVars x; + x["group_name"] = in["group_name"]; x["group_name"].set_valid( true ); + x["description"] = in["description"]; x["description"].set_valid( true ); + x["invite"] = "1"; x["invite"].set_valid( true ); + x["member_id"] = in["member_id"]; x["member_id"].set_valid( true ); + x["loc"] = in["loc"]; x["loc"].set_valid( true ); + ret = insert_db_record( DBS_VALID, "members_groups", "members_groups_id_seq", x ); + + if ( ret > 0 ) + { + if ( in["contribute"].Long() > 0 ) + { + pgsql_exec("UPDATE members_groups SET contribute=NOW() WHERE id=%lu ", ret); + } + out["group_id"] = ret; out["group_id"].set_valid( true ); + x["group_id"] = ret; x["group_id"].set_valid( true ); + CVars y; + y["member_id"] = in["member_id"]; y["member_id"].set_valid( true ); + y["admin_status"] = in["member_id"]; y["admin_status"].set_valid( true ); + y["group_id"] = out["group_id"]; y["group_id"].set_valid( true ); + y["loc"] = in["loc"]; y["loc"].set_valid( true ); + //ALTER TABLE group_members ADD admin_status INT REFERENCES members(id); + CoreGradeGroupCreateMember(y,out); + CreateCoreGradeGroupMail(y); + } + return ret; +} + +long CoreGradeGroupCreateMember(CVars in, CVars &out) +{ + long ret = PHP_API_BAD_PARAM; + out =in; + REQ_LONG( in, "member_id", 1, -1 ); + REQ_LONG( in, "group_id", 1, -1 ); + OPTIONAL( in, "loc" ) REQ_STRING (in, "loc", 3, 15, "(.*)"); + + CVars x; + x["group_id"] = in["group_id"]; x["group_id"].set_valid( true ); + x["member_id"] = in["member_id"]; x["member_id"].set_valid( true ); + x["loc"] = in["loc"]; x["loc"].set_valid( true ); + if (in["admin_status"].Long() > 0) + { + x["admin_status"] = in["admin_status"]; x["admin_status"].set_valid( true ); + } + ret = insert_db_record( DBS_VALID, "group_members", "group_members_id_seq", x ); + + if ( ret > 0 ) + { out["group_member_id"] = ret; out["group_member_id"].set_valid( true ); + x["group_member_id"] = ret; x["group_member_id"].set_valid( true ); + GroupCreateMemberMail(x); + pgsql_exec("UPDATE members_groups SET accepted = (SELECT count(*) FROM group_members WHERE group_id = %lu ) WHERE id=%lu",x["group_id"].Long(),x["group_id"].Long() ); + } + return ret; +} +//****************************************************************************** + + + /* +CREATE TABLE group_members ( + id SERIAL, + member_id INT REFERENCES members(id), + group_name VARCHAR(100) UNIQUE NOT NULL, + description VARCHAR(250), + added timestamp without time zone DEFAULT now(), + balance integer DEFAULT 0, + contribute timestamp without time zone, + alert integer DEFAULT 0, + status integer DEFAULT 1, + invite integer DEFAULT 0, + accepted integer DEFAULT 0, + rejected integer DEFAULT 0, + loc INET + ); +ALTER TABLE ONLY members_groups + ADD CONSTRAINT members_groups_id_key UNIQUE (id); + + */ + diff --git a/coregrade/src/shared_tool/interswitch.cc b/coregrade/src/shared_tool/interswitch.cc new file mode 100644 index 0000000..dea5657 --- /dev/null +++ b/coregrade/src/shared_tool/interswitch.cc @@ -0,0 +1,1555 @@ +#include +#include +#include +#include +#include + +#include "vars.h" +#include "safestring.h" + +//#include "soapBasicHttpBinding_USCOREQuickTellerServiceProxy.h" // get proxy +//#include "BasicHttpBinding_USCOREQuickTellerService.nsmap" // obtain the generated XML namespace mapping table for the InterSwitch service +#include "interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.h" // get proxy +#include "interswitch.nsmap" // obtain the generated XML namespace mapping table for the InterSwitch service +#include "sha512.h" +#include "XmlParser.h" +#include "interswitch.h" + + +#define BUFSIZE 1024 + +// global SSL configuration +char interswitch_ssl_keyfile[256]; +char interswitch_ssl_password[20]; +char interswitch_ssl_cacert[256]; +int interswitch_ssl_configured = 0; +long interswitch_ssl_version = 0; + +using namespace interswitch; +using namespace std; +using namespace __gnu_cxx; + +#ifdef TEST +#include +#include +enum { FLOG_NONE,FLOG_FATAL,FLOG_CRITICAL,FLOG_WARN,FLOG_COMMAND,FLOG_MAX }; +#define logfmt interswitch_test_log +#define PREFIX "FAKE:" +class InterswitchFakeLog { + public: + void SetFileName(const char *str) { + cout << str << endl; + } +}; +static InterswitchFakeLog *plog = new InterswitchFakeLog(); +#else +//#include "general_types.h" +#include "clog.h" +#warning "Including log..." +#endif + +void interswitch_test_log( int level, const char * format, ... ) { + + va_list ap; + va_start( ap, format ); + + vfprintf( stdout, format, ap ); + fprintf( stdout, "\n" ); + + fflush( stdout ); + + va_end( ap ); +} + +/*****************************************************************************/ +/* +long interswitch_digest_to_vector(unsigned char *vector, unsigned char *digest, unsigned int digest_size) { + unsigned char output[2 * SHA512_DIGEST_SIZE + 1]; + int i; + output[2 * digest_size] = '\0'; + + for (i = 0; i < digest_size ; i++) { + sprintf((char *) output + 2*i, "%02x", digest[i]); + } + + logfmt(FLOG_MAX, "H: %s", output); + if (strcmp((char *) vector, (char *) output)) { + logfmt(FLOG_MAX, "Hash failed"); + return -1; + } + return 0; +} +*/ +/*****************************************************************************/ +/* +struct eqstr{ + bool operator()(const char* s1, const char* s2) const { + return strcmp(s1,s2)==0; + } +}; +*/ +/*****************************************************************************/ +long interswitch_config_ssl(const char *keyfile, const char *password, const char *cacert, long version) { + // setup global SSL configuration + //interswitch_ssl_configured = 0; + memset(interswitch_ssl_keyfile,0,256); + snprintf(interswitch_ssl_keyfile,256,"%s",keyfile); + memset(interswitch_ssl_password,0,20); + snprintf(interswitch_ssl_password,20,"%s",password); + memset(interswitch_ssl_cacert,0,256); + snprintf(interswitch_ssl_cacert,256, "%s",cacert); + interswitch_ssl_configured = 1; + interswitch_ssl_version = version; + return 1L; +} +/*****************************************************************************/ +int ParseInterswitchGetBillersResponse(const char *xmlstring,long(*save)(hash_map, eqstr>)) { //(long, char*, long, char*, char*)) { + + logfmt(FLOG_MAX,"int ParseInterswitchGetBillersResponse(const char *xmlstring,long(*save)(long, char*, long, char*, char*))"); + + using namespace SimpleXMLParser; + +#ifdef TEST + cout << "RAW: " << xmlstring << endl; +#endif + + XmlParser parser; + const Element& root = parser.Parse(xmlstring,strlen(xmlstring)); + + if (root.GetName()!="Response") { + logfmt(FLOG_MAX,"Unknown XML response"); + return -1; + } + // Data + //long id, currency_code; + //char name[256], quick_teller_site_url_name[256], support_email[256]; + hash_map, eqstr> saveData; + + int ret = -2; // Empty result + const Elements* classes = root.GetChildren(); + if(classes != 0) { + ret = 0; // We will return how manu billers parsed + for(Elements::const_iterator class_it = classes->begin();class_it != classes->end(); ++class_it) { + if((*class_it)->GetName()=="ResponseCode") { + const string value = (*class_it)->GetValue(); + logfmt(FLOG_MAX,"Parsed ResponseCode: %s", value.c_str()); + if (atoi(value.c_str())!=90000) { + ret = -3; // NOT SUCCESSFUL + break; + } + } else if ((*class_it)->GetName()=="BillerList") { + // Iterate categories under biller list + const Elements* categories = (*class_it)->GetChildren(); + if (categories!=0) { + for(Elements::const_iterator category_it = categories->begin();category_it != categories->end(); ++category_it) { + if ((*category_it)->GetName()=="Category") { + // Iterate billers under category + const Elements* billers = (*category_it)->GetChildren(); + if (billers!=0) { + for(Elements::const_iterator biller_it = billers->begin();biller_it!= billers->end(); ++biller_it) { + if((*biller_it)->GetName()=="Biller") { + // New biller + //id = 0L; + //currency_code = 0L; + //memset(name,0,256); + //memset(quick_teller_site_url_name,0,256); + //memset(support_email,0,256); + // Parse Biller + const Elements* data = (*biller_it)->GetChildren(); + if (data!=0) { + for (Elements::const_iterator data_it = data->begin();data_it != data->end(); ++data_it) { + const string key = (*data_it)->GetName(); + const string val = (*data_it)->GetValue(); + saveData[key.c_str()] = val.c_str(); +/* + if ((*data_it)->GetName()=="Id") { + const string value = (*data_it)->GetValue(); + id = atol(value.c_str()); + } else if ((*data_it)->GetName()=="Name") { + const string value = (*data_it)->GetValue(); + snprintf(name,256,"%s",value.c_str()); + } else if ((*data_it)->GetName()=="CurrencyCode") { + const string value = (*data_it)->GetValue(); + currency_code = atol(value.c_str()); + } else if ((*data_it)->GetName()=="QuickTellerSiteUrlName") { + const string value = (*data_it)->GetValue(); + snprintf(quick_teller_site_url_name,256,"%s",value.c_str()); + } else if ((*data_it)->GetName()=="SupportEmail") { + const string value = (*data_it)->GetValue(); + snprintf(support_email,256,"%s",value.c_str()); + } +*/ + } + // Save data + hash_map, eqstr>::iterator pointer; + for (pointer = saveData.begin();pointer!=saveData.end();++pointer) { + //logfmt(FLOG_MAX, "'%s' => '%s'", pointer->first, pointer->second); + } + if (save!=NULL) { + save (saveData); + } + ret++; + } else { + logfmt(FLOG_MAX,"Empty biller node?"); + } + } + } + } else { + logfmt(FLOG_MAX,"Empty category?"); + } + } + } + } else { + logfmt(FLOG_MAX,"Empty biller list?"); + } + } else { + logfmt(FLOG_MAX,"Skipped element: %s", (*class_it)->GetName().c_str()); + } + } + } else { + logfmt(FLOG_MAX,"Empty response?"); + } + return 0; +} +/*****************************************************************************/ +int ParseInterswitchGetBillerPaymentItemsResponse(const char *xmlstring,long(*save)(const char*, hash_map, eqstr>)) { //(long, char*, long, char*, char*)) { + + logfmt(FLOG_MAX,"int ParseInterswitchGetBillerPaymentItemsResponse(const char *xmlstring,long(*save)(long, char*, long, char*, char*))"); + + using namespace SimpleXMLParser; + +#ifdef TEST + cout << "RAW: " << xmlstring << endl; +#endif + + XmlParser parser; + const Element& root = parser.Parse(xmlstring,strlen(xmlstring)); + + if (root.GetName()!="Response") { + logfmt(FLOG_MAX,"Unknown XML response"); + return -1; + } + hash_map, eqstr> saveData; + int ret = -2; // Empty result + const Elements* classes = root.GetChildren(); + if(classes != 0) { + ret = 0; // We will return how manu billers parsed + for(Elements::const_iterator class_it = classes->begin();class_it != classes->end(); ++class_it) { + if((*class_it)->GetName()=="ResponseCode") { + const string value = (*class_it)->GetValue(); + logfmt(FLOG_MAX,"Parsed ResponseCode: %s", value.c_str()); + if (atoi(value.c_str())!=90000) { + ret = -3; // NOT SUCCESSFUL + break; + } + } else if ((*class_it)->GetName()=="PaymentItemList") { + // Iterate payment items + const Elements* items = (*class_it)->GetChildren(); + if (items!=0) { + for(Elements::const_iterator items_it = items->begin();items_it != items->end(); ++items_it) { + if((*items_it)->GetName()=="PaymentItem") { + // Parse payment item + const Elements* data = (*items_it)->GetChildren(); + if (data!=0) { + for (Elements::const_iterator data_it = data->begin();data_it != data->end(); ++data_it) { + const string key = (*data_it)->GetName(); + const string val = (*data_it)->GetValue(); + saveData[key.c_str()] = val.c_str(); + } + // Save data + /* + hash_map, eqstr>::iterator pointer; + for (pointer = saveData.begin();pointer!=saveData.end();++pointer) { + //logfmt(FLOG_MAX, "'%s' => '%s'", pointer->first, pointer->second); + } + */ + if (save!=NULL) { + save ("interswitch_biller_payment_items", saveData); + } + ret++; + } else { + logfmt(FLOG_MAX,"Empty payment item node?"); + } + } + } + } else { + logfmt(FLOG_MAX,"Empty biller payment item list?"); + } + } else { + logfmt(FLOG_MAX,"Skipped element: %s", (*class_it)->GetName().c_str()); + } + } + } else { + logfmt(FLOG_MAX,"Empty response?"); + } + return 0; +} +/*****************************************************************************/ +int ParseInterswitchGetBillerCategoriesResponse(const char *xmlstring,long(*save)(hash_map, eqstr>)) { //(long, char*, long, char*, char*)) { + + logfmt(FLOG_MAX,"int ParseInterswitchGetBillerCategorisResponse(const char *xmlstring,long(*save)(long, char*, long, char*, char*))"); + +logfmt(FLOG_MAX,"*** NOT IMPLEMENTED!!! ***"); +logfmt(FLOG_MAX, xmlstring); + + logfmt(FLOG_MAX,"/int ParseInterswitchGetBillerCategoriesResponse(const char *xmlstring,long(*save)(long, char*, long, char*, char*))"); + return 0; +} +/*****************************************************************************/ +string ParseInterswitchResponse(const char *xmlstring,const char *what,char *response, char *responseCode) { + +// 90091983A3924883A8B66AEB902E9790BCDE1D8191377E481E20343A4E24954D2BFB528E44F4A9844F4DC681F8ECF9E1A9B9CCC505763D78D1002162B4B3EEEC013AD14/May/2010 06:55:14PAYLID|LOC|CA|ZIB|AC|1405100655|00000001 + using namespace SimpleXMLParser; + +#ifdef TEST + cout << "RAW: " << xmlstring << endl; +#endif + + XmlParser parser; + const Element& root = parser.Parse(xmlstring,strlen(xmlstring)); + + if (root.GetName()!="Response") { + logfmt(FLOG_MAX,"Unknown XML response"); + return ""; + } + + string ret = ""; // Empty result cryptogram error + //char *transactionReference = NULL; + string transactionReference; + + const Elements* classes = root.GetChildren(); + if(classes != 0) { + for(Elements::const_iterator class_it = classes->begin();class_it != classes->end(); ++class_it) { + if((*class_it)->GetName()=="ResponseCode") { + + const string value = (*class_it)->GetValue(); + logfmt(FLOG_MAX,"Parsed ResponseCode: %s", value.c_str()); + strcpy(responseCode,value.c_str()); + ret = value; + + } else if ((*class_it)->GetName()==what) { + + const string value = (*class_it)->GetValue(); + logfmt(FLOG_MAX, "Parsed '%s' => '%s'", what, value.c_str()); + + strcpy(response,value.c_str()); + //transactionReference = (char *)malloc(1+strlen(value.c_str())); + //strcpy(transactionReference,value.c_str()); + transactionReference = value; + + } else if ((*class_it)->GetName()=="TransactionReference") { + + const string value = (*class_it)->GetValue(); + //transactionReference = (char *)malloc(1+strlen(value.c_str())); + //strcpy(transactionReference,value.c_str()); + transactionReference = value; + + } else { + logfmt(FLOG_MAX,"Skipped element: %s", (*class_it)->GetName().c_str()); + } + } + } + if (transactionReference.empty() || transactionReference.length()<8L) { + logfmt(FLOG_MAX,"Empty or missing TransactionReference"); + // Not a comm. error in some cases (overriden above) + } + +/* + if (transactionReference) { + free(transactionReference); + } +*/ + return ret; +} + +/*****************************************************************************/ +string interswitch_getBankCodes(const char *endpoint, const char *tid, char *status) { + return ""; +} + +/*****************************************************************************/ +int my_soap_ssl_client_context(BasicHttpBinding_USCOREQuickTellerServiceProxy *q) { + logfmt(FLOG_MAX,"int my_soap_ssl_client_context(BasicHttpBinding_USCOREQuickTellerServiceProxy *q)"); + int context = 0; + + logfmt(FLOG_MAX,"interswitch_ssl_version=%d", interswitch_ssl_version); + +// SOAP_SSL_DEFAULT|SOAP_SSL_SKIP_HOST_CHECK|SOAP_SSL_ALLOW_EXPIRED_CERTIFICATE, + if (interswitch_ssl_version>0) { + context = soap_ssl_client_context(q, + SOAP_SSL_DEFAULT|SOAP_SSL_SKIP_HOST_CHECK|SOAP_SSL_ALLOW_EXPIRED_CERTIFICATE, + interswitch_ssl_keyfile, /* keyfile: required only when client must authenticate to server (see SSL docs on how to obtain this file) */ + interswitch_ssl_password, /* password to read the key file (not used with GNUTLS) */ + interswitch_ssl_cacert, /* cacert file to store trusted certificates (needed to verify server) */ + NULL, /* capath to directory with trusted certificates */ + NULL /* if randfile!=NULL: use a file with random data to seed randomness */ + ); + } else { + context = soap_ssl_client_context(q,SOAP_SSL_SKIP_HOST_CHECK|SOAP_SSL_ALLOW_EXPIRED_CERTIFICATE|SOAP_SSL_NO_AUTHENTICATION,NULL,NULL,NULL,NULL,NULL); + } + logfmt(FLOG_MAX,"/int my_soap_ssl_client_context(BasicHttpBinding_USCOREQuickTellerServiceProxy *q)"); + return context; +} + + +/*****************************************************************************/ +long interswitch_getBillers(const char *endpoint, const char *tid, int billerId, int categoryId, int channelId, const char *billerName, char *error, long(*save)(hash_map, eqstr>)) { //(long, char*, long, char*, char*)) { + //plog->SetFileName( PREFIX"/logs/SendMoneyInterswitch.log" ); + logfmt( FLOG_MAX, "long interswitch_getBillers(...)" ); + + logfmt( FLOG_MAX, "endpoint=%s", endpoint ); + + string status = "Unknown error"; + // Check SSL configuration + if (interswitch_ssl_configured!=1) { + status = "SSL is not configured"; + strncpy(error,status.c_str(),strlen(error)); + return -1L; + } + + soap_ssl_init(); /* init OpenSSL (just once) */ + + + //BasicHttpBinding_USCOREQuickTellerServiceProxy *q = new BasicHttpBinding_USCOREQuickTellerServiceProxy(); + //q->soap_endpoint = endpoint; + BasicHttpBinding_USCOREQuickTellerServiceProxy q; + q.soap_endpoint = endpoint; + _interswitch__GetBillers *interswitch__GetBillers = new _interswitch__GetBillers(); + _interswitch__GetBillersResponse *interswitch__GetBillersResponse = new _interswitch__GetBillersResponse(); + + char d[32]; + + string xmlParams = "\ +"; + xmlParams += ""; + xmlParams += tid; // PLD + xmlParams += ""; + if (billerId>0) { + xmlParams += ""; + sprintf(d, "%ld", billerId); + xmlParams += d; + xmlParams += ""; + } + if (categoryId>0) { + xmlParams += ""; + sprintf(d, "%ld", categoryId); + xmlParams += d; + xmlParams += ""; + } + if (channelId>0) { + xmlParams += ""; + sprintf(d, "%ld", channelId); + xmlParams += d; + xmlParams += ""; + } + if (billerName!=NULL && strlen(billerName)>0) { + xmlParams += ""; + xmlParams += billerName; + xmlParams += ""; + } + xmlParams += ""; + + logfmt( FLOG_MAX, "XML SENT-> %s", xmlParams.c_str()); + + interswitch__GetBillers->xmlParams = &xmlParams; + + int context = my_soap_ssl_client_context(&q); + logfmt( FLOG_MAX, "my_soap_ssl_client_context(q)=%d", context); + if (context) { + soap_print_fault(&q, stderr); + status = "Cannot initalize SOAP/SSL"; + strncpy(error,status.c_str(),strlen(error)); +/* + FILE* pFile = fopen("/tmp/soap_debug.log", "a"); + soap_print_fault(&q, pFile); + fclose(pFile); */ + delete interswitch__GetBillers; + delete interswitch__GetBillersResponse; + //delete q; + + return -1L; + } + + long soap_result = SOAP_ERR; + try { + soap_result = q.GetBillers(interswitch__GetBillers, interswitch__GetBillersResponse); + + } catch (...) { + status = "Proxy exception"; + } +logfmt( FLOG_MAX, "result = %ld", soap_result ); //////////////////////////// + + if (soap_result == SOAP_OK) { + char response[BUFSIZE]; + memset(response,0,BUFSIZE); + + soap_result = ParseInterswitchGetBillersResponse(interswitch__GetBillersResponse->GetBillersResult->c_str(),save); + //logfmt(FLOG_MAX, "Result: %s", interswitch__GetBillersResponse->GetBillersResult->c_str()); + status = response; + } else if (soap_result < 30) { +// logfmt(FLOG_MAX, "BAD Result: %s", interswitch__GetBillersResponse->GetBillersResult->c_str()); + if (&q!=NULL && q.soap_fault_string()!=NULL) { + status = "Fault string: "; + status += q.soap_fault_string(); + } + if (&q!=NULL && q.soap_fault_detail()) { + status += "Fault detail: "; + status += q.soap_fault_detail(); + } + if (&q==NULL) { + status = "Bad proxy"; + } else { + //cout << "Unknown error: " << result << endl; + } + soap_result = -1L; + } else { + logfmt( FLOG_MAX, "BAD result = %ld", soap_result ); + FILE* pFile = fopen("/tmp/soap_debug.log", "a"); + soap_print_fault(&q, pFile); + fclose(pFile); + soap_result = -1L; + } + delete interswitch__GetBillers; + delete interswitch__GetBillersResponse; + /* if (result<30 && q!=NULL) { + // The object gets corrupted when there is a HTTP error + // result<30 valid SOAP responses from http://www.cs.fsu.edu/~engelen/stdsoap2.3.8.h + delete q; + } */ + strncpy(error,status.c_str(),strlen(error)); + return soap_result; +} + +/*****************************************************************************/ +long interswitch_getBillerPaymentItems(const char *endpoint, const char *tid, int billerId, char *error, long(*save)(const char *, hash_map, eqstr>)) { //(long, char*, long, char*, char*)) { + //plog->SetFileName( PREFIX"/logs/SendMoneyInterswitch.log" ); + logfmt( FLOG_MAX, "long interswitch_getBillerPaymentItems(...)" ); + + logfmt( FLOG_MAX, "endpoint=%s", endpoint ); + + string status = "Unknown error"; + // Check SSL configuration + if (interswitch_ssl_configured!=1) { + status = "SSL is not configured"; + strncpy(error,status.c_str(),strlen(error)); + return -1L; + } + + soap_ssl_init(); /* init OpenSSL (just once) */ + + + //BasicHttpBinding_USCOREQuickTellerServiceProxy *q = new BasicHttpBinding_USCOREQuickTellerServiceProxy(); + //q->soap_endpoint = endpoint; + BasicHttpBinding_USCOREQuickTellerServiceProxy q; + q.soap_endpoint = endpoint; + _interswitch__GetBillerPaymentItems *interswitch__GetBillerPaymentItems = new _interswitch__GetBillerPaymentItems(); + _interswitch__GetBillerPaymentItemsResponse *interswitch__GetBillerPaymentItemsResponse = new _interswitch__GetBillerPaymentItemsResponse(); + + char d[32]; + + string xmlParams = "\ +"; + xmlParams += ""; + xmlParams += tid; // PLD + xmlParams += ""; + if (billerId>0) { + xmlParams += ""; + sprintf(d, "%ld", billerId); + xmlParams += d; + xmlParams += ""; + } + xmlParams += ""; + + logfmt( FLOG_MAX, "XML SENT-> %s", xmlParams.c_str()); + + interswitch__GetBillerPaymentItems->xmlParams = &xmlParams; + + int context = my_soap_ssl_client_context(&q); + logfmt( FLOG_MAX, "my_soap_ssl_client_context(q)=%d", context); + if (context) { + soap_print_fault(&q, stderr); + status = "Cannot initalize SOAP/SSL"; + strncpy(error,status.c_str(),strlen(error)); + delete interswitch__GetBillerPaymentItems; + delete interswitch__GetBillerPaymentItemsResponse; + //delete q; + + return -1L; + } + + long soap_result = SOAP_ERR; + try { + soap_result = q.GetBillerPaymentItems(interswitch__GetBillerPaymentItems, interswitch__GetBillerPaymentItemsResponse); + + } catch (...) { + status = "Proxy exception"; + } +logfmt( FLOG_MAX, "result = %ld", soap_result ); //////////////////////////// + + if (soap_result == SOAP_OK) { + char response[BUFSIZE]; + memset(response,0,BUFSIZE); + soap_result = ParseInterswitchGetBillerPaymentItemsResponse(interswitch__GetBillerPaymentItemsResponse->GetBillerPaymentItemsResult->c_str(),save); + //logfmt(FLOG_MAX, "Result: %s", interswitch__GetBillerPaymentItemsResponse->GetBillerPaymentItemsResult->c_str()); + status = response; + } else if (soap_result < 30) { +// logfmt(FLOG_MAX, "BAD Result: %s", interswitch__GetBillerPaymentItemsResponse->GetBillerPaymentItemsResult->c_str()); + if (&q!=NULL && q.soap_fault_string()!=NULL) { + status = "Fault string: "; + status += q.soap_fault_string(); + } + if (&q!=NULL && q.soap_fault_detail()) { + status += "Fault detail: "; + status += q.soap_fault_detail(); + } + if (&q==NULL) { + status = "Bad proxy"; + } else { + //cout << "Unknown error: " << result << endl; + } + soap_result = -1L; + } else { + logfmt( FLOG_MAX, "BAD result = %ld", soap_result ); + soap_result = -1L; + } + delete interswitch__GetBillerPaymentItems; + delete interswitch__GetBillerPaymentItemsResponse; + strncpy(error,status.c_str(),strlen(error)); + return soap_result; +} + +/*****************************************************************************/ +long interswitch_getBillerCategories(const char *endpoint, char *error, long(*save)(hash_map, eqstr>)) { //(long, char*, long, char*, char*)) { + //plog->SetFileName( PREFIX"/logs/SendMoneyInterswitch.log" ); + logfmt( FLOG_MAX, "long interswitch_getBillerCategories(...)" ); + + logfmt( FLOG_MAX, "endpoint=%s", endpoint ); + + string status = "Unknown error"; + // Check SSL configuration + if (interswitch_ssl_configured!=1) { + status = "SSL is not configured"; + strncpy(error,status.c_str(),strlen(error)); + return -1L; + } + + soap_ssl_init(); /* init OpenSSL (just once) */ + + + //BasicHttpBinding_USCOREQuickTellerServiceProxy *q = new BasicHttpBinding_USCOREQuickTellerServiceProxy(); + //q->soap_endpoint = endpoint; + BasicHttpBinding_USCOREQuickTellerServiceProxy q; + q.soap_endpoint = endpoint; + _interswitch__GetBillerCategories *interswitch__GetBillerCategories = new _interswitch__GetBillerCategories(); + _interswitch__GetBillerCategoriesResponse *interswitch__GetBillerCategoriesResponse = new _interswitch__GetBillerCategoriesResponse(); + + char d[32]; + + int context = my_soap_ssl_client_context(&q); + logfmt( FLOG_MAX, "my_soap_ssl_client_context(q)=%d", context); + if (context) { + soap_print_fault(&q, stderr); + status = "Cannot initalize SOAP/SSL"; + strncpy(error,status.c_str(),strlen(error)); + delete interswitch__GetBillerCategoriesResponse; + delete interswitch__GetBillerCategories; + //delete q; + return -1L; + } + + long soap_result = SOAP_ERR; + try { + + soap_result = q.GetBillerCategories(interswitch__GetBillerCategories, interswitch__GetBillerCategoriesResponse); + + } catch (...) { + status = "Proxy exception"; + } +logfmt( FLOG_MAX, "result = %ld", soap_result ); //////////////////////////// + + if (soap_result == SOAP_OK) { + char response[BUFSIZE]; + memset(response,0,BUFSIZE); + soap_result = ParseInterswitchGetBillerCategoriesResponse(interswitch__GetBillerCategoriesResponse->GetBillerCategoriesResult->c_str(),save); + status = response; + } else if (soap_result < 30) { + if (&q!=NULL && q.soap_fault_string()!=NULL) { + status = "Fault string: "; + status += q.soap_fault_string(); + } + if (&q!=NULL && q.soap_fault_detail()) { + status += "Fault detail: "; + status += q.soap_fault_detail(); + } + if (&q==NULL) { + status = "Bad proxy"; + } else { + //cout << "Unknown error: " << result << endl; + } + soap_result = -1L; + } else { + logfmt( FLOG_MAX, "BAD result = %ld", soap_result ); + soap_result = -1L; + } + delete interswitch__GetBillerCategories; + delete interswitch__GetBillerCategoriesResponse; + + strncpy(error,status.c_str(),strlen(error)); + logfmt( FLOG_MAX, "long interswitch_getBillerCategories(...)" ); + return soap_result; +} + +/*****************************************************************************/ +string interswitch_queryTransaction(const char *endpoint, const char *tid, const char *transferCode, const char *requestReference, char *error, char *transactionResponseCode) { + + //plog->SetFileName( PREFIX"/logs/SendMoneyInterswitch.log" ); + logfmt( FLOG_MAX, "long interswitch_getBillerCategories(...)" ); + logfmt( FLOG_MAX, "endpoint=%s", endpoint ); + + string status = "Unknown error"; + // Check SSL configuration + if (interswitch_ssl_configured!=1) { + status = "SSL is not configured"; + strsafecpy(error,status.c_str(),SAFESTRING_COMMON_BUFFER_SIZE); + return "-1"; + } + soap_ssl_init(); /* init OpenSSL (just once) */ + + //BasicHttpBinding_USCOREQuickTellerServiceProxy *q = new BasicHttpBinding_USCOREQuickTellerServiceProxy(); + //q->soap_endpoint = endpoint; + BasicHttpBinding_USCOREQuickTellerServiceProxy q; + q.soap_endpoint = endpoint; + _interswitch__QueryTransaction *interswitch__QueryTransaction = new _interswitch__QueryTransaction(); + _interswitch__QueryTransactionResponse *interswitch__QueryTransactionResponse = new _interswitch__QueryTransactionResponse(); + + string xmlParams = "\ +\ + "; + xmlParams += tid; // PLD + xmlParams += ""; + if (atoi(transferCode)>1) { + xmlParams += ""; + xmlParams += transferCode; + xmlParams += ""; + } + xmlParams += ""; + xmlParams += requestReference; + xmlParams += ""; + xmlParams += ""; + + logfmt( FLOG_MAX, "XML SENT-> %s", xmlParams.c_str()); + + interswitch__QueryTransaction->xmlParams = &xmlParams; + + if (my_soap_ssl_client_context(&q)) { + soap_print_fault(&q, stderr); + status = "Cannot initalize SOAP/SSL"; + strsafecpy(error,status.c_str(),SAFESTRING_COMMON_BUFFER_SIZE); + delete interswitch__QueryTransaction; + delete interswitch__QueryTransaction; + //delete q; + return "-1"; + } + string result = ""; + long soap_result = SOAP_ERR; + try { + soap_result = q.QueryTransaction(interswitch__QueryTransaction, interswitch__QueryTransactionResponse); + } catch (...) { + status = "Proxy exception"; + } + if (soap_result == SOAP_OK) { + char response[SAFESTRING_COMMON_BUFFER_SIZE], response_code[SAFESTRING_COMMON_BUFFER_SIZE]; + memset(response,0,SAFESTRING_COMMON_BUFFER_SIZE); + memset(response_code,0,SAFESTRING_COMMON_BUFFER_SIZE); + + result = ParseInterswitchResponse(interswitch__QueryTransactionResponse->QueryTransactionResult->c_str(),"TransactionResponseCode",response,response_code); + //logfmt(FLOG_MAX, "Result: %s", interswitch__QueryTransactionResponse->QueryTransactionResult->c_str()); + strsafecpy(transactionResponseCode, response_code, SAFESTRING_COMMON_BUFFER_SIZE); + //strncpy(transactionResponseCode,response,SAFESTRING_COMMON_BUFFER_SIZE); + status = response; + } else if (soap_result<30) { + logfmt(FLOG_MAX, "BAD Result: %s", interswitch__QueryTransactionResponse->QueryTransactionResult->c_str()); + if (&q!=NULL && q.soap_fault_string()!=NULL) { + status = "Fault string: "; + status += q.soap_fault_string(); + } + if (&q!=NULL && q.soap_fault_detail()) { + status += "Fault detail: "; + status += q.soap_fault_detail(); + } + if (&q==NULL) { + status = "Bad proxy"; + } else { + //cout << "Unknown error: " << result << endl; + } + } else { + logfmt(FLOG_MAX, "BAD Result: %ld", soap_result); + } + + delete interswitch__QueryTransaction; + delete interswitch__QueryTransactionResponse; + //delete q; + strncpy(error,status.c_str(),SAFESTRING_COMMON_BUFFER_SIZE); + logfmt(FLOG_MAX, "Response: %s", error); + return result; +} + +/*****************************************************************************/ +long interswitch_getBalance(const char *endpoint, const char *tid, const char *mkey, const char *pin, char *error) { + return -1; +} + +/*****************************************************************************/ +string interswitch_transferFunds(const char *endpoint, const char *tid, const char *mkey, const char *pin, char *error, const char *account, const char *uniqueRef, const char *bankCode, long currency, long amount, CVars trans_info) { + + + //plog->SetFileName( PREFIX"/logs/SendMoneyInterswitch.log" ); + + string status = "Unknown error"; + // Check SSL configuration + if (interswitch_ssl_configured!=1) { + status = "SSL is not configured"; + strncpy(error,status.c_str(),strlen(error)); + return "-1"; + } + soap_ssl_init(); /* init OpenSSL (just once) */ + BasicHttpBinding_USCOREQuickTellerServiceProxy q; // = new BasicHttpBinding_USCOREQuickTellerServiceProxy(); + q.soap_endpoint = endpoint; + _interswitch__DoTransfer *interswitch__DoTransfer = new _interswitch__DoTransfer(); + _interswitch__DoTransferResponse *interswitch__DoTransferResponse = new _interswitch__DoTransferResponse(); + +// ACB7AA183D50289B2149D441F2C888C2A3A1AEE7EFCE80838DD58BE83A243AB3E4E87D55D7788CA29A32EA27A93678131255211A8A297266A74426985864AAC9\ + // 100000566CA100000566ACNG +// InitiatingAmount, InitiatingCurrencyCode, InitiatingPaymentMethodCode, TerminatingAmount, TerminatingCurrencyCode, TerminatingPaymentMethodCode, TerminatingCountryCode + char d[32]; + string data = ""; + sprintf(d, "%ld", amount); + data += d; + sprintf(d, "%03ld", currency); + data += d; + data += "CA"; + sprintf(d, "%ld", amount); + data += d; + sprintf(d, "%03ld", currency); + data += d; + data += "AC"; + data += "NG"; + logfmt(FLOG_MAX, "DTA=%s", data.c_str()); + string mac = hash_sha512_cpp(data); + logfmt(FLOG_MAX, "MAC=%s", mac.c_str()); + + +/* + //Sender + trans_info["sender_firstname"]=""; + trans_info["sender_lastname"]=""; + trans_info["senders_email"]=""; + trans_info["phone"]=""; + + //Recipient + trans_info["recipient_name"]=""; +*/ + + string xmlParams = "\ +\ + "; + xmlParams += tid; // PLD + xmlParams += "\ + "; + xmlParams += mac; // ACB7AA183D50289B2149D441F2C888C2A3A1AEE7EFCE80838DD58BE83A243AB3E4E87D55D7788CA29A32EA27A93678131255211A8A297266A74426985864AAC9 + xmlParams += ""; + xmlParams += uniqueRef; + xmlParams += "\ + \ + "; + xmlParams +=trans_info["sender_lastname"].c_str(); + xmlParams += "\ + "; + xmlParams +=trans_info["sender_firstname"].c_str(); + xmlParams += "\ + "; + xmlParams +=trans_info["senders_email"].c_str(); + xmlParams += "\ + "; + xmlParams +=trans_info["senders_phone"].c_str(); + xmlParams += "\ + \ + \ + "; + xmlParams +=trans_info["recipient_name"].c_str(); + xmlParams += "\ + "; + xmlParams +=trans_info["recipient_name"].c_str(); + xmlParams += "\ + "; + xmlParams +=trans_info["rec_email"].c_str(); + xmlParams += "\ + "; + xmlParams +=trans_info["rec_phone"].c_str(); + xmlParams += "\ + \ + \ + \ + "; + sprintf(d, "%ld", amount); + xmlParams += d; // 1000000 + xmlParams += "\ + 7\ + CA\ + "; + sprintf(d, "%03ld", currency); + xmlParams += d; // 566 - NRN - Naira + xmlParams += "\ + \ + \ + \ + \ + \ + \ + \ + AC\ + "; + sprintf(d, "%ld", amount); + xmlParams += d; // 1000000 + xmlParams += "\ + "; + sprintf(d, "%03ld", currency); + xmlParams += d; // 566 - NRN - Naira + xmlParams += "\ + NG\ + \ + "; + xmlParams += account; + xmlParams += "\ + 20\ + "; +///-----> leave blank for now xmlParams += bankCode; // 057 + xmlParams += "\ + \ + \ + LO \ + "; + xmlParams += bankCode; // moved here as recomended + xmlParams += " \ + ZFD1234 \ + LAG \ + \ + DL \ + 1234567 \ + \ + BA3253876AED6BC22D4A6FF53D8406C6AD864195ED144AB5C87621B6C233B548BAEAE6956DF346EC8C17F5EA10F35EE3CBC514797ED7DDD3145464E2A0BAB413 \ + \ + \ +"; + + logfmt( FLOG_MAX, "XML SENT-> %s", xmlParams.c_str()); + + interswitch__DoTransfer->xmlParams = &xmlParams; + + if (my_soap_ssl_client_context(&q)) { + + soap_print_fault(&q, stderr); + status = "Cannot initalize SOAP/SSL"; + strncpy(error,status.c_str(),strlen(error)); + + delete interswitch__DoTransfer; + delete interswitch__DoTransferResponse; + //delete q; + + return "-1"; + } + + string result = ""; + long soap_result = SOAP_ERR; + try { + soap_result = q.DoTransfer(interswitch__DoTransfer, interswitch__DoTransferResponse); + } catch (...) { + status = "Proxy exception"; + } + if (soap_result == SOAP_OK) { + char response[BUFSIZE], response_code[BUFSIZE]; + memset(response,0,BUFSIZE); + memset(response_code,0,BUFSIZE); + result = ParseInterswitchResponse(interswitch__DoTransferResponse->DoTransferResult->c_str(),"TransactionReference",response,response_code); + logfmt(FLOG_MAX,"Result: %s", interswitch__DoTransferResponse->DoTransferResult->c_str()); + status = ""; + status += response; + } else { +logfmt(FLOG_MAX, "About to crash!!!\n\n\n"); +//logfmt(FLOG_MAX, "BAD Result: %s", interswitch__DoTransferResponse->DoTransferResult->c_str()); + + if (&q!=NULL && q.soap_fault_string()!=NULL) { + status = "Fault string: "; + status += q.soap_fault_string(); + } + if (&q!=NULL && q.soap_fault_detail()) { + status += "Fault detail: "; + status += q.soap_fault_detail(); + } + if (&q==NULL) { + status = "Bad proxy"; + } else { + //cout << "Unknown error: " << result << endl; + } + } + + + delete interswitch__DoTransfer; + delete interswitch__DoTransferResponse; + //delete q; + strncpy(error,status.c_str(),strlen(error)); + return result; +} + +/*****************************************************************************/ +string interswitch_doTransfer(const char *endpoint, const char *tid, CVars trans_info, char *error) { + + //plog->SetFileName( PREFIX"/logs/SendMoneyInterswitch.log" ); + + string status = "Unknown error"; + // Check SSL configuration + if (interswitch_ssl_configured!=1) { + status = "SSL is not configured"; + strsafecpy(error,status.c_str(),SAFESTRING_COMMON_BUFFER_SIZE); + return "-1"; + } + soap_ssl_init(); /* init OpenSSL (just once) */ + BasicHttpBinding_USCOREQuickTellerServiceProxy q; // = new BasicHttpBinding_USCOREQuickTellerServiceProxy(); + q.soap_endpoint = endpoint; + _interswitch__DoTransfer *interswitch__DoTransfer = new _interswitch__DoTransfer(); + _interswitch__DoTransferResponse *interswitch__DoTransferResponse = new _interswitch__DoTransferResponse(); + +// ACB7AA183D50289B2149D441F2C888C2A3A1AEE7EFCE80838DD58BE83A243AB3E4E87D55D7788CA29A32EA27A93678131255211A8A297266A74426985864AAC9\ + // 100000566CA100000566ACNG +// InitiatingAmount, InitiatingCurrencyCode, InitiatingPaymentMethodCode, TerminatingAmount, TerminatingCurrencyCode, TerminatingPaymentMethodCode, TerminatingCountryCode + char d[32]; + string data = ""; + data += trans_info["InitiatingAmount"].c_str(); + data += trans_info["InitiatingCurrencyCode"].c_str(); // NG + data += trans_info["InitiatingPaymentMethodCode"].c_str(); // CA + data += trans_info["TerminatingAmount"].c_str(); + data += trans_info["TerminatingCurrencyCode"].c_str(); // NGN + data += trans_info["TerminatingPaymentMethodCode"].c_str(); // AC + data += trans_info["TerminatingCountryCode"].c_str(); // NG + + /* sprintf(d, "%03ld", currency); + data += d; + data += "CA"; + sprintf(d, "%ld", amount); + data += d; + sprintf(d, "%03ld", currency); + data += d; + data += "AC"; + data += "NG"; */ + logfmt(FLOG_MAX, "DTA=%s", data.c_str()); + string mac = hash_sha512_cpp(data); + logfmt(FLOG_MAX, "MAC=%s", mac.c_str()); + +/* + //Sender + trans_info["sender_firstname"]=""; + trans_info["sender_lastname"]=""; + trans_info["senders_email"]=""; + trans_info["phone"]=""; + + //Recipient + trans_info["recipient_name"]=""; +*/ + + string xmlParams = "\ +\ + "; + xmlParams += tid; // PLD + xmlParams += "\ + "; + xmlParams += mac; // ACB7AA183D50289B2149D441F2C888C2A3A1AEE7EFCE80838DD58BE83A243AB3E4E87D55D7788CA29A32EA27A93678131255211A8A297266A74426985864AAC9 + xmlParams += "\ + "; + sprintf(d, "%s", trans_info["TransferCode"].c_str()); + logfmt(FLOG_MAX, "TransferCode=%s", d); + xmlParams += d; + xmlParams += "\ + \ + "; + xmlParams += trans_info["SenderLastname"].c_str(); + xmlParams += "ses66181+sender@gmail.com\ + "; + xmlParams += trans_info["SenderOthernames"].c_str(); + xmlParams += ""; + /* + "; + xmlParams += trans_info["SenderEmail"].c_str(); + xmlParams += "\ + "; + xmlParams += trans_info["SenderPhone"].c_str(); + xmlParams += ""; + */ + xmlParams += "\ + \ + \ + "; + xmlParams += trans_info["BeneficiaryLastname"].c_str(); + xmlParams += "ses66181+reciver@gmail.com\ + "; + xmlParams += trans_info["BeneficiaryOthernames"].c_str(); + xmlParams += ""; + /* + "; + xmlParams += trans_info["BeneficiaryEmail"].c_str(); + xmlParams += "\ + "; + xmlParams += trans_info["BeneficiaryPhone"].c_str(); + xmlParams += ""; + */ + xmlParams += "\ + \ + \ + \ + "; + xmlParams += trans_info["InitiatingAmount"].c_str(); + /* + sprintf(d, "%ld", amount); + xmlParams += d; // 1000000 + */ + xmlParams += "\ + "; + xmlParams += trans_info["InitiatingChannel"].c_str(); + xmlParams += "\ + "; + xmlParams += trans_info["InitiatingPaymentMethodCode"].c_str(); + xmlParams += "\ + "; + xmlParams += trans_info["InitiatingCurrencyCode"].c_str(); + /* + sprintf(d, "%03ld", currency); + xmlParams += d; // 566 - NRN - Naira + */ + xmlParams += "\ + \ + \ + "; + xmlParams += trans_info["TerminatingPaymentMethodCode"].c_str(); + xmlParams += "\ + "; + xmlParams += trans_info["TerminatingAmount"].c_str(); + /* + sprintf(d, "%ld", amount); + xmlParams += d; // 1000000 + */ + xmlParams += "\ + "; + xmlParams += trans_info["TerminatingCurrencyCode"].c_str(); + /* + sprintf(d, "%03ld", currency); + xmlParams += d; // 566 - NRN - Naira + */ + xmlParams += "\ + "; + xmlParams += trans_info["TerminatingCountryCode"].c_str(); + xmlParams += "\ + \ + "; + xmlParams += trans_info["TerminatingAccountNumber"].c_str(); + xmlParams += "\ + "; + xmlParams += trans_info["TerminatingAccountType"].c_str(); + xmlParams += "\ + "; +///-----> leave blank for now xmlParams += bankCode; // 057 + xmlParams += trans_info["TerminatingEntityCode"].c_str(); + xmlParams += "\ + "; + /* + \ + LO \ + "; + xmlParams += trans_info["TerminatingEntityCode"].c_str(); // moved here as recomended + xmlParams += " \ + ZFD1234 \ + LAG \ + \ + DL \ + 1234567 \ + \ + BA3253876AED6BC22D4A6FF53D8406C6AD864195ED144AB5C87621B6C233B548BAEAE6956DF346EC8C17F5EA10F35EE3CBC514797ED7DDD3145464E2A0BAB413 \ + \ + */ + xmlParams += "\ + \ +"; + + logfmt( FLOG_MAX, "XML SENT-> %s", xmlParams.c_str()); + + interswitch__DoTransfer->xmlParams = &xmlParams; + + if (my_soap_ssl_client_context(&q)) { + + soap_print_fault(&q, stderr); + status = "Cannot initalize SOAP/SSL"; + strncpy(error,status.c_str(),strlen(error)); + + delete interswitch__DoTransfer; + delete interswitch__DoTransferResponse; + //delete q; + + return "-1"; + } + + string result = ""; + long soap_result = SOAP_ERR; + try { + soap_result = q.DoTransfer(interswitch__DoTransfer, interswitch__DoTransferResponse); + } catch (...) { + status = "Proxy exception"; + } + if (soap_result == SOAP_OK) { + char response[SAFESTRING_COMMON_BUFFER_SIZE], response_code[SAFESTRING_COMMON_BUFFER_SIZE]; + memset(response,0,SAFESTRING_COMMON_BUFFER_SIZE); + memset(response_code,0,SAFESTRING_COMMON_BUFFER_SIZE); + result = ParseInterswitchResponse(interswitch__DoTransferResponse->DoTransferResult->c_str(),"TransactionReference",response,response_code); + logfmt(FLOG_MAX,"Result: %s", interswitch__DoTransferResponse->DoTransferResult->c_str()); + status = response; + } else if (soap_result<30) { + logfmt(FLOG_MAX, "BAD Result: %s", interswitch__DoTransferResponse->DoTransferResult->c_str()); + if (&q!=NULL && q.soap_fault_string()!=NULL) { + status = "Fault string: "; + status += q.soap_fault_string(); + } + if (&q!=NULL && q.soap_fault_detail()) { + status += "Fault detail: "; + status += q.soap_fault_detail(); + } + if (&q==NULL) { + status = "Bad proxy"; + } else { + //cout << "Unknown error: " << result << endl; + } + } else { + logfmt(FLOG_MAX, "Bad result: %ld", soap_result); + } + + delete interswitch__DoTransfer; + delete interswitch__DoTransferResponse; + //delete q; + strsafecpy(error,status.c_str(),SAFESTRING_COMMON_BUFFER_SIZE); + return result; +} + +/*****************************************************************************/ +long interswitch_pinChange(const char *tid, const char *mkey, const char *pin, char *error) { + return -1L; +} + +/*****************************************************************************/ +//1.7.5 Recharge +//Process Flow +//? Accept payment instrument from customer (cash, debit account, etc) +//? Initiate a SendBillPaymentAdvice message to InterSwitch – Error! Reference +//source not found. +//o In the case of recharge PINs, the PIN would be delivered in the +//response. +//o In the case of direct top-up, the specified customer number would be +//topped up automatically +//Sample Request + +// +// +// 450000 +// 10401 +// 08034567123 +// uabu@yahoo.com +// 0000000001 +// 3TPR0001 +// + +//Sample Response +// +// +// 90000 +// BB292DF9268F05CB9CBBC5E0C13CC1B13ACA34DC +// 01/Feb/2009 11:28:02 +// FZIB|LOC|CA|ZIB|CA|1102101115|1801098909 +// 123456 +// 345612349876 + +/*****************************************************************************/ +string interswitch_SendBillPaymentAdvice(const char *endpoint, const char *tid, long amount, const char *paymentCode, long customerId, const char *requestReference, char *error, char *transactionRef, char *customer_mobile,char *customer_email) { + //plog->SetFileName( PREFIX"/logs/SendMoneyInterswitch.log" ); + logfmt( FLOG_MAX, "long interswitch_SendBillPaymentAdvice(...)" ); + + logfmt( FLOG_MAX, "endpoint=%s", endpoint ); +/* + logfmt( logDEBUG, "tid=%s", tid ); + logfmt( logDEBUG, "amount=%ld", amount ); + logfmt( logDEBUG, "paymentCode=%s", paymentCode ); + logfmt( logDEBUG, "customerId=%ld", customerId ); + logfmt( logDEBUG, "requestReference=%s", requestReference ); + logfmt( logDEBUG, "error=%s", error ); + logfmt( logDEBUG, "transactionRef=%s", transactionRef ); + logfmt( logDEBUG, "customer_mobile=%s", customer_mobile ); + logfmt( logDEBUG, "customer_email=%s", customer_email ); +//*/ + string status = "Unknown error"; + // Check SSL configuration + if (interswitch_ssl_configured!=1) { + status = "SSL is not configured"; + strncpy(error,status.c_str(),strlen(error)); + return "-1"; + } + + soap_ssl_init(); /* init OpenSSL (just once) */ + + + //BasicHttpBinding_USCOREQuickTellerServiceProxy *q = new BasicHttpBinding_USCOREQuickTellerServiceProxy(); + //q->soap_endpoint = endpoint; + BasicHttpBinding_USCOREQuickTellerServiceProxy q; + q.soap_endpoint = endpoint; + _interswitch__SendBillPaymentAdvice *interswitch__SendBillPaymentAdvice = new _interswitch__SendBillPaymentAdvice(); + _interswitch__SendBillPaymentAdviceResponse *interswitch__SendBillPaymentAdviceResponse = new _interswitch__SendBillPaymentAdviceResponse(); + + char d[32]; + + string xmlParams = "\ +"; + xmlParams += ""; + sprintf(d, "%ld", amount); + xmlParams += d; + xmlParams += ""; + + xmlParams += ""; + xmlParams += paymentCode; + xmlParams += ""; +/* + xmlParams += ""; + xmlParams += customer_mobile; + xmlParams += ""; +*/ +/* + xmlParams += "ameye@paylid.com"; +*/ + +/**/ + xmlParams += ""; + xmlParams += customer_mobile; + xmlParams += ""; + xmlParams += ""; + xmlParams += customer_email; + xmlParams += ""; +/**/ + xmlParams += ""; + xmlParams += customer_mobile; + sprintf(d, "%ld", customerId); + //xmlParams += d; + xmlParams += ""; + + xmlParams += ""; + xmlParams += tid; // PLD + xmlParams += ""; + + xmlParams += ""; + xmlParams += requestReference; + xmlParams += ""; + + xmlParams += ""; + + logfmt( FLOG_MAX, "XML SENT-> %s", xmlParams.c_str()); + + interswitch__SendBillPaymentAdvice->xmlParams = &xmlParams; + + int context = my_soap_ssl_client_context(&q); + logfmt( FLOG_MAX, "my_soap_ssl_client_context(q)=%d", context); + if (context) { + soap_print_fault(&q, stderr); + status = "Cannot initalize SOAP/SSL"; + strncpy(error,status.c_str(),strlen(error)); + delete interswitch__SendBillPaymentAdvice; + delete interswitch__SendBillPaymentAdviceResponse; + //delete q; + + return "-1"; + } + + string result = ""; + long soap_result = SOAP_ERR; + try { + soap_result = q.SendBillPaymentAdvice(interswitch__SendBillPaymentAdvice, interswitch__SendBillPaymentAdviceResponse); + + } catch (...) { + status = "Proxy exception"; + } +logfmt( FLOG_MAX, "result = %ld", soap_result ); //////////////////////////// + + if (soap_result == SOAP_OK) { + char response[BUFSIZE], response_code[BUFSIZE]; + memset(response,0,BUFSIZE); + memset(response_code,0,BUFSIZE); + strncpy(response,interswitch__SendBillPaymentAdviceResponse->SendBillPaymentAdviceResult->c_str(),BUFSIZE); + logfmt(FLOG_MAX, "Result: %s", response); + strcpy(transactionRef, ""); + result = ParseInterswitchResponse(response,"TransactionRef",transactionRef,response_code); + logfmt(FLOG_MAX, "Result->: %ld", soap_result); + status = response_code; + } else if (soap_result < 30) { +// logfmt(FLOG_MAX, "BAD Result: %s", interswitch__SendBillPaymentAdviceResponse->SendBillPaymentAdviceResult->c_str()); + if (&q!=NULL && q.soap_fault_string()!=NULL) { + status = "Fault string: "; + status += q.soap_fault_string(); + } + if (&q!=NULL && q.soap_fault_detail()) { + status += "Fault detail: "; + status += q.soap_fault_detail(); + } + if (&q==NULL) { + status = "Bad proxy"; + } else { + //cout << "Unknown error: " << result << endl; + } + } else { + logfmt( FLOG_MAX, "BAD result = %ld", soap_result ); + } + delete interswitch__SendBillPaymentAdvice; + delete interswitch__SendBillPaymentAdviceResponse; + strncpy(error,status.c_str(),BUFSIZE); + + return result; + +} + +/*****************************************************************************/ +long interswitch_test() { + // Common + long ret = 0; + const char *endpoint = "https://stageserv.interswitchng.com/uat_quicktellerservice/quickteller.svc"; + const char *tid = "PLD"; + const char *mkey = "2D1A2518252A1B1A2A23281F242518212123221D272C1C26"; + const char *pin = "2009"; + // Specific 2D1A2518252A1B1A2A23281F242518212123221D272C1C26 + const char *account = "1110000001"; // "6280513434343444"; + + char* status = (char *)malloc(BUFSIZE); + memset(status,32,BUFSIZE); + status[BUFSIZE] = '\0'; + + char *transCode = (char *)malloc(BUFSIZE); + memset(transCode, 0, BUFSIZE); + sprintf(transCode,"123098750"); // ??? +logfmt(FLOG_MAX, "LOC 0 =========================================================="); + // We need to config SSL first + interswitch_config_ssl( + "/etc/paylid/paylid_test.pem", + "password", + "/etc/paylid/testservices.interswitchng.com.pem", + 0 + ); +/** + logfmt(FLOG_MAX, "=========================================================="); + ret = interswitch_getBillers(endpoint, tid, 0, 0, 0, "", status, NULL); + logfmt(FLOG_MAX, "Return: %ld",ret); + logfmt(FLOG_MAX, "Status: %s",status); +//*/ + +//INSERT INTO interswitch_money_transfer +//(Fee,InitiatingAmount,InitiatingChannel,InitiatingCurrencyCode,InitiatingEntityCode,InitiatingPaymentMethodCode,TerminatingAccountNumber,TerminatingAccountType,TerminatingAmount,TerminatingCountryCode,TerminatingCurrencyCode, +//TerminatingEntityCode,TerminatingPaymentMethodCode,recipientid,senderid) VALUES +//('100000','1000000','7','566','044','CA','1234567890','20','1000000','NG','566','057','AC','1','1') + CVars trans_info; + // 3MBA0001 + trans_info["Fee"] = "1000"; + trans_info["InitiatingAmount"] = "10000"; + trans_info["InitiatingChannel"] = "7"; + trans_info["InitiatingCurrencyCode"] = "566"; + trans_info["InitiatingEntityCode"] = "044"; + trans_info["InitiatingPaymentMethodCode"] = "CA"; + trans_info["TerminatingAccountNumber"] = "1234567890"; + trans_info["TerminatingAccountType"] = "20"; + trans_info["TerminatingAmount"] = "10000"; + trans_info["TerminatingCountryCode"] = "NG"; + trans_info["TerminatingCurrencyCode"] = "566"; + trans_info["TerminatingEntityCode"] = "057"; + trans_info["TerminatingPaymentMethodCode"] = "AC"; + logfmt(FLOG_MAX, "LOC 1 =========================================================="); + char ptid[25]; + srand(time(NULL)); + long r = abs( rand()*10000); + sprintf( ptid, "117629%04lu", r ); + trans_info["TransferCode"] = ptid; //"1176290012"; + trans_info["SenderLastname"] = "Ameye"; + trans_info["SenderOthernames"] = "Olu"; + trans_info["BeneficiaryLastname"] = "Ameye"; + trans_info["BeneficiaryOthernames"] = "Olu"; + + logfmt(FLOG_MAX, "=========================================================="); + string result = interswitch_doTransfer(endpoint, "3MBA0001", trans_info, status); + logfmt(FLOG_MAX, "Return: %s",result.c_str()); + logfmt(FLOG_MAX, "Status: %s",status); +/* + CVars trans_info; + + logfmt(FLOG_MAX, "=========================================================="); + result = interswitch_transferFunds(endpoint, tid, mkey, pin, status, account, transCode, "039", 566, 100000, trans_info); + logfmt(FLOG_MAX, "Return: %s",result.c_str()); + logfmt(FLOG_MAX, "Status: %s",status); + logfmt(FLOG_MAX, "TransC: %s",transCode); +*/ + logfmt(FLOG_MAX, "=========================================================="); + result = interswitch_queryTransaction(endpoint, tid, "0", (const char *)transCode, status, transCode); + logfmt(FLOG_MAX, "Return: %s",result.c_str()); + logfmt(FLOG_MAX, "Status: %s",status); + logfmt(FLOG_MAX, "TransC: %s",transCode); + logfmt(FLOG_MAX, "=========================================================="); + + free(transCode); + free(status); + + return ret; +} +/*****************************************************************************/ + +#ifdef TEST + +int main(void) { + interswitch_test(); + return 0; +} + +#endif + + +/* +vi:ts=2 +*/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +// + diff --git a/coregrade/src/shared_tool/interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.cc b/coregrade/src/shared_tool/interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.cc new file mode 100644 index 0000000..a2235ff --- /dev/null +++ b/coregrade/src/shared_tool/interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.cc @@ -0,0 +1,2116 @@ +/* interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.cpp + Generated by gSOAP 2.7.16 from QuickTellerService.h + Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. + This part of the software is released under one of the following licenses: + GPL, the gSOAP public license, or Genivia's license for commercial use. +*/ + +#include "interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.h" + +namespace interswitch { + +BasicHttpBinding_USCOREQuickTellerServiceProxy::BasicHttpBinding_USCOREQuickTellerServiceProxy() +{ BasicHttpBinding_USCOREQuickTellerServiceProxy_init(SOAP_IO_DEFAULT, SOAP_IO_DEFAULT); +} + +BasicHttpBinding_USCOREQuickTellerServiceProxy::BasicHttpBinding_USCOREQuickTellerServiceProxy(const struct soap &_soap) :soap(_soap) +{ } + +BasicHttpBinding_USCOREQuickTellerServiceProxy::BasicHttpBinding_USCOREQuickTellerServiceProxy(soap_mode iomode) +{ BasicHttpBinding_USCOREQuickTellerServiceProxy_init(iomode, iomode); +} + +BasicHttpBinding_USCOREQuickTellerServiceProxy::BasicHttpBinding_USCOREQuickTellerServiceProxy(soap_mode imode, soap_mode omode) +{ BasicHttpBinding_USCOREQuickTellerServiceProxy_init(imode, omode); +} + +void BasicHttpBinding_USCOREQuickTellerServiceProxy::BasicHttpBinding_USCOREQuickTellerServiceProxy_init(soap_mode imode, soap_mode omode) +{ soap_imode(this, imode); + soap_omode(this, omode); + soap_endpoint = NULL; + static const struct Namespace namespaces[] = +{ + {"SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/", "http://schemas.xmlsoap.org/soap/envelope/", NULL}, + {"SOAP-ENC", "http://www.w3.org/2003/05/soap-encoding", "http://www.w3.org/2003/05/soap-encoding", NULL}, + {"xsi", "http://www.w3.org/2001/XMLSchema-instance", "http://www.w3.org/*/XMLSchema-instance", NULL}, + {"xsd", "http://www.w3.org/2001/XMLSchema", "http://www.w3.org/*/XMLSchema", NULL}, + {"interswitch2", "http://schemas.microsoft.com/2003/10/Serialization/", NULL, NULL}, + {"interswitch", "http://services.interswitchng.com/quicktellerservice/", NULL, NULL}, + {NULL, NULL, NULL, NULL} +}; + this->namespaces = namespaces; +} + +BasicHttpBinding_USCOREQuickTellerServiceProxy::~BasicHttpBinding_USCOREQuickTellerServiceProxy() +{ } + +void BasicHttpBinding_USCOREQuickTellerServiceProxy::destroy() +{ soap_destroy(this); + soap_end(this); +} + +void BasicHttpBinding_USCOREQuickTellerServiceProxy::soap_noheader() +{ header = NULL; +} + +const SOAP_ENV__Fault *BasicHttpBinding_USCOREQuickTellerServiceProxy::soap_fault() +{ return (const interswitch::SOAP_ENV__Fault*)this->fault; +} + +const char *BasicHttpBinding_USCOREQuickTellerServiceProxy::soap_fault_string() +{ return *soap_faultstring(this); +} + +const char *BasicHttpBinding_USCOREQuickTellerServiceProxy::soap_fault_detail() +{ return *soap_faultdetail(this); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::soap_close_socket() +{ return soap_closesock(this); +} + +void BasicHttpBinding_USCOREQuickTellerServiceProxy::soap_print_fault(FILE *fd) +{ ::soap_print_fault(this, fd); +} + +#ifndef WITH_LEAN +void BasicHttpBinding_USCOREQuickTellerServiceProxy::soap_stream_fault(std::ostream& os) +{ ::soap_stream_fault(this, os); +} + +char *BasicHttpBinding_USCOREQuickTellerServiceProxy::soap_sprint_fault(char *buf, size_t len) +{ return ::soap_sprint_fault(this, buf, len); +} +#endif + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::ValidateCustomer(_interswitch__ValidateCustomer *interswitch__ValidateCustomer, _interswitch__ValidateCustomerResponse *interswitch__ValidateCustomerResponse) +{ struct soap *soap = this; + struct __interswitch__ValidateCustomer soap_tmp___interswitch__ValidateCustomer; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "ValidateCustomer"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__ValidateCustomer.interswitch__ValidateCustomer = interswitch__ValidateCustomer; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__ValidateCustomer(soap, &soap_tmp___interswitch__ValidateCustomer); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__ValidateCustomer(soap, &soap_tmp___interswitch__ValidateCustomer, "-interswitch:ValidateCustomer", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__ValidateCustomer(soap, &soap_tmp___interswitch__ValidateCustomer, "-interswitch:ValidateCustomer", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__ValidateCustomerResponse) + return soap_closesock(soap); + interswitch__ValidateCustomerResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__ValidateCustomerResponse->soap_get(soap, "interswitch:ValidateCustomerResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::DoTransfer(_interswitch__DoTransfer *interswitch__DoTransfer, _interswitch__DoTransferResponse *interswitch__DoTransferResponse) +{ struct soap *soap = this; + struct __interswitch__DoTransfer soap_tmp___interswitch__DoTransfer; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "DoTransfer"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__DoTransfer.interswitch__DoTransfer = interswitch__DoTransfer; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__DoTransfer(soap, &soap_tmp___interswitch__DoTransfer); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__DoTransfer(soap, &soap_tmp___interswitch__DoTransfer, "-interswitch:DoTransfer", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__DoTransfer(soap, &soap_tmp___interswitch__DoTransfer, "-interswitch:DoTransfer", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__DoTransferResponse) + return soap_closesock(soap); + interswitch__DoTransferResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__DoTransferResponse->soap_get(soap, "interswitch:DoTransferResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::CancelTransfer(_interswitch__CancelTransfer *interswitch__CancelTransfer, _interswitch__CancelTransferResponse *interswitch__CancelTransferResponse) +{ struct soap *soap = this; + struct __interswitch__CancelTransfer soap_tmp___interswitch__CancelTransfer; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "CancelTransfer"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__CancelTransfer.interswitch__CancelTransfer = interswitch__CancelTransfer; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__CancelTransfer(soap, &soap_tmp___interswitch__CancelTransfer); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__CancelTransfer(soap, &soap_tmp___interswitch__CancelTransfer, "-interswitch:CancelTransfer", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__CancelTransfer(soap, &soap_tmp___interswitch__CancelTransfer, "-interswitch:CancelTransfer", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__CancelTransferResponse) + return soap_closesock(soap); + interswitch__CancelTransferResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__CancelTransferResponse->soap_get(soap, "interswitch:CancelTransferResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::SendSessionKey(_interswitch__SendSessionKey *interswitch__SendSessionKey, _interswitch__SendSessionKeyResponse *interswitch__SendSessionKeyResponse) +{ struct soap *soap = this; + struct __interswitch__SendSessionKey soap_tmp___interswitch__SendSessionKey; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "SendSessionKey"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__SendSessionKey.interswitch__SendSessionKey = interswitch__SendSessionKey; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__SendSessionKey(soap, &soap_tmp___interswitch__SendSessionKey); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__SendSessionKey(soap, &soap_tmp___interswitch__SendSessionKey, "-interswitch:SendSessionKey", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__SendSessionKey(soap, &soap_tmp___interswitch__SendSessionKey, "-interswitch:SendSessionKey", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__SendSessionKeyResponse) + return soap_closesock(soap); + interswitch__SendSessionKeyResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__SendSessionKeyResponse->soap_get(soap, "interswitch:SendSessionKeyResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::QueryTransfer(_interswitch__QueryTransfer *interswitch__QueryTransfer, _interswitch__QueryTransferResponse *interswitch__QueryTransferResponse) +{ struct soap *soap = this; + struct __interswitch__QueryTransfer soap_tmp___interswitch__QueryTransfer; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "QueryTransfer"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__QueryTransfer.interswitch__QueryTransfer = interswitch__QueryTransfer; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__QueryTransfer(soap, &soap_tmp___interswitch__QueryTransfer); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__QueryTransfer(soap, &soap_tmp___interswitch__QueryTransfer, "-interswitch:QueryTransfer", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__QueryTransfer(soap, &soap_tmp___interswitch__QueryTransfer, "-interswitch:QueryTransfer", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__QueryTransferResponse) + return soap_closesock(soap); + interswitch__QueryTransferResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__QueryTransferResponse->soap_get(soap, "interswitch:QueryTransferResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::AuthoriseCashOut(_interswitch__AuthoriseCashOut *interswitch__AuthoriseCashOut, _interswitch__AuthoriseCashOutResponse *interswitch__AuthoriseCashOutResponse) +{ struct soap *soap = this; + struct __interswitch__AuthoriseCashOut soap_tmp___interswitch__AuthoriseCashOut; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "AuthoriseCashOut"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__AuthoriseCashOut.interswitch__AuthoriseCashOut = interswitch__AuthoriseCashOut; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__AuthoriseCashOut(soap, &soap_tmp___interswitch__AuthoriseCashOut); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__AuthoriseCashOut(soap, &soap_tmp___interswitch__AuthoriseCashOut, "-interswitch:AuthoriseCashOut", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__AuthoriseCashOut(soap, &soap_tmp___interswitch__AuthoriseCashOut, "-interswitch:AuthoriseCashOut", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__AuthoriseCashOutResponse) + return soap_closesock(soap); + interswitch__AuthoriseCashOutResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__AuthoriseCashOutResponse->soap_get(soap, "interswitch:AuthoriseCashOutResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::AuthoriseAccountCashOut(_interswitch__AuthoriseAccountCashOut *interswitch__AuthoriseAccountCashOut, _interswitch__AuthoriseAccountCashOutResponse *interswitch__AuthoriseAccountCashOutResponse) +{ struct soap *soap = this; + struct __interswitch__AuthoriseAccountCashOut soap_tmp___interswitch__AuthoriseAccountCashOut; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "AuthoriseAccountCashOut"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__AuthoriseAccountCashOut.interswitch__AuthoriseAccountCashOut = interswitch__AuthoriseAccountCashOut; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__AuthoriseAccountCashOut(soap, &soap_tmp___interswitch__AuthoriseAccountCashOut); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__AuthoriseAccountCashOut(soap, &soap_tmp___interswitch__AuthoriseAccountCashOut, "-interswitch:AuthoriseAccountCashOut", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__AuthoriseAccountCashOut(soap, &soap_tmp___interswitch__AuthoriseAccountCashOut, "-interswitch:AuthoriseAccountCashOut", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__AuthoriseAccountCashOutResponse) + return soap_closesock(soap); + interswitch__AuthoriseAccountCashOutResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__AuthoriseAccountCashOutResponse->soap_get(soap, "interswitch:AuthoriseAccountCashOutResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::ReverseCashOut(_interswitch__ReverseCashOut *interswitch__ReverseCashOut, _interswitch__ReverseCashOutResponse *interswitch__ReverseCashOutResponse) +{ struct soap *soap = this; + struct __interswitch__ReverseCashOut soap_tmp___interswitch__ReverseCashOut; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "ReverseCashOut"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__ReverseCashOut.interswitch__ReverseCashOut = interswitch__ReverseCashOut; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__ReverseCashOut(soap, &soap_tmp___interswitch__ReverseCashOut); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__ReverseCashOut(soap, &soap_tmp___interswitch__ReverseCashOut, "-interswitch:ReverseCashOut", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__ReverseCashOut(soap, &soap_tmp___interswitch__ReverseCashOut, "-interswitch:ReverseCashOut", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__ReverseCashOutResponse) + return soap_closesock(soap); + interswitch__ReverseCashOutResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__ReverseCashOutResponse->soap_get(soap, "interswitch:ReverseCashOutResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::StatusCheck(_interswitch__StatusCheck *interswitch__StatusCheck, _interswitch__StatusCheckResponse *interswitch__StatusCheckResponse) +{ struct soap *soap = this; + struct __interswitch__StatusCheck soap_tmp___interswitch__StatusCheck; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "StatusCheck"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__StatusCheck.interswitch__StatusCheck = interswitch__StatusCheck; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__StatusCheck(soap, &soap_tmp___interswitch__StatusCheck); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__StatusCheck(soap, &soap_tmp___interswitch__StatusCheck, "-interswitch:StatusCheck", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__StatusCheck(soap, &soap_tmp___interswitch__StatusCheck, "-interswitch:StatusCheck", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__StatusCheckResponse) + return soap_closesock(soap); + interswitch__StatusCheckResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__StatusCheckResponse->soap_get(soap, "interswitch:StatusCheckResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::QueryTransaction(_interswitch__QueryTransaction *interswitch__QueryTransaction, _interswitch__QueryTransactionResponse *interswitch__QueryTransactionResponse) +{ struct soap *soap = this; + struct __interswitch__QueryTransaction soap_tmp___interswitch__QueryTransaction; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "QueryTransaction"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__QueryTransaction.interswitch__QueryTransaction = interswitch__QueryTransaction; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__QueryTransaction(soap, &soap_tmp___interswitch__QueryTransaction); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__QueryTransaction(soap, &soap_tmp___interswitch__QueryTransaction, "-interswitch:QueryTransaction", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__QueryTransaction(soap, &soap_tmp___interswitch__QueryTransaction, "-interswitch:QueryTransaction", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__QueryTransactionResponse) + return soap_closesock(soap); + interswitch__QueryTransactionResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__QueryTransactionResponse->soap_get(soap, "interswitch:QueryTransactionResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::GetSystemSettings(_interswitch__GetSystemSettings *interswitch__GetSystemSettings, _interswitch__GetSystemSettingsResponse *interswitch__GetSystemSettingsResponse) +{ struct soap *soap = this; + struct __interswitch__GetSystemSettings soap_tmp___interswitch__GetSystemSettings; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "GetSystemSettings"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__GetSystemSettings.interswitch__GetSystemSettings = interswitch__GetSystemSettings; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__GetSystemSettings(soap, &soap_tmp___interswitch__GetSystemSettings); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetSystemSettings(soap, &soap_tmp___interswitch__GetSystemSettings, "-interswitch:GetSystemSettings", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetSystemSettings(soap, &soap_tmp___interswitch__GetSystemSettings, "-interswitch:GetSystemSettings", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__GetSystemSettingsResponse) + return soap_closesock(soap); + interswitch__GetSystemSettingsResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__GetSystemSettingsResponse->soap_get(soap, "interswitch:GetSystemSettingsResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::CreateUser(_interswitch__CreateUser *interswitch__CreateUser, _interswitch__CreateUserResponse *interswitch__CreateUserResponse) +{ struct soap *soap = this; + struct __interswitch__CreateUser soap_tmp___interswitch__CreateUser; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "CreateUser"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__CreateUser.interswitch__CreateUser = interswitch__CreateUser; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__CreateUser(soap, &soap_tmp___interswitch__CreateUser); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__CreateUser(soap, &soap_tmp___interswitch__CreateUser, "-interswitch:CreateUser", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__CreateUser(soap, &soap_tmp___interswitch__CreateUser, "-interswitch:CreateUser", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__CreateUserResponse) + return soap_closesock(soap); + interswitch__CreateUserResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__CreateUserResponse->soap_get(soap, "interswitch:CreateUserResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::ActivateUser(_interswitch__ActivateUser *interswitch__ActivateUser, _interswitch__ActivateUserResponse *interswitch__ActivateUserResponse) +{ struct soap *soap = this; + struct __interswitch__ActivateUser soap_tmp___interswitch__ActivateUser; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "ActivateUser"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__ActivateUser.interswitch__ActivateUser = interswitch__ActivateUser; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__ActivateUser(soap, &soap_tmp___interswitch__ActivateUser); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__ActivateUser(soap, &soap_tmp___interswitch__ActivateUser, "-interswitch:ActivateUser", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__ActivateUser(soap, &soap_tmp___interswitch__ActivateUser, "-interswitch:ActivateUser", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__ActivateUserResponse) + return soap_closesock(soap); + interswitch__ActivateUserResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__ActivateUserResponse->soap_get(soap, "interswitch:ActivateUserResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::UpdateUser(_interswitch__UpdateUser *interswitch__UpdateUser, _interswitch__UpdateUserResponse *interswitch__UpdateUserResponse) +{ struct soap *soap = this; + struct __interswitch__UpdateUser soap_tmp___interswitch__UpdateUser; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "UpdateUser"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__UpdateUser.interswitch__UpdateUser = interswitch__UpdateUser; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__UpdateUser(soap, &soap_tmp___interswitch__UpdateUser); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__UpdateUser(soap, &soap_tmp___interswitch__UpdateUser, "-interswitch:UpdateUser", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__UpdateUser(soap, &soap_tmp___interswitch__UpdateUser, "-interswitch:UpdateUser", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__UpdateUserResponse) + return soap_closesock(soap); + interswitch__UpdateUserResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__UpdateUserResponse->soap_get(soap, "interswitch:UpdateUserResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::ChangePassword(_interswitch__ChangePassword *interswitch__ChangePassword, _interswitch__ChangePasswordResponse *interswitch__ChangePasswordResponse) +{ struct soap *soap = this; + struct __interswitch__ChangePassword soap_tmp___interswitch__ChangePassword; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "ChangePassword"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__ChangePassword.interswitch__ChangePassword = interswitch__ChangePassword; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__ChangePassword(soap, &soap_tmp___interswitch__ChangePassword); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__ChangePassword(soap, &soap_tmp___interswitch__ChangePassword, "-interswitch:ChangePassword", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__ChangePassword(soap, &soap_tmp___interswitch__ChangePassword, "-interswitch:ChangePassword", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__ChangePasswordResponse) + return soap_closesock(soap); + interswitch__ChangePasswordResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__ChangePasswordResponse->soap_get(soap, "interswitch:ChangePasswordResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::ResetPassword(_interswitch__ResetPassword *interswitch__ResetPassword, _interswitch__ResetPasswordResponse *interswitch__ResetPasswordResponse) +{ struct soap *soap = this; + struct __interswitch__ResetPassword soap_tmp___interswitch__ResetPassword; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "ResetPassword"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__ResetPassword.interswitch__ResetPassword = interswitch__ResetPassword; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__ResetPassword(soap, &soap_tmp___interswitch__ResetPassword); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__ResetPassword(soap, &soap_tmp___interswitch__ResetPassword, "-interswitch:ResetPassword", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__ResetPassword(soap, &soap_tmp___interswitch__ResetPassword, "-interswitch:ResetPassword", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__ResetPasswordResponse) + return soap_closesock(soap); + interswitch__ResetPasswordResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__ResetPasswordResponse->soap_get(soap, "interswitch:ResetPasswordResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::AuthenticateUser(_interswitch__AuthenticateUser *interswitch__AuthenticateUser, _interswitch__AuthenticateUserResponse *interswitch__AuthenticateUserResponse) +{ struct soap *soap = this; + struct __interswitch__AuthenticateUser soap_tmp___interswitch__AuthenticateUser; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "AuthenticateUser"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__AuthenticateUser.interswitch__AuthenticateUser = interswitch__AuthenticateUser; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__AuthenticateUser(soap, &soap_tmp___interswitch__AuthenticateUser); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__AuthenticateUser(soap, &soap_tmp___interswitch__AuthenticateUser, "-interswitch:AuthenticateUser", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__AuthenticateUser(soap, &soap_tmp___interswitch__AuthenticateUser, "-interswitch:AuthenticateUser", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__AuthenticateUserResponse) + return soap_closesock(soap); + interswitch__AuthenticateUserResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__AuthenticateUserResponse->soap_get(soap, "interswitch:AuthenticateUserResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::AuthenticateUserSecurityToken(_interswitch__AuthenticateUserSecurityToken *interswitch__AuthenticateUserSecurityToken, _interswitch__AuthenticateUserSecurityTokenResponse *interswitch__AuthenticateUserSecurityTokenResponse) +{ struct soap *soap = this; + struct __interswitch__AuthenticateUserSecurityToken soap_tmp___interswitch__AuthenticateUserSecurityToken; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "AuthenticateUserSecurityToken"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__AuthenticateUserSecurityToken.interswitch__AuthenticateUserSecurityToken = interswitch__AuthenticateUserSecurityToken; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__AuthenticateUserSecurityToken(soap, &soap_tmp___interswitch__AuthenticateUserSecurityToken); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__AuthenticateUserSecurityToken(soap, &soap_tmp___interswitch__AuthenticateUserSecurityToken, "-interswitch:AuthenticateUserSecurityToken", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__AuthenticateUserSecurityToken(soap, &soap_tmp___interswitch__AuthenticateUserSecurityToken, "-interswitch:AuthenticateUserSecurityToken", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__AuthenticateUserSecurityTokenResponse) + return soap_closesock(soap); + interswitch__AuthenticateUserSecurityTokenResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__AuthenticateUserSecurityTokenResponse->soap_get(soap, "interswitch:AuthenticateUserSecurityTokenResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::GetUser(_interswitch__GetUser *interswitch__GetUser, _interswitch__GetUserResponse *interswitch__GetUserResponse) +{ struct soap *soap = this; + struct __interswitch__GetUser soap_tmp___interswitch__GetUser; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "GetUser"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__GetUser.interswitch__GetUser = interswitch__GetUser; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__GetUser(soap, &soap_tmp___interswitch__GetUser); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetUser(soap, &soap_tmp___interswitch__GetUser, "-interswitch:GetUser", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetUser(soap, &soap_tmp___interswitch__GetUser, "-interswitch:GetUser", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__GetUserResponse) + return soap_closesock(soap); + interswitch__GetUserResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__GetUserResponse->soap_get(soap, "interswitch:GetUserResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::GetBillers(_interswitch__GetBillers *interswitch__GetBillers, _interswitch__GetBillersResponse *interswitch__GetBillersResponse) +{ struct soap *soap = this; + struct __interswitch__GetBillers soap_tmp___interswitch__GetBillers; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "GetBillers"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__GetBillers.interswitch__GetBillers = interswitch__GetBillers; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__GetBillers(soap, &soap_tmp___interswitch__GetBillers); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetBillers(soap, &soap_tmp___interswitch__GetBillers, "-interswitch:GetBillers", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetBillers(soap, &soap_tmp___interswitch__GetBillers, "-interswitch:GetBillers", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__GetBillersResponse) + return soap_closesock(soap); + interswitch__GetBillersResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__GetBillersResponse->soap_get(soap, "interswitch:GetBillersResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::GetLatestBillers(_interswitch__GetLatestBillers *interswitch__GetLatestBillers, _interswitch__GetLatestBillersResponse *interswitch__GetLatestBillersResponse) +{ struct soap *soap = this; + struct __interswitch__GetLatestBillers soap_tmp___interswitch__GetLatestBillers; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "GetLatestBillers"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__GetLatestBillers.interswitch__GetLatestBillers = interswitch__GetLatestBillers; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__GetLatestBillers(soap, &soap_tmp___interswitch__GetLatestBillers); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetLatestBillers(soap, &soap_tmp___interswitch__GetLatestBillers, "-interswitch:GetLatestBillers", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetLatestBillers(soap, &soap_tmp___interswitch__GetLatestBillers, "-interswitch:GetLatestBillers", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__GetLatestBillersResponse) + return soap_closesock(soap); + interswitch__GetLatestBillersResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__GetLatestBillersResponse->soap_get(soap, "interswitch:GetLatestBillersResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::GetFeaturedBillers(_interswitch__GetFeaturedBillers *interswitch__GetFeaturedBillers, _interswitch__GetFeaturedBillersResponse *interswitch__GetFeaturedBillersResponse) +{ struct soap *soap = this; + struct __interswitch__GetFeaturedBillers soap_tmp___interswitch__GetFeaturedBillers; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "GetFeaturedBillers"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__GetFeaturedBillers.interswitch__GetFeaturedBillers = interswitch__GetFeaturedBillers; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__GetFeaturedBillers(soap, &soap_tmp___interswitch__GetFeaturedBillers); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetFeaturedBillers(soap, &soap_tmp___interswitch__GetFeaturedBillers, "-interswitch:GetFeaturedBillers", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetFeaturedBillers(soap, &soap_tmp___interswitch__GetFeaturedBillers, "-interswitch:GetFeaturedBillers", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__GetFeaturedBillersResponse) + return soap_closesock(soap); + interswitch__GetFeaturedBillersResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__GetFeaturedBillersResponse->soap_get(soap, "interswitch:GetFeaturedBillersResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::GetBillerPaymentItems(_interswitch__GetBillerPaymentItems *interswitch__GetBillerPaymentItems, _interswitch__GetBillerPaymentItemsResponse *interswitch__GetBillerPaymentItemsResponse) +{ struct soap *soap = this; + struct __interswitch__GetBillerPaymentItems soap_tmp___interswitch__GetBillerPaymentItems; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "GetBillerPaymentItems"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__GetBillerPaymentItems.interswitch__GetBillerPaymentItems = interswitch__GetBillerPaymentItems; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__GetBillerPaymentItems(soap, &soap_tmp___interswitch__GetBillerPaymentItems); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetBillerPaymentItems(soap, &soap_tmp___interswitch__GetBillerPaymentItems, "-interswitch:GetBillerPaymentItems", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetBillerPaymentItems(soap, &soap_tmp___interswitch__GetBillerPaymentItems, "-interswitch:GetBillerPaymentItems", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__GetBillerPaymentItemsResponse) + return soap_closesock(soap); + interswitch__GetBillerPaymentItemsResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__GetBillerPaymentItemsResponse->soap_get(soap, "interswitch:GetBillerPaymentItemsResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::GetBillerCategories(_interswitch__GetBillerCategories *interswitch__GetBillerCategories, _interswitch__GetBillerCategoriesResponse *interswitch__GetBillerCategoriesResponse) +{ struct soap *soap = this; + struct __interswitch__GetBillerCategories soap_tmp___interswitch__GetBillerCategories; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "GetBillerCategories"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__GetBillerCategories.interswitch__GetBillerCategories = interswitch__GetBillerCategories; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__GetBillerCategories(soap, &soap_tmp___interswitch__GetBillerCategories); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetBillerCategories(soap, &soap_tmp___interswitch__GetBillerCategories, "-interswitch:GetBillerCategories", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetBillerCategories(soap, &soap_tmp___interswitch__GetBillerCategories, "-interswitch:GetBillerCategories", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__GetBillerCategoriesResponse) + return soap_closesock(soap); + interswitch__GetBillerCategoriesResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__GetBillerCategoriesResponse->soap_get(soap, "interswitch:GetBillerCategoriesResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::DoBillPaymentInquiry(_interswitch__DoBillPaymentInquiry *interswitch__DoBillPaymentInquiry, _interswitch__DoBillPaymentInquiryResponse *interswitch__DoBillPaymentInquiryResponse) +{ struct soap *soap = this; + struct __interswitch__DoBillPaymentInquiry soap_tmp___interswitch__DoBillPaymentInquiry; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "DoBillPaymentInquiry"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__DoBillPaymentInquiry.interswitch__DoBillPaymentInquiry = interswitch__DoBillPaymentInquiry; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__DoBillPaymentInquiry(soap, &soap_tmp___interswitch__DoBillPaymentInquiry); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__DoBillPaymentInquiry(soap, &soap_tmp___interswitch__DoBillPaymentInquiry, "-interswitch:DoBillPaymentInquiry", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__DoBillPaymentInquiry(soap, &soap_tmp___interswitch__DoBillPaymentInquiry, "-interswitch:DoBillPaymentInquiry", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__DoBillPaymentInquiryResponse) + return soap_closesock(soap); + interswitch__DoBillPaymentInquiryResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__DoBillPaymentInquiryResponse->soap_get(soap, "interswitch:DoBillPaymentInquiryResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::AuthenticateCustomer(_interswitch__AuthenticateCustomer *interswitch__AuthenticateCustomer, _interswitch__AuthenticateCustomerResponse *interswitch__AuthenticateCustomerResponse) +{ struct soap *soap = this; + struct __interswitch__AuthenticateCustomer soap_tmp___interswitch__AuthenticateCustomer; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "AuthenticateCustomer"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__AuthenticateCustomer.interswitch__AuthenticateCustomer = interswitch__AuthenticateCustomer; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__AuthenticateCustomer(soap, &soap_tmp___interswitch__AuthenticateCustomer); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__AuthenticateCustomer(soap, &soap_tmp___interswitch__AuthenticateCustomer, "-interswitch:AuthenticateCustomer", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__AuthenticateCustomer(soap, &soap_tmp___interswitch__AuthenticateCustomer, "-interswitch:AuthenticateCustomer", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__AuthenticateCustomerResponse) + return soap_closesock(soap); + interswitch__AuthenticateCustomerResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__AuthenticateCustomerResponse->soap_get(soap, "interswitch:AuthenticateCustomerResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::SendBillPaymentAdvice(_interswitch__SendBillPaymentAdvice *interswitch__SendBillPaymentAdvice, _interswitch__SendBillPaymentAdviceResponse *interswitch__SendBillPaymentAdviceResponse) +{ struct soap *soap = this; + struct __interswitch__SendBillPaymentAdvice soap_tmp___interswitch__SendBillPaymentAdvice; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "SendBillPaymentAdvice"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__SendBillPaymentAdvice.interswitch__SendBillPaymentAdvice = interswitch__SendBillPaymentAdvice; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__SendBillPaymentAdvice(soap, &soap_tmp___interswitch__SendBillPaymentAdvice); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__SendBillPaymentAdvice(soap, &soap_tmp___interswitch__SendBillPaymentAdvice, "-interswitch:SendBillPaymentAdvice", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__SendBillPaymentAdvice(soap, &soap_tmp___interswitch__SendBillPaymentAdvice, "-interswitch:SendBillPaymentAdvice", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__SendBillPaymentAdviceResponse) + return soap_closesock(soap); + interswitch__SendBillPaymentAdviceResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__SendBillPaymentAdviceResponse->soap_get(soap, "interswitch:SendBillPaymentAdviceResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::SendPayments(_interswitch__SendPayments *interswitch__SendPayments, _interswitch__SendPaymentsResponse *interswitch__SendPaymentsResponse) +{ struct soap *soap = this; + struct __interswitch__SendPayments soap_tmp___interswitch__SendPayments; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "SendPayments"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__SendPayments.interswitch__SendPayments = interswitch__SendPayments; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__SendPayments(soap, &soap_tmp___interswitch__SendPayments); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__SendPayments(soap, &soap_tmp___interswitch__SendPayments, "-interswitch:SendPayments", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__SendPayments(soap, &soap_tmp___interswitch__SendPayments, "-interswitch:SendPayments", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__SendPaymentsResponse) + return soap_closesock(soap); + interswitch__SendPaymentsResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__SendPaymentsResponse->soap_get(soap, "interswitch:SendPaymentsResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::AddCustomerBillerAccount(_interswitch__AddCustomerBillerAccount *interswitch__AddCustomerBillerAccount, _interswitch__AddCustomerBillerAccountResponse *interswitch__AddCustomerBillerAccountResponse) +{ struct soap *soap = this; + struct __interswitch__AddCustomerBillerAccount soap_tmp___interswitch__AddCustomerBillerAccount; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "AddCustomerBillerAccount"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__AddCustomerBillerAccount.interswitch__AddCustomerBillerAccount = interswitch__AddCustomerBillerAccount; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__AddCustomerBillerAccount(soap, &soap_tmp___interswitch__AddCustomerBillerAccount); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__AddCustomerBillerAccount(soap, &soap_tmp___interswitch__AddCustomerBillerAccount, "-interswitch:AddCustomerBillerAccount", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__AddCustomerBillerAccount(soap, &soap_tmp___interswitch__AddCustomerBillerAccount, "-interswitch:AddCustomerBillerAccount", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__AddCustomerBillerAccountResponse) + return soap_closesock(soap); + interswitch__AddCustomerBillerAccountResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__AddCustomerBillerAccountResponse->soap_get(soap, "interswitch:AddCustomerBillerAccountResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::GetCustomerBillerAccounts(_interswitch__GetCustomerBillerAccounts *interswitch__GetCustomerBillerAccounts, _interswitch__GetCustomerBillerAccountsResponse *interswitch__GetCustomerBillerAccountsResponse) +{ struct soap *soap = this; + struct __interswitch__GetCustomerBillerAccounts soap_tmp___interswitch__GetCustomerBillerAccounts; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "GetCustomerBillerAccounts"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__GetCustomerBillerAccounts.interswitch__GetCustomerBillerAccounts = interswitch__GetCustomerBillerAccounts; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__GetCustomerBillerAccounts(soap, &soap_tmp___interswitch__GetCustomerBillerAccounts); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetCustomerBillerAccounts(soap, &soap_tmp___interswitch__GetCustomerBillerAccounts, "-interswitch:GetCustomerBillerAccounts", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetCustomerBillerAccounts(soap, &soap_tmp___interswitch__GetCustomerBillerAccounts, "-interswitch:GetCustomerBillerAccounts", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__GetCustomerBillerAccountsResponse) + return soap_closesock(soap); + interswitch__GetCustomerBillerAccountsResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__GetCustomerBillerAccountsResponse->soap_get(soap, "interswitch:GetCustomerBillerAccountsResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::GetCustomerPayments(_interswitch__GetCustomerPayments *interswitch__GetCustomerPayments, _interswitch__GetCustomerPaymentsResponse *interswitch__GetCustomerPaymentsResponse) +{ struct soap *soap = this; + struct __interswitch__GetCustomerPayments soap_tmp___interswitch__GetCustomerPayments; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "GetCustomerPayments"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__GetCustomerPayments.interswitch__GetCustomerPayments = interswitch__GetCustomerPayments; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__GetCustomerPayments(soap, &soap_tmp___interswitch__GetCustomerPayments); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetCustomerPayments(soap, &soap_tmp___interswitch__GetCustomerPayments, "-interswitch:GetCustomerPayments", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetCustomerPayments(soap, &soap_tmp___interswitch__GetCustomerPayments, "-interswitch:GetCustomerPayments", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__GetCustomerPaymentsResponse) + return soap_closesock(soap); + interswitch__GetCustomerPaymentsResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__GetCustomerPaymentsResponse->soap_get(soap, "interswitch:GetCustomerPaymentsResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::AddBillerCustomer(_interswitch__AddBillerCustomer *interswitch__AddBillerCustomer, _interswitch__AddBillerCustomerResponse *interswitch__AddBillerCustomerResponse) +{ struct soap *soap = this; + struct __interswitch__AddBillerCustomer soap_tmp___interswitch__AddBillerCustomer; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "AddBillerCustomer"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__AddBillerCustomer.interswitch__AddBillerCustomer = interswitch__AddBillerCustomer; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__AddBillerCustomer(soap, &soap_tmp___interswitch__AddBillerCustomer); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__AddBillerCustomer(soap, &soap_tmp___interswitch__AddBillerCustomer, "-interswitch:AddBillerCustomer", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__AddBillerCustomer(soap, &soap_tmp___interswitch__AddBillerCustomer, "-interswitch:AddBillerCustomer", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__AddBillerCustomerResponse) + return soap_closesock(soap); + interswitch__AddBillerCustomerResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__AddBillerCustomerResponse->soap_get(soap, "interswitch:AddBillerCustomerResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::GetCollectionsAccount(_interswitch__GetCollectionsAccount *interswitch__GetCollectionsAccount, _interswitch__GetCollectionsAccountResponse *interswitch__GetCollectionsAccountResponse) +{ struct soap *soap = this; + struct __interswitch__GetCollectionsAccount soap_tmp___interswitch__GetCollectionsAccount; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "GetCollectionsAccount"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__GetCollectionsAccount.interswitch__GetCollectionsAccount = interswitch__GetCollectionsAccount; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__GetCollectionsAccount(soap, &soap_tmp___interswitch__GetCollectionsAccount); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetCollectionsAccount(soap, &soap_tmp___interswitch__GetCollectionsAccount, "-interswitch:GetCollectionsAccount", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetCollectionsAccount(soap, &soap_tmp___interswitch__GetCollectionsAccount, "-interswitch:GetCollectionsAccount", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__GetCollectionsAccountResponse) + return soap_closesock(soap); + interswitch__GetCollectionsAccountResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__GetCollectionsAccountResponse->soap_get(soap, "interswitch:GetCollectionsAccountResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::GetBillersCollectionsAccount(_interswitch__GetBillersCollectionsAccount *interswitch__GetBillersCollectionsAccount, _interswitch__GetBillersCollectionsAccountResponse *interswitch__GetBillersCollectionsAccountResponse) +{ struct soap *soap = this; + struct __interswitch__GetBillersCollectionsAccount soap_tmp___interswitch__GetBillersCollectionsAccount; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "GetBillersCollectionsAccount"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__GetBillersCollectionsAccount.interswitch__GetBillersCollectionsAccount = interswitch__GetBillersCollectionsAccount; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__GetBillersCollectionsAccount(soap, &soap_tmp___interswitch__GetBillersCollectionsAccount); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetBillersCollectionsAccount(soap, &soap_tmp___interswitch__GetBillersCollectionsAccount, "-interswitch:GetBillersCollectionsAccount", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetBillersCollectionsAccount(soap, &soap_tmp___interswitch__GetBillersCollectionsAccount, "-interswitch:GetBillersCollectionsAccount", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__GetBillersCollectionsAccountResponse) + return soap_closesock(soap); + interswitch__GetBillersCollectionsAccountResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__GetBillersCollectionsAccountResponse->soap_get(soap, "interswitch:GetBillersCollectionsAccountResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::EditCustomerBillerAccount(_interswitch__EditCustomerBillerAccount *interswitch__EditCustomerBillerAccount, _interswitch__EditCustomerBillerAccountResponse *interswitch__EditCustomerBillerAccountResponse) +{ struct soap *soap = this; + struct __interswitch__EditCustomerBillerAccount soap_tmp___interswitch__EditCustomerBillerAccount; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "EditCustomerBillerAccount"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__EditCustomerBillerAccount.interswitch__EditCustomerBillerAccount = interswitch__EditCustomerBillerAccount; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__EditCustomerBillerAccount(soap, &soap_tmp___interswitch__EditCustomerBillerAccount); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__EditCustomerBillerAccount(soap, &soap_tmp___interswitch__EditCustomerBillerAccount, "-interswitch:EditCustomerBillerAccount", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__EditCustomerBillerAccount(soap, &soap_tmp___interswitch__EditCustomerBillerAccount, "-interswitch:EditCustomerBillerAccount", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__EditCustomerBillerAccountResponse) + return soap_closesock(soap); + interswitch__EditCustomerBillerAccountResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__EditCustomerBillerAccountResponse->soap_get(soap, "interswitch:EditCustomerBillerAccountResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::ResendActivationToken(_interswitch__ResendActivationToken *interswitch__ResendActivationToken, _interswitch__ResendActivationTokenResponse *interswitch__ResendActivationTokenResponse) +{ struct soap *soap = this; + struct __interswitch__ResendActivationToken soap_tmp___interswitch__ResendActivationToken; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "ResendActivationToken"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__ResendActivationToken.interswitch__ResendActivationToken = interswitch__ResendActivationToken; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__ResendActivationToken(soap, &soap_tmp___interswitch__ResendActivationToken); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__ResendActivationToken(soap, &soap_tmp___interswitch__ResendActivationToken, "-interswitch:ResendActivationToken", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__ResendActivationToken(soap, &soap_tmp___interswitch__ResendActivationToken, "-interswitch:ResendActivationToken", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__ResendActivationTokenResponse) + return soap_closesock(soap); + interswitch__ResendActivationTokenResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__ResendActivationTokenResponse->soap_get(soap, "interswitch:ResendActivationTokenResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::DoCustomProcessing(_interswitch__DoCustomProcessing *interswitch__DoCustomProcessing, _interswitch__DoCustomProcessingResponse *interswitch__DoCustomProcessingResponse) +{ struct soap *soap = this; + struct __interswitch__DoCustomProcessing soap_tmp___interswitch__DoCustomProcessing; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "DoCustomProcessing"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__DoCustomProcessing.interswitch__DoCustomProcessing = interswitch__DoCustomProcessing; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__DoCustomProcessing(soap, &soap_tmp___interswitch__DoCustomProcessing); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__DoCustomProcessing(soap, &soap_tmp___interswitch__DoCustomProcessing, "-interswitch:DoCustomProcessing", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__DoCustomProcessing(soap, &soap_tmp___interswitch__DoCustomProcessing, "-interswitch:DoCustomProcessing", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__DoCustomProcessingResponse) + return soap_closesock(soap); + interswitch__DoCustomProcessingResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__DoCustomProcessingResponse->soap_get(soap, "interswitch:DoCustomProcessingResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::CreateBiller(_interswitch__CreateBiller *interswitch__CreateBiller, _interswitch__CreateBillerResponse *interswitch__CreateBillerResponse) +{ struct soap *soap = this; + struct __interswitch__CreateBiller soap_tmp___interswitch__CreateBiller; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "CreateBiller"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__CreateBiller.interswitch__CreateBiller = interswitch__CreateBiller; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__CreateBiller(soap, &soap_tmp___interswitch__CreateBiller); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__CreateBiller(soap, &soap_tmp___interswitch__CreateBiller, "-interswitch:CreateBiller", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__CreateBiller(soap, &soap_tmp___interswitch__CreateBiller, "-interswitch:CreateBiller", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__CreateBillerResponse) + return soap_closesock(soap); + interswitch__CreateBillerResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__CreateBillerResponse->soap_get(soap, "interswitch:CreateBillerResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::VerifyBiller(_interswitch__VerifyBiller *interswitch__VerifyBiller, _interswitch__VerifyBillerResponse *interswitch__VerifyBillerResponse) +{ struct soap *soap = this; + struct __interswitch__VerifyBiller soap_tmp___interswitch__VerifyBiller; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "VerifyBiller"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__VerifyBiller.interswitch__VerifyBiller = interswitch__VerifyBiller; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__VerifyBiller(soap, &soap_tmp___interswitch__VerifyBiller); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__VerifyBiller(soap, &soap_tmp___interswitch__VerifyBiller, "-interswitch:VerifyBiller", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__VerifyBiller(soap, &soap_tmp___interswitch__VerifyBiller, "-interswitch:VerifyBiller", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__VerifyBillerResponse) + return soap_closesock(soap); + interswitch__VerifyBillerResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__VerifyBillerResponse->soap_get(soap, "interswitch:VerifyBillerResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +} // namespace interswitch + +/* End of client proxy code */ diff --git a/coregrade/src/shared_tool/interswitchC.cc b/coregrade/src/shared_tool/interswitchC.cc new file mode 100644 index 0000000..79256f2 --- /dev/null +++ b/coregrade/src/shared_tool/interswitchC.cc @@ -0,0 +1,27239 @@ +/* interswitchC.cpp + Generated by gSOAP 2.7.16 from QuickTellerService.h + Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. + This part of the software is released under one of the following licenses: + GPL, the gSOAP public license, or Genivia's license for commercial use. +*/ + +#if defined(__BORLANDC__) +#pragma option push -w-8060 +#pragma option push -w-8004 +#endif + +#include "interswitchH.h" + +namespace interswitch { + +SOAP_SOURCE_STAMP("@(#) interswitchC.cpp ver 2.7.16 2015-05-18 17:28:01 GMT") + + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_serializeheader(struct soap *soap) +{ + if (soap->header) + soap_serialize_SOAP_ENV__Header(soap, soap->header); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_putheader(struct soap *soap) +{ + if (soap->header) + { soap->part = SOAP_IN_HEADER; + if (soap_out_SOAP_ENV__Header(soap, "SOAP-ENV:Header", 0, soap->header, NULL)) + return soap->error; + soap->part = SOAP_END_HEADER; + } + return SOAP_OK; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_getheader(struct soap *soap) +{ + soap->part = SOAP_IN_HEADER; + soap->header = soap_in_SOAP_ENV__Header(soap, "SOAP-ENV:Header", NULL, NULL); + soap->part = SOAP_END_HEADER; + return soap->header == NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_header(struct soap *soap) +{ + if (!soap->header) + { if ((soap->header = soap_new_SOAP_ENV__Header(soap, -1))) + soap_default_SOAP_ENV__Header(soap, soap->header); + } +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_fault(struct soap *soap) +{ + if (!soap->fault) + { soap->fault = soap_new_SOAP_ENV__Fault(soap, -1); + if (!soap->fault) + return; + soap_default_SOAP_ENV__Fault(soap, soap->fault); + } + if (soap->version == 2 && !soap->fault->SOAP_ENV__Code) + { soap->fault->SOAP_ENV__Code = soap_new_SOAP_ENV__Code(soap, -1); + soap_default_SOAP_ENV__Code(soap, soap->fault->SOAP_ENV__Code); + } + if (soap->version == 2 && !soap->fault->SOAP_ENV__Reason) + { soap->fault->SOAP_ENV__Reason = soap_new_SOAP_ENV__Reason(soap, -1); + soap_default_SOAP_ENV__Reason(soap, soap->fault->SOAP_ENV__Reason); + } +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serializefault(struct soap *soap) +{ + soap_fault(soap); + if (soap->fault) + soap_serialize_SOAP_ENV__Fault(soap, soap->fault); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_putfault(struct soap *soap) +{ + if (soap->fault) + return soap_put_SOAP_ENV__Fault(soap, soap->fault, "SOAP-ENV:Fault", NULL); + return SOAP_OK; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_getfault(struct soap *soap) +{ + return (soap->fault = soap_get_SOAP_ENV__Fault(soap, NULL, "SOAP-ENV:Fault", NULL)) == NULL; +} + +SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultcode(struct soap *soap) +{ + soap_fault(soap); + if (soap->version == 2) + return (const char**)&soap->fault->SOAP_ENV__Code->SOAP_ENV__Value; + return (const char**)&soap->fault->faultcode; +} + +SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultsubcode(struct soap *soap) +{ + soap_fault(soap); + if (soap->version == 2) + { if (!soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode) + { soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode = soap_new_SOAP_ENV__Code(soap, -1); + soap_default_SOAP_ENV__Code(soap, soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode); + } + return (const char**)&soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode->SOAP_ENV__Value; + } + return (const char**)&soap->fault->faultcode; +} + +SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultstring(struct soap *soap) +{ + soap_fault(soap); + if (soap->version == 2) + return (const char**)&soap->fault->SOAP_ENV__Reason->SOAP_ENV__Text; + return (const char**)&soap->fault->faultstring; +} + +SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultdetail(struct soap *soap) +{ + soap_fault(soap); + if (soap->version == 1) + { if (!soap->fault->detail) + { soap->fault->detail = (struct SOAP_ENV__Detail*)soap_malloc(soap, sizeof(struct SOAP_ENV__Detail)); + soap_default_SOAP_ENV__Detail(soap, soap->fault->detail); + } + return (const char**)&soap->fault->detail->__any; + } + if (!soap->fault->SOAP_ENV__Detail) + { soap->fault->SOAP_ENV__Detail = soap_new_SOAP_ENV__Detail(soap, -1); + soap_default_SOAP_ENV__Detail(soap, soap->fault->SOAP_ENV__Detail); + } + return (const char**)&soap->fault->SOAP_ENV__Detail->__any; +} + +#endif + +#ifndef WITH_NOIDREF +SOAP_FMAC3 int SOAP_FMAC4 soap_getindependent(struct soap *soap) +{ + int t; + if (soap->version == 1) + { for (;;) + { if (!soap_getelement(soap, &t)) + if (soap->error || soap_ignore_element(soap)) + break; + } + } + if (soap->error == SOAP_NO_TAG || soap->error == SOAP_EOF) + soap->error = SOAP_OK; + return soap->error; +} +#endif + +#ifndef WITH_NOIDREF +SOAP_FMAC3 void * SOAP_FMAC4 soap_getelement(struct soap *soap, int *type) +{ + if (soap_peek_element(soap)) + return NULL; + if (!*soap->id || !(*type = soap_lookup_type(soap, soap->id))) + *type = soap_lookup_type(soap, soap->href); + switch (*type) + { + case SOAP_TYPE_interswitch_xsd__byte: + return soap_in_xsd__byte(soap, NULL, NULL, "xsd:byte"); + case SOAP_TYPE_interswitch_byte: + return soap_in_byte(soap, NULL, NULL, "xsd:byte"); + case SOAP_TYPE_interswitch_short: + return soap_in_short(soap, NULL, NULL, "xsd:short"); + case SOAP_TYPE_interswitch_interswitch2__char: + return soap_in_interswitch2__char(soap, NULL, NULL, "interswitch2:char"); + case SOAP_TYPE_interswitch_int: + return soap_in_int(soap, NULL, NULL, "xsd:int"); + case SOAP_TYPE_interswitch_LONG64: + return soap_in_LONG64(soap, NULL, NULL, "xsd:long"); + case SOAP_TYPE_interswitch_float: + return soap_in_float(soap, NULL, NULL, "xsd:float"); + case SOAP_TYPE_interswitch_double: + return soap_in_double(soap, NULL, NULL, "xsd:double"); + case SOAP_TYPE_interswitch_xsd__unsignedByte: + return soap_in_xsd__unsignedByte(soap, NULL, NULL, "xsd:unsignedByte"); + case SOAP_TYPE_interswitch_unsignedByte: + return soap_in_unsignedByte(soap, NULL, NULL, "xsd:unsignedByte"); + case SOAP_TYPE_interswitch_unsignedShort: + return soap_in_unsignedShort(soap, NULL, NULL, "xsd:unsignedShort"); + case SOAP_TYPE_interswitch_unsignedInt: + return soap_in_unsignedInt(soap, NULL, NULL, "xsd:unsignedInt"); + case SOAP_TYPE_interswitch_unsignedLONG64: + return soap_in_unsignedLONG64(soap, NULL, NULL, "xsd:unsignedLong"); + case SOAP_TYPE_interswitch_time: + return soap_in_time(soap, NULL, NULL, "xsd:dateTime"); + case SOAP_TYPE_interswitch_bool: + return soap_in_bool(soap, NULL, NULL, "xsd:boolean"); + case SOAP_TYPE_interswitch_interswitch2__guid__: + return soap_in_interswitch2__guid__(soap, NULL, NULL, "interswitch2:guid"); + case SOAP_TYPE_interswitch_interswitch2__guid: + return soap_in_interswitch2__guid(soap, NULL, NULL, "interswitch2:guid"); + case SOAP_TYPE_interswitch_interswitch2__duration__: + return soap_in_interswitch2__duration__(soap, NULL, NULL, "interswitch2:duration"); + case SOAP_TYPE_interswitch_interswitch2__duration: + return soap_in_interswitch2__duration(soap, NULL, NULL, "interswitch2:duration"); + case SOAP_TYPE_interswitch_interswitch2__char__: + return soap_in_interswitch2__char__(soap, NULL, NULL, "interswitch2:char"); + case SOAP_TYPE_interswitch_xsd__unsignedShort: + return soap_in_xsd__unsignedShort(soap, NULL, NULL, "xsd:unsignedShort"); + case SOAP_TYPE_interswitch_xsd__unsignedLong: + return soap_in_xsd__unsignedLong(soap, NULL, NULL, "xsd:unsignedLong"); + case SOAP_TYPE_interswitch_xsd__unsignedInt: + return soap_in_xsd__unsignedInt(soap, NULL, NULL, "xsd:unsignedInt"); + case SOAP_TYPE_interswitch_xsd__unsignedByte_: + return soap_in_xsd__unsignedByte_(soap, NULL, NULL, "xsd:unsignedByte"); + case SOAP_TYPE_interswitch_xsd__string: + return soap_in_xsd__string(soap, NULL, NULL, "xsd:string"); + case SOAP_TYPE_interswitch_xsd__short: + return soap_in_xsd__short(soap, NULL, NULL, "xsd:short"); + case SOAP_TYPE_interswitch_xsd__long: + return soap_in_xsd__long(soap, NULL, NULL, "xsd:long"); + case SOAP_TYPE_interswitch_xsd__int: + return soap_in_xsd__int(soap, NULL, NULL, "xsd:int"); + case SOAP_TYPE_interswitch_xsd__float: + return soap_in_xsd__float(soap, NULL, NULL, "xsd:float"); + case SOAP_TYPE_interswitch_xsd__duration_: + return soap_in_xsd__duration_(soap, NULL, NULL, "xsd:duration"); + case SOAP_TYPE_interswitch_xsd__duration: + return soap_in_xsd__duration(soap, NULL, NULL, "xsd:duration"); + case SOAP_TYPE_interswitch_xsd__double: + return soap_in_xsd__double(soap, NULL, NULL, "xsd:double"); + case SOAP_TYPE_interswitch_xsd__decimal_: + return soap_in_xsd__decimal_(soap, NULL, NULL, "xsd:decimal"); + case SOAP_TYPE_interswitch_xsd__decimal: + return soap_in_xsd__decimal(soap, NULL, NULL, "xsd:decimal"); + case SOAP_TYPE_interswitch_xsd__dateTime: + return soap_in_xsd__dateTime(soap, NULL, NULL, "xsd:dateTime"); + case SOAP_TYPE_interswitch_xsd__byte_: + return soap_in_xsd__byte_(soap, NULL, NULL, "xsd:byte"); + case SOAP_TYPE_interswitch_xsd__boolean: + return soap_in_xsd__boolean(soap, NULL, NULL, "xsd:boolean"); + case SOAP_TYPE_interswitch_xsd__base64Binary_: + return soap_in_xsd__base64Binary_(soap, NULL, NULL, "xsd:base64Binary"); + case SOAP_TYPE_interswitch_xsd__base64Binary: + return soap_in_xsd__base64Binary(soap, NULL, NULL, "xsd:base64Binary"); + case SOAP_TYPE_interswitch_xsd__anyURI_: + return soap_in_xsd__anyURI_(soap, NULL, NULL, "xsd:anyURI"); + case SOAP_TYPE_interswitch_xsd__anyURI: + return soap_in_xsd__anyURI(soap, NULL, NULL, "xsd:anyURI"); + case SOAP_TYPE_interswitch_xsd__QName_: + return soap_in_xsd__QName_(soap, NULL, NULL, "xsd:QName"); + case SOAP_TYPE_interswitch_xsd__QName: + return soap_in_xsd__QName(soap, NULL, NULL, "xsd:QName"); + case SOAP_TYPE_interswitch_xsd__IDREF_: + return soap_in_xsd__IDREF_(soap, NULL, NULL, "xsd:IDREF"); + case SOAP_TYPE_interswitch_xsd__IDREF: + return soap_in_xsd__IDREF(soap, NULL, NULL, "xsd:IDREF"); + case SOAP_TYPE_interswitch_xsd__ID_: + return soap_in_xsd__ID_(soap, NULL, NULL, "xsd:ID"); + case SOAP_TYPE_interswitch_xsd__ID: + return soap_in_xsd__ID(soap, NULL, NULL, "xsd:ID"); + case SOAP_TYPE_interswitch_std__string: + return soap_in_std__string(soap, NULL, NULL, "xsd:string"); + case SOAP_TYPE_interswitch_xsd__anyType: + return soap_in_xsd__anyType(soap, NULL, NULL, "xsd:anyType"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__VerifyBillerResponse: + return soap_in_PointerTo_interswitch__VerifyBillerResponse(soap, NULL, NULL, "interswitch:VerifyBillerResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__VerifyBiller: + return soap_in_PointerTo_interswitch__VerifyBiller(soap, NULL, NULL, "interswitch:VerifyBiller"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__CreateBillerResponse: + return soap_in_PointerTo_interswitch__CreateBillerResponse(soap, NULL, NULL, "interswitch:CreateBillerResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__CreateBiller: + return soap_in_PointerTo_interswitch__CreateBiller(soap, NULL, NULL, "interswitch:CreateBiller"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__DoCustomProcessingResponse: + return soap_in_PointerTo_interswitch__DoCustomProcessingResponse(soap, NULL, NULL, "interswitch:DoCustomProcessingResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__DoCustomProcessing: + return soap_in_PointerTo_interswitch__DoCustomProcessing(soap, NULL, NULL, "interswitch:DoCustomProcessing"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ResendActivationTokenResponse: + return soap_in_PointerTo_interswitch__ResendActivationTokenResponse(soap, NULL, NULL, "interswitch:ResendActivationTokenResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ResendActivationToken: + return soap_in_PointerTo_interswitch__ResendActivationToken(soap, NULL, NULL, "interswitch:ResendActivationToken"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__EditCustomerBillerAccountResponse: + return soap_in_PointerTo_interswitch__EditCustomerBillerAccountResponse(soap, NULL, NULL, "interswitch:EditCustomerBillerAccountResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__EditCustomerBillerAccount: + return soap_in_PointerTo_interswitch__EditCustomerBillerAccount(soap, NULL, NULL, "interswitch:EditCustomerBillerAccount"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillersCollectionsAccountResponse: + return soap_in_PointerTo_interswitch__GetBillersCollectionsAccountResponse(soap, NULL, NULL, "interswitch:GetBillersCollectionsAccountResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillersCollectionsAccount: + return soap_in_PointerTo_interswitch__GetBillersCollectionsAccount(soap, NULL, NULL, "interswitch:GetBillersCollectionsAccount"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetCollectionsAccountResponse: + return soap_in_PointerTo_interswitch__GetCollectionsAccountResponse(soap, NULL, NULL, "interswitch:GetCollectionsAccountResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetCollectionsAccount: + return soap_in_PointerTo_interswitch__GetCollectionsAccount(soap, NULL, NULL, "interswitch:GetCollectionsAccount"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AddBillerCustomerResponse: + return soap_in_PointerTo_interswitch__AddBillerCustomerResponse(soap, NULL, NULL, "interswitch:AddBillerCustomerResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AddBillerCustomer: + return soap_in_PointerTo_interswitch__AddBillerCustomer(soap, NULL, NULL, "interswitch:AddBillerCustomer"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerPaymentsResponse: + return soap_in_PointerTo_interswitch__GetCustomerPaymentsResponse(soap, NULL, NULL, "interswitch:GetCustomerPaymentsResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerPayments: + return soap_in_PointerTo_interswitch__GetCustomerPayments(soap, NULL, NULL, "interswitch:GetCustomerPayments"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerBillerAccountsResponse: + return soap_in_PointerTo_interswitch__GetCustomerBillerAccountsResponse(soap, NULL, NULL, "interswitch:GetCustomerBillerAccountsResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerBillerAccounts: + return soap_in_PointerTo_interswitch__GetCustomerBillerAccounts(soap, NULL, NULL, "interswitch:GetCustomerBillerAccounts"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AddCustomerBillerAccountResponse: + return soap_in_PointerTo_interswitch__AddCustomerBillerAccountResponse(soap, NULL, NULL, "interswitch:AddCustomerBillerAccountResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AddCustomerBillerAccount: + return soap_in_PointerTo_interswitch__AddCustomerBillerAccount(soap, NULL, NULL, "interswitch:AddCustomerBillerAccount"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__SendPaymentsResponse: + return soap_in_PointerTo_interswitch__SendPaymentsResponse(soap, NULL, NULL, "interswitch:SendPaymentsResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__SendPayments: + return soap_in_PointerTo_interswitch__SendPayments(soap, NULL, NULL, "interswitch:SendPayments"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__SendBillPaymentAdviceResponse: + return soap_in_PointerTo_interswitch__SendBillPaymentAdviceResponse(soap, NULL, NULL, "interswitch:SendBillPaymentAdviceResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__SendBillPaymentAdvice: + return soap_in_PointerTo_interswitch__SendBillPaymentAdvice(soap, NULL, NULL, "interswitch:SendBillPaymentAdvice"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateCustomerResponse: + return soap_in_PointerTo_interswitch__AuthenticateCustomerResponse(soap, NULL, NULL, "interswitch:AuthenticateCustomerResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateCustomer: + return soap_in_PointerTo_interswitch__AuthenticateCustomer(soap, NULL, NULL, "interswitch:AuthenticateCustomer"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__DoBillPaymentInquiryResponse: + return soap_in_PointerTo_interswitch__DoBillPaymentInquiryResponse(soap, NULL, NULL, "interswitch:DoBillPaymentInquiryResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__DoBillPaymentInquiry: + return soap_in_PointerTo_interswitch__DoBillPaymentInquiry(soap, NULL, NULL, "interswitch:DoBillPaymentInquiry"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerCategoriesResponse: + return soap_in_PointerTo_interswitch__GetBillerCategoriesResponse(soap, NULL, NULL, "interswitch:GetBillerCategoriesResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerCategories: + return soap_in_PointerTo_interswitch__GetBillerCategories(soap, NULL, NULL, "interswitch:GetBillerCategories"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerPaymentItemsResponse: + return soap_in_PointerTo_interswitch__GetBillerPaymentItemsResponse(soap, NULL, NULL, "interswitch:GetBillerPaymentItemsResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerPaymentItems: + return soap_in_PointerTo_interswitch__GetBillerPaymentItems(soap, NULL, NULL, "interswitch:GetBillerPaymentItems"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetFeaturedBillersResponse: + return soap_in_PointerTo_interswitch__GetFeaturedBillersResponse(soap, NULL, NULL, "interswitch:GetFeaturedBillersResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetFeaturedBillers: + return soap_in_PointerTo_interswitch__GetFeaturedBillers(soap, NULL, NULL, "interswitch:GetFeaturedBillers"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetLatestBillersResponse: + return soap_in_PointerTo_interswitch__GetLatestBillersResponse(soap, NULL, NULL, "interswitch:GetLatestBillersResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetLatestBillers: + return soap_in_PointerTo_interswitch__GetLatestBillers(soap, NULL, NULL, "interswitch:GetLatestBillers"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillersResponse: + return soap_in_PointerTo_interswitch__GetBillersResponse(soap, NULL, NULL, "interswitch:GetBillersResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillers: + return soap_in_PointerTo_interswitch__GetBillers(soap, NULL, NULL, "interswitch:GetBillers"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetUserResponse: + return soap_in_PointerTo_interswitch__GetUserResponse(soap, NULL, NULL, "interswitch:GetUserResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetUser: + return soap_in_PointerTo_interswitch__GetUser(soap, NULL, NULL, "interswitch:GetUser"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse: + return soap_in_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(soap, NULL, NULL, "interswitch:AuthenticateUserSecurityTokenResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUserSecurityToken: + return soap_in_PointerTo_interswitch__AuthenticateUserSecurityToken(soap, NULL, NULL, "interswitch:AuthenticateUserSecurityToken"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUserResponse: + return soap_in_PointerTo_interswitch__AuthenticateUserResponse(soap, NULL, NULL, "interswitch:AuthenticateUserResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUser: + return soap_in_PointerTo_interswitch__AuthenticateUser(soap, NULL, NULL, "interswitch:AuthenticateUser"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ResetPasswordResponse: + return soap_in_PointerTo_interswitch__ResetPasswordResponse(soap, NULL, NULL, "interswitch:ResetPasswordResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ResetPassword: + return soap_in_PointerTo_interswitch__ResetPassword(soap, NULL, NULL, "interswitch:ResetPassword"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ChangePasswordResponse: + return soap_in_PointerTo_interswitch__ChangePasswordResponse(soap, NULL, NULL, "interswitch:ChangePasswordResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ChangePassword: + return soap_in_PointerTo_interswitch__ChangePassword(soap, NULL, NULL, "interswitch:ChangePassword"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__UpdateUserResponse: + return soap_in_PointerTo_interswitch__UpdateUserResponse(soap, NULL, NULL, "interswitch:UpdateUserResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__UpdateUser: + return soap_in_PointerTo_interswitch__UpdateUser(soap, NULL, NULL, "interswitch:UpdateUser"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ActivateUserResponse: + return soap_in_PointerTo_interswitch__ActivateUserResponse(soap, NULL, NULL, "interswitch:ActivateUserResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ActivateUser: + return soap_in_PointerTo_interswitch__ActivateUser(soap, NULL, NULL, "interswitch:ActivateUser"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__CreateUserResponse: + return soap_in_PointerTo_interswitch__CreateUserResponse(soap, NULL, NULL, "interswitch:CreateUserResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__CreateUser: + return soap_in_PointerTo_interswitch__CreateUser(soap, NULL, NULL, "interswitch:CreateUser"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetSystemSettingsResponse: + return soap_in_PointerTo_interswitch__GetSystemSettingsResponse(soap, NULL, NULL, "interswitch:GetSystemSettingsResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetSystemSettings: + return soap_in_PointerTo_interswitch__GetSystemSettings(soap, NULL, NULL, "interswitch:GetSystemSettings"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransactionResponse: + return soap_in_PointerTo_interswitch__QueryTransactionResponse(soap, NULL, NULL, "interswitch:QueryTransactionResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransaction: + return soap_in_PointerTo_interswitch__QueryTransaction(soap, NULL, NULL, "interswitch:QueryTransaction"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__StatusCheckResponse: + return soap_in_PointerTo_interswitch__StatusCheckResponse(soap, NULL, NULL, "interswitch:StatusCheckResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__StatusCheck: + return soap_in_PointerTo_interswitch__StatusCheck(soap, NULL, NULL, "interswitch:StatusCheck"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ReverseCashOutResponse: + return soap_in_PointerTo_interswitch__ReverseCashOutResponse(soap, NULL, NULL, "interswitch:ReverseCashOutResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ReverseCashOut: + return soap_in_PointerTo_interswitch__ReverseCashOut(soap, NULL, NULL, "interswitch:ReverseCashOut"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseAccountCashOutResponse: + return soap_in_PointerTo_interswitch__AuthoriseAccountCashOutResponse(soap, NULL, NULL, "interswitch:AuthoriseAccountCashOutResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseAccountCashOut: + return soap_in_PointerTo_interswitch__AuthoriseAccountCashOut(soap, NULL, NULL, "interswitch:AuthoriseAccountCashOut"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseCashOutResponse: + return soap_in_PointerTo_interswitch__AuthoriseCashOutResponse(soap, NULL, NULL, "interswitch:AuthoriseCashOutResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseCashOut: + return soap_in_PointerTo_interswitch__AuthoriseCashOut(soap, NULL, NULL, "interswitch:AuthoriseCashOut"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransferResponse: + return soap_in_PointerTo_interswitch__QueryTransferResponse(soap, NULL, NULL, "interswitch:QueryTransferResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransfer: + return soap_in_PointerTo_interswitch__QueryTransfer(soap, NULL, NULL, "interswitch:QueryTransfer"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__SendSessionKeyResponse: + return soap_in_PointerTo_interswitch__SendSessionKeyResponse(soap, NULL, NULL, "interswitch:SendSessionKeyResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__SendSessionKey: + return soap_in_PointerTo_interswitch__SendSessionKey(soap, NULL, NULL, "interswitch:SendSessionKey"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__CancelTransferResponse: + return soap_in_PointerTo_interswitch__CancelTransferResponse(soap, NULL, NULL, "interswitch:CancelTransferResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__CancelTransfer: + return soap_in_PointerTo_interswitch__CancelTransfer(soap, NULL, NULL, "interswitch:CancelTransfer"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__DoTransferResponse: + return soap_in_PointerTo_interswitch__DoTransferResponse(soap, NULL, NULL, "interswitch:DoTransferResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__DoTransfer: + return soap_in_PointerTo_interswitch__DoTransfer(soap, NULL, NULL, "interswitch:DoTransfer"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ValidateCustomerResponse: + return soap_in_PointerTo_interswitch__ValidateCustomerResponse(soap, NULL, NULL, "interswitch:ValidateCustomerResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ValidateCustomer: + return soap_in_PointerTo_interswitch__ValidateCustomer(soap, NULL, NULL, "interswitch:ValidateCustomer"); + case SOAP_TYPE_interswitch_PointerTostd__string: + return soap_in_PointerTostd__string(soap, NULL, NULL, "xsd:string"); + case SOAP_TYPE_interswitch_PointerTounsignedByte: + return soap_in_PointerTounsignedByte(soap, NULL, NULL, "xsd:unsignedByte"); + case SOAP_TYPE_interswitch__QName: + { char **s; + s = soap_in__QName(soap, NULL, NULL, "xsd:QName"); + return s ? *s : NULL; + } + case SOAP_TYPE_interswitch_string: + { char **s; + s = soap_in_string(soap, NULL, NULL, "xsd:string"); + return s ? *s : NULL; + } + default: + { const char *t = soap->type; + if (!*t) + t = soap->tag; + if (!soap_match_tag(soap, t, "interswitch2:guid")) + { *type = SOAP_TYPE_interswitch_interswitch2__guid__; + return soap_in_interswitch2__guid__(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch2:guid")) + { *type = SOAP_TYPE_interswitch_interswitch2__guid; + return soap_in_interswitch2__guid(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch2:duration")) + { *type = SOAP_TYPE_interswitch_interswitch2__duration__; + return soap_in_interswitch2__duration__(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch2:duration")) + { *type = SOAP_TYPE_interswitch_interswitch2__duration; + return soap_in_interswitch2__duration(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch2:char")) + { *type = SOAP_TYPE_interswitch_interswitch2__char__; + return soap_in_interswitch2__char__(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:unsignedShort")) + { *type = SOAP_TYPE_interswitch_xsd__unsignedShort; + return soap_in_xsd__unsignedShort(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:unsignedLong")) + { *type = SOAP_TYPE_interswitch_xsd__unsignedLong; + return soap_in_xsd__unsignedLong(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:unsignedInt")) + { *type = SOAP_TYPE_interswitch_xsd__unsignedInt; + return soap_in_xsd__unsignedInt(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:unsignedByte")) + { *type = SOAP_TYPE_interswitch_xsd__unsignedByte_; + return soap_in_xsd__unsignedByte_(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:string")) + { *type = SOAP_TYPE_interswitch_xsd__string; + return soap_in_xsd__string(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:short")) + { *type = SOAP_TYPE_interswitch_xsd__short; + return soap_in_xsd__short(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:long")) + { *type = SOAP_TYPE_interswitch_xsd__long; + return soap_in_xsd__long(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:int")) + { *type = SOAP_TYPE_interswitch_xsd__int; + return soap_in_xsd__int(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:float")) + { *type = SOAP_TYPE_interswitch_xsd__float; + return soap_in_xsd__float(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:duration")) + { *type = SOAP_TYPE_interswitch_xsd__duration_; + return soap_in_xsd__duration_(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:duration")) + { *type = SOAP_TYPE_interswitch_xsd__duration; + return soap_in_xsd__duration(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:double")) + { *type = SOAP_TYPE_interswitch_xsd__double; + return soap_in_xsd__double(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:decimal")) + { *type = SOAP_TYPE_interswitch_xsd__decimal_; + return soap_in_xsd__decimal_(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:decimal")) + { *type = SOAP_TYPE_interswitch_xsd__decimal; + return soap_in_xsd__decimal(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:dateTime")) + { *type = SOAP_TYPE_interswitch_xsd__dateTime; + return soap_in_xsd__dateTime(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:byte")) + { *type = SOAP_TYPE_interswitch_xsd__byte_; + return soap_in_xsd__byte_(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:boolean")) + { *type = SOAP_TYPE_interswitch_xsd__boolean; + return soap_in_xsd__boolean(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:base64Binary")) + { *type = SOAP_TYPE_interswitch_xsd__base64Binary_; + return soap_in_xsd__base64Binary_(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:base64Binary")) + { *type = SOAP_TYPE_interswitch_xsd__base64Binary; + return soap_in_xsd__base64Binary(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:anyURI")) + { *type = SOAP_TYPE_interswitch_xsd__anyURI_; + return soap_in_xsd__anyURI_(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:anyURI")) + { *type = SOAP_TYPE_interswitch_xsd__anyURI; + return soap_in_xsd__anyURI(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:QName")) + { *type = SOAP_TYPE_interswitch_xsd__QName_; + return soap_in_xsd__QName_(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:QName")) + { *type = SOAP_TYPE_interswitch_xsd__QName; + return soap_in_xsd__QName(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:IDREF")) + { *type = SOAP_TYPE_interswitch_xsd__IDREF_; + return soap_in_xsd__IDREF_(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:IDREF")) + { *type = SOAP_TYPE_interswitch_xsd__IDREF; + return soap_in_xsd__IDREF(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:ID")) + { *type = SOAP_TYPE_interswitch_xsd__ID_; + return soap_in_xsd__ID_(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:ID")) + { *type = SOAP_TYPE_interswitch_xsd__ID; + return soap_in_xsd__ID(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:string")) + { *type = SOAP_TYPE_interswitch_std__string; + return soap_in_std__string(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:anyType")) + { *type = SOAP_TYPE_interswitch_xsd__anyType; + return soap_in_xsd__anyType(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:byte")) + { *type = SOAP_TYPE_interswitch_xsd__byte; + return soap_in_xsd__byte(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:byte")) + { *type = SOAP_TYPE_interswitch_byte; + return soap_in_byte(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:short")) + { *type = SOAP_TYPE_interswitch_short; + return soap_in_short(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch2:char")) + { *type = SOAP_TYPE_interswitch_interswitch2__char; + return soap_in_interswitch2__char(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:int")) + { *type = SOAP_TYPE_interswitch_int; + return soap_in_int(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:long")) + { *type = SOAP_TYPE_interswitch_LONG64; + return soap_in_LONG64(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:float")) + { *type = SOAP_TYPE_interswitch_float; + return soap_in_float(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:double")) + { *type = SOAP_TYPE_interswitch_double; + return soap_in_double(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:unsignedByte")) + { *type = SOAP_TYPE_interswitch_xsd__unsignedByte; + return soap_in_xsd__unsignedByte(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:unsignedByte")) + { *type = SOAP_TYPE_interswitch_unsignedByte; + return soap_in_unsignedByte(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:unsignedShort")) + { *type = SOAP_TYPE_interswitch_unsignedShort; + return soap_in_unsignedShort(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:unsignedInt")) + { *type = SOAP_TYPE_interswitch_unsignedInt; + return soap_in_unsignedInt(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:unsignedLong")) + { *type = SOAP_TYPE_interswitch_unsignedLONG64; + return soap_in_unsignedLONG64(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:dateTime")) + { *type = SOAP_TYPE_interswitch_time; + return soap_in_time(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:boolean")) + { *type = SOAP_TYPE_interswitch_bool; + return soap_in_bool(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:QName")) + { char **s; + *type = SOAP_TYPE_interswitch__QName; + s = soap_in__QName(soap, NULL, NULL, NULL); + return s ? *s : NULL; + } + if (!soap_match_tag(soap, t, "xsd:string")) + { char **s; + *type = SOAP_TYPE_interswitch_string; + s = soap_in_string(soap, NULL, NULL, NULL); + return s ? *s : NULL; + } + t = soap->tag; + if (!soap_match_tag(soap, t, "interswitch:VerifyBillerResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse; + return soap_in__interswitch__VerifyBillerResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:VerifyBiller")) + { *type = SOAP_TYPE_interswitch__interswitch__VerifyBiller; + return soap_in__interswitch__VerifyBiller(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:CreateBillerResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__CreateBillerResponse; + return soap_in__interswitch__CreateBillerResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:CreateBiller")) + { *type = SOAP_TYPE_interswitch__interswitch__CreateBiller; + return soap_in__interswitch__CreateBiller(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:DoCustomProcessingResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse; + return soap_in__interswitch__DoCustomProcessingResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:DoCustomProcessing")) + { *type = SOAP_TYPE_interswitch__interswitch__DoCustomProcessing; + return soap_in__interswitch__DoCustomProcessing(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:ResendActivationTokenResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse; + return soap_in__interswitch__ResendActivationTokenResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:ResendActivationToken")) + { *type = SOAP_TYPE_interswitch__interswitch__ResendActivationToken; + return soap_in__interswitch__ResendActivationToken(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:EditCustomerBillerAccountResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse; + return soap_in__interswitch__EditCustomerBillerAccountResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:EditCustomerBillerAccount")) + { *type = SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount; + return soap_in__interswitch__EditCustomerBillerAccount(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetBillersCollectionsAccountResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse; + return soap_in__interswitch__GetBillersCollectionsAccountResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetBillersCollectionsAccount")) + { *type = SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount; + return soap_in__interswitch__GetBillersCollectionsAccount(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetCollectionsAccountResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse; + return soap_in__interswitch__GetCollectionsAccountResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetCollectionsAccount")) + { *type = SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount; + return soap_in__interswitch__GetCollectionsAccount(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:AddBillerCustomerResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse; + return soap_in__interswitch__AddBillerCustomerResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:AddBillerCustomer")) + { *type = SOAP_TYPE_interswitch__interswitch__AddBillerCustomer; + return soap_in__interswitch__AddBillerCustomer(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetCustomerPaymentsResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse; + return soap_in__interswitch__GetCustomerPaymentsResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetCustomerPayments")) + { *type = SOAP_TYPE_interswitch__interswitch__GetCustomerPayments; + return soap_in__interswitch__GetCustomerPayments(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetCustomerBillerAccountsResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse; + return soap_in__interswitch__GetCustomerBillerAccountsResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetCustomerBillerAccounts")) + { *type = SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts; + return soap_in__interswitch__GetCustomerBillerAccounts(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:AddCustomerBillerAccountResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse; + return soap_in__interswitch__AddCustomerBillerAccountResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:AddCustomerBillerAccount")) + { *type = SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount; + return soap_in__interswitch__AddCustomerBillerAccount(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:SendPaymentsResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse; + return soap_in__interswitch__SendPaymentsResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:SendPayments")) + { *type = SOAP_TYPE_interswitch__interswitch__SendPayments; + return soap_in__interswitch__SendPayments(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:SendBillPaymentAdviceResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse; + return soap_in__interswitch__SendBillPaymentAdviceResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:SendBillPaymentAdvice")) + { *type = SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice; + return soap_in__interswitch__SendBillPaymentAdvice(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:AuthenticateCustomerResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse; + return soap_in__interswitch__AuthenticateCustomerResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:AuthenticateCustomer")) + { *type = SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer; + return soap_in__interswitch__AuthenticateCustomer(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:DoBillPaymentInquiryResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse; + return soap_in__interswitch__DoBillPaymentInquiryResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:DoBillPaymentInquiry")) + { *type = SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry; + return soap_in__interswitch__DoBillPaymentInquiry(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetBillerCategoriesResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse; + return soap_in__interswitch__GetBillerCategoriesResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetBillerCategories")) + { *type = SOAP_TYPE_interswitch__interswitch__GetBillerCategories; + return soap_in__interswitch__GetBillerCategories(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetBillerPaymentItemsResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse; + return soap_in__interswitch__GetBillerPaymentItemsResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetBillerPaymentItems")) + { *type = SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems; + return soap_in__interswitch__GetBillerPaymentItems(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetFeaturedBillersResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse; + return soap_in__interswitch__GetFeaturedBillersResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetFeaturedBillers")) + { *type = SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers; + return soap_in__interswitch__GetFeaturedBillers(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetLatestBillersResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse; + return soap_in__interswitch__GetLatestBillersResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetLatestBillers")) + { *type = SOAP_TYPE_interswitch__interswitch__GetLatestBillers; + return soap_in__interswitch__GetLatestBillers(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetBillersResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__GetBillersResponse; + return soap_in__interswitch__GetBillersResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetBillers")) + { *type = SOAP_TYPE_interswitch__interswitch__GetBillers; + return soap_in__interswitch__GetBillers(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetUserResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__GetUserResponse; + return soap_in__interswitch__GetUserResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetUser")) + { *type = SOAP_TYPE_interswitch__interswitch__GetUser; + return soap_in__interswitch__GetUser(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:AuthenticateUserSecurityTokenResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse; + return soap_in__interswitch__AuthenticateUserSecurityTokenResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:AuthenticateUserSecurityToken")) + { *type = SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken; + return soap_in__interswitch__AuthenticateUserSecurityToken(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:AuthenticateUserResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse; + return soap_in__interswitch__AuthenticateUserResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:AuthenticateUser")) + { *type = SOAP_TYPE_interswitch__interswitch__AuthenticateUser; + return soap_in__interswitch__AuthenticateUser(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:ResetPasswordResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse; + return soap_in__interswitch__ResetPasswordResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:ResetPassword")) + { *type = SOAP_TYPE_interswitch__interswitch__ResetPassword; + return soap_in__interswitch__ResetPassword(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:ChangePasswordResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse; + return soap_in__interswitch__ChangePasswordResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:ChangePassword")) + { *type = SOAP_TYPE_interswitch__interswitch__ChangePassword; + return soap_in__interswitch__ChangePassword(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:UpdateUserResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__UpdateUserResponse; + return soap_in__interswitch__UpdateUserResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:UpdateUser")) + { *type = SOAP_TYPE_interswitch__interswitch__UpdateUser; + return soap_in__interswitch__UpdateUser(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:ActivateUserResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__ActivateUserResponse; + return soap_in__interswitch__ActivateUserResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:ActivateUser")) + { *type = SOAP_TYPE_interswitch__interswitch__ActivateUser; + return soap_in__interswitch__ActivateUser(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:CreateUserResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__CreateUserResponse; + return soap_in__interswitch__CreateUserResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:CreateUser")) + { *type = SOAP_TYPE_interswitch__interswitch__CreateUser; + return soap_in__interswitch__CreateUser(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetSystemSettingsResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse; + return soap_in__interswitch__GetSystemSettingsResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetSystemSettings")) + { *type = SOAP_TYPE_interswitch__interswitch__GetSystemSettings; + return soap_in__interswitch__GetSystemSettings(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:QueryTransactionResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse; + return soap_in__interswitch__QueryTransactionResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:QueryTransaction")) + { *type = SOAP_TYPE_interswitch__interswitch__QueryTransaction; + return soap_in__interswitch__QueryTransaction(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:StatusCheckResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__StatusCheckResponse; + return soap_in__interswitch__StatusCheckResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:StatusCheck")) + { *type = SOAP_TYPE_interswitch__interswitch__StatusCheck; + return soap_in__interswitch__StatusCheck(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:ReverseCashOutResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse; + return soap_in__interswitch__ReverseCashOutResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:ReverseCashOut")) + { *type = SOAP_TYPE_interswitch__interswitch__ReverseCashOut; + return soap_in__interswitch__ReverseCashOut(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:AuthoriseAccountCashOutResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse; + return soap_in__interswitch__AuthoriseAccountCashOutResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:AuthoriseAccountCashOut")) + { *type = SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut; + return soap_in__interswitch__AuthoriseAccountCashOut(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:AuthoriseCashOutResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse; + return soap_in__interswitch__AuthoriseCashOutResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:AuthoriseCashOut")) + { *type = SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut; + return soap_in__interswitch__AuthoriseCashOut(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:QueryTransferResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__QueryTransferResponse; + return soap_in__interswitch__QueryTransferResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:QueryTransfer")) + { *type = SOAP_TYPE_interswitch__interswitch__QueryTransfer; + return soap_in__interswitch__QueryTransfer(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:SendSessionKeyResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse; + return soap_in__interswitch__SendSessionKeyResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:SendSessionKey")) + { *type = SOAP_TYPE_interswitch__interswitch__SendSessionKey; + return soap_in__interswitch__SendSessionKey(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:CancelTransferResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__CancelTransferResponse; + return soap_in__interswitch__CancelTransferResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:CancelTransfer")) + { *type = SOAP_TYPE_interswitch__interswitch__CancelTransfer; + return soap_in__interswitch__CancelTransfer(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:DoTransferResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__DoTransferResponse; + return soap_in__interswitch__DoTransferResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:DoTransfer")) + { *type = SOAP_TYPE_interswitch__interswitch__DoTransfer; + return soap_in__interswitch__DoTransfer(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:ValidateCustomerResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse; + return soap_in__interswitch__ValidateCustomerResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:ValidateCustomer")) + { *type = SOAP_TYPE_interswitch__interswitch__ValidateCustomer; + return soap_in__interswitch__ValidateCustomer(soap, NULL, NULL, NULL); + } + } + } + soap->error = SOAP_TAG_MISMATCH; + return NULL; +} +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_ignore_element(struct soap *soap) +{ + if (!soap_peek_element(soap)) + { int t; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Unexpected element '%s' in input (level=%u, %d)\n", soap->tag, soap->level, soap->body)); + if (soap->mustUnderstand && !soap->other) + return soap->error = SOAP_MUSTUNDERSTAND; + if (((soap->mode & SOAP_XML_STRICT) && soap->part != SOAP_IN_HEADER) || !soap_match_tag(soap, soap->tag, "SOAP-ENV:")) + { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "REJECTING element '%s'\n", soap->tag)); + return soap->error = SOAP_TAG_MISMATCH; + } + if (!*soap->id || !soap_getelement(soap, &t)) + { soap->peeked = 0; + if (soap->fignore) + soap->error = soap->fignore(soap, soap->tag); + else + soap->error = SOAP_OK; + DBGLOG(TEST, if (!soap->error) SOAP_MESSAGE(fdebug, "IGNORING element '%s'\n", soap->tag)); + if (!soap->error && soap->body) + { soap->level++; + while (!soap_ignore_element(soap)) + ; + if (soap->error == SOAP_NO_TAG) + soap->error = soap_element_end_in(soap, NULL); + } + } + } + return soap->error; +} + +#ifndef WITH_NOIDREF +SOAP_FMAC3 int SOAP_FMAC4 soap_putindependent(struct soap *soap) +{ + int i; + struct soap_plist *pp; + if (soap->version == 1 && soap->encodingStyle && !(soap->mode & (SOAP_XML_TREE | SOAP_XML_GRAPH))) + for (i = 0; i < SOAP_PTRHASH; i++) + for (pp = soap->pht[i]; pp; pp = pp->next) + if (pp->mark1 == 2 || pp->mark2 == 2) + if (soap_putelement(soap, pp->ptr, "id", pp->id, pp->type)) + return soap->error; + return SOAP_OK; +} +#endif + +#ifndef WITH_NOIDREF +SOAP_FMAC3 int SOAP_FMAC4 soap_putelement(struct soap *soap, const void *ptr, const char *tag, int id, int type) +{ + switch (type) + { + case SOAP_TYPE_interswitch_xsd__byte: + return soap_out_xsd__byte(soap, tag, id, (const char *)ptr, "xsd:byte"); + case SOAP_TYPE_interswitch_byte: + return soap_out_byte(soap, tag, id, (const char *)ptr, "xsd:byte"); + case SOAP_TYPE_interswitch_short: + return soap_out_short(soap, tag, id, (const short *)ptr, "xsd:short"); + case SOAP_TYPE_interswitch_interswitch2__char: + return soap_out_interswitch2__char(soap, tag, id, (const int *)ptr, "interswitch2:char"); + case SOAP_TYPE_interswitch_int: + return soap_out_int(soap, tag, id, (const int *)ptr, "xsd:int"); + case SOAP_TYPE_interswitch_LONG64: + return soap_out_LONG64(soap, tag, id, (const LONG64 *)ptr, "xsd:long"); + case SOAP_TYPE_interswitch_float: + return soap_out_float(soap, tag, id, (const float *)ptr, "xsd:float"); + case SOAP_TYPE_interswitch_double: + return soap_out_double(soap, tag, id, (const double *)ptr, "xsd:double"); + case SOAP_TYPE_interswitch_xsd__unsignedByte: + return soap_out_xsd__unsignedByte(soap, tag, id, (const unsigned char *)ptr, "xsd:unsignedByte"); + case SOAP_TYPE_interswitch_unsignedByte: + return soap_out_unsignedByte(soap, tag, id, (const unsigned char *)ptr, "xsd:unsignedByte"); + case SOAP_TYPE_interswitch_unsignedShort: + return soap_out_unsignedShort(soap, tag, id, (const unsigned short *)ptr, "xsd:unsignedShort"); + case SOAP_TYPE_interswitch_unsignedInt: + return soap_out_unsignedInt(soap, tag, id, (const unsigned int *)ptr, "xsd:unsignedInt"); + case SOAP_TYPE_interswitch_unsignedLONG64: + return soap_out_unsignedLONG64(soap, tag, id, (const ULONG64 *)ptr, "xsd:unsignedLong"); + case SOAP_TYPE_interswitch_time: + return soap_out_time(soap, tag, id, (const time_t *)ptr, "xsd:dateTime"); + case SOAP_TYPE_interswitch_bool: + return soap_out_bool(soap, tag, id, (const bool *)ptr, "xsd:boolean"); + case SOAP_TYPE_interswitch_interswitch2__guid__: + return ((interswitch2__guid__ *)ptr)->soap_out(soap, tag, id, "interswitch2:guid"); + case SOAP_TYPE_interswitch_interswitch2__guid: + return soap_out_interswitch2__guid(soap, tag, id, (const std::string *)ptr, "interswitch2:guid"); + case SOAP_TYPE_interswitch_interswitch2__duration__: + return ((interswitch2__duration__ *)ptr)->soap_out(soap, tag, id, "interswitch2:duration"); + case SOAP_TYPE_interswitch_interswitch2__duration: + return soap_out_interswitch2__duration(soap, tag, id, (const std::string *)ptr, "interswitch2:duration"); + case SOAP_TYPE_interswitch_interswitch2__char__: + return ((interswitch2__char__ *)ptr)->soap_out(soap, tag, id, "interswitch2:char"); + case SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse: + return ((_interswitch__VerifyBillerResponse *)ptr)->soap_out(soap, "interswitch:VerifyBillerResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__VerifyBiller: + return ((_interswitch__VerifyBiller *)ptr)->soap_out(soap, "interswitch:VerifyBiller", id, NULL); + case SOAP_TYPE_interswitch__interswitch__CreateBillerResponse: + return ((_interswitch__CreateBillerResponse *)ptr)->soap_out(soap, "interswitch:CreateBillerResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__CreateBiller: + return ((_interswitch__CreateBiller *)ptr)->soap_out(soap, "interswitch:CreateBiller", id, NULL); + case SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse: + return ((_interswitch__DoCustomProcessingResponse *)ptr)->soap_out(soap, "interswitch:DoCustomProcessingResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__DoCustomProcessing: + return ((_interswitch__DoCustomProcessing *)ptr)->soap_out(soap, "interswitch:DoCustomProcessing", id, NULL); + case SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse: + return ((_interswitch__ResendActivationTokenResponse *)ptr)->soap_out(soap, "interswitch:ResendActivationTokenResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__ResendActivationToken: + return ((_interswitch__ResendActivationToken *)ptr)->soap_out(soap, "interswitch:ResendActivationToken", id, NULL); + case SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse: + return ((_interswitch__EditCustomerBillerAccountResponse *)ptr)->soap_out(soap, "interswitch:EditCustomerBillerAccountResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount: + return ((_interswitch__EditCustomerBillerAccount *)ptr)->soap_out(soap, "interswitch:EditCustomerBillerAccount", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse: + return ((_interswitch__GetBillersCollectionsAccountResponse *)ptr)->soap_out(soap, "interswitch:GetBillersCollectionsAccountResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount: + return ((_interswitch__GetBillersCollectionsAccount *)ptr)->soap_out(soap, "interswitch:GetBillersCollectionsAccount", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse: + return ((_interswitch__GetCollectionsAccountResponse *)ptr)->soap_out(soap, "interswitch:GetCollectionsAccountResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount: + return ((_interswitch__GetCollectionsAccount *)ptr)->soap_out(soap, "interswitch:GetCollectionsAccount", id, NULL); + case SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse: + return ((_interswitch__AddBillerCustomerResponse *)ptr)->soap_out(soap, "interswitch:AddBillerCustomerResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__AddBillerCustomer: + return ((_interswitch__AddBillerCustomer *)ptr)->soap_out(soap, "interswitch:AddBillerCustomer", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse: + return ((_interswitch__GetCustomerPaymentsResponse *)ptr)->soap_out(soap, "interswitch:GetCustomerPaymentsResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetCustomerPayments: + return ((_interswitch__GetCustomerPayments *)ptr)->soap_out(soap, "interswitch:GetCustomerPayments", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse: + return ((_interswitch__GetCustomerBillerAccountsResponse *)ptr)->soap_out(soap, "interswitch:GetCustomerBillerAccountsResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts: + return ((_interswitch__GetCustomerBillerAccounts *)ptr)->soap_out(soap, "interswitch:GetCustomerBillerAccounts", id, NULL); + case SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse: + return ((_interswitch__AddCustomerBillerAccountResponse *)ptr)->soap_out(soap, "interswitch:AddCustomerBillerAccountResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount: + return ((_interswitch__AddCustomerBillerAccount *)ptr)->soap_out(soap, "interswitch:AddCustomerBillerAccount", id, NULL); + case SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse: + return ((_interswitch__SendPaymentsResponse *)ptr)->soap_out(soap, "interswitch:SendPaymentsResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__SendPayments: + return ((_interswitch__SendPayments *)ptr)->soap_out(soap, "interswitch:SendPayments", id, NULL); + case SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse: + return ((_interswitch__SendBillPaymentAdviceResponse *)ptr)->soap_out(soap, "interswitch:SendBillPaymentAdviceResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice: + return ((_interswitch__SendBillPaymentAdvice *)ptr)->soap_out(soap, "interswitch:SendBillPaymentAdvice", id, NULL); + case SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse: + return ((_interswitch__AuthenticateCustomerResponse *)ptr)->soap_out(soap, "interswitch:AuthenticateCustomerResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer: + return ((_interswitch__AuthenticateCustomer *)ptr)->soap_out(soap, "interswitch:AuthenticateCustomer", id, NULL); + case SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse: + return ((_interswitch__DoBillPaymentInquiryResponse *)ptr)->soap_out(soap, "interswitch:DoBillPaymentInquiryResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry: + return ((_interswitch__DoBillPaymentInquiry *)ptr)->soap_out(soap, "interswitch:DoBillPaymentInquiry", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse: + return ((_interswitch__GetBillerCategoriesResponse *)ptr)->soap_out(soap, "interswitch:GetBillerCategoriesResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetBillerCategories: + return ((_interswitch__GetBillerCategories *)ptr)->soap_out(soap, "interswitch:GetBillerCategories", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse: + return ((_interswitch__GetBillerPaymentItemsResponse *)ptr)->soap_out(soap, "interswitch:GetBillerPaymentItemsResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems: + return ((_interswitch__GetBillerPaymentItems *)ptr)->soap_out(soap, "interswitch:GetBillerPaymentItems", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse: + return ((_interswitch__GetFeaturedBillersResponse *)ptr)->soap_out(soap, "interswitch:GetFeaturedBillersResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers: + return ((_interswitch__GetFeaturedBillers *)ptr)->soap_out(soap, "interswitch:GetFeaturedBillers", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse: + return ((_interswitch__GetLatestBillersResponse *)ptr)->soap_out(soap, "interswitch:GetLatestBillersResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetLatestBillers: + return ((_interswitch__GetLatestBillers *)ptr)->soap_out(soap, "interswitch:GetLatestBillers", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetBillersResponse: + return ((_interswitch__GetBillersResponse *)ptr)->soap_out(soap, "interswitch:GetBillersResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetBillers: + return ((_interswitch__GetBillers *)ptr)->soap_out(soap, "interswitch:GetBillers", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetUserResponse: + return ((_interswitch__GetUserResponse *)ptr)->soap_out(soap, "interswitch:GetUserResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetUser: + return ((_interswitch__GetUser *)ptr)->soap_out(soap, "interswitch:GetUser", id, NULL); + case SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse: + return ((_interswitch__AuthenticateUserSecurityTokenResponse *)ptr)->soap_out(soap, "interswitch:AuthenticateUserSecurityTokenResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken: + return ((_interswitch__AuthenticateUserSecurityToken *)ptr)->soap_out(soap, "interswitch:AuthenticateUserSecurityToken", id, NULL); + case SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse: + return ((_interswitch__AuthenticateUserResponse *)ptr)->soap_out(soap, "interswitch:AuthenticateUserResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__AuthenticateUser: + return ((_interswitch__AuthenticateUser *)ptr)->soap_out(soap, "interswitch:AuthenticateUser", id, NULL); + case SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse: + return ((_interswitch__ResetPasswordResponse *)ptr)->soap_out(soap, "interswitch:ResetPasswordResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__ResetPassword: + return ((_interswitch__ResetPassword *)ptr)->soap_out(soap, "interswitch:ResetPassword", id, NULL); + case SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse: + return ((_interswitch__ChangePasswordResponse *)ptr)->soap_out(soap, "interswitch:ChangePasswordResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__ChangePassword: + return ((_interswitch__ChangePassword *)ptr)->soap_out(soap, "interswitch:ChangePassword", id, NULL); + case SOAP_TYPE_interswitch__interswitch__UpdateUserResponse: + return ((_interswitch__UpdateUserResponse *)ptr)->soap_out(soap, "interswitch:UpdateUserResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__UpdateUser: + return ((_interswitch__UpdateUser *)ptr)->soap_out(soap, "interswitch:UpdateUser", id, NULL); + case SOAP_TYPE_interswitch__interswitch__ActivateUserResponse: + return ((_interswitch__ActivateUserResponse *)ptr)->soap_out(soap, "interswitch:ActivateUserResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__ActivateUser: + return ((_interswitch__ActivateUser *)ptr)->soap_out(soap, "interswitch:ActivateUser", id, NULL); + case SOAP_TYPE_interswitch__interswitch__CreateUserResponse: + return ((_interswitch__CreateUserResponse *)ptr)->soap_out(soap, "interswitch:CreateUserResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__CreateUser: + return ((_interswitch__CreateUser *)ptr)->soap_out(soap, "interswitch:CreateUser", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse: + return ((_interswitch__GetSystemSettingsResponse *)ptr)->soap_out(soap, "interswitch:GetSystemSettingsResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetSystemSettings: + return ((_interswitch__GetSystemSettings *)ptr)->soap_out(soap, "interswitch:GetSystemSettings", id, NULL); + case SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse: + return ((_interswitch__QueryTransactionResponse *)ptr)->soap_out(soap, "interswitch:QueryTransactionResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__QueryTransaction: + return ((_interswitch__QueryTransaction *)ptr)->soap_out(soap, "interswitch:QueryTransaction", id, NULL); + case SOAP_TYPE_interswitch__interswitch__StatusCheckResponse: + return ((_interswitch__StatusCheckResponse *)ptr)->soap_out(soap, "interswitch:StatusCheckResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__StatusCheck: + return ((_interswitch__StatusCheck *)ptr)->soap_out(soap, "interswitch:StatusCheck", id, NULL); + case SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse: + return ((_interswitch__ReverseCashOutResponse *)ptr)->soap_out(soap, "interswitch:ReverseCashOutResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__ReverseCashOut: + return ((_interswitch__ReverseCashOut *)ptr)->soap_out(soap, "interswitch:ReverseCashOut", id, NULL); + case SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse: + return ((_interswitch__AuthoriseAccountCashOutResponse *)ptr)->soap_out(soap, "interswitch:AuthoriseAccountCashOutResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut: + return ((_interswitch__AuthoriseAccountCashOut *)ptr)->soap_out(soap, "interswitch:AuthoriseAccountCashOut", id, NULL); + case SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse: + return ((_interswitch__AuthoriseCashOutResponse *)ptr)->soap_out(soap, "interswitch:AuthoriseCashOutResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut: + return ((_interswitch__AuthoriseCashOut *)ptr)->soap_out(soap, "interswitch:AuthoriseCashOut", id, NULL); + case SOAP_TYPE_interswitch__interswitch__QueryTransferResponse: + return ((_interswitch__QueryTransferResponse *)ptr)->soap_out(soap, "interswitch:QueryTransferResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__QueryTransfer: + return ((_interswitch__QueryTransfer *)ptr)->soap_out(soap, "interswitch:QueryTransfer", id, NULL); + case SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse: + return ((_interswitch__SendSessionKeyResponse *)ptr)->soap_out(soap, "interswitch:SendSessionKeyResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__SendSessionKey: + return ((_interswitch__SendSessionKey *)ptr)->soap_out(soap, "interswitch:SendSessionKey", id, NULL); + case SOAP_TYPE_interswitch__interswitch__CancelTransferResponse: + return ((_interswitch__CancelTransferResponse *)ptr)->soap_out(soap, "interswitch:CancelTransferResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__CancelTransfer: + return ((_interswitch__CancelTransfer *)ptr)->soap_out(soap, "interswitch:CancelTransfer", id, NULL); + case SOAP_TYPE_interswitch__interswitch__DoTransferResponse: + return ((_interswitch__DoTransferResponse *)ptr)->soap_out(soap, "interswitch:DoTransferResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__DoTransfer: + return ((_interswitch__DoTransfer *)ptr)->soap_out(soap, "interswitch:DoTransfer", id, NULL); + case SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse: + return ((_interswitch__ValidateCustomerResponse *)ptr)->soap_out(soap, "interswitch:ValidateCustomerResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__ValidateCustomer: + return ((_interswitch__ValidateCustomer *)ptr)->soap_out(soap, "interswitch:ValidateCustomer", id, NULL); + case SOAP_TYPE_interswitch_xsd__unsignedShort: + return ((xsd__unsignedShort *)ptr)->soap_out(soap, tag, id, "xsd:unsignedShort"); + case SOAP_TYPE_interswitch_xsd__unsignedLong: + return ((xsd__unsignedLong *)ptr)->soap_out(soap, tag, id, "xsd:unsignedLong"); + case SOAP_TYPE_interswitch_xsd__unsignedInt: + return ((xsd__unsignedInt *)ptr)->soap_out(soap, tag, id, "xsd:unsignedInt"); + case SOAP_TYPE_interswitch_xsd__unsignedByte_: + return ((xsd__unsignedByte_ *)ptr)->soap_out(soap, tag, id, "xsd:unsignedByte"); + case SOAP_TYPE_interswitch_xsd__string: + return ((xsd__string *)ptr)->soap_out(soap, tag, id, "xsd:string"); + case SOAP_TYPE_interswitch_xsd__short: + return ((xsd__short *)ptr)->soap_out(soap, tag, id, "xsd:short"); + case SOAP_TYPE_interswitch_xsd__long: + return ((xsd__long *)ptr)->soap_out(soap, tag, id, "xsd:long"); + case SOAP_TYPE_interswitch_xsd__int: + return ((xsd__int *)ptr)->soap_out(soap, tag, id, "xsd:int"); + case SOAP_TYPE_interswitch_xsd__float: + return ((xsd__float *)ptr)->soap_out(soap, tag, id, "xsd:float"); + case SOAP_TYPE_interswitch_xsd__duration_: + return ((xsd__duration_ *)ptr)->soap_out(soap, tag, id, "xsd:duration"); + case SOAP_TYPE_interswitch_xsd__duration: + return soap_out_xsd__duration(soap, tag, id, (const std::string *)ptr, "xsd:duration"); + case SOAP_TYPE_interswitch_xsd__double: + return ((xsd__double *)ptr)->soap_out(soap, tag, id, "xsd:double"); + case SOAP_TYPE_interswitch_xsd__decimal_: + return ((xsd__decimal_ *)ptr)->soap_out(soap, tag, id, "xsd:decimal"); + case SOAP_TYPE_interswitch_xsd__decimal: + return soap_out_xsd__decimal(soap, tag, id, (const std::string *)ptr, "xsd:decimal"); + case SOAP_TYPE_interswitch_xsd__dateTime: + return ((xsd__dateTime *)ptr)->soap_out(soap, tag, id, "xsd:dateTime"); + case SOAP_TYPE_interswitch_xsd__byte_: + return ((xsd__byte_ *)ptr)->soap_out(soap, tag, id, "xsd:byte"); + case SOAP_TYPE_interswitch_xsd__boolean: + return ((xsd__boolean *)ptr)->soap_out(soap, tag, id, "xsd:boolean"); + case SOAP_TYPE_interswitch_xsd__base64Binary_: + return ((xsd__base64Binary_ *)ptr)->soap_out(soap, tag, id, "xsd:base64Binary"); + case SOAP_TYPE_interswitch_xsd__base64Binary: + return ((xsd__base64Binary *)ptr)->soap_out(soap, tag, id, "xsd:base64Binary"); + case SOAP_TYPE_interswitch_xsd__anyURI_: + return ((xsd__anyURI_ *)ptr)->soap_out(soap, tag, id, "xsd:anyURI"); + case SOAP_TYPE_interswitch_xsd__anyURI: + return soap_out_xsd__anyURI(soap, tag, id, (const std::string *)ptr, "xsd:anyURI"); + case SOAP_TYPE_interswitch_xsd__QName_: + return ((xsd__QName_ *)ptr)->soap_out(soap, tag, id, "xsd:QName"); + case SOAP_TYPE_interswitch_xsd__QName: + return soap_out_xsd__QName(soap, tag, id, (const xsd__QName *)ptr, "xsd:QName"); + case SOAP_TYPE_interswitch_xsd__IDREF_: + return ((xsd__IDREF_ *)ptr)->soap_out(soap, tag, id, "xsd:IDREF"); + case SOAP_TYPE_interswitch_xsd__IDREF: + return soap_out_xsd__IDREF(soap, tag, id, (const std::string *)ptr, "xsd:IDREF"); + case SOAP_TYPE_interswitch_xsd__ID_: + return ((xsd__ID_ *)ptr)->soap_out(soap, tag, id, "xsd:ID"); + case SOAP_TYPE_interswitch_xsd__ID: + return soap_out_xsd__ID(soap, tag, id, (const std::string *)ptr, "xsd:ID"); + case SOAP_TYPE_interswitch_std__string: + return soap_out_std__string(soap, tag, id, (const std::string *)ptr, "xsd:string"); + case SOAP_TYPE_interswitch_xsd__anyType: + return ((xsd__anyType *)ptr)->soap_out(soap, tag, id, "xsd:anyType"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__VerifyBillerResponse: + return soap_out_PointerTo_interswitch__VerifyBillerResponse(soap, tag, id, (_interswitch__VerifyBillerResponse *const*)ptr, "interswitch:VerifyBillerResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__VerifyBiller: + return soap_out_PointerTo_interswitch__VerifyBiller(soap, tag, id, (_interswitch__VerifyBiller *const*)ptr, "interswitch:VerifyBiller"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__CreateBillerResponse: + return soap_out_PointerTo_interswitch__CreateBillerResponse(soap, tag, id, (_interswitch__CreateBillerResponse *const*)ptr, "interswitch:CreateBillerResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__CreateBiller: + return soap_out_PointerTo_interswitch__CreateBiller(soap, tag, id, (_interswitch__CreateBiller *const*)ptr, "interswitch:CreateBiller"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__DoCustomProcessingResponse: + return soap_out_PointerTo_interswitch__DoCustomProcessingResponse(soap, tag, id, (_interswitch__DoCustomProcessingResponse *const*)ptr, "interswitch:DoCustomProcessingResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__DoCustomProcessing: + return soap_out_PointerTo_interswitch__DoCustomProcessing(soap, tag, id, (_interswitch__DoCustomProcessing *const*)ptr, "interswitch:DoCustomProcessing"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ResendActivationTokenResponse: + return soap_out_PointerTo_interswitch__ResendActivationTokenResponse(soap, tag, id, (_interswitch__ResendActivationTokenResponse *const*)ptr, "interswitch:ResendActivationTokenResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ResendActivationToken: + return soap_out_PointerTo_interswitch__ResendActivationToken(soap, tag, id, (_interswitch__ResendActivationToken *const*)ptr, "interswitch:ResendActivationToken"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__EditCustomerBillerAccountResponse: + return soap_out_PointerTo_interswitch__EditCustomerBillerAccountResponse(soap, tag, id, (_interswitch__EditCustomerBillerAccountResponse *const*)ptr, "interswitch:EditCustomerBillerAccountResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__EditCustomerBillerAccount: + return soap_out_PointerTo_interswitch__EditCustomerBillerAccount(soap, tag, id, (_interswitch__EditCustomerBillerAccount *const*)ptr, "interswitch:EditCustomerBillerAccount"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillersCollectionsAccountResponse: + return soap_out_PointerTo_interswitch__GetBillersCollectionsAccountResponse(soap, tag, id, (_interswitch__GetBillersCollectionsAccountResponse *const*)ptr, "interswitch:GetBillersCollectionsAccountResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillersCollectionsAccount: + return soap_out_PointerTo_interswitch__GetBillersCollectionsAccount(soap, tag, id, (_interswitch__GetBillersCollectionsAccount *const*)ptr, "interswitch:GetBillersCollectionsAccount"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetCollectionsAccountResponse: + return soap_out_PointerTo_interswitch__GetCollectionsAccountResponse(soap, tag, id, (_interswitch__GetCollectionsAccountResponse *const*)ptr, "interswitch:GetCollectionsAccountResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetCollectionsAccount: + return soap_out_PointerTo_interswitch__GetCollectionsAccount(soap, tag, id, (_interswitch__GetCollectionsAccount *const*)ptr, "interswitch:GetCollectionsAccount"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AddBillerCustomerResponse: + return soap_out_PointerTo_interswitch__AddBillerCustomerResponse(soap, tag, id, (_interswitch__AddBillerCustomerResponse *const*)ptr, "interswitch:AddBillerCustomerResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AddBillerCustomer: + return soap_out_PointerTo_interswitch__AddBillerCustomer(soap, tag, id, (_interswitch__AddBillerCustomer *const*)ptr, "interswitch:AddBillerCustomer"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerPaymentsResponse: + return soap_out_PointerTo_interswitch__GetCustomerPaymentsResponse(soap, tag, id, (_interswitch__GetCustomerPaymentsResponse *const*)ptr, "interswitch:GetCustomerPaymentsResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerPayments: + return soap_out_PointerTo_interswitch__GetCustomerPayments(soap, tag, id, (_interswitch__GetCustomerPayments *const*)ptr, "interswitch:GetCustomerPayments"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerBillerAccountsResponse: + return soap_out_PointerTo_interswitch__GetCustomerBillerAccountsResponse(soap, tag, id, (_interswitch__GetCustomerBillerAccountsResponse *const*)ptr, "interswitch:GetCustomerBillerAccountsResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerBillerAccounts: + return soap_out_PointerTo_interswitch__GetCustomerBillerAccounts(soap, tag, id, (_interswitch__GetCustomerBillerAccounts *const*)ptr, "interswitch:GetCustomerBillerAccounts"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AddCustomerBillerAccountResponse: + return soap_out_PointerTo_interswitch__AddCustomerBillerAccountResponse(soap, tag, id, (_interswitch__AddCustomerBillerAccountResponse *const*)ptr, "interswitch:AddCustomerBillerAccountResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AddCustomerBillerAccount: + return soap_out_PointerTo_interswitch__AddCustomerBillerAccount(soap, tag, id, (_interswitch__AddCustomerBillerAccount *const*)ptr, "interswitch:AddCustomerBillerAccount"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__SendPaymentsResponse: + return soap_out_PointerTo_interswitch__SendPaymentsResponse(soap, tag, id, (_interswitch__SendPaymentsResponse *const*)ptr, "interswitch:SendPaymentsResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__SendPayments: + return soap_out_PointerTo_interswitch__SendPayments(soap, tag, id, (_interswitch__SendPayments *const*)ptr, "interswitch:SendPayments"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__SendBillPaymentAdviceResponse: + return soap_out_PointerTo_interswitch__SendBillPaymentAdviceResponse(soap, tag, id, (_interswitch__SendBillPaymentAdviceResponse *const*)ptr, "interswitch:SendBillPaymentAdviceResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__SendBillPaymentAdvice: + return soap_out_PointerTo_interswitch__SendBillPaymentAdvice(soap, tag, id, (_interswitch__SendBillPaymentAdvice *const*)ptr, "interswitch:SendBillPaymentAdvice"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateCustomerResponse: + return soap_out_PointerTo_interswitch__AuthenticateCustomerResponse(soap, tag, id, (_interswitch__AuthenticateCustomerResponse *const*)ptr, "interswitch:AuthenticateCustomerResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateCustomer: + return soap_out_PointerTo_interswitch__AuthenticateCustomer(soap, tag, id, (_interswitch__AuthenticateCustomer *const*)ptr, "interswitch:AuthenticateCustomer"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__DoBillPaymentInquiryResponse: + return soap_out_PointerTo_interswitch__DoBillPaymentInquiryResponse(soap, tag, id, (_interswitch__DoBillPaymentInquiryResponse *const*)ptr, "interswitch:DoBillPaymentInquiryResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__DoBillPaymentInquiry: + return soap_out_PointerTo_interswitch__DoBillPaymentInquiry(soap, tag, id, (_interswitch__DoBillPaymentInquiry *const*)ptr, "interswitch:DoBillPaymentInquiry"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerCategoriesResponse: + return soap_out_PointerTo_interswitch__GetBillerCategoriesResponse(soap, tag, id, (_interswitch__GetBillerCategoriesResponse *const*)ptr, "interswitch:GetBillerCategoriesResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerCategories: + return soap_out_PointerTo_interswitch__GetBillerCategories(soap, tag, id, (_interswitch__GetBillerCategories *const*)ptr, "interswitch:GetBillerCategories"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerPaymentItemsResponse: + return soap_out_PointerTo_interswitch__GetBillerPaymentItemsResponse(soap, tag, id, (_interswitch__GetBillerPaymentItemsResponse *const*)ptr, "interswitch:GetBillerPaymentItemsResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerPaymentItems: + return soap_out_PointerTo_interswitch__GetBillerPaymentItems(soap, tag, id, (_interswitch__GetBillerPaymentItems *const*)ptr, "interswitch:GetBillerPaymentItems"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetFeaturedBillersResponse: + return soap_out_PointerTo_interswitch__GetFeaturedBillersResponse(soap, tag, id, (_interswitch__GetFeaturedBillersResponse *const*)ptr, "interswitch:GetFeaturedBillersResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetFeaturedBillers: + return soap_out_PointerTo_interswitch__GetFeaturedBillers(soap, tag, id, (_interswitch__GetFeaturedBillers *const*)ptr, "interswitch:GetFeaturedBillers"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetLatestBillersResponse: + return soap_out_PointerTo_interswitch__GetLatestBillersResponse(soap, tag, id, (_interswitch__GetLatestBillersResponse *const*)ptr, "interswitch:GetLatestBillersResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetLatestBillers: + return soap_out_PointerTo_interswitch__GetLatestBillers(soap, tag, id, (_interswitch__GetLatestBillers *const*)ptr, "interswitch:GetLatestBillers"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillersResponse: + return soap_out_PointerTo_interswitch__GetBillersResponse(soap, tag, id, (_interswitch__GetBillersResponse *const*)ptr, "interswitch:GetBillersResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillers: + return soap_out_PointerTo_interswitch__GetBillers(soap, tag, id, (_interswitch__GetBillers *const*)ptr, "interswitch:GetBillers"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetUserResponse: + return soap_out_PointerTo_interswitch__GetUserResponse(soap, tag, id, (_interswitch__GetUserResponse *const*)ptr, "interswitch:GetUserResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetUser: + return soap_out_PointerTo_interswitch__GetUser(soap, tag, id, (_interswitch__GetUser *const*)ptr, "interswitch:GetUser"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse: + return soap_out_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(soap, tag, id, (_interswitch__AuthenticateUserSecurityTokenResponse *const*)ptr, "interswitch:AuthenticateUserSecurityTokenResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUserSecurityToken: + return soap_out_PointerTo_interswitch__AuthenticateUserSecurityToken(soap, tag, id, (_interswitch__AuthenticateUserSecurityToken *const*)ptr, "interswitch:AuthenticateUserSecurityToken"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUserResponse: + return soap_out_PointerTo_interswitch__AuthenticateUserResponse(soap, tag, id, (_interswitch__AuthenticateUserResponse *const*)ptr, "interswitch:AuthenticateUserResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUser: + return soap_out_PointerTo_interswitch__AuthenticateUser(soap, tag, id, (_interswitch__AuthenticateUser *const*)ptr, "interswitch:AuthenticateUser"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ResetPasswordResponse: + return soap_out_PointerTo_interswitch__ResetPasswordResponse(soap, tag, id, (_interswitch__ResetPasswordResponse *const*)ptr, "interswitch:ResetPasswordResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ResetPassword: + return soap_out_PointerTo_interswitch__ResetPassword(soap, tag, id, (_interswitch__ResetPassword *const*)ptr, "interswitch:ResetPassword"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ChangePasswordResponse: + return soap_out_PointerTo_interswitch__ChangePasswordResponse(soap, tag, id, (_interswitch__ChangePasswordResponse *const*)ptr, "interswitch:ChangePasswordResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ChangePassword: + return soap_out_PointerTo_interswitch__ChangePassword(soap, tag, id, (_interswitch__ChangePassword *const*)ptr, "interswitch:ChangePassword"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__UpdateUserResponse: + return soap_out_PointerTo_interswitch__UpdateUserResponse(soap, tag, id, (_interswitch__UpdateUserResponse *const*)ptr, "interswitch:UpdateUserResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__UpdateUser: + return soap_out_PointerTo_interswitch__UpdateUser(soap, tag, id, (_interswitch__UpdateUser *const*)ptr, "interswitch:UpdateUser"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ActivateUserResponse: + return soap_out_PointerTo_interswitch__ActivateUserResponse(soap, tag, id, (_interswitch__ActivateUserResponse *const*)ptr, "interswitch:ActivateUserResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ActivateUser: + return soap_out_PointerTo_interswitch__ActivateUser(soap, tag, id, (_interswitch__ActivateUser *const*)ptr, "interswitch:ActivateUser"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__CreateUserResponse: + return soap_out_PointerTo_interswitch__CreateUserResponse(soap, tag, id, (_interswitch__CreateUserResponse *const*)ptr, "interswitch:CreateUserResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__CreateUser: + return soap_out_PointerTo_interswitch__CreateUser(soap, tag, id, (_interswitch__CreateUser *const*)ptr, "interswitch:CreateUser"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetSystemSettingsResponse: + return soap_out_PointerTo_interswitch__GetSystemSettingsResponse(soap, tag, id, (_interswitch__GetSystemSettingsResponse *const*)ptr, "interswitch:GetSystemSettingsResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetSystemSettings: + return soap_out_PointerTo_interswitch__GetSystemSettings(soap, tag, id, (_interswitch__GetSystemSettings *const*)ptr, "interswitch:GetSystemSettings"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransactionResponse: + return soap_out_PointerTo_interswitch__QueryTransactionResponse(soap, tag, id, (_interswitch__QueryTransactionResponse *const*)ptr, "interswitch:QueryTransactionResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransaction: + return soap_out_PointerTo_interswitch__QueryTransaction(soap, tag, id, (_interswitch__QueryTransaction *const*)ptr, "interswitch:QueryTransaction"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__StatusCheckResponse: + return soap_out_PointerTo_interswitch__StatusCheckResponse(soap, tag, id, (_interswitch__StatusCheckResponse *const*)ptr, "interswitch:StatusCheckResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__StatusCheck: + return soap_out_PointerTo_interswitch__StatusCheck(soap, tag, id, (_interswitch__StatusCheck *const*)ptr, "interswitch:StatusCheck"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ReverseCashOutResponse: + return soap_out_PointerTo_interswitch__ReverseCashOutResponse(soap, tag, id, (_interswitch__ReverseCashOutResponse *const*)ptr, "interswitch:ReverseCashOutResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ReverseCashOut: + return soap_out_PointerTo_interswitch__ReverseCashOut(soap, tag, id, (_interswitch__ReverseCashOut *const*)ptr, "interswitch:ReverseCashOut"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseAccountCashOutResponse: + return soap_out_PointerTo_interswitch__AuthoriseAccountCashOutResponse(soap, tag, id, (_interswitch__AuthoriseAccountCashOutResponse *const*)ptr, "interswitch:AuthoriseAccountCashOutResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseAccountCashOut: + return soap_out_PointerTo_interswitch__AuthoriseAccountCashOut(soap, tag, id, (_interswitch__AuthoriseAccountCashOut *const*)ptr, "interswitch:AuthoriseAccountCashOut"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseCashOutResponse: + return soap_out_PointerTo_interswitch__AuthoriseCashOutResponse(soap, tag, id, (_interswitch__AuthoriseCashOutResponse *const*)ptr, "interswitch:AuthoriseCashOutResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseCashOut: + return soap_out_PointerTo_interswitch__AuthoriseCashOut(soap, tag, id, (_interswitch__AuthoriseCashOut *const*)ptr, "interswitch:AuthoriseCashOut"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransferResponse: + return soap_out_PointerTo_interswitch__QueryTransferResponse(soap, tag, id, (_interswitch__QueryTransferResponse *const*)ptr, "interswitch:QueryTransferResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransfer: + return soap_out_PointerTo_interswitch__QueryTransfer(soap, tag, id, (_interswitch__QueryTransfer *const*)ptr, "interswitch:QueryTransfer"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__SendSessionKeyResponse: + return soap_out_PointerTo_interswitch__SendSessionKeyResponse(soap, tag, id, (_interswitch__SendSessionKeyResponse *const*)ptr, "interswitch:SendSessionKeyResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__SendSessionKey: + return soap_out_PointerTo_interswitch__SendSessionKey(soap, tag, id, (_interswitch__SendSessionKey *const*)ptr, "interswitch:SendSessionKey"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__CancelTransferResponse: + return soap_out_PointerTo_interswitch__CancelTransferResponse(soap, tag, id, (_interswitch__CancelTransferResponse *const*)ptr, "interswitch:CancelTransferResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__CancelTransfer: + return soap_out_PointerTo_interswitch__CancelTransfer(soap, tag, id, (_interswitch__CancelTransfer *const*)ptr, "interswitch:CancelTransfer"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__DoTransferResponse: + return soap_out_PointerTo_interswitch__DoTransferResponse(soap, tag, id, (_interswitch__DoTransferResponse *const*)ptr, "interswitch:DoTransferResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__DoTransfer: + return soap_out_PointerTo_interswitch__DoTransfer(soap, tag, id, (_interswitch__DoTransfer *const*)ptr, "interswitch:DoTransfer"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ValidateCustomerResponse: + return soap_out_PointerTo_interswitch__ValidateCustomerResponse(soap, tag, id, (_interswitch__ValidateCustomerResponse *const*)ptr, "interswitch:ValidateCustomerResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ValidateCustomer: + return soap_out_PointerTo_interswitch__ValidateCustomer(soap, tag, id, (_interswitch__ValidateCustomer *const*)ptr, "interswitch:ValidateCustomer"); + case SOAP_TYPE_interswitch_PointerTostd__string: + return soap_out_PointerTostd__string(soap, tag, id, (std::string *const*)ptr, "xsd:string"); + case SOAP_TYPE_interswitch_PointerTounsignedByte: + return soap_out_PointerTounsignedByte(soap, tag, id, (unsigned char *const*)ptr, "xsd:unsignedByte"); + case SOAP_TYPE_interswitch__QName: + return soap_out_string(soap, tag, id, (char*const*)&ptr, "xsd:QName"); + case SOAP_TYPE_interswitch_string: + return soap_out_string(soap, tag, id, (char*const*)&ptr, "xsd:string"); + } + return SOAP_OK; +} +#endif + +#ifndef WITH_NOIDREF +SOAP_FMAC3 void SOAP_FMAC4 soap_markelement(struct soap *soap, const void *ptr, int type) +{ + (void)soap; (void)ptr; (void)type; /* appease -Wall -Werror */ + switch (type) + { + case SOAP_TYPE_interswitch_interswitch2__guid__: + ((interswitch2__guid__ *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_interswitch2__guid: + soap_serialize_interswitch2__guid(soap, (const std::string *)ptr); + break; + case SOAP_TYPE_interswitch_interswitch2__duration__: + ((interswitch2__duration__ *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_interswitch2__duration: + soap_serialize_interswitch2__duration(soap, (const std::string *)ptr); + break; + case SOAP_TYPE_interswitch_interswitch2__char__: + ((interswitch2__char__ *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse: + ((_interswitch__VerifyBillerResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__VerifyBiller: + ((_interswitch__VerifyBiller *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__CreateBillerResponse: + ((_interswitch__CreateBillerResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__CreateBiller: + ((_interswitch__CreateBiller *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse: + ((_interswitch__DoCustomProcessingResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__DoCustomProcessing: + ((_interswitch__DoCustomProcessing *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse: + ((_interswitch__ResendActivationTokenResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__ResendActivationToken: + ((_interswitch__ResendActivationToken *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse: + ((_interswitch__EditCustomerBillerAccountResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount: + ((_interswitch__EditCustomerBillerAccount *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse: + ((_interswitch__GetBillersCollectionsAccountResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount: + ((_interswitch__GetBillersCollectionsAccount *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse: + ((_interswitch__GetCollectionsAccountResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount: + ((_interswitch__GetCollectionsAccount *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse: + ((_interswitch__AddBillerCustomerResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__AddBillerCustomer: + ((_interswitch__AddBillerCustomer *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse: + ((_interswitch__GetCustomerPaymentsResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetCustomerPayments: + ((_interswitch__GetCustomerPayments *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse: + ((_interswitch__GetCustomerBillerAccountsResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts: + ((_interswitch__GetCustomerBillerAccounts *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse: + ((_interswitch__AddCustomerBillerAccountResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount: + ((_interswitch__AddCustomerBillerAccount *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse: + ((_interswitch__SendPaymentsResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__SendPayments: + ((_interswitch__SendPayments *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse: + ((_interswitch__SendBillPaymentAdviceResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice: + ((_interswitch__SendBillPaymentAdvice *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse: + ((_interswitch__AuthenticateCustomerResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer: + ((_interswitch__AuthenticateCustomer *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse: + ((_interswitch__DoBillPaymentInquiryResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry: + ((_interswitch__DoBillPaymentInquiry *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse: + ((_interswitch__GetBillerCategoriesResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetBillerCategories: + ((_interswitch__GetBillerCategories *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse: + ((_interswitch__GetBillerPaymentItemsResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems: + ((_interswitch__GetBillerPaymentItems *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse: + ((_interswitch__GetFeaturedBillersResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers: + ((_interswitch__GetFeaturedBillers *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse: + ((_interswitch__GetLatestBillersResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetLatestBillers: + ((_interswitch__GetLatestBillers *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetBillersResponse: + ((_interswitch__GetBillersResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetBillers: + ((_interswitch__GetBillers *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetUserResponse: + ((_interswitch__GetUserResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetUser: + ((_interswitch__GetUser *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse: + ((_interswitch__AuthenticateUserSecurityTokenResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken: + ((_interswitch__AuthenticateUserSecurityToken *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse: + ((_interswitch__AuthenticateUserResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__AuthenticateUser: + ((_interswitch__AuthenticateUser *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse: + ((_interswitch__ResetPasswordResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__ResetPassword: + ((_interswitch__ResetPassword *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse: + ((_interswitch__ChangePasswordResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__ChangePassword: + ((_interswitch__ChangePassword *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__UpdateUserResponse: + ((_interswitch__UpdateUserResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__UpdateUser: + ((_interswitch__UpdateUser *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__ActivateUserResponse: + ((_interswitch__ActivateUserResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__ActivateUser: + ((_interswitch__ActivateUser *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__CreateUserResponse: + ((_interswitch__CreateUserResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__CreateUser: + ((_interswitch__CreateUser *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse: + ((_interswitch__GetSystemSettingsResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetSystemSettings: + ((_interswitch__GetSystemSettings *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse: + ((_interswitch__QueryTransactionResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__QueryTransaction: + ((_interswitch__QueryTransaction *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__StatusCheckResponse: + ((_interswitch__StatusCheckResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__StatusCheck: + ((_interswitch__StatusCheck *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse: + ((_interswitch__ReverseCashOutResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__ReverseCashOut: + ((_interswitch__ReverseCashOut *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse: + ((_interswitch__AuthoriseAccountCashOutResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut: + ((_interswitch__AuthoriseAccountCashOut *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse: + ((_interswitch__AuthoriseCashOutResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut: + ((_interswitch__AuthoriseCashOut *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__QueryTransferResponse: + ((_interswitch__QueryTransferResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__QueryTransfer: + ((_interswitch__QueryTransfer *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse: + ((_interswitch__SendSessionKeyResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__SendSessionKey: + ((_interswitch__SendSessionKey *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__CancelTransferResponse: + ((_interswitch__CancelTransferResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__CancelTransfer: + ((_interswitch__CancelTransfer *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__DoTransferResponse: + ((_interswitch__DoTransferResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__DoTransfer: + ((_interswitch__DoTransfer *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse: + ((_interswitch__ValidateCustomerResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__ValidateCustomer: + ((_interswitch__ValidateCustomer *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__unsignedShort: + ((xsd__unsignedShort *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__unsignedLong: + ((xsd__unsignedLong *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__unsignedInt: + ((xsd__unsignedInt *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__unsignedByte_: + ((xsd__unsignedByte_ *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__string: + ((xsd__string *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__short: + ((xsd__short *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__long: + ((xsd__long *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__int: + ((xsd__int *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__float: + ((xsd__float *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__duration_: + ((xsd__duration_ *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__duration: + soap_serialize_xsd__duration(soap, (const std::string *)ptr); + break; + case SOAP_TYPE_interswitch_xsd__double: + ((xsd__double *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__decimal_: + ((xsd__decimal_ *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__decimal: + soap_serialize_xsd__decimal(soap, (const std::string *)ptr); + break; + case SOAP_TYPE_interswitch_xsd__dateTime: + ((xsd__dateTime *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__byte_: + ((xsd__byte_ *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__boolean: + ((xsd__boolean *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__base64Binary_: + ((xsd__base64Binary_ *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__base64Binary: + ((xsd__base64Binary *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__anyURI_: + ((xsd__anyURI_ *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__anyURI: + soap_serialize_xsd__anyURI(soap, (const std::string *)ptr); + break; + case SOAP_TYPE_interswitch_xsd__QName_: + ((xsd__QName_ *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__QName: + soap_serialize_xsd__QName(soap, (const xsd__QName *)ptr); + break; + case SOAP_TYPE_interswitch_xsd__IDREF_: + ((xsd__IDREF_ *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__IDREF: + soap_serialize_xsd__IDREF(soap, (const std::string *)ptr); + break; + case SOAP_TYPE_interswitch_xsd__ID_: + ((xsd__ID_ *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__ID: + soap_serialize_xsd__ID(soap, (const std::string *)ptr); + break; + case SOAP_TYPE_interswitch_std__string: + soap_serialize_std__string(soap, (const std::string *)ptr); + break; + case SOAP_TYPE_interswitch_xsd__anyType: + ((xsd__anyType *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch___interswitch__VerifyBiller: + soap_serialize___interswitch__VerifyBiller(soap, (const struct __interswitch__VerifyBiller *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__CreateBiller: + soap_serialize___interswitch__CreateBiller(soap, (const struct __interswitch__CreateBiller *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__DoCustomProcessing: + soap_serialize___interswitch__DoCustomProcessing(soap, (const struct __interswitch__DoCustomProcessing *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__ResendActivationToken: + soap_serialize___interswitch__ResendActivationToken(soap, (const struct __interswitch__ResendActivationToken *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__EditCustomerBillerAccount: + soap_serialize___interswitch__EditCustomerBillerAccount(soap, (const struct __interswitch__EditCustomerBillerAccount *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetBillersCollectionsAccount: + soap_serialize___interswitch__GetBillersCollectionsAccount(soap, (const struct __interswitch__GetBillersCollectionsAccount *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetCollectionsAccount: + soap_serialize___interswitch__GetCollectionsAccount(soap, (const struct __interswitch__GetCollectionsAccount *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__AddBillerCustomer: + soap_serialize___interswitch__AddBillerCustomer(soap, (const struct __interswitch__AddBillerCustomer *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetCustomerPayments: + soap_serialize___interswitch__GetCustomerPayments(soap, (const struct __interswitch__GetCustomerPayments *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetCustomerBillerAccounts: + soap_serialize___interswitch__GetCustomerBillerAccounts(soap, (const struct __interswitch__GetCustomerBillerAccounts *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__AddCustomerBillerAccount: + soap_serialize___interswitch__AddCustomerBillerAccount(soap, (const struct __interswitch__AddCustomerBillerAccount *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__SendPayments: + soap_serialize___interswitch__SendPayments(soap, (const struct __interswitch__SendPayments *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__SendBillPaymentAdvice: + soap_serialize___interswitch__SendBillPaymentAdvice(soap, (const struct __interswitch__SendBillPaymentAdvice *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__AuthenticateCustomer: + soap_serialize___interswitch__AuthenticateCustomer(soap, (const struct __interswitch__AuthenticateCustomer *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__DoBillPaymentInquiry: + soap_serialize___interswitch__DoBillPaymentInquiry(soap, (const struct __interswitch__DoBillPaymentInquiry *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetBillerCategories: + soap_serialize___interswitch__GetBillerCategories(soap, (const struct __interswitch__GetBillerCategories *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetBillerPaymentItems: + soap_serialize___interswitch__GetBillerPaymentItems(soap, (const struct __interswitch__GetBillerPaymentItems *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetFeaturedBillers: + soap_serialize___interswitch__GetFeaturedBillers(soap, (const struct __interswitch__GetFeaturedBillers *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetLatestBillers: + soap_serialize___interswitch__GetLatestBillers(soap, (const struct __interswitch__GetLatestBillers *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetBillers: + soap_serialize___interswitch__GetBillers(soap, (const struct __interswitch__GetBillers *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetUser: + soap_serialize___interswitch__GetUser(soap, (const struct __interswitch__GetUser *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__AuthenticateUserSecurityToken: + soap_serialize___interswitch__AuthenticateUserSecurityToken(soap, (const struct __interswitch__AuthenticateUserSecurityToken *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__AuthenticateUser: + soap_serialize___interswitch__AuthenticateUser(soap, (const struct __interswitch__AuthenticateUser *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__ResetPassword: + soap_serialize___interswitch__ResetPassword(soap, (const struct __interswitch__ResetPassword *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__ChangePassword: + soap_serialize___interswitch__ChangePassword(soap, (const struct __interswitch__ChangePassword *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__UpdateUser: + soap_serialize___interswitch__UpdateUser(soap, (const struct __interswitch__UpdateUser *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__ActivateUser: + soap_serialize___interswitch__ActivateUser(soap, (const struct __interswitch__ActivateUser *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__CreateUser: + soap_serialize___interswitch__CreateUser(soap, (const struct __interswitch__CreateUser *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetSystemSettings: + soap_serialize___interswitch__GetSystemSettings(soap, (const struct __interswitch__GetSystemSettings *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__QueryTransaction: + soap_serialize___interswitch__QueryTransaction(soap, (const struct __interswitch__QueryTransaction *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__StatusCheck: + soap_serialize___interswitch__StatusCheck(soap, (const struct __interswitch__StatusCheck *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__ReverseCashOut: + soap_serialize___interswitch__ReverseCashOut(soap, (const struct __interswitch__ReverseCashOut *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__AuthoriseAccountCashOut: + soap_serialize___interswitch__AuthoriseAccountCashOut(soap, (const struct __interswitch__AuthoriseAccountCashOut *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__AuthoriseCashOut: + soap_serialize___interswitch__AuthoriseCashOut(soap, (const struct __interswitch__AuthoriseCashOut *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__QueryTransfer: + soap_serialize___interswitch__QueryTransfer(soap, (const struct __interswitch__QueryTransfer *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__SendSessionKey: + soap_serialize___interswitch__SendSessionKey(soap, (const struct __interswitch__SendSessionKey *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__CancelTransfer: + soap_serialize___interswitch__CancelTransfer(soap, (const struct __interswitch__CancelTransfer *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__DoTransfer: + soap_serialize___interswitch__DoTransfer(soap, (const struct __interswitch__DoTransfer *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__ValidateCustomer: + soap_serialize___interswitch__ValidateCustomer(soap, (const struct __interswitch__ValidateCustomer *)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__VerifyBillerResponse: + soap_serialize_PointerTo_interswitch__VerifyBillerResponse(soap, (_interswitch__VerifyBillerResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__VerifyBiller: + soap_serialize_PointerTo_interswitch__VerifyBiller(soap, (_interswitch__VerifyBiller *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__CreateBillerResponse: + soap_serialize_PointerTo_interswitch__CreateBillerResponse(soap, (_interswitch__CreateBillerResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__CreateBiller: + soap_serialize_PointerTo_interswitch__CreateBiller(soap, (_interswitch__CreateBiller *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__DoCustomProcessingResponse: + soap_serialize_PointerTo_interswitch__DoCustomProcessingResponse(soap, (_interswitch__DoCustomProcessingResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__DoCustomProcessing: + soap_serialize_PointerTo_interswitch__DoCustomProcessing(soap, (_interswitch__DoCustomProcessing *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__ResendActivationTokenResponse: + soap_serialize_PointerTo_interswitch__ResendActivationTokenResponse(soap, (_interswitch__ResendActivationTokenResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__ResendActivationToken: + soap_serialize_PointerTo_interswitch__ResendActivationToken(soap, (_interswitch__ResendActivationToken *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__EditCustomerBillerAccountResponse: + soap_serialize_PointerTo_interswitch__EditCustomerBillerAccountResponse(soap, (_interswitch__EditCustomerBillerAccountResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__EditCustomerBillerAccount: + soap_serialize_PointerTo_interswitch__EditCustomerBillerAccount(soap, (_interswitch__EditCustomerBillerAccount *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillersCollectionsAccountResponse: + soap_serialize_PointerTo_interswitch__GetBillersCollectionsAccountResponse(soap, (_interswitch__GetBillersCollectionsAccountResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillersCollectionsAccount: + soap_serialize_PointerTo_interswitch__GetBillersCollectionsAccount(soap, (_interswitch__GetBillersCollectionsAccount *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetCollectionsAccountResponse: + soap_serialize_PointerTo_interswitch__GetCollectionsAccountResponse(soap, (_interswitch__GetCollectionsAccountResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetCollectionsAccount: + soap_serialize_PointerTo_interswitch__GetCollectionsAccount(soap, (_interswitch__GetCollectionsAccount *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__AddBillerCustomerResponse: + soap_serialize_PointerTo_interswitch__AddBillerCustomerResponse(soap, (_interswitch__AddBillerCustomerResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__AddBillerCustomer: + soap_serialize_PointerTo_interswitch__AddBillerCustomer(soap, (_interswitch__AddBillerCustomer *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerPaymentsResponse: + soap_serialize_PointerTo_interswitch__GetCustomerPaymentsResponse(soap, (_interswitch__GetCustomerPaymentsResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerPayments: + soap_serialize_PointerTo_interswitch__GetCustomerPayments(soap, (_interswitch__GetCustomerPayments *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerBillerAccountsResponse: + soap_serialize_PointerTo_interswitch__GetCustomerBillerAccountsResponse(soap, (_interswitch__GetCustomerBillerAccountsResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerBillerAccounts: + soap_serialize_PointerTo_interswitch__GetCustomerBillerAccounts(soap, (_interswitch__GetCustomerBillerAccounts *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__AddCustomerBillerAccountResponse: + soap_serialize_PointerTo_interswitch__AddCustomerBillerAccountResponse(soap, (_interswitch__AddCustomerBillerAccountResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__AddCustomerBillerAccount: + soap_serialize_PointerTo_interswitch__AddCustomerBillerAccount(soap, (_interswitch__AddCustomerBillerAccount *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__SendPaymentsResponse: + soap_serialize_PointerTo_interswitch__SendPaymentsResponse(soap, (_interswitch__SendPaymentsResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__SendPayments: + soap_serialize_PointerTo_interswitch__SendPayments(soap, (_interswitch__SendPayments *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__SendBillPaymentAdviceResponse: + soap_serialize_PointerTo_interswitch__SendBillPaymentAdviceResponse(soap, (_interswitch__SendBillPaymentAdviceResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__SendBillPaymentAdvice: + soap_serialize_PointerTo_interswitch__SendBillPaymentAdvice(soap, (_interswitch__SendBillPaymentAdvice *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateCustomerResponse: + soap_serialize_PointerTo_interswitch__AuthenticateCustomerResponse(soap, (_interswitch__AuthenticateCustomerResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateCustomer: + soap_serialize_PointerTo_interswitch__AuthenticateCustomer(soap, (_interswitch__AuthenticateCustomer *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__DoBillPaymentInquiryResponse: + soap_serialize_PointerTo_interswitch__DoBillPaymentInquiryResponse(soap, (_interswitch__DoBillPaymentInquiryResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__DoBillPaymentInquiry: + soap_serialize_PointerTo_interswitch__DoBillPaymentInquiry(soap, (_interswitch__DoBillPaymentInquiry *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerCategoriesResponse: + soap_serialize_PointerTo_interswitch__GetBillerCategoriesResponse(soap, (_interswitch__GetBillerCategoriesResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerCategories: + soap_serialize_PointerTo_interswitch__GetBillerCategories(soap, (_interswitch__GetBillerCategories *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerPaymentItemsResponse: + soap_serialize_PointerTo_interswitch__GetBillerPaymentItemsResponse(soap, (_interswitch__GetBillerPaymentItemsResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerPaymentItems: + soap_serialize_PointerTo_interswitch__GetBillerPaymentItems(soap, (_interswitch__GetBillerPaymentItems *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetFeaturedBillersResponse: + soap_serialize_PointerTo_interswitch__GetFeaturedBillersResponse(soap, (_interswitch__GetFeaturedBillersResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetFeaturedBillers: + soap_serialize_PointerTo_interswitch__GetFeaturedBillers(soap, (_interswitch__GetFeaturedBillers *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetLatestBillersResponse: + soap_serialize_PointerTo_interswitch__GetLatestBillersResponse(soap, (_interswitch__GetLatestBillersResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetLatestBillers: + soap_serialize_PointerTo_interswitch__GetLatestBillers(soap, (_interswitch__GetLatestBillers *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillersResponse: + soap_serialize_PointerTo_interswitch__GetBillersResponse(soap, (_interswitch__GetBillersResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillers: + soap_serialize_PointerTo_interswitch__GetBillers(soap, (_interswitch__GetBillers *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetUserResponse: + soap_serialize_PointerTo_interswitch__GetUserResponse(soap, (_interswitch__GetUserResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetUser: + soap_serialize_PointerTo_interswitch__GetUser(soap, (_interswitch__GetUser *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse: + soap_serialize_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(soap, (_interswitch__AuthenticateUserSecurityTokenResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUserSecurityToken: + soap_serialize_PointerTo_interswitch__AuthenticateUserSecurityToken(soap, (_interswitch__AuthenticateUserSecurityToken *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUserResponse: + soap_serialize_PointerTo_interswitch__AuthenticateUserResponse(soap, (_interswitch__AuthenticateUserResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUser: + soap_serialize_PointerTo_interswitch__AuthenticateUser(soap, (_interswitch__AuthenticateUser *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__ResetPasswordResponse: + soap_serialize_PointerTo_interswitch__ResetPasswordResponse(soap, (_interswitch__ResetPasswordResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__ResetPassword: + soap_serialize_PointerTo_interswitch__ResetPassword(soap, (_interswitch__ResetPassword *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__ChangePasswordResponse: + soap_serialize_PointerTo_interswitch__ChangePasswordResponse(soap, (_interswitch__ChangePasswordResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__ChangePassword: + soap_serialize_PointerTo_interswitch__ChangePassword(soap, (_interswitch__ChangePassword *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__UpdateUserResponse: + soap_serialize_PointerTo_interswitch__UpdateUserResponse(soap, (_interswitch__UpdateUserResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__UpdateUser: + soap_serialize_PointerTo_interswitch__UpdateUser(soap, (_interswitch__UpdateUser *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__ActivateUserResponse: + soap_serialize_PointerTo_interswitch__ActivateUserResponse(soap, (_interswitch__ActivateUserResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__ActivateUser: + soap_serialize_PointerTo_interswitch__ActivateUser(soap, (_interswitch__ActivateUser *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__CreateUserResponse: + soap_serialize_PointerTo_interswitch__CreateUserResponse(soap, (_interswitch__CreateUserResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__CreateUser: + soap_serialize_PointerTo_interswitch__CreateUser(soap, (_interswitch__CreateUser *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetSystemSettingsResponse: + soap_serialize_PointerTo_interswitch__GetSystemSettingsResponse(soap, (_interswitch__GetSystemSettingsResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetSystemSettings: + soap_serialize_PointerTo_interswitch__GetSystemSettings(soap, (_interswitch__GetSystemSettings *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransactionResponse: + soap_serialize_PointerTo_interswitch__QueryTransactionResponse(soap, (_interswitch__QueryTransactionResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransaction: + soap_serialize_PointerTo_interswitch__QueryTransaction(soap, (_interswitch__QueryTransaction *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__StatusCheckResponse: + soap_serialize_PointerTo_interswitch__StatusCheckResponse(soap, (_interswitch__StatusCheckResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__StatusCheck: + soap_serialize_PointerTo_interswitch__StatusCheck(soap, (_interswitch__StatusCheck *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__ReverseCashOutResponse: + soap_serialize_PointerTo_interswitch__ReverseCashOutResponse(soap, (_interswitch__ReverseCashOutResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__ReverseCashOut: + soap_serialize_PointerTo_interswitch__ReverseCashOut(soap, (_interswitch__ReverseCashOut *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseAccountCashOutResponse: + soap_serialize_PointerTo_interswitch__AuthoriseAccountCashOutResponse(soap, (_interswitch__AuthoriseAccountCashOutResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseAccountCashOut: + soap_serialize_PointerTo_interswitch__AuthoriseAccountCashOut(soap, (_interswitch__AuthoriseAccountCashOut *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseCashOutResponse: + soap_serialize_PointerTo_interswitch__AuthoriseCashOutResponse(soap, (_interswitch__AuthoriseCashOutResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseCashOut: + soap_serialize_PointerTo_interswitch__AuthoriseCashOut(soap, (_interswitch__AuthoriseCashOut *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransferResponse: + soap_serialize_PointerTo_interswitch__QueryTransferResponse(soap, (_interswitch__QueryTransferResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransfer: + soap_serialize_PointerTo_interswitch__QueryTransfer(soap, (_interswitch__QueryTransfer *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__SendSessionKeyResponse: + soap_serialize_PointerTo_interswitch__SendSessionKeyResponse(soap, (_interswitch__SendSessionKeyResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__SendSessionKey: + soap_serialize_PointerTo_interswitch__SendSessionKey(soap, (_interswitch__SendSessionKey *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__CancelTransferResponse: + soap_serialize_PointerTo_interswitch__CancelTransferResponse(soap, (_interswitch__CancelTransferResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__CancelTransfer: + soap_serialize_PointerTo_interswitch__CancelTransfer(soap, (_interswitch__CancelTransfer *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__DoTransferResponse: + soap_serialize_PointerTo_interswitch__DoTransferResponse(soap, (_interswitch__DoTransferResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__DoTransfer: + soap_serialize_PointerTo_interswitch__DoTransfer(soap, (_interswitch__DoTransfer *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__ValidateCustomerResponse: + soap_serialize_PointerTo_interswitch__ValidateCustomerResponse(soap, (_interswitch__ValidateCustomerResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__ValidateCustomer: + soap_serialize_PointerTo_interswitch__ValidateCustomer(soap, (_interswitch__ValidateCustomer *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTostd__string: + soap_serialize_PointerTostd__string(soap, (std::string *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTounsignedByte: + soap_serialize_PointerTounsignedByte(soap, (unsigned char *const*)ptr); + break; + case SOAP_TYPE_interswitch__QName: + soap_serialize_string(soap, (char*const*)&ptr); + break; + case SOAP_TYPE_interswitch_string: + soap_serialize_string(soap, (char*const*)&ptr); + break; + } +} +#endif + +SOAP_FMAC3 void * SOAP_FMAC4 soap_instantiate(struct soap *soap, int t, const char *type, const char *arrayType, size_t *n) +{ + switch (t) + { + case SOAP_TYPE_interswitch_xsd__anyType: + return (void*)soap_instantiate_xsd__anyType(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_std__string: + return (void*)soap_instantiate_std__string(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__ID_: + return (void*)soap_instantiate_xsd__ID_(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__IDREF_: + return (void*)soap_instantiate_xsd__IDREF_(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__QName_: + return (void*)soap_instantiate_xsd__QName_(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__anyURI_: + return (void*)soap_instantiate_xsd__anyURI_(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__base64Binary: + return (void*)soap_instantiate_xsd__base64Binary(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__base64Binary_: + return (void*)soap_instantiate_xsd__base64Binary_(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__boolean: + return (void*)soap_instantiate_xsd__boolean(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__byte_: + return (void*)soap_instantiate_xsd__byte_(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__dateTime: + return (void*)soap_instantiate_xsd__dateTime(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__decimal_: + return (void*)soap_instantiate_xsd__decimal_(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__double: + return (void*)soap_instantiate_xsd__double(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__duration_: + return (void*)soap_instantiate_xsd__duration_(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__float: + return (void*)soap_instantiate_xsd__float(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__int: + return (void*)soap_instantiate_xsd__int(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__long: + return (void*)soap_instantiate_xsd__long(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__short: + return (void*)soap_instantiate_xsd__short(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__string: + return (void*)soap_instantiate_xsd__string(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__unsignedByte_: + return (void*)soap_instantiate_xsd__unsignedByte_(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__unsignedInt: + return (void*)soap_instantiate_xsd__unsignedInt(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__unsignedLong: + return (void*)soap_instantiate_xsd__unsignedLong(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__unsignedShort: + return (void*)soap_instantiate_xsd__unsignedShort(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_interswitch2__char__: + return (void*)soap_instantiate_interswitch2__char__(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_interswitch2__duration__: + return (void*)soap_instantiate_interswitch2__duration__(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_interswitch2__guid__: + return (void*)soap_instantiate_interswitch2__guid__(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__ValidateCustomer: + return (void*)soap_instantiate__interswitch__ValidateCustomer(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse: + return (void*)soap_instantiate__interswitch__ValidateCustomerResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__DoTransfer: + return (void*)soap_instantiate__interswitch__DoTransfer(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__DoTransferResponse: + return (void*)soap_instantiate__interswitch__DoTransferResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__CancelTransfer: + return (void*)soap_instantiate__interswitch__CancelTransfer(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__CancelTransferResponse: + return (void*)soap_instantiate__interswitch__CancelTransferResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__SendSessionKey: + return (void*)soap_instantiate__interswitch__SendSessionKey(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse: + return (void*)soap_instantiate__interswitch__SendSessionKeyResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__QueryTransfer: + return (void*)soap_instantiate__interswitch__QueryTransfer(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__QueryTransferResponse: + return (void*)soap_instantiate__interswitch__QueryTransferResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut: + return (void*)soap_instantiate__interswitch__AuthoriseCashOut(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse: + return (void*)soap_instantiate__interswitch__AuthoriseCashOutResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut: + return (void*)soap_instantiate__interswitch__AuthoriseAccountCashOut(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse: + return (void*)soap_instantiate__interswitch__AuthoriseAccountCashOutResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__ReverseCashOut: + return (void*)soap_instantiate__interswitch__ReverseCashOut(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse: + return (void*)soap_instantiate__interswitch__ReverseCashOutResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__StatusCheck: + return (void*)soap_instantiate__interswitch__StatusCheck(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__StatusCheckResponse: + return (void*)soap_instantiate__interswitch__StatusCheckResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__QueryTransaction: + return (void*)soap_instantiate__interswitch__QueryTransaction(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse: + return (void*)soap_instantiate__interswitch__QueryTransactionResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetSystemSettings: + return (void*)soap_instantiate__interswitch__GetSystemSettings(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse: + return (void*)soap_instantiate__interswitch__GetSystemSettingsResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__CreateUser: + return (void*)soap_instantiate__interswitch__CreateUser(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__CreateUserResponse: + return (void*)soap_instantiate__interswitch__CreateUserResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__ActivateUser: + return (void*)soap_instantiate__interswitch__ActivateUser(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__ActivateUserResponse: + return (void*)soap_instantiate__interswitch__ActivateUserResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__UpdateUser: + return (void*)soap_instantiate__interswitch__UpdateUser(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__UpdateUserResponse: + return (void*)soap_instantiate__interswitch__UpdateUserResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__ChangePassword: + return (void*)soap_instantiate__interswitch__ChangePassword(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse: + return (void*)soap_instantiate__interswitch__ChangePasswordResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__ResetPassword: + return (void*)soap_instantiate__interswitch__ResetPassword(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse: + return (void*)soap_instantiate__interswitch__ResetPasswordResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__AuthenticateUser: + return (void*)soap_instantiate__interswitch__AuthenticateUser(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse: + return (void*)soap_instantiate__interswitch__AuthenticateUserResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken: + return (void*)soap_instantiate__interswitch__AuthenticateUserSecurityToken(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse: + return (void*)soap_instantiate__interswitch__AuthenticateUserSecurityTokenResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetUser: + return (void*)soap_instantiate__interswitch__GetUser(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetUserResponse: + return (void*)soap_instantiate__interswitch__GetUserResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetBillers: + return (void*)soap_instantiate__interswitch__GetBillers(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetBillersResponse: + return (void*)soap_instantiate__interswitch__GetBillersResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetLatestBillers: + return (void*)soap_instantiate__interswitch__GetLatestBillers(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse: + return (void*)soap_instantiate__interswitch__GetLatestBillersResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers: + return (void*)soap_instantiate__interswitch__GetFeaturedBillers(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse: + return (void*)soap_instantiate__interswitch__GetFeaturedBillersResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems: + return (void*)soap_instantiate__interswitch__GetBillerPaymentItems(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse: + return (void*)soap_instantiate__interswitch__GetBillerPaymentItemsResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetBillerCategories: + return (void*)soap_instantiate__interswitch__GetBillerCategories(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse: + return (void*)soap_instantiate__interswitch__GetBillerCategoriesResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry: + return (void*)soap_instantiate__interswitch__DoBillPaymentInquiry(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse: + return (void*)soap_instantiate__interswitch__DoBillPaymentInquiryResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer: + return (void*)soap_instantiate__interswitch__AuthenticateCustomer(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse: + return (void*)soap_instantiate__interswitch__AuthenticateCustomerResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice: + return (void*)soap_instantiate__interswitch__SendBillPaymentAdvice(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse: + return (void*)soap_instantiate__interswitch__SendBillPaymentAdviceResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__SendPayments: + return (void*)soap_instantiate__interswitch__SendPayments(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse: + return (void*)soap_instantiate__interswitch__SendPaymentsResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount: + return (void*)soap_instantiate__interswitch__AddCustomerBillerAccount(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse: + return (void*)soap_instantiate__interswitch__AddCustomerBillerAccountResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts: + return (void*)soap_instantiate__interswitch__GetCustomerBillerAccounts(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse: + return (void*)soap_instantiate__interswitch__GetCustomerBillerAccountsResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetCustomerPayments: + return (void*)soap_instantiate__interswitch__GetCustomerPayments(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse: + return (void*)soap_instantiate__interswitch__GetCustomerPaymentsResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__AddBillerCustomer: + return (void*)soap_instantiate__interswitch__AddBillerCustomer(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse: + return (void*)soap_instantiate__interswitch__AddBillerCustomerResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount: + return (void*)soap_instantiate__interswitch__GetCollectionsAccount(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse: + return (void*)soap_instantiate__interswitch__GetCollectionsAccountResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount: + return (void*)soap_instantiate__interswitch__GetBillersCollectionsAccount(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse: + return (void*)soap_instantiate__interswitch__GetBillersCollectionsAccountResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount: + return (void*)soap_instantiate__interswitch__EditCustomerBillerAccount(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse: + return (void*)soap_instantiate__interswitch__EditCustomerBillerAccountResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__ResendActivationToken: + return (void*)soap_instantiate__interswitch__ResendActivationToken(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse: + return (void*)soap_instantiate__interswitch__ResendActivationTokenResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__DoCustomProcessing: + return (void*)soap_instantiate__interswitch__DoCustomProcessing(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse: + return (void*)soap_instantiate__interswitch__DoCustomProcessingResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__CreateBiller: + return (void*)soap_instantiate__interswitch__CreateBiller(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__CreateBillerResponse: + return (void*)soap_instantiate__interswitch__CreateBillerResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__VerifyBiller: + return (void*)soap_instantiate__interswitch__VerifyBiller(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse: + return (void*)soap_instantiate__interswitch__VerifyBillerResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__ValidateCustomer: + return (void*)soap_instantiate___interswitch__ValidateCustomer(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__DoTransfer: + return (void*)soap_instantiate___interswitch__DoTransfer(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__CancelTransfer: + return (void*)soap_instantiate___interswitch__CancelTransfer(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__SendSessionKey: + return (void*)soap_instantiate___interswitch__SendSessionKey(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__QueryTransfer: + return (void*)soap_instantiate___interswitch__QueryTransfer(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__AuthoriseCashOut: + return (void*)soap_instantiate___interswitch__AuthoriseCashOut(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__AuthoriseAccountCashOut: + return (void*)soap_instantiate___interswitch__AuthoriseAccountCashOut(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__ReverseCashOut: + return (void*)soap_instantiate___interswitch__ReverseCashOut(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__StatusCheck: + return (void*)soap_instantiate___interswitch__StatusCheck(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__QueryTransaction: + return (void*)soap_instantiate___interswitch__QueryTransaction(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__GetSystemSettings: + return (void*)soap_instantiate___interswitch__GetSystemSettings(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__CreateUser: + return (void*)soap_instantiate___interswitch__CreateUser(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__ActivateUser: + return (void*)soap_instantiate___interswitch__ActivateUser(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__UpdateUser: + return (void*)soap_instantiate___interswitch__UpdateUser(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__ChangePassword: + return (void*)soap_instantiate___interswitch__ChangePassword(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__ResetPassword: + return (void*)soap_instantiate___interswitch__ResetPassword(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__AuthenticateUser: + return (void*)soap_instantiate___interswitch__AuthenticateUser(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__AuthenticateUserSecurityToken: + return (void*)soap_instantiate___interswitch__AuthenticateUserSecurityToken(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__GetUser: + return (void*)soap_instantiate___interswitch__GetUser(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__GetBillers: + return (void*)soap_instantiate___interswitch__GetBillers(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__GetLatestBillers: + return (void*)soap_instantiate___interswitch__GetLatestBillers(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__GetFeaturedBillers: + return (void*)soap_instantiate___interswitch__GetFeaturedBillers(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__GetBillerPaymentItems: + return (void*)soap_instantiate___interswitch__GetBillerPaymentItems(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__GetBillerCategories: + return (void*)soap_instantiate___interswitch__GetBillerCategories(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__DoBillPaymentInquiry: + return (void*)soap_instantiate___interswitch__DoBillPaymentInquiry(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__AuthenticateCustomer: + return (void*)soap_instantiate___interswitch__AuthenticateCustomer(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__SendBillPaymentAdvice: + return (void*)soap_instantiate___interswitch__SendBillPaymentAdvice(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__SendPayments: + return (void*)soap_instantiate___interswitch__SendPayments(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__AddCustomerBillerAccount: + return (void*)soap_instantiate___interswitch__AddCustomerBillerAccount(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__GetCustomerBillerAccounts: + return (void*)soap_instantiate___interswitch__GetCustomerBillerAccounts(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__GetCustomerPayments: + return (void*)soap_instantiate___interswitch__GetCustomerPayments(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__AddBillerCustomer: + return (void*)soap_instantiate___interswitch__AddBillerCustomer(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__GetCollectionsAccount: + return (void*)soap_instantiate___interswitch__GetCollectionsAccount(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__GetBillersCollectionsAccount: + return (void*)soap_instantiate___interswitch__GetBillersCollectionsAccount(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__EditCustomerBillerAccount: + return (void*)soap_instantiate___interswitch__EditCustomerBillerAccount(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__ResendActivationToken: + return (void*)soap_instantiate___interswitch__ResendActivationToken(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__DoCustomProcessing: + return (void*)soap_instantiate___interswitch__DoCustomProcessing(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__CreateBiller: + return (void*)soap_instantiate___interswitch__CreateBiller(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__VerifyBiller: + return (void*)soap_instantiate___interswitch__VerifyBiller(soap, -1, type, arrayType, n); +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_interswitch_SOAP_ENV__Header: + return (void*)soap_instantiate_SOAP_ENV__Header(soap, -1, type, arrayType, n); +#endif +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_interswitch_SOAP_ENV__Code: + return (void*)soap_instantiate_SOAP_ENV__Code(soap, -1, type, arrayType, n); +#endif +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_interswitch_SOAP_ENV__Detail: + return (void*)soap_instantiate_SOAP_ENV__Detail(soap, -1, type, arrayType, n); +#endif +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_interswitch_SOAP_ENV__Reason: + return (void*)soap_instantiate_SOAP_ENV__Reason(soap, -1, type, arrayType, n); +#endif +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_interswitch_SOAP_ENV__Fault: + return (void*)soap_instantiate_SOAP_ENV__Fault(soap, -1, type, arrayType, n); +#endif + case SOAP_TYPE_interswitch_xsd__ID: + return (void*)soap_instantiate_xsd__ID(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__IDREF: + return (void*)soap_instantiate_xsd__IDREF(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__QName: + return (void*)soap_instantiate_xsd__QName(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__anyURI: + return (void*)soap_instantiate_xsd__anyURI(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__decimal: + return (void*)soap_instantiate_xsd__decimal(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__duration: + return (void*)soap_instantiate_xsd__duration(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_interswitch2__duration: + return (void*)soap_instantiate_interswitch2__duration(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_interswitch2__guid: + return (void*)soap_instantiate_interswitch2__guid(soap, -1, type, arrayType, n); + } + return NULL; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_fdelete(struct soap_clist *p) +{ switch (p->type) + { + case SOAP_TYPE_interswitch_xsd__anyType: + if (p->size < 0) + SOAP_DELETE((xsd__anyType*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__anyType*)p->ptr); + break; + case SOAP_TYPE_interswitch_std__string: + if (p->size < 0) + SOAP_DELETE((std::string*)p->ptr); + else + SOAP_DELETE_ARRAY((std::string*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__ID_: + if (p->size < 0) + SOAP_DELETE((xsd__ID_*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__ID_*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__IDREF_: + if (p->size < 0) + SOAP_DELETE((xsd__IDREF_*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__IDREF_*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__QName_: + if (p->size < 0) + SOAP_DELETE((xsd__QName_*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__QName_*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__anyURI_: + if (p->size < 0) + SOAP_DELETE((xsd__anyURI_*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__anyURI_*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__base64Binary: + if (p->size < 0) + SOAP_DELETE((xsd__base64Binary*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__base64Binary*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__base64Binary_: + if (p->size < 0) + SOAP_DELETE((xsd__base64Binary_*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__base64Binary_*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__boolean: + if (p->size < 0) + SOAP_DELETE((xsd__boolean*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__boolean*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__byte_: + if (p->size < 0) + SOAP_DELETE((xsd__byte_*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__byte_*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__dateTime: + if (p->size < 0) + SOAP_DELETE((xsd__dateTime*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__dateTime*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__decimal_: + if (p->size < 0) + SOAP_DELETE((xsd__decimal_*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__decimal_*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__double: + if (p->size < 0) + SOAP_DELETE((xsd__double*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__double*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__duration_: + if (p->size < 0) + SOAP_DELETE((xsd__duration_*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__duration_*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__float: + if (p->size < 0) + SOAP_DELETE((xsd__float*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__float*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__int: + if (p->size < 0) + SOAP_DELETE((xsd__int*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__int*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__long: + if (p->size < 0) + SOAP_DELETE((xsd__long*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__long*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__short: + if (p->size < 0) + SOAP_DELETE((xsd__short*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__short*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__string: + if (p->size < 0) + SOAP_DELETE((xsd__string*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__string*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__unsignedByte_: + if (p->size < 0) + SOAP_DELETE((xsd__unsignedByte_*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__unsignedByte_*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__unsignedInt: + if (p->size < 0) + SOAP_DELETE((xsd__unsignedInt*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__unsignedInt*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__unsignedLong: + if (p->size < 0) + SOAP_DELETE((xsd__unsignedLong*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__unsignedLong*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__unsignedShort: + if (p->size < 0) + SOAP_DELETE((xsd__unsignedShort*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__unsignedShort*)p->ptr); + break; + case SOAP_TYPE_interswitch_interswitch2__char__: + if (p->size < 0) + SOAP_DELETE((interswitch2__char__*)p->ptr); + else + SOAP_DELETE_ARRAY((interswitch2__char__*)p->ptr); + break; + case SOAP_TYPE_interswitch_interswitch2__duration__: + if (p->size < 0) + SOAP_DELETE((interswitch2__duration__*)p->ptr); + else + SOAP_DELETE_ARRAY((interswitch2__duration__*)p->ptr); + break; + case SOAP_TYPE_interswitch_interswitch2__guid__: + if (p->size < 0) + SOAP_DELETE((interswitch2__guid__*)p->ptr); + else + SOAP_DELETE_ARRAY((interswitch2__guid__*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__ValidateCustomer: + if (p->size < 0) + SOAP_DELETE((_interswitch__ValidateCustomer*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__ValidateCustomer*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__ValidateCustomerResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__ValidateCustomerResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__DoTransfer: + if (p->size < 0) + SOAP_DELETE((_interswitch__DoTransfer*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__DoTransfer*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__DoTransferResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__DoTransferResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__DoTransferResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__CancelTransfer: + if (p->size < 0) + SOAP_DELETE((_interswitch__CancelTransfer*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__CancelTransfer*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__CancelTransferResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__CancelTransferResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__CancelTransferResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__SendSessionKey: + if (p->size < 0) + SOAP_DELETE((_interswitch__SendSessionKey*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__SendSessionKey*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__SendSessionKeyResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__SendSessionKeyResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__QueryTransfer: + if (p->size < 0) + SOAP_DELETE((_interswitch__QueryTransfer*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__QueryTransfer*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__QueryTransferResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__QueryTransferResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__QueryTransferResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut: + if (p->size < 0) + SOAP_DELETE((_interswitch__AuthoriseCashOut*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__AuthoriseCashOut*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__AuthoriseCashOutResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__AuthoriseCashOutResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut: + if (p->size < 0) + SOAP_DELETE((_interswitch__AuthoriseAccountCashOut*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__AuthoriseAccountCashOut*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__AuthoriseAccountCashOutResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__AuthoriseAccountCashOutResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__ReverseCashOut: + if (p->size < 0) + SOAP_DELETE((_interswitch__ReverseCashOut*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__ReverseCashOut*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__ReverseCashOutResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__ReverseCashOutResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__StatusCheck: + if (p->size < 0) + SOAP_DELETE((_interswitch__StatusCheck*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__StatusCheck*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__StatusCheckResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__StatusCheckResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__StatusCheckResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__QueryTransaction: + if (p->size < 0) + SOAP_DELETE((_interswitch__QueryTransaction*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__QueryTransaction*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__QueryTransactionResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__QueryTransactionResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetSystemSettings: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetSystemSettings*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetSystemSettings*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetSystemSettingsResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetSystemSettingsResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__CreateUser: + if (p->size < 0) + SOAP_DELETE((_interswitch__CreateUser*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__CreateUser*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__CreateUserResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__CreateUserResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__CreateUserResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__ActivateUser: + if (p->size < 0) + SOAP_DELETE((_interswitch__ActivateUser*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__ActivateUser*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__ActivateUserResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__ActivateUserResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__ActivateUserResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__UpdateUser: + if (p->size < 0) + SOAP_DELETE((_interswitch__UpdateUser*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__UpdateUser*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__UpdateUserResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__UpdateUserResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__UpdateUserResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__ChangePassword: + if (p->size < 0) + SOAP_DELETE((_interswitch__ChangePassword*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__ChangePassword*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__ChangePasswordResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__ChangePasswordResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__ResetPassword: + if (p->size < 0) + SOAP_DELETE((_interswitch__ResetPassword*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__ResetPassword*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__ResetPasswordResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__ResetPasswordResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__AuthenticateUser: + if (p->size < 0) + SOAP_DELETE((_interswitch__AuthenticateUser*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__AuthenticateUser*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__AuthenticateUserResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__AuthenticateUserResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken: + if (p->size < 0) + SOAP_DELETE((_interswitch__AuthenticateUserSecurityToken*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__AuthenticateUserSecurityToken*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__AuthenticateUserSecurityTokenResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__AuthenticateUserSecurityTokenResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetUser: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetUser*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetUser*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetUserResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetUserResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetUserResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetBillers: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetBillers*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetBillers*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetBillersResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetBillersResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetBillersResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetLatestBillers: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetLatestBillers*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetLatestBillers*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetLatestBillersResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetLatestBillersResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetFeaturedBillers*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetFeaturedBillers*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetFeaturedBillersResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetFeaturedBillersResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetBillerPaymentItems*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetBillerPaymentItems*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetBillerPaymentItemsResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetBillerPaymentItemsResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetBillerCategories: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetBillerCategories*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetBillerCategories*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetBillerCategoriesResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetBillerCategoriesResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry: + if (p->size < 0) + SOAP_DELETE((_interswitch__DoBillPaymentInquiry*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__DoBillPaymentInquiry*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__DoBillPaymentInquiryResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__DoBillPaymentInquiryResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer: + if (p->size < 0) + SOAP_DELETE((_interswitch__AuthenticateCustomer*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__AuthenticateCustomer*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__AuthenticateCustomerResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__AuthenticateCustomerResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice: + if (p->size < 0) + SOAP_DELETE((_interswitch__SendBillPaymentAdvice*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__SendBillPaymentAdvice*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__SendBillPaymentAdviceResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__SendBillPaymentAdviceResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__SendPayments: + if (p->size < 0) + SOAP_DELETE((_interswitch__SendPayments*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__SendPayments*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__SendPaymentsResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__SendPaymentsResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount: + if (p->size < 0) + SOAP_DELETE((_interswitch__AddCustomerBillerAccount*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__AddCustomerBillerAccount*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__AddCustomerBillerAccountResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__AddCustomerBillerAccountResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetCustomerBillerAccounts*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetCustomerBillerAccounts*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetCustomerBillerAccountsResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetCustomerBillerAccountsResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetCustomerPayments: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetCustomerPayments*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetCustomerPayments*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetCustomerPaymentsResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetCustomerPaymentsResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__AddBillerCustomer: + if (p->size < 0) + SOAP_DELETE((_interswitch__AddBillerCustomer*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__AddBillerCustomer*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__AddBillerCustomerResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__AddBillerCustomerResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetCollectionsAccount*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetCollectionsAccount*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetCollectionsAccountResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetCollectionsAccountResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetBillersCollectionsAccount*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetBillersCollectionsAccount*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetBillersCollectionsAccountResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetBillersCollectionsAccountResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount: + if (p->size < 0) + SOAP_DELETE((_interswitch__EditCustomerBillerAccount*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__EditCustomerBillerAccount*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__EditCustomerBillerAccountResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__EditCustomerBillerAccountResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__ResendActivationToken: + if (p->size < 0) + SOAP_DELETE((_interswitch__ResendActivationToken*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__ResendActivationToken*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__ResendActivationTokenResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__ResendActivationTokenResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__DoCustomProcessing: + if (p->size < 0) + SOAP_DELETE((_interswitch__DoCustomProcessing*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__DoCustomProcessing*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__DoCustomProcessingResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__DoCustomProcessingResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__CreateBiller: + if (p->size < 0) + SOAP_DELETE((_interswitch__CreateBiller*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__CreateBiller*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__CreateBillerResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__CreateBillerResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__CreateBillerResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__VerifyBiller: + if (p->size < 0) + SOAP_DELETE((_interswitch__VerifyBiller*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__VerifyBiller*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__VerifyBillerResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__VerifyBillerResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__ValidateCustomer: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__ValidateCustomer*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__ValidateCustomer*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__DoTransfer: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__DoTransfer*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__DoTransfer*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__CancelTransfer: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__CancelTransfer*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__CancelTransfer*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__SendSessionKey: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__SendSessionKey*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__SendSessionKey*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__QueryTransfer: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__QueryTransfer*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__QueryTransfer*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__AuthoriseCashOut: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__AuthoriseCashOut*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__AuthoriseCashOut*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__AuthoriseAccountCashOut: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__AuthoriseAccountCashOut*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__AuthoriseAccountCashOut*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__ReverseCashOut: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__ReverseCashOut*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__ReverseCashOut*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__StatusCheck: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__StatusCheck*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__StatusCheck*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__QueryTransaction: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__QueryTransaction*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__QueryTransaction*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetSystemSettings: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__GetSystemSettings*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__GetSystemSettings*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__CreateUser: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__CreateUser*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__CreateUser*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__ActivateUser: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__ActivateUser*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__ActivateUser*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__UpdateUser: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__UpdateUser*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__UpdateUser*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__ChangePassword: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__ChangePassword*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__ChangePassword*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__ResetPassword: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__ResetPassword*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__ResetPassword*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__AuthenticateUser: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__AuthenticateUser*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__AuthenticateUser*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__AuthenticateUserSecurityToken: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__AuthenticateUserSecurityToken*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__AuthenticateUserSecurityToken*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetUser: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__GetUser*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__GetUser*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetBillers: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__GetBillers*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__GetBillers*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetLatestBillers: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__GetLatestBillers*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__GetLatestBillers*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetFeaturedBillers: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__GetFeaturedBillers*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__GetFeaturedBillers*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetBillerPaymentItems: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__GetBillerPaymentItems*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__GetBillerPaymentItems*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetBillerCategories: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__GetBillerCategories*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__GetBillerCategories*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__DoBillPaymentInquiry: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__DoBillPaymentInquiry*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__DoBillPaymentInquiry*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__AuthenticateCustomer: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__AuthenticateCustomer*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__AuthenticateCustomer*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__SendBillPaymentAdvice: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__SendBillPaymentAdvice*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__SendBillPaymentAdvice*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__SendPayments: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__SendPayments*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__SendPayments*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__AddCustomerBillerAccount: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__AddCustomerBillerAccount*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__AddCustomerBillerAccount*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetCustomerBillerAccounts: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__GetCustomerBillerAccounts*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__GetCustomerBillerAccounts*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetCustomerPayments: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__GetCustomerPayments*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__GetCustomerPayments*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__AddBillerCustomer: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__AddBillerCustomer*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__AddBillerCustomer*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetCollectionsAccount: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__GetCollectionsAccount*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__GetCollectionsAccount*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetBillersCollectionsAccount: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__GetBillersCollectionsAccount*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__GetBillersCollectionsAccount*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__EditCustomerBillerAccount: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__EditCustomerBillerAccount*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__EditCustomerBillerAccount*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__ResendActivationToken: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__ResendActivationToken*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__ResendActivationToken*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__DoCustomProcessing: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__DoCustomProcessing*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__DoCustomProcessing*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__CreateBiller: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__CreateBiller*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__CreateBiller*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__VerifyBiller: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__VerifyBiller*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__VerifyBiller*)p->ptr); + break; + case SOAP_TYPE_interswitch_SOAP_ENV__Header: + if (p->size < 0) + SOAP_DELETE((struct SOAP_ENV__Header*)p->ptr); + else + SOAP_DELETE_ARRAY((struct SOAP_ENV__Header*)p->ptr); + break; + case SOAP_TYPE_interswitch_SOAP_ENV__Code: + if (p->size < 0) + SOAP_DELETE((struct SOAP_ENV__Code*)p->ptr); + else + SOAP_DELETE_ARRAY((struct SOAP_ENV__Code*)p->ptr); + break; + case SOAP_TYPE_interswitch_SOAP_ENV__Detail: + if (p->size < 0) + SOAP_DELETE((struct SOAP_ENV__Detail*)p->ptr); + else + SOAP_DELETE_ARRAY((struct SOAP_ENV__Detail*)p->ptr); + break; + case SOAP_TYPE_interswitch_SOAP_ENV__Reason: + if (p->size < 0) + SOAP_DELETE((struct SOAP_ENV__Reason*)p->ptr); + else + SOAP_DELETE_ARRAY((struct SOAP_ENV__Reason*)p->ptr); + break; + case SOAP_TYPE_interswitch_SOAP_ENV__Fault: + if (p->size < 0) + SOAP_DELETE((struct SOAP_ENV__Fault*)p->ptr); + else + SOAP_DELETE_ARRAY((struct SOAP_ENV__Fault*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__ID: + if (p->size < 0) + SOAP_DELETE((std::string*)p->ptr); + else + SOAP_DELETE_ARRAY((std::string*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__IDREF: + if (p->size < 0) + SOAP_DELETE((std::string*)p->ptr); + else + SOAP_DELETE_ARRAY((std::string*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__QName: + if (p->size < 0) + SOAP_DELETE((xsd__QName*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__QName*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__anyURI: + if (p->size < 0) + SOAP_DELETE((std::string*)p->ptr); + else + SOAP_DELETE_ARRAY((std::string*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__decimal: + if (p->size < 0) + SOAP_DELETE((std::string*)p->ptr); + else + SOAP_DELETE_ARRAY((std::string*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__duration: + if (p->size < 0) + SOAP_DELETE((std::string*)p->ptr); + else + SOAP_DELETE_ARRAY((std::string*)p->ptr); + break; + case SOAP_TYPE_interswitch_interswitch2__duration: + if (p->size < 0) + SOAP_DELETE((std::string*)p->ptr); + else + SOAP_DELETE_ARRAY((std::string*)p->ptr); + break; + case SOAP_TYPE_interswitch_interswitch2__guid: + if (p->size < 0) + SOAP_DELETE((std::string*)p->ptr); + else + SOAP_DELETE_ARRAY((std::string*)p->ptr); + break; + default: return SOAP_ERR; + } + return SOAP_OK; +} + +SOAP_FMAC3 void* SOAP_FMAC4 soap_class_id_enter(struct soap *soap, const char *id, void *p, int t, size_t n, const char *type, const char *arrayType) +{ return soap_id_enter(soap, id, p, t, n, 0, type, arrayType, soap_instantiate); +} + +SOAP_FMAC3 void* SOAP_FMAC4 soap_container_id_forward(struct soap *soap, const char *href, void *p, size_t len, int st, int tt, size_t n, unsigned int k) +{ return soap_id_forward(soap, href, p, len, st, tt, n, k, soap_container_insert); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_container_insert(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +#ifdef WIN32 +#pragma warning(push) +#pragma warning(disable:4065) +#endif +{ + (void)soap; (void)st; (void)p; (void)len; (void)q; (void)n; /* appease -Wall -Werror */ + switch (tt) + { + default: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not insert type=%d in %d\n", st, tt)); + } +#ifdef WIN32 +#pragma warning(pop) +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__byte(struct soap *soap, const char *tag, int id, const char *a, const char *type) +{ + return soap_outbyte(soap, tag, id, a, type, SOAP_TYPE_interswitch_xsd__byte); +} + +SOAP_FMAC3 char * SOAP_FMAC4 soap_in_xsd__byte(struct soap *soap, const char *tag, char *a, const char *type) +{ char *p; + p = soap_inbyte(soap, tag, a, type, SOAP_TYPE_interswitch_xsd__byte); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__byte(struct soap *soap, const char *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__byte); + if (soap_out_xsd__byte(soap, tag?tag:"xsd:byte", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 char * SOAP_FMAC4 soap_get_xsd__byte(struct soap *soap, char *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__byte(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_byte(struct soap *soap, char *a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_byte + *a = SOAP_DEFAULT_byte; +#else + *a = (char)0; +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_byte(struct soap *soap, const char *tag, int id, const char *a, const char *type) +{ + return soap_outbyte(soap, tag, id, a, type, SOAP_TYPE_interswitch_byte); +} + +SOAP_FMAC3 char * SOAP_FMAC4 soap_in_byte(struct soap *soap, const char *tag, char *a, const char *type) +{ char *p; + p = soap_inbyte(soap, tag, a, type, SOAP_TYPE_interswitch_byte); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_byte(struct soap *soap, const char *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_byte); + if (soap_out_byte(soap, tag?tag:"byte", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 char * SOAP_FMAC4 soap_get_byte(struct soap *soap, char *p, const char *tag, const char *type) +{ + if ((p = soap_in_byte(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_short(struct soap *soap, short *a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_short + *a = SOAP_DEFAULT_short; +#else + *a = (short)0; +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_short(struct soap *soap, const char *tag, int id, const short *a, const char *type) +{ + return soap_outshort(soap, tag, id, a, type, SOAP_TYPE_interswitch_short); +} + +SOAP_FMAC3 short * SOAP_FMAC4 soap_in_short(struct soap *soap, const char *tag, short *a, const char *type) +{ short *p; + p = soap_inshort(soap, tag, a, type, SOAP_TYPE_interswitch_short); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_short(struct soap *soap, const short *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_short); + if (soap_out_short(soap, tag?tag:"short", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 short * SOAP_FMAC4 soap_get_short(struct soap *soap, short *p, const char *tag, const char *type) +{ + if ((p = soap_in_short(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_interswitch2__char(struct soap *soap, const char *tag, int id, const int *a, const char *type) +{ + return soap_outint(soap, tag, id, a, type, SOAP_TYPE_interswitch_interswitch2__char); +} + +SOAP_FMAC3 int * SOAP_FMAC4 soap_in_interswitch2__char(struct soap *soap, const char *tag, int *a, const char *type) +{ int *p; + p = soap_inint(soap, tag, a, type, SOAP_TYPE_interswitch_interswitch2__char); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_interswitch2__char(struct soap *soap, const int *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_interswitch2__char); + if (soap_out_interswitch2__char(soap, tag?tag:"interswitch2:char", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 int * SOAP_FMAC4 soap_get_interswitch2__char(struct soap *soap, int *p, const char *tag, const char *type) +{ + if ((p = soap_in_interswitch2__char(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_int(struct soap *soap, int *a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_int + *a = SOAP_DEFAULT_int; +#else + *a = (int)0; +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_int(struct soap *soap, const char *tag, int id, const int *a, const char *type) +{ + return soap_outint(soap, tag, id, a, type, SOAP_TYPE_interswitch_int); +} + +SOAP_FMAC3 int * SOAP_FMAC4 soap_in_int(struct soap *soap, const char *tag, int *a, const char *type) +{ int *p; + p = soap_inint(soap, tag, a, type, SOAP_TYPE_interswitch_int); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_int(struct soap *soap, const int *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_int); + if (soap_out_int(soap, tag?tag:"int", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 int * SOAP_FMAC4 soap_get_int(struct soap *soap, int *p, const char *tag, const char *type) +{ + if ((p = soap_in_int(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_LONG64(struct soap *soap, LONG64 *a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_LONG64 + *a = SOAP_DEFAULT_LONG64; +#else + *a = (LONG64)0; +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_LONG64(struct soap *soap, const char *tag, int id, const LONG64 *a, const char *type) +{ + return soap_outLONG64(soap, tag, id, a, type, SOAP_TYPE_interswitch_LONG64); +} + +SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_in_LONG64(struct soap *soap, const char *tag, LONG64 *a, const char *type) +{ LONG64 *p; + p = soap_inLONG64(soap, tag, a, type, SOAP_TYPE_interswitch_LONG64); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_LONG64(struct soap *soap, const LONG64 *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_LONG64); + if (soap_out_LONG64(soap, tag?tag:"long", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_get_LONG64(struct soap *soap, LONG64 *p, const char *tag, const char *type) +{ + if ((p = soap_in_LONG64(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_float(struct soap *soap, float *a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_float + *a = SOAP_DEFAULT_float; +#else + *a = (float)0; +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_float(struct soap *soap, const char *tag, int id, const float *a, const char *type) +{ + return soap_outfloat(soap, tag, id, a, type, SOAP_TYPE_interswitch_float); +} + +SOAP_FMAC3 float * SOAP_FMAC4 soap_in_float(struct soap *soap, const char *tag, float *a, const char *type) +{ float *p; + p = soap_infloat(soap, tag, a, type, SOAP_TYPE_interswitch_float); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_float(struct soap *soap, const float *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_float); + if (soap_out_float(soap, tag?tag:"float", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 float * SOAP_FMAC4 soap_get_float(struct soap *soap, float *p, const char *tag, const char *type) +{ + if ((p = soap_in_float(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_double(struct soap *soap, double *a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_double + *a = SOAP_DEFAULT_double; +#else + *a = (double)0; +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_double(struct soap *soap, const char *tag, int id, const double *a, const char *type) +{ + return soap_outdouble(soap, tag, id, a, type, SOAP_TYPE_interswitch_double); +} + +SOAP_FMAC3 double * SOAP_FMAC4 soap_in_double(struct soap *soap, const char *tag, double *a, const char *type) +{ double *p; + p = soap_indouble(soap, tag, a, type, SOAP_TYPE_interswitch_double); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_double(struct soap *soap, const double *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_double); + if (soap_out_double(soap, tag?tag:"double", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 double * SOAP_FMAC4 soap_get_double(struct soap *soap, double *p, const char *tag, const char *type) +{ + if ((p = soap_in_double(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__unsignedByte(struct soap *soap, const char *tag, int id, const unsigned char *a, const char *type) +{ + return soap_outunsignedByte(soap, tag, id, a, type, SOAP_TYPE_interswitch_xsd__unsignedByte); +} + +SOAP_FMAC3 unsigned char * SOAP_FMAC4 soap_in_xsd__unsignedByte(struct soap *soap, const char *tag, unsigned char *a, const char *type) +{ unsigned char *p; + p = soap_inunsignedByte(soap, tag, a, type, SOAP_TYPE_interswitch_xsd__unsignedByte); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__unsignedByte(struct soap *soap, const unsigned char *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__unsignedByte); + if (soap_out_xsd__unsignedByte(soap, tag?tag:"xsd:unsignedByte", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 unsigned char * SOAP_FMAC4 soap_get_xsd__unsignedByte(struct soap *soap, unsigned char *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__unsignedByte(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_unsignedByte(struct soap *soap, unsigned char *a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_unsignedByte + *a = SOAP_DEFAULT_unsignedByte; +#else + *a = (unsigned char)0; +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_unsignedByte(struct soap *soap, const char *tag, int id, const unsigned char *a, const char *type) +{ + return soap_outunsignedByte(soap, tag, id, a, type, SOAP_TYPE_interswitch_unsignedByte); +} + +SOAP_FMAC3 unsigned char * SOAP_FMAC4 soap_in_unsignedByte(struct soap *soap, const char *tag, unsigned char *a, const char *type) +{ unsigned char *p; + p = soap_inunsignedByte(soap, tag, a, type, SOAP_TYPE_interswitch_unsignedByte); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_unsignedByte(struct soap *soap, const unsigned char *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_unsignedByte); + if (soap_out_unsignedByte(soap, tag?tag:"unsignedByte", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 unsigned char * SOAP_FMAC4 soap_get_unsignedByte(struct soap *soap, unsigned char *p, const char *tag, const char *type) +{ + if ((p = soap_in_unsignedByte(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_unsignedShort(struct soap *soap, unsigned short *a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_unsignedShort + *a = SOAP_DEFAULT_unsignedShort; +#else + *a = (unsigned short)0; +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_unsignedShort(struct soap *soap, const char *tag, int id, const unsigned short *a, const char *type) +{ + return soap_outunsignedShort(soap, tag, id, a, type, SOAP_TYPE_interswitch_unsignedShort); +} + +SOAP_FMAC3 unsigned short * SOAP_FMAC4 soap_in_unsignedShort(struct soap *soap, const char *tag, unsigned short *a, const char *type) +{ unsigned short *p; + p = soap_inunsignedShort(soap, tag, a, type, SOAP_TYPE_interswitch_unsignedShort); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_unsignedShort(struct soap *soap, const unsigned short *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_unsignedShort); + if (soap_out_unsignedShort(soap, tag?tag:"unsignedShort", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 unsigned short * SOAP_FMAC4 soap_get_unsignedShort(struct soap *soap, unsigned short *p, const char *tag, const char *type) +{ + if ((p = soap_in_unsignedShort(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_unsignedInt(struct soap *soap, unsigned int *a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_unsignedInt + *a = SOAP_DEFAULT_unsignedInt; +#else + *a = (unsigned int)0; +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_unsignedInt(struct soap *soap, const char *tag, int id, const unsigned int *a, const char *type) +{ + return soap_outunsignedInt(soap, tag, id, a, type, SOAP_TYPE_interswitch_unsignedInt); +} + +SOAP_FMAC3 unsigned int * SOAP_FMAC4 soap_in_unsignedInt(struct soap *soap, const char *tag, unsigned int *a, const char *type) +{ unsigned int *p; + p = soap_inunsignedInt(soap, tag, a, type, SOAP_TYPE_interswitch_unsignedInt); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_unsignedInt(struct soap *soap, const unsigned int *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_unsignedInt); + if (soap_out_unsignedInt(soap, tag?tag:"unsignedInt", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 unsigned int * SOAP_FMAC4 soap_get_unsignedInt(struct soap *soap, unsigned int *p, const char *tag, const char *type) +{ + if ((p = soap_in_unsignedInt(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_unsignedLONG64(struct soap *soap, ULONG64 *a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_unsignedLONG64 + *a = SOAP_DEFAULT_unsignedLONG64; +#else + *a = (ULONG64)0; +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_unsignedLONG64(struct soap *soap, const char *tag, int id, const ULONG64 *a, const char *type) +{ + return soap_outULONG64(soap, tag, id, a, type, SOAP_TYPE_interswitch_unsignedLONG64); +} + +SOAP_FMAC3 ULONG64 * SOAP_FMAC4 soap_in_unsignedLONG64(struct soap *soap, const char *tag, ULONG64 *a, const char *type) +{ ULONG64 *p; + p = soap_inULONG64(soap, tag, a, type, SOAP_TYPE_interswitch_unsignedLONG64); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_unsignedLONG64(struct soap *soap, const ULONG64 *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_unsignedLONG64); + if (soap_out_unsignedLONG64(soap, tag?tag:"unsignedLong", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 ULONG64 * SOAP_FMAC4 soap_get_unsignedLONG64(struct soap *soap, ULONG64 *p, const char *tag, const char *type) +{ + if ((p = soap_in_unsignedLONG64(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_time(struct soap *soap, time_t *a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_time + *a = SOAP_DEFAULT_time; +#else + *a = (time_t)0; +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_time(struct soap *soap, const char *tag, int id, const time_t *a, const char *type) +{ + return soap_outdateTime(soap, tag, id, a, type, SOAP_TYPE_interswitch_time); +} + +SOAP_FMAC3 time_t * SOAP_FMAC4 soap_in_time(struct soap *soap, const char *tag, time_t *a, const char *type) +{ time_t *p; + p = soap_indateTime(soap, tag, a, type, SOAP_TYPE_interswitch_time); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_time(struct soap *soap, const time_t *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_time); + if (soap_out_time(soap, tag?tag:"dateTime", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 time_t * SOAP_FMAC4 soap_get_time(struct soap *soap, time_t *p, const char *tag, const char *type) +{ + if ((p = soap_in_time(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_bool(struct soap *soap, bool *a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_bool + *a = SOAP_DEFAULT_bool; +#else + *a = (bool)0; +#endif +} + +static const struct soap_code_map soap_codes_bool[] = +{ { (long)false, "false" }, + { (long)true, "true" }, + { 0, NULL } +}; + +SOAP_FMAC3S const char* SOAP_FMAC4S soap_bool2s(struct soap *soap, bool n) +{ + (void)soap; /* appease -Wall -Werror */ +return soap_code_str(soap_codes_bool, n!=0); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_bool(struct soap *soap, const char *tag, int id, const bool *a, const char *type) +{ if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch_bool), type) || soap_send(soap, soap_bool2s(soap, *a))) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3S int SOAP_FMAC4S soap_s2bool(struct soap *soap, const char *s, bool *a) +{ + const struct soap_code_map *map; + if (!s) + return soap->error; + map = soap_code(soap_codes_bool, s); + if (map) + *a = (bool)(map->code != 0); + else + { long n; + if (soap_s2long(soap, s, &n) || n < 0 || n > 1) + return soap->error = SOAP_TYPE; + *a = (bool)(n != 0); + } + return SOAP_OK; +} + +SOAP_FMAC3 bool * SOAP_FMAC4 soap_in_bool(struct soap *soap, const char *tag, bool *a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + if (*soap->type && soap_match_tag(soap, soap->type, type) && soap_match_tag(soap, soap->type, ":boolean")) + { soap->error = SOAP_TYPE; + return NULL; + } + a = (bool *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_bool, sizeof(bool), 0, NULL, NULL, NULL); + if (!a) + return NULL; + if (soap->body && !*soap->href) + { if (!a || soap_s2bool(soap, soap_value(soap), a) || soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (bool *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch_bool, 0, sizeof(bool), 0, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_bool(struct soap *soap, const bool *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_bool); + if (soap_out_bool(soap, tag?tag:"boolean", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 bool * SOAP_FMAC4 soap_get_bool(struct soap *soap, bool *p, const char *tag, const char *type) +{ + if ((p = soap_in_bool(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void interswitch2__guid__::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_interswitch2__guid(soap, &this->interswitch2__guid__::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void interswitch2__guid__::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_interswitch2__guid(soap, &this->interswitch2__guid__::__item); + /* transient soap skipped */ +} + +int interswitch2__guid__::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_interswitch2__guid__(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_interswitch2__guid__(struct soap *soap, const char *tag, int id, const interswitch2__guid__ *a, const char *type) +{ + return soap_out_interswitch2__guid(soap, tag, id, &(a->interswitch2__guid__::__item), "interswitch2:guid"); +} + +void *interswitch2__guid__::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_interswitch2__guid__(soap, tag, this, type); +} + +SOAP_FMAC3 interswitch2__guid__ * SOAP_FMAC4 soap_in_interswitch2__guid__(struct soap *soap, const char *tag, interswitch2__guid__ *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (interswitch2__guid__ *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_interswitch2__guid__, sizeof(interswitch2__guid__), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_interswitch2__guid__) + return (interswitch2__guid__ *)a->soap_in(soap, tag, type); + } + if (!soap_in_interswitch2__guid(soap, tag, &(a->interswitch2__guid__::__item), "interswitch2:guid")) + return NULL; + return a; +} + +int interswitch2__guid__::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_interswitch2__guid__); + if (this->soap_out(soap, tag?tag:"interswitch2:guid", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *interswitch2__guid__::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_interswitch2__guid__(soap, this, tag, type); +} + +SOAP_FMAC3 interswitch2__guid__ * SOAP_FMAC4 soap_get_interswitch2__guid__(struct soap *soap, interswitch2__guid__ *p, const char *tag, const char *type) +{ + if ((p = soap_in_interswitch2__guid__(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 interswitch2__guid__ * SOAP_FMAC2 soap_instantiate_interswitch2__guid__(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_interswitch2__guid__(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_interswitch2__guid__, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(interswitch2__guid__); + if (size) + *size = sizeof(interswitch2__guid__); + ((interswitch2__guid__*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(interswitch2__guid__[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(interswitch2__guid__); + for (int i = 0; i < n; i++) + ((interswitch2__guid__*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (interswitch2__guid__*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_interswitch2__guid__(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying interswitch2__guid__ %p -> %p\n", q, p)); + *(interswitch2__guid__*)p = *(interswitch2__guid__*)q; +} +SOAP_FMAC3 int SOAP_FMAC4 soap_out_interswitch2__guid(struct soap *soap, const char *tag, int id, const std::string *s, const char *type) +{ + if ((soap->mode & SOAP_C_NILSTRING) && s->empty()) + return soap_element_null(soap, tag, id, type); + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, s, SOAP_TYPE_interswitch_interswitch2__guid), type) || soap_string_out(soap, s->c_str(), 0) || soap_element_end_out(soap, tag)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_interswitch2__guid(struct soap *soap, const char *tag, std::string *s, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!s) + s = soap_new_std__string(soap, -1); + if (soap->null) + if (s) + s->erase(); + if (soap->body && !*soap->href) + { char *t; + s = (std::string*)soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_interswitch_interswitch2__guid, sizeof(std::string), soap->type, soap->arrayType); + if (s) + { if ((t = soap_string_in(soap, 1, -1, -1))) + s->assign(t); + else + return NULL; + } + } + else + s = (std::string*)soap_id_forward(soap, soap->href, soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_interswitch_interswitch2__guid, sizeof(std::string), soap->type, soap->arrayType), 0, SOAP_TYPE_interswitch_interswitch2__guid, 0, sizeof(std::string), 0, soap_copy_interswitch2__guid); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + return s; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_interswitch2__guid(struct soap *soap, const std::string *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_interswitch2__guid); + if (soap_out_interswitch2__guid(soap, tag?tag:"interswitch2:guid", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_interswitch2__guid(struct soap *soap, std::string *p, const char *tag, const char *type) +{ + if ((p = soap_in_interswitch2__guid(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void interswitch2__duration__::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_interswitch2__duration(soap, &this->interswitch2__duration__::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void interswitch2__duration__::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_interswitch2__duration(soap, &this->interswitch2__duration__::__item); + /* transient soap skipped */ +} + +int interswitch2__duration__::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_interswitch2__duration__(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_interswitch2__duration__(struct soap *soap, const char *tag, int id, const interswitch2__duration__ *a, const char *type) +{ + return soap_out_interswitch2__duration(soap, tag, id, &(a->interswitch2__duration__::__item), "interswitch2:duration"); +} + +void *interswitch2__duration__::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_interswitch2__duration__(soap, tag, this, type); +} + +SOAP_FMAC3 interswitch2__duration__ * SOAP_FMAC4 soap_in_interswitch2__duration__(struct soap *soap, const char *tag, interswitch2__duration__ *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (interswitch2__duration__ *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_interswitch2__duration__, sizeof(interswitch2__duration__), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_interswitch2__duration__) + return (interswitch2__duration__ *)a->soap_in(soap, tag, type); + } + if (!soap_in_interswitch2__duration(soap, tag, &(a->interswitch2__duration__::__item), "interswitch2:duration")) + return NULL; + return a; +} + +int interswitch2__duration__::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_interswitch2__duration__); + if (this->soap_out(soap, tag?tag:"interswitch2:duration", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *interswitch2__duration__::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_interswitch2__duration__(soap, this, tag, type); +} + +SOAP_FMAC3 interswitch2__duration__ * SOAP_FMAC4 soap_get_interswitch2__duration__(struct soap *soap, interswitch2__duration__ *p, const char *tag, const char *type) +{ + if ((p = soap_in_interswitch2__duration__(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 interswitch2__duration__ * SOAP_FMAC2 soap_instantiate_interswitch2__duration__(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_interswitch2__duration__(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_interswitch2__duration__, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(interswitch2__duration__); + if (size) + *size = sizeof(interswitch2__duration__); + ((interswitch2__duration__*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(interswitch2__duration__[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(interswitch2__duration__); + for (int i = 0; i < n; i++) + ((interswitch2__duration__*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (interswitch2__duration__*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_interswitch2__duration__(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying interswitch2__duration__ %p -> %p\n", q, p)); + *(interswitch2__duration__*)p = *(interswitch2__duration__*)q; +} +SOAP_FMAC3 int SOAP_FMAC4 soap_out_interswitch2__duration(struct soap *soap, const char *tag, int id, const std::string *s, const char *type) +{ + if ((soap->mode & SOAP_C_NILSTRING) && s->empty()) + return soap_element_null(soap, tag, id, type); + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, s, SOAP_TYPE_interswitch_interswitch2__duration), type) || soap_string_out(soap, s->c_str(), 0) || soap_element_end_out(soap, tag)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_interswitch2__duration(struct soap *soap, const char *tag, std::string *s, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!s) + s = soap_new_std__string(soap, -1); + if (soap->null) + if (s) + s->erase(); + if (soap->body && !*soap->href) + { char *t; + s = (std::string*)soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_interswitch_interswitch2__duration, sizeof(std::string), soap->type, soap->arrayType); + if (s) + { if ((t = soap_string_in(soap, 1, -1, -1))) + s->assign(t); + else + return NULL; + } + } + else + s = (std::string*)soap_id_forward(soap, soap->href, soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_interswitch_interswitch2__duration, sizeof(std::string), soap->type, soap->arrayType), 0, SOAP_TYPE_interswitch_interswitch2__duration, 0, sizeof(std::string), 0, soap_copy_interswitch2__duration); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + return s; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_interswitch2__duration(struct soap *soap, const std::string *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_interswitch2__duration); + if (soap_out_interswitch2__duration(soap, tag?tag:"interswitch2:duration", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_interswitch2__duration(struct soap *soap, std::string *p, const char *tag, const char *type) +{ + if ((p = soap_in_interswitch2__duration(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void interswitch2__char__::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_interswitch2__char(soap, &this->interswitch2__char__::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void interswitch2__char__::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + /* transient soap skipped */ +} + +int interswitch2__char__::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_interswitch2__char__(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_interswitch2__char__(struct soap *soap, const char *tag, int id, const interswitch2__char__ *a, const char *type) +{ + return soap_out_interswitch2__char(soap, tag, id, &(a->interswitch2__char__::__item), "interswitch2:char"); +} + +void *interswitch2__char__::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_interswitch2__char__(soap, tag, this, type); +} + +SOAP_FMAC3 interswitch2__char__ * SOAP_FMAC4 soap_in_interswitch2__char__(struct soap *soap, const char *tag, interswitch2__char__ *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (interswitch2__char__ *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_interswitch2__char__, sizeof(interswitch2__char__), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_interswitch2__char__) + return (interswitch2__char__ *)a->soap_in(soap, tag, type); + } + if (!soap_in_interswitch2__char(soap, tag, &(a->interswitch2__char__::__item), "interswitch2:char")) + return NULL; + return a; +} + +int interswitch2__char__::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_interswitch2__char__); + if (this->soap_out(soap, tag?tag:"interswitch2:char", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *interswitch2__char__::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_interswitch2__char__(soap, this, tag, type); +} + +SOAP_FMAC3 interswitch2__char__ * SOAP_FMAC4 soap_get_interswitch2__char__(struct soap *soap, interswitch2__char__ *p, const char *tag, const char *type) +{ + if ((p = soap_in_interswitch2__char__(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 interswitch2__char__ * SOAP_FMAC2 soap_instantiate_interswitch2__char__(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_interswitch2__char__(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_interswitch2__char__, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(interswitch2__char__); + if (size) + *size = sizeof(interswitch2__char__); + ((interswitch2__char__*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(interswitch2__char__[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(interswitch2__char__); + for (int i = 0; i < n; i++) + ((interswitch2__char__*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (interswitch2__char__*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_interswitch2__char__(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying interswitch2__char__ %p -> %p\n", q, p)); + *(interswitch2__char__*)p = *(interswitch2__char__*)q; +} + +void _interswitch__VerifyBillerResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__VerifyBillerResponse::VerifyBillerResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__VerifyBillerResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__VerifyBillerResponse::VerifyBillerResult); + /* transient soap skipped */ +} + +int _interswitch__VerifyBillerResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__VerifyBillerResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__VerifyBillerResponse(struct soap *soap, const char *tag, int id, const _interswitch__VerifyBillerResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse), type)) + return soap->error; + if (a->VerifyBillerResult) + soap_element_result(soap, "interswitch:VerifyBillerResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:VerifyBillerResult", -1, &(a->_interswitch__VerifyBillerResponse::VerifyBillerResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__VerifyBillerResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__VerifyBillerResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__VerifyBillerResponse * SOAP_FMAC4 soap_in__interswitch__VerifyBillerResponse(struct soap *soap, const char *tag, _interswitch__VerifyBillerResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__VerifyBillerResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse, sizeof(_interswitch__VerifyBillerResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__VerifyBillerResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_VerifyBillerResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_VerifyBillerResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:VerifyBillerResult", &(a->_interswitch__VerifyBillerResponse::VerifyBillerResult), "xsd:string")) + { soap_flag_VerifyBillerResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:VerifyBillerResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__VerifyBillerResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse, 0, sizeof(_interswitch__VerifyBillerResponse), 0, soap_copy__interswitch__VerifyBillerResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__VerifyBillerResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse); + if (this->soap_out(soap, tag?tag:"interswitch:VerifyBillerResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__VerifyBillerResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__VerifyBillerResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__VerifyBillerResponse * SOAP_FMAC4 soap_get__interswitch__VerifyBillerResponse(struct soap *soap, _interswitch__VerifyBillerResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__VerifyBillerResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__VerifyBillerResponse * SOAP_FMAC2 soap_instantiate__interswitch__VerifyBillerResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__VerifyBillerResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__VerifyBillerResponse); + if (size) + *size = sizeof(_interswitch__VerifyBillerResponse); + ((_interswitch__VerifyBillerResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__VerifyBillerResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__VerifyBillerResponse); + for (int i = 0; i < n; i++) + ((_interswitch__VerifyBillerResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__VerifyBillerResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__VerifyBillerResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__VerifyBillerResponse %p -> %p\n", q, p)); + *(_interswitch__VerifyBillerResponse*)p = *(_interswitch__VerifyBillerResponse*)q; +} + +void _interswitch__VerifyBiller::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__VerifyBiller::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__VerifyBiller::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__VerifyBiller::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__VerifyBiller::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__VerifyBiller(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__VerifyBiller(struct soap *soap, const char *tag, int id, const _interswitch__VerifyBiller *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__VerifyBiller), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__VerifyBiller::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__VerifyBiller::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__VerifyBiller(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__VerifyBiller * SOAP_FMAC4 soap_in__interswitch__VerifyBiller(struct soap *soap, const char *tag, _interswitch__VerifyBiller *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__VerifyBiller *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__VerifyBiller, sizeof(_interswitch__VerifyBiller), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__VerifyBiller) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__VerifyBiller *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__VerifyBiller::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__VerifyBiller *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__VerifyBiller, 0, sizeof(_interswitch__VerifyBiller), 0, soap_copy__interswitch__VerifyBiller); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__VerifyBiller::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__VerifyBiller); + if (this->soap_out(soap, tag?tag:"interswitch:VerifyBiller", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__VerifyBiller::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__VerifyBiller(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__VerifyBiller * SOAP_FMAC4 soap_get__interswitch__VerifyBiller(struct soap *soap, _interswitch__VerifyBiller *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__VerifyBiller(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__VerifyBiller * SOAP_FMAC2 soap_instantiate__interswitch__VerifyBiller(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__VerifyBiller(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__VerifyBiller, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__VerifyBiller); + if (size) + *size = sizeof(_interswitch__VerifyBiller); + ((_interswitch__VerifyBiller*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__VerifyBiller[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__VerifyBiller); + for (int i = 0; i < n; i++) + ((_interswitch__VerifyBiller*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__VerifyBiller*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__VerifyBiller(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__VerifyBiller %p -> %p\n", q, p)); + *(_interswitch__VerifyBiller*)p = *(_interswitch__VerifyBiller*)q; +} + +void _interswitch__CreateBillerResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__CreateBillerResponse::CreateBillerResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__CreateBillerResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__CreateBillerResponse::CreateBillerResult); + /* transient soap skipped */ +} + +int _interswitch__CreateBillerResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__CreateBillerResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__CreateBillerResponse(struct soap *soap, const char *tag, int id, const _interswitch__CreateBillerResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__CreateBillerResponse), type)) + return soap->error; + if (a->CreateBillerResult) + soap_element_result(soap, "interswitch:CreateBillerResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:CreateBillerResult", -1, &(a->_interswitch__CreateBillerResponse::CreateBillerResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__CreateBillerResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__CreateBillerResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__CreateBillerResponse * SOAP_FMAC4 soap_in__interswitch__CreateBillerResponse(struct soap *soap, const char *tag, _interswitch__CreateBillerResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__CreateBillerResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__CreateBillerResponse, sizeof(_interswitch__CreateBillerResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__CreateBillerResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__CreateBillerResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_CreateBillerResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_CreateBillerResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:CreateBillerResult", &(a->_interswitch__CreateBillerResponse::CreateBillerResult), "xsd:string")) + { soap_flag_CreateBillerResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:CreateBillerResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__CreateBillerResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__CreateBillerResponse, 0, sizeof(_interswitch__CreateBillerResponse), 0, soap_copy__interswitch__CreateBillerResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__CreateBillerResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__CreateBillerResponse); + if (this->soap_out(soap, tag?tag:"interswitch:CreateBillerResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__CreateBillerResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__CreateBillerResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__CreateBillerResponse * SOAP_FMAC4 soap_get__interswitch__CreateBillerResponse(struct soap *soap, _interswitch__CreateBillerResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__CreateBillerResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__CreateBillerResponse * SOAP_FMAC2 soap_instantiate__interswitch__CreateBillerResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__CreateBillerResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__CreateBillerResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__CreateBillerResponse); + if (size) + *size = sizeof(_interswitch__CreateBillerResponse); + ((_interswitch__CreateBillerResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__CreateBillerResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__CreateBillerResponse); + for (int i = 0; i < n; i++) + ((_interswitch__CreateBillerResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__CreateBillerResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__CreateBillerResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__CreateBillerResponse %p -> %p\n", q, p)); + *(_interswitch__CreateBillerResponse*)p = *(_interswitch__CreateBillerResponse*)q; +} + +void _interswitch__CreateBiller::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__CreateBiller::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__CreateBiller::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__CreateBiller::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__CreateBiller::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__CreateBiller(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__CreateBiller(struct soap *soap, const char *tag, int id, const _interswitch__CreateBiller *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__CreateBiller), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__CreateBiller::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__CreateBiller::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__CreateBiller(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__CreateBiller * SOAP_FMAC4 soap_in__interswitch__CreateBiller(struct soap *soap, const char *tag, _interswitch__CreateBiller *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__CreateBiller *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__CreateBiller, sizeof(_interswitch__CreateBiller), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__CreateBiller) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__CreateBiller *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__CreateBiller::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__CreateBiller *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__CreateBiller, 0, sizeof(_interswitch__CreateBiller), 0, soap_copy__interswitch__CreateBiller); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__CreateBiller::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__CreateBiller); + if (this->soap_out(soap, tag?tag:"interswitch:CreateBiller", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__CreateBiller::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__CreateBiller(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__CreateBiller * SOAP_FMAC4 soap_get__interswitch__CreateBiller(struct soap *soap, _interswitch__CreateBiller *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__CreateBiller(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__CreateBiller * SOAP_FMAC2 soap_instantiate__interswitch__CreateBiller(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__CreateBiller(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__CreateBiller, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__CreateBiller); + if (size) + *size = sizeof(_interswitch__CreateBiller); + ((_interswitch__CreateBiller*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__CreateBiller[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__CreateBiller); + for (int i = 0; i < n; i++) + ((_interswitch__CreateBiller*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__CreateBiller*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__CreateBiller(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__CreateBiller %p -> %p\n", q, p)); + *(_interswitch__CreateBiller*)p = *(_interswitch__CreateBiller*)q; +} + +void _interswitch__DoCustomProcessingResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__DoCustomProcessingResponse::DoCustomProcessingResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__DoCustomProcessingResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__DoCustomProcessingResponse::DoCustomProcessingResult); + /* transient soap skipped */ +} + +int _interswitch__DoCustomProcessingResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__DoCustomProcessingResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__DoCustomProcessingResponse(struct soap *soap, const char *tag, int id, const _interswitch__DoCustomProcessingResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse), type)) + return soap->error; + if (a->DoCustomProcessingResult) + soap_element_result(soap, "interswitch:DoCustomProcessingResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:DoCustomProcessingResult", -1, &(a->_interswitch__DoCustomProcessingResponse::DoCustomProcessingResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__DoCustomProcessingResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__DoCustomProcessingResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__DoCustomProcessingResponse * SOAP_FMAC4 soap_in__interswitch__DoCustomProcessingResponse(struct soap *soap, const char *tag, _interswitch__DoCustomProcessingResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__DoCustomProcessingResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse, sizeof(_interswitch__DoCustomProcessingResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__DoCustomProcessingResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_DoCustomProcessingResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_DoCustomProcessingResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:DoCustomProcessingResult", &(a->_interswitch__DoCustomProcessingResponse::DoCustomProcessingResult), "xsd:string")) + { soap_flag_DoCustomProcessingResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:DoCustomProcessingResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__DoCustomProcessingResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse, 0, sizeof(_interswitch__DoCustomProcessingResponse), 0, soap_copy__interswitch__DoCustomProcessingResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__DoCustomProcessingResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse); + if (this->soap_out(soap, tag?tag:"interswitch:DoCustomProcessingResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__DoCustomProcessingResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__DoCustomProcessingResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__DoCustomProcessingResponse * SOAP_FMAC4 soap_get__interswitch__DoCustomProcessingResponse(struct soap *soap, _interswitch__DoCustomProcessingResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__DoCustomProcessingResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__DoCustomProcessingResponse * SOAP_FMAC2 soap_instantiate__interswitch__DoCustomProcessingResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__DoCustomProcessingResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__DoCustomProcessingResponse); + if (size) + *size = sizeof(_interswitch__DoCustomProcessingResponse); + ((_interswitch__DoCustomProcessingResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__DoCustomProcessingResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__DoCustomProcessingResponse); + for (int i = 0; i < n; i++) + ((_interswitch__DoCustomProcessingResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__DoCustomProcessingResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__DoCustomProcessingResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__DoCustomProcessingResponse %p -> %p\n", q, p)); + *(_interswitch__DoCustomProcessingResponse*)p = *(_interswitch__DoCustomProcessingResponse*)q; +} + +void _interswitch__DoCustomProcessing::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__DoCustomProcessing::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__DoCustomProcessing::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__DoCustomProcessing::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__DoCustomProcessing::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__DoCustomProcessing(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__DoCustomProcessing(struct soap *soap, const char *tag, int id, const _interswitch__DoCustomProcessing *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__DoCustomProcessing), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__DoCustomProcessing::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__DoCustomProcessing::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__DoCustomProcessing(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__DoCustomProcessing * SOAP_FMAC4 soap_in__interswitch__DoCustomProcessing(struct soap *soap, const char *tag, _interswitch__DoCustomProcessing *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__DoCustomProcessing *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__DoCustomProcessing, sizeof(_interswitch__DoCustomProcessing), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__DoCustomProcessing) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__DoCustomProcessing *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__DoCustomProcessing::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__DoCustomProcessing *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__DoCustomProcessing, 0, sizeof(_interswitch__DoCustomProcessing), 0, soap_copy__interswitch__DoCustomProcessing); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__DoCustomProcessing::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__DoCustomProcessing); + if (this->soap_out(soap, tag?tag:"interswitch:DoCustomProcessing", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__DoCustomProcessing::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__DoCustomProcessing(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__DoCustomProcessing * SOAP_FMAC4 soap_get__interswitch__DoCustomProcessing(struct soap *soap, _interswitch__DoCustomProcessing *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__DoCustomProcessing(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__DoCustomProcessing * SOAP_FMAC2 soap_instantiate__interswitch__DoCustomProcessing(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__DoCustomProcessing(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__DoCustomProcessing, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__DoCustomProcessing); + if (size) + *size = sizeof(_interswitch__DoCustomProcessing); + ((_interswitch__DoCustomProcessing*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__DoCustomProcessing[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__DoCustomProcessing); + for (int i = 0; i < n; i++) + ((_interswitch__DoCustomProcessing*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__DoCustomProcessing*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__DoCustomProcessing(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__DoCustomProcessing %p -> %p\n", q, p)); + *(_interswitch__DoCustomProcessing*)p = *(_interswitch__DoCustomProcessing*)q; +} + +void _interswitch__ResendActivationTokenResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__ResendActivationTokenResponse::ResendActivationTokenResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__ResendActivationTokenResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__ResendActivationTokenResponse::ResendActivationTokenResult); + /* transient soap skipped */ +} + +int _interswitch__ResendActivationTokenResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__ResendActivationTokenResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ResendActivationTokenResponse(struct soap *soap, const char *tag, int id, const _interswitch__ResendActivationTokenResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse), type)) + return soap->error; + if (a->ResendActivationTokenResult) + soap_element_result(soap, "interswitch:ResendActivationTokenResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:ResendActivationTokenResult", -1, &(a->_interswitch__ResendActivationTokenResponse::ResendActivationTokenResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__ResendActivationTokenResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__ResendActivationTokenResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__ResendActivationTokenResponse * SOAP_FMAC4 soap_in__interswitch__ResendActivationTokenResponse(struct soap *soap, const char *tag, _interswitch__ResendActivationTokenResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__ResendActivationTokenResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse, sizeof(_interswitch__ResendActivationTokenResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__ResendActivationTokenResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_ResendActivationTokenResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_ResendActivationTokenResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:ResendActivationTokenResult", &(a->_interswitch__ResendActivationTokenResponse::ResendActivationTokenResult), "xsd:string")) + { soap_flag_ResendActivationTokenResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:ResendActivationTokenResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__ResendActivationTokenResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse, 0, sizeof(_interswitch__ResendActivationTokenResponse), 0, soap_copy__interswitch__ResendActivationTokenResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__ResendActivationTokenResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse); + if (this->soap_out(soap, tag?tag:"interswitch:ResendActivationTokenResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__ResendActivationTokenResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__ResendActivationTokenResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__ResendActivationTokenResponse * SOAP_FMAC4 soap_get__interswitch__ResendActivationTokenResponse(struct soap *soap, _interswitch__ResendActivationTokenResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__ResendActivationTokenResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__ResendActivationTokenResponse * SOAP_FMAC2 soap_instantiate__interswitch__ResendActivationTokenResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__ResendActivationTokenResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__ResendActivationTokenResponse); + if (size) + *size = sizeof(_interswitch__ResendActivationTokenResponse); + ((_interswitch__ResendActivationTokenResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__ResendActivationTokenResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__ResendActivationTokenResponse); + for (int i = 0; i < n; i++) + ((_interswitch__ResendActivationTokenResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__ResendActivationTokenResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ResendActivationTokenResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__ResendActivationTokenResponse %p -> %p\n", q, p)); + *(_interswitch__ResendActivationTokenResponse*)p = *(_interswitch__ResendActivationTokenResponse*)q; +} + +void _interswitch__ResendActivationToken::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__ResendActivationToken::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__ResendActivationToken::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__ResendActivationToken::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__ResendActivationToken::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__ResendActivationToken(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ResendActivationToken(struct soap *soap, const char *tag, int id, const _interswitch__ResendActivationToken *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__ResendActivationToken), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__ResendActivationToken::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__ResendActivationToken::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__ResendActivationToken(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__ResendActivationToken * SOAP_FMAC4 soap_in__interswitch__ResendActivationToken(struct soap *soap, const char *tag, _interswitch__ResendActivationToken *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__ResendActivationToken *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__ResendActivationToken, sizeof(_interswitch__ResendActivationToken), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__ResendActivationToken) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__ResendActivationToken *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__ResendActivationToken::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__ResendActivationToken *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__ResendActivationToken, 0, sizeof(_interswitch__ResendActivationToken), 0, soap_copy__interswitch__ResendActivationToken); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__ResendActivationToken::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__ResendActivationToken); + if (this->soap_out(soap, tag?tag:"interswitch:ResendActivationToken", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__ResendActivationToken::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__ResendActivationToken(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__ResendActivationToken * SOAP_FMAC4 soap_get__interswitch__ResendActivationToken(struct soap *soap, _interswitch__ResendActivationToken *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__ResendActivationToken(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__ResendActivationToken * SOAP_FMAC2 soap_instantiate__interswitch__ResendActivationToken(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__ResendActivationToken(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__ResendActivationToken, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__ResendActivationToken); + if (size) + *size = sizeof(_interswitch__ResendActivationToken); + ((_interswitch__ResendActivationToken*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__ResendActivationToken[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__ResendActivationToken); + for (int i = 0; i < n; i++) + ((_interswitch__ResendActivationToken*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__ResendActivationToken*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ResendActivationToken(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__ResendActivationToken %p -> %p\n", q, p)); + *(_interswitch__ResendActivationToken*)p = *(_interswitch__ResendActivationToken*)q; +} + +void _interswitch__EditCustomerBillerAccountResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__EditCustomerBillerAccountResponse::EditCustomerBillerAccountResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__EditCustomerBillerAccountResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__EditCustomerBillerAccountResponse::EditCustomerBillerAccountResult); + /* transient soap skipped */ +} + +int _interswitch__EditCustomerBillerAccountResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__EditCustomerBillerAccountResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__EditCustomerBillerAccountResponse(struct soap *soap, const char *tag, int id, const _interswitch__EditCustomerBillerAccountResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse), type)) + return soap->error; + if (a->EditCustomerBillerAccountResult) + soap_element_result(soap, "interswitch:EditCustomerBillerAccountResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:EditCustomerBillerAccountResult", -1, &(a->_interswitch__EditCustomerBillerAccountResponse::EditCustomerBillerAccountResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__EditCustomerBillerAccountResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__EditCustomerBillerAccountResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__EditCustomerBillerAccountResponse * SOAP_FMAC4 soap_in__interswitch__EditCustomerBillerAccountResponse(struct soap *soap, const char *tag, _interswitch__EditCustomerBillerAccountResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__EditCustomerBillerAccountResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse, sizeof(_interswitch__EditCustomerBillerAccountResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__EditCustomerBillerAccountResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_EditCustomerBillerAccountResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_EditCustomerBillerAccountResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:EditCustomerBillerAccountResult", &(a->_interswitch__EditCustomerBillerAccountResponse::EditCustomerBillerAccountResult), "xsd:string")) + { soap_flag_EditCustomerBillerAccountResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:EditCustomerBillerAccountResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__EditCustomerBillerAccountResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse, 0, sizeof(_interswitch__EditCustomerBillerAccountResponse), 0, soap_copy__interswitch__EditCustomerBillerAccountResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__EditCustomerBillerAccountResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse); + if (this->soap_out(soap, tag?tag:"interswitch:EditCustomerBillerAccountResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__EditCustomerBillerAccountResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__EditCustomerBillerAccountResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__EditCustomerBillerAccountResponse * SOAP_FMAC4 soap_get__interswitch__EditCustomerBillerAccountResponse(struct soap *soap, _interswitch__EditCustomerBillerAccountResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__EditCustomerBillerAccountResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__EditCustomerBillerAccountResponse * SOAP_FMAC2 soap_instantiate__interswitch__EditCustomerBillerAccountResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__EditCustomerBillerAccountResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__EditCustomerBillerAccountResponse); + if (size) + *size = sizeof(_interswitch__EditCustomerBillerAccountResponse); + ((_interswitch__EditCustomerBillerAccountResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__EditCustomerBillerAccountResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__EditCustomerBillerAccountResponse); + for (int i = 0; i < n; i++) + ((_interswitch__EditCustomerBillerAccountResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__EditCustomerBillerAccountResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__EditCustomerBillerAccountResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__EditCustomerBillerAccountResponse %p -> %p\n", q, p)); + *(_interswitch__EditCustomerBillerAccountResponse*)p = *(_interswitch__EditCustomerBillerAccountResponse*)q; +} + +void _interswitch__EditCustomerBillerAccount::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__EditCustomerBillerAccount::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__EditCustomerBillerAccount::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__EditCustomerBillerAccount::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__EditCustomerBillerAccount::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__EditCustomerBillerAccount(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__EditCustomerBillerAccount(struct soap *soap, const char *tag, int id, const _interswitch__EditCustomerBillerAccount *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__EditCustomerBillerAccount::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__EditCustomerBillerAccount::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__EditCustomerBillerAccount(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__EditCustomerBillerAccount * SOAP_FMAC4 soap_in__interswitch__EditCustomerBillerAccount(struct soap *soap, const char *tag, _interswitch__EditCustomerBillerAccount *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__EditCustomerBillerAccount *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount, sizeof(_interswitch__EditCustomerBillerAccount), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__EditCustomerBillerAccount *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__EditCustomerBillerAccount::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__EditCustomerBillerAccount *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount, 0, sizeof(_interswitch__EditCustomerBillerAccount), 0, soap_copy__interswitch__EditCustomerBillerAccount); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__EditCustomerBillerAccount::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount); + if (this->soap_out(soap, tag?tag:"interswitch:EditCustomerBillerAccount", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__EditCustomerBillerAccount::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__EditCustomerBillerAccount(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__EditCustomerBillerAccount * SOAP_FMAC4 soap_get__interswitch__EditCustomerBillerAccount(struct soap *soap, _interswitch__EditCustomerBillerAccount *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__EditCustomerBillerAccount(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__EditCustomerBillerAccount * SOAP_FMAC2 soap_instantiate__interswitch__EditCustomerBillerAccount(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__EditCustomerBillerAccount(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__EditCustomerBillerAccount); + if (size) + *size = sizeof(_interswitch__EditCustomerBillerAccount); + ((_interswitch__EditCustomerBillerAccount*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__EditCustomerBillerAccount[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__EditCustomerBillerAccount); + for (int i = 0; i < n; i++) + ((_interswitch__EditCustomerBillerAccount*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__EditCustomerBillerAccount*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__EditCustomerBillerAccount(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__EditCustomerBillerAccount %p -> %p\n", q, p)); + *(_interswitch__EditCustomerBillerAccount*)p = *(_interswitch__EditCustomerBillerAccount*)q; +} + +void _interswitch__GetBillersCollectionsAccountResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetBillersCollectionsAccountResponse::GetBillersCollectionsAccountResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetBillersCollectionsAccountResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetBillersCollectionsAccountResponse::GetBillersCollectionsAccountResult); + /* transient soap skipped */ +} + +int _interswitch__GetBillersCollectionsAccountResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetBillersCollectionsAccountResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetBillersCollectionsAccountResponse(struct soap *soap, const char *tag, int id, const _interswitch__GetBillersCollectionsAccountResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse), type)) + return soap->error; + if (a->GetBillersCollectionsAccountResult) + soap_element_result(soap, "interswitch:GetBillersCollectionsAccountResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:GetBillersCollectionsAccountResult", -1, &(a->_interswitch__GetBillersCollectionsAccountResponse::GetBillersCollectionsAccountResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetBillersCollectionsAccountResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetBillersCollectionsAccountResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetBillersCollectionsAccountResponse * SOAP_FMAC4 soap_in__interswitch__GetBillersCollectionsAccountResponse(struct soap *soap, const char *tag, _interswitch__GetBillersCollectionsAccountResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetBillersCollectionsAccountResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse, sizeof(_interswitch__GetBillersCollectionsAccountResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetBillersCollectionsAccountResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_GetBillersCollectionsAccountResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_GetBillersCollectionsAccountResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:GetBillersCollectionsAccountResult", &(a->_interswitch__GetBillersCollectionsAccountResponse::GetBillersCollectionsAccountResult), "xsd:string")) + { soap_flag_GetBillersCollectionsAccountResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:GetBillersCollectionsAccountResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetBillersCollectionsAccountResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse, 0, sizeof(_interswitch__GetBillersCollectionsAccountResponse), 0, soap_copy__interswitch__GetBillersCollectionsAccountResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetBillersCollectionsAccountResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse); + if (this->soap_out(soap, tag?tag:"interswitch:GetBillersCollectionsAccountResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetBillersCollectionsAccountResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetBillersCollectionsAccountResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetBillersCollectionsAccountResponse * SOAP_FMAC4 soap_get__interswitch__GetBillersCollectionsAccountResponse(struct soap *soap, _interswitch__GetBillersCollectionsAccountResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetBillersCollectionsAccountResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetBillersCollectionsAccountResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetBillersCollectionsAccountResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetBillersCollectionsAccountResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetBillersCollectionsAccountResponse); + if (size) + *size = sizeof(_interswitch__GetBillersCollectionsAccountResponse); + ((_interswitch__GetBillersCollectionsAccountResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetBillersCollectionsAccountResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetBillersCollectionsAccountResponse); + for (int i = 0; i < n; i++) + ((_interswitch__GetBillersCollectionsAccountResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetBillersCollectionsAccountResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetBillersCollectionsAccountResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetBillersCollectionsAccountResponse %p -> %p\n", q, p)); + *(_interswitch__GetBillersCollectionsAccountResponse*)p = *(_interswitch__GetBillersCollectionsAccountResponse*)q; +} + +void _interswitch__GetBillersCollectionsAccount::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetBillersCollectionsAccount::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetBillersCollectionsAccount::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetBillersCollectionsAccount::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__GetBillersCollectionsAccount::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetBillersCollectionsAccount(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetBillersCollectionsAccount(struct soap *soap, const char *tag, int id, const _interswitch__GetBillersCollectionsAccount *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__GetBillersCollectionsAccount::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetBillersCollectionsAccount::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetBillersCollectionsAccount(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetBillersCollectionsAccount * SOAP_FMAC4 soap_in__interswitch__GetBillersCollectionsAccount(struct soap *soap, const char *tag, _interswitch__GetBillersCollectionsAccount *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetBillersCollectionsAccount *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount, sizeof(_interswitch__GetBillersCollectionsAccount), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetBillersCollectionsAccount *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__GetBillersCollectionsAccount::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetBillersCollectionsAccount *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount, 0, sizeof(_interswitch__GetBillersCollectionsAccount), 0, soap_copy__interswitch__GetBillersCollectionsAccount); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetBillersCollectionsAccount::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount); + if (this->soap_out(soap, tag?tag:"interswitch:GetBillersCollectionsAccount", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetBillersCollectionsAccount::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetBillersCollectionsAccount(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetBillersCollectionsAccount * SOAP_FMAC4 soap_get__interswitch__GetBillersCollectionsAccount(struct soap *soap, _interswitch__GetBillersCollectionsAccount *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetBillersCollectionsAccount(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetBillersCollectionsAccount * SOAP_FMAC2 soap_instantiate__interswitch__GetBillersCollectionsAccount(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetBillersCollectionsAccount(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetBillersCollectionsAccount); + if (size) + *size = sizeof(_interswitch__GetBillersCollectionsAccount); + ((_interswitch__GetBillersCollectionsAccount*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetBillersCollectionsAccount[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetBillersCollectionsAccount); + for (int i = 0; i < n; i++) + ((_interswitch__GetBillersCollectionsAccount*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetBillersCollectionsAccount*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetBillersCollectionsAccount(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetBillersCollectionsAccount %p -> %p\n", q, p)); + *(_interswitch__GetBillersCollectionsAccount*)p = *(_interswitch__GetBillersCollectionsAccount*)q; +} + +void _interswitch__GetCollectionsAccountResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetCollectionsAccountResponse::GetCollectionsAccountResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetCollectionsAccountResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetCollectionsAccountResponse::GetCollectionsAccountResult); + /* transient soap skipped */ +} + +int _interswitch__GetCollectionsAccountResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetCollectionsAccountResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetCollectionsAccountResponse(struct soap *soap, const char *tag, int id, const _interswitch__GetCollectionsAccountResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse), type)) + return soap->error; + if (a->GetCollectionsAccountResult) + soap_element_result(soap, "interswitch:GetCollectionsAccountResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:GetCollectionsAccountResult", -1, &(a->_interswitch__GetCollectionsAccountResponse::GetCollectionsAccountResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetCollectionsAccountResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetCollectionsAccountResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetCollectionsAccountResponse * SOAP_FMAC4 soap_in__interswitch__GetCollectionsAccountResponse(struct soap *soap, const char *tag, _interswitch__GetCollectionsAccountResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetCollectionsAccountResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse, sizeof(_interswitch__GetCollectionsAccountResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetCollectionsAccountResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_GetCollectionsAccountResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_GetCollectionsAccountResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:GetCollectionsAccountResult", &(a->_interswitch__GetCollectionsAccountResponse::GetCollectionsAccountResult), "xsd:string")) + { soap_flag_GetCollectionsAccountResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:GetCollectionsAccountResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetCollectionsAccountResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse, 0, sizeof(_interswitch__GetCollectionsAccountResponse), 0, soap_copy__interswitch__GetCollectionsAccountResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetCollectionsAccountResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse); + if (this->soap_out(soap, tag?tag:"interswitch:GetCollectionsAccountResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetCollectionsAccountResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetCollectionsAccountResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetCollectionsAccountResponse * SOAP_FMAC4 soap_get__interswitch__GetCollectionsAccountResponse(struct soap *soap, _interswitch__GetCollectionsAccountResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetCollectionsAccountResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetCollectionsAccountResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetCollectionsAccountResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetCollectionsAccountResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetCollectionsAccountResponse); + if (size) + *size = sizeof(_interswitch__GetCollectionsAccountResponse); + ((_interswitch__GetCollectionsAccountResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetCollectionsAccountResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetCollectionsAccountResponse); + for (int i = 0; i < n; i++) + ((_interswitch__GetCollectionsAccountResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetCollectionsAccountResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetCollectionsAccountResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetCollectionsAccountResponse %p -> %p\n", q, p)); + *(_interswitch__GetCollectionsAccountResponse*)p = *(_interswitch__GetCollectionsAccountResponse*)q; +} + +void _interswitch__GetCollectionsAccount::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetCollectionsAccount::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetCollectionsAccount::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetCollectionsAccount::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__GetCollectionsAccount::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetCollectionsAccount(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetCollectionsAccount(struct soap *soap, const char *tag, int id, const _interswitch__GetCollectionsAccount *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__GetCollectionsAccount::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetCollectionsAccount::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetCollectionsAccount(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetCollectionsAccount * SOAP_FMAC4 soap_in__interswitch__GetCollectionsAccount(struct soap *soap, const char *tag, _interswitch__GetCollectionsAccount *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetCollectionsAccount *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount, sizeof(_interswitch__GetCollectionsAccount), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetCollectionsAccount *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__GetCollectionsAccount::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetCollectionsAccount *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount, 0, sizeof(_interswitch__GetCollectionsAccount), 0, soap_copy__interswitch__GetCollectionsAccount); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetCollectionsAccount::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount); + if (this->soap_out(soap, tag?tag:"interswitch:GetCollectionsAccount", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetCollectionsAccount::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetCollectionsAccount(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetCollectionsAccount * SOAP_FMAC4 soap_get__interswitch__GetCollectionsAccount(struct soap *soap, _interswitch__GetCollectionsAccount *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetCollectionsAccount(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetCollectionsAccount * SOAP_FMAC2 soap_instantiate__interswitch__GetCollectionsAccount(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetCollectionsAccount(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetCollectionsAccount); + if (size) + *size = sizeof(_interswitch__GetCollectionsAccount); + ((_interswitch__GetCollectionsAccount*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetCollectionsAccount[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetCollectionsAccount); + for (int i = 0; i < n; i++) + ((_interswitch__GetCollectionsAccount*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetCollectionsAccount*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetCollectionsAccount(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetCollectionsAccount %p -> %p\n", q, p)); + *(_interswitch__GetCollectionsAccount*)p = *(_interswitch__GetCollectionsAccount*)q; +} + +void _interswitch__AddBillerCustomerResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__AddBillerCustomerResponse::AddBillerCustomerResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__AddBillerCustomerResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__AddBillerCustomerResponse::AddBillerCustomerResult); + /* transient soap skipped */ +} + +int _interswitch__AddBillerCustomerResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__AddBillerCustomerResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AddBillerCustomerResponse(struct soap *soap, const char *tag, int id, const _interswitch__AddBillerCustomerResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse), type)) + return soap->error; + if (a->AddBillerCustomerResult) + soap_element_result(soap, "interswitch:AddBillerCustomerResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:AddBillerCustomerResult", -1, &(a->_interswitch__AddBillerCustomerResponse::AddBillerCustomerResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__AddBillerCustomerResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__AddBillerCustomerResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__AddBillerCustomerResponse * SOAP_FMAC4 soap_in__interswitch__AddBillerCustomerResponse(struct soap *soap, const char *tag, _interswitch__AddBillerCustomerResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__AddBillerCustomerResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse, sizeof(_interswitch__AddBillerCustomerResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__AddBillerCustomerResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_AddBillerCustomerResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_AddBillerCustomerResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:AddBillerCustomerResult", &(a->_interswitch__AddBillerCustomerResponse::AddBillerCustomerResult), "xsd:string")) + { soap_flag_AddBillerCustomerResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:AddBillerCustomerResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__AddBillerCustomerResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse, 0, sizeof(_interswitch__AddBillerCustomerResponse), 0, soap_copy__interswitch__AddBillerCustomerResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__AddBillerCustomerResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse); + if (this->soap_out(soap, tag?tag:"interswitch:AddBillerCustomerResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__AddBillerCustomerResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__AddBillerCustomerResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__AddBillerCustomerResponse * SOAP_FMAC4 soap_get__interswitch__AddBillerCustomerResponse(struct soap *soap, _interswitch__AddBillerCustomerResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__AddBillerCustomerResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__AddBillerCustomerResponse * SOAP_FMAC2 soap_instantiate__interswitch__AddBillerCustomerResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__AddBillerCustomerResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__AddBillerCustomerResponse); + if (size) + *size = sizeof(_interswitch__AddBillerCustomerResponse); + ((_interswitch__AddBillerCustomerResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__AddBillerCustomerResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__AddBillerCustomerResponse); + for (int i = 0; i < n; i++) + ((_interswitch__AddBillerCustomerResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__AddBillerCustomerResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AddBillerCustomerResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__AddBillerCustomerResponse %p -> %p\n", q, p)); + *(_interswitch__AddBillerCustomerResponse*)p = *(_interswitch__AddBillerCustomerResponse*)q; +} + +void _interswitch__AddBillerCustomer::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__AddBillerCustomer::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__AddBillerCustomer::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__AddBillerCustomer::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__AddBillerCustomer::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__AddBillerCustomer(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AddBillerCustomer(struct soap *soap, const char *tag, int id, const _interswitch__AddBillerCustomer *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__AddBillerCustomer), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__AddBillerCustomer::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__AddBillerCustomer::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__AddBillerCustomer(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__AddBillerCustomer * SOAP_FMAC4 soap_in__interswitch__AddBillerCustomer(struct soap *soap, const char *tag, _interswitch__AddBillerCustomer *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__AddBillerCustomer *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__AddBillerCustomer, sizeof(_interswitch__AddBillerCustomer), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__AddBillerCustomer) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__AddBillerCustomer *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__AddBillerCustomer::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__AddBillerCustomer *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__AddBillerCustomer, 0, sizeof(_interswitch__AddBillerCustomer), 0, soap_copy__interswitch__AddBillerCustomer); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__AddBillerCustomer::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__AddBillerCustomer); + if (this->soap_out(soap, tag?tag:"interswitch:AddBillerCustomer", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__AddBillerCustomer::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__AddBillerCustomer(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__AddBillerCustomer * SOAP_FMAC4 soap_get__interswitch__AddBillerCustomer(struct soap *soap, _interswitch__AddBillerCustomer *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__AddBillerCustomer(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__AddBillerCustomer * SOAP_FMAC2 soap_instantiate__interswitch__AddBillerCustomer(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__AddBillerCustomer(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__AddBillerCustomer, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__AddBillerCustomer); + if (size) + *size = sizeof(_interswitch__AddBillerCustomer); + ((_interswitch__AddBillerCustomer*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__AddBillerCustomer[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__AddBillerCustomer); + for (int i = 0; i < n; i++) + ((_interswitch__AddBillerCustomer*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__AddBillerCustomer*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AddBillerCustomer(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__AddBillerCustomer %p -> %p\n", q, p)); + *(_interswitch__AddBillerCustomer*)p = *(_interswitch__AddBillerCustomer*)q; +} + +void _interswitch__GetCustomerPaymentsResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetCustomerPaymentsResponse::GetCustomerPaymentsResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetCustomerPaymentsResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetCustomerPaymentsResponse::GetCustomerPaymentsResult); + /* transient soap skipped */ +} + +int _interswitch__GetCustomerPaymentsResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetCustomerPaymentsResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetCustomerPaymentsResponse(struct soap *soap, const char *tag, int id, const _interswitch__GetCustomerPaymentsResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse), type)) + return soap->error; + if (a->GetCustomerPaymentsResult) + soap_element_result(soap, "interswitch:GetCustomerPaymentsResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:GetCustomerPaymentsResult", -1, &(a->_interswitch__GetCustomerPaymentsResponse::GetCustomerPaymentsResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetCustomerPaymentsResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetCustomerPaymentsResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetCustomerPaymentsResponse * SOAP_FMAC4 soap_in__interswitch__GetCustomerPaymentsResponse(struct soap *soap, const char *tag, _interswitch__GetCustomerPaymentsResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetCustomerPaymentsResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse, sizeof(_interswitch__GetCustomerPaymentsResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetCustomerPaymentsResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_GetCustomerPaymentsResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_GetCustomerPaymentsResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:GetCustomerPaymentsResult", &(a->_interswitch__GetCustomerPaymentsResponse::GetCustomerPaymentsResult), "xsd:string")) + { soap_flag_GetCustomerPaymentsResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:GetCustomerPaymentsResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetCustomerPaymentsResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse, 0, sizeof(_interswitch__GetCustomerPaymentsResponse), 0, soap_copy__interswitch__GetCustomerPaymentsResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetCustomerPaymentsResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse); + if (this->soap_out(soap, tag?tag:"interswitch:GetCustomerPaymentsResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetCustomerPaymentsResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetCustomerPaymentsResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetCustomerPaymentsResponse * SOAP_FMAC4 soap_get__interswitch__GetCustomerPaymentsResponse(struct soap *soap, _interswitch__GetCustomerPaymentsResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetCustomerPaymentsResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetCustomerPaymentsResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetCustomerPaymentsResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetCustomerPaymentsResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetCustomerPaymentsResponse); + if (size) + *size = sizeof(_interswitch__GetCustomerPaymentsResponse); + ((_interswitch__GetCustomerPaymentsResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetCustomerPaymentsResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetCustomerPaymentsResponse); + for (int i = 0; i < n; i++) + ((_interswitch__GetCustomerPaymentsResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetCustomerPaymentsResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetCustomerPaymentsResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetCustomerPaymentsResponse %p -> %p\n", q, p)); + *(_interswitch__GetCustomerPaymentsResponse*)p = *(_interswitch__GetCustomerPaymentsResponse*)q; +} + +void _interswitch__GetCustomerPayments::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetCustomerPayments::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetCustomerPayments::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetCustomerPayments::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__GetCustomerPayments::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetCustomerPayments(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetCustomerPayments(struct soap *soap, const char *tag, int id, const _interswitch__GetCustomerPayments *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetCustomerPayments), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__GetCustomerPayments::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetCustomerPayments::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetCustomerPayments(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetCustomerPayments * SOAP_FMAC4 soap_in__interswitch__GetCustomerPayments(struct soap *soap, const char *tag, _interswitch__GetCustomerPayments *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetCustomerPayments *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetCustomerPayments, sizeof(_interswitch__GetCustomerPayments), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetCustomerPayments) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetCustomerPayments *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__GetCustomerPayments::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetCustomerPayments *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetCustomerPayments, 0, sizeof(_interswitch__GetCustomerPayments), 0, soap_copy__interswitch__GetCustomerPayments); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetCustomerPayments::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetCustomerPayments); + if (this->soap_out(soap, tag?tag:"interswitch:GetCustomerPayments", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetCustomerPayments::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetCustomerPayments(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetCustomerPayments * SOAP_FMAC4 soap_get__interswitch__GetCustomerPayments(struct soap *soap, _interswitch__GetCustomerPayments *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetCustomerPayments(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetCustomerPayments * SOAP_FMAC2 soap_instantiate__interswitch__GetCustomerPayments(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetCustomerPayments(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetCustomerPayments, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetCustomerPayments); + if (size) + *size = sizeof(_interswitch__GetCustomerPayments); + ((_interswitch__GetCustomerPayments*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetCustomerPayments[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetCustomerPayments); + for (int i = 0; i < n; i++) + ((_interswitch__GetCustomerPayments*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetCustomerPayments*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetCustomerPayments(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetCustomerPayments %p -> %p\n", q, p)); + *(_interswitch__GetCustomerPayments*)p = *(_interswitch__GetCustomerPayments*)q; +} + +void _interswitch__GetCustomerBillerAccountsResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetCustomerBillerAccountsResponse::GetCustomerBillerAccountsResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetCustomerBillerAccountsResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetCustomerBillerAccountsResponse::GetCustomerBillerAccountsResult); + /* transient soap skipped */ +} + +int _interswitch__GetCustomerBillerAccountsResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetCustomerBillerAccountsResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetCustomerBillerAccountsResponse(struct soap *soap, const char *tag, int id, const _interswitch__GetCustomerBillerAccountsResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse), type)) + return soap->error; + if (a->GetCustomerBillerAccountsResult) + soap_element_result(soap, "interswitch:GetCustomerBillerAccountsResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:GetCustomerBillerAccountsResult", -1, &(a->_interswitch__GetCustomerBillerAccountsResponse::GetCustomerBillerAccountsResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetCustomerBillerAccountsResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetCustomerBillerAccountsResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetCustomerBillerAccountsResponse * SOAP_FMAC4 soap_in__interswitch__GetCustomerBillerAccountsResponse(struct soap *soap, const char *tag, _interswitch__GetCustomerBillerAccountsResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetCustomerBillerAccountsResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse, sizeof(_interswitch__GetCustomerBillerAccountsResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetCustomerBillerAccountsResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_GetCustomerBillerAccountsResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_GetCustomerBillerAccountsResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:GetCustomerBillerAccountsResult", &(a->_interswitch__GetCustomerBillerAccountsResponse::GetCustomerBillerAccountsResult), "xsd:string")) + { soap_flag_GetCustomerBillerAccountsResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:GetCustomerBillerAccountsResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetCustomerBillerAccountsResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse, 0, sizeof(_interswitch__GetCustomerBillerAccountsResponse), 0, soap_copy__interswitch__GetCustomerBillerAccountsResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetCustomerBillerAccountsResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse); + if (this->soap_out(soap, tag?tag:"interswitch:GetCustomerBillerAccountsResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetCustomerBillerAccountsResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetCustomerBillerAccountsResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetCustomerBillerAccountsResponse * SOAP_FMAC4 soap_get__interswitch__GetCustomerBillerAccountsResponse(struct soap *soap, _interswitch__GetCustomerBillerAccountsResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetCustomerBillerAccountsResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetCustomerBillerAccountsResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetCustomerBillerAccountsResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetCustomerBillerAccountsResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetCustomerBillerAccountsResponse); + if (size) + *size = sizeof(_interswitch__GetCustomerBillerAccountsResponse); + ((_interswitch__GetCustomerBillerAccountsResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetCustomerBillerAccountsResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetCustomerBillerAccountsResponse); + for (int i = 0; i < n; i++) + ((_interswitch__GetCustomerBillerAccountsResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetCustomerBillerAccountsResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetCustomerBillerAccountsResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetCustomerBillerAccountsResponse %p -> %p\n", q, p)); + *(_interswitch__GetCustomerBillerAccountsResponse*)p = *(_interswitch__GetCustomerBillerAccountsResponse*)q; +} + +void _interswitch__GetCustomerBillerAccounts::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetCustomerBillerAccounts::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetCustomerBillerAccounts::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetCustomerBillerAccounts::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__GetCustomerBillerAccounts::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetCustomerBillerAccounts(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetCustomerBillerAccounts(struct soap *soap, const char *tag, int id, const _interswitch__GetCustomerBillerAccounts *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__GetCustomerBillerAccounts::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetCustomerBillerAccounts::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetCustomerBillerAccounts(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetCustomerBillerAccounts * SOAP_FMAC4 soap_in__interswitch__GetCustomerBillerAccounts(struct soap *soap, const char *tag, _interswitch__GetCustomerBillerAccounts *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetCustomerBillerAccounts *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts, sizeof(_interswitch__GetCustomerBillerAccounts), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetCustomerBillerAccounts *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__GetCustomerBillerAccounts::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetCustomerBillerAccounts *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts, 0, sizeof(_interswitch__GetCustomerBillerAccounts), 0, soap_copy__interswitch__GetCustomerBillerAccounts); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetCustomerBillerAccounts::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts); + if (this->soap_out(soap, tag?tag:"interswitch:GetCustomerBillerAccounts", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetCustomerBillerAccounts::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetCustomerBillerAccounts(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetCustomerBillerAccounts * SOAP_FMAC4 soap_get__interswitch__GetCustomerBillerAccounts(struct soap *soap, _interswitch__GetCustomerBillerAccounts *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetCustomerBillerAccounts(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetCustomerBillerAccounts * SOAP_FMAC2 soap_instantiate__interswitch__GetCustomerBillerAccounts(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetCustomerBillerAccounts(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetCustomerBillerAccounts); + if (size) + *size = sizeof(_interswitch__GetCustomerBillerAccounts); + ((_interswitch__GetCustomerBillerAccounts*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetCustomerBillerAccounts[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetCustomerBillerAccounts); + for (int i = 0; i < n; i++) + ((_interswitch__GetCustomerBillerAccounts*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetCustomerBillerAccounts*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetCustomerBillerAccounts(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetCustomerBillerAccounts %p -> %p\n", q, p)); + *(_interswitch__GetCustomerBillerAccounts*)p = *(_interswitch__GetCustomerBillerAccounts*)q; +} + +void _interswitch__AddCustomerBillerAccountResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__AddCustomerBillerAccountResponse::AddCustomerBillerAccountResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__AddCustomerBillerAccountResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__AddCustomerBillerAccountResponse::AddCustomerBillerAccountResult); + /* transient soap skipped */ +} + +int _interswitch__AddCustomerBillerAccountResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__AddCustomerBillerAccountResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AddCustomerBillerAccountResponse(struct soap *soap, const char *tag, int id, const _interswitch__AddCustomerBillerAccountResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse), type)) + return soap->error; + if (a->AddCustomerBillerAccountResult) + soap_element_result(soap, "interswitch:AddCustomerBillerAccountResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:AddCustomerBillerAccountResult", -1, &(a->_interswitch__AddCustomerBillerAccountResponse::AddCustomerBillerAccountResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__AddCustomerBillerAccountResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__AddCustomerBillerAccountResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__AddCustomerBillerAccountResponse * SOAP_FMAC4 soap_in__interswitch__AddCustomerBillerAccountResponse(struct soap *soap, const char *tag, _interswitch__AddCustomerBillerAccountResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__AddCustomerBillerAccountResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse, sizeof(_interswitch__AddCustomerBillerAccountResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__AddCustomerBillerAccountResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_AddCustomerBillerAccountResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_AddCustomerBillerAccountResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:AddCustomerBillerAccountResult", &(a->_interswitch__AddCustomerBillerAccountResponse::AddCustomerBillerAccountResult), "xsd:string")) + { soap_flag_AddCustomerBillerAccountResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:AddCustomerBillerAccountResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__AddCustomerBillerAccountResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse, 0, sizeof(_interswitch__AddCustomerBillerAccountResponse), 0, soap_copy__interswitch__AddCustomerBillerAccountResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__AddCustomerBillerAccountResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse); + if (this->soap_out(soap, tag?tag:"interswitch:AddCustomerBillerAccountResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__AddCustomerBillerAccountResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__AddCustomerBillerAccountResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__AddCustomerBillerAccountResponse * SOAP_FMAC4 soap_get__interswitch__AddCustomerBillerAccountResponse(struct soap *soap, _interswitch__AddCustomerBillerAccountResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__AddCustomerBillerAccountResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__AddCustomerBillerAccountResponse * SOAP_FMAC2 soap_instantiate__interswitch__AddCustomerBillerAccountResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__AddCustomerBillerAccountResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__AddCustomerBillerAccountResponse); + if (size) + *size = sizeof(_interswitch__AddCustomerBillerAccountResponse); + ((_interswitch__AddCustomerBillerAccountResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__AddCustomerBillerAccountResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__AddCustomerBillerAccountResponse); + for (int i = 0; i < n; i++) + ((_interswitch__AddCustomerBillerAccountResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__AddCustomerBillerAccountResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AddCustomerBillerAccountResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__AddCustomerBillerAccountResponse %p -> %p\n", q, p)); + *(_interswitch__AddCustomerBillerAccountResponse*)p = *(_interswitch__AddCustomerBillerAccountResponse*)q; +} + +void _interswitch__AddCustomerBillerAccount::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__AddCustomerBillerAccount::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__AddCustomerBillerAccount::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__AddCustomerBillerAccount::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__AddCustomerBillerAccount::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__AddCustomerBillerAccount(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AddCustomerBillerAccount(struct soap *soap, const char *tag, int id, const _interswitch__AddCustomerBillerAccount *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__AddCustomerBillerAccount::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__AddCustomerBillerAccount::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__AddCustomerBillerAccount(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__AddCustomerBillerAccount * SOAP_FMAC4 soap_in__interswitch__AddCustomerBillerAccount(struct soap *soap, const char *tag, _interswitch__AddCustomerBillerAccount *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__AddCustomerBillerAccount *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount, sizeof(_interswitch__AddCustomerBillerAccount), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__AddCustomerBillerAccount *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__AddCustomerBillerAccount::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__AddCustomerBillerAccount *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount, 0, sizeof(_interswitch__AddCustomerBillerAccount), 0, soap_copy__interswitch__AddCustomerBillerAccount); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__AddCustomerBillerAccount::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount); + if (this->soap_out(soap, tag?tag:"interswitch:AddCustomerBillerAccount", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__AddCustomerBillerAccount::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__AddCustomerBillerAccount(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__AddCustomerBillerAccount * SOAP_FMAC4 soap_get__interswitch__AddCustomerBillerAccount(struct soap *soap, _interswitch__AddCustomerBillerAccount *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__AddCustomerBillerAccount(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__AddCustomerBillerAccount * SOAP_FMAC2 soap_instantiate__interswitch__AddCustomerBillerAccount(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__AddCustomerBillerAccount(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__AddCustomerBillerAccount); + if (size) + *size = sizeof(_interswitch__AddCustomerBillerAccount); + ((_interswitch__AddCustomerBillerAccount*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__AddCustomerBillerAccount[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__AddCustomerBillerAccount); + for (int i = 0; i < n; i++) + ((_interswitch__AddCustomerBillerAccount*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__AddCustomerBillerAccount*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AddCustomerBillerAccount(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__AddCustomerBillerAccount %p -> %p\n", q, p)); + *(_interswitch__AddCustomerBillerAccount*)p = *(_interswitch__AddCustomerBillerAccount*)q; +} + +void _interswitch__SendPaymentsResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__SendPaymentsResponse::SendPaymentsResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__SendPaymentsResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__SendPaymentsResponse::SendPaymentsResult); + /* transient soap skipped */ +} + +int _interswitch__SendPaymentsResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__SendPaymentsResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__SendPaymentsResponse(struct soap *soap, const char *tag, int id, const _interswitch__SendPaymentsResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse), type)) + return soap->error; + if (a->SendPaymentsResult) + soap_element_result(soap, "interswitch:SendPaymentsResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:SendPaymentsResult", -1, &(a->_interswitch__SendPaymentsResponse::SendPaymentsResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__SendPaymentsResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__SendPaymentsResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__SendPaymentsResponse * SOAP_FMAC4 soap_in__interswitch__SendPaymentsResponse(struct soap *soap, const char *tag, _interswitch__SendPaymentsResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__SendPaymentsResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse, sizeof(_interswitch__SendPaymentsResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__SendPaymentsResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_SendPaymentsResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_SendPaymentsResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:SendPaymentsResult", &(a->_interswitch__SendPaymentsResponse::SendPaymentsResult), "xsd:string")) + { soap_flag_SendPaymentsResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:SendPaymentsResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__SendPaymentsResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse, 0, sizeof(_interswitch__SendPaymentsResponse), 0, soap_copy__interswitch__SendPaymentsResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__SendPaymentsResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse); + if (this->soap_out(soap, tag?tag:"interswitch:SendPaymentsResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__SendPaymentsResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__SendPaymentsResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__SendPaymentsResponse * SOAP_FMAC4 soap_get__interswitch__SendPaymentsResponse(struct soap *soap, _interswitch__SendPaymentsResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__SendPaymentsResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__SendPaymentsResponse * SOAP_FMAC2 soap_instantiate__interswitch__SendPaymentsResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__SendPaymentsResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__SendPaymentsResponse); + if (size) + *size = sizeof(_interswitch__SendPaymentsResponse); + ((_interswitch__SendPaymentsResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__SendPaymentsResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__SendPaymentsResponse); + for (int i = 0; i < n; i++) + ((_interswitch__SendPaymentsResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__SendPaymentsResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__SendPaymentsResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__SendPaymentsResponse %p -> %p\n", q, p)); + *(_interswitch__SendPaymentsResponse*)p = *(_interswitch__SendPaymentsResponse*)q; +} + +void _interswitch__SendPayments::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__SendPayments::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__SendPayments::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__SendPayments::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__SendPayments::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__SendPayments(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__SendPayments(struct soap *soap, const char *tag, int id, const _interswitch__SendPayments *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__SendPayments), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__SendPayments::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__SendPayments::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__SendPayments(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__SendPayments * SOAP_FMAC4 soap_in__interswitch__SendPayments(struct soap *soap, const char *tag, _interswitch__SendPayments *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__SendPayments *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__SendPayments, sizeof(_interswitch__SendPayments), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__SendPayments) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__SendPayments *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__SendPayments::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__SendPayments *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__SendPayments, 0, sizeof(_interswitch__SendPayments), 0, soap_copy__interswitch__SendPayments); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__SendPayments::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__SendPayments); + if (this->soap_out(soap, tag?tag:"interswitch:SendPayments", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__SendPayments::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__SendPayments(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__SendPayments * SOAP_FMAC4 soap_get__interswitch__SendPayments(struct soap *soap, _interswitch__SendPayments *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__SendPayments(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__SendPayments * SOAP_FMAC2 soap_instantiate__interswitch__SendPayments(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__SendPayments(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__SendPayments, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__SendPayments); + if (size) + *size = sizeof(_interswitch__SendPayments); + ((_interswitch__SendPayments*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__SendPayments[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__SendPayments); + for (int i = 0; i < n; i++) + ((_interswitch__SendPayments*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__SendPayments*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__SendPayments(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__SendPayments %p -> %p\n", q, p)); + *(_interswitch__SendPayments*)p = *(_interswitch__SendPayments*)q; +} + +void _interswitch__SendBillPaymentAdviceResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__SendBillPaymentAdviceResponse::SendBillPaymentAdviceResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__SendBillPaymentAdviceResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__SendBillPaymentAdviceResponse::SendBillPaymentAdviceResult); + /* transient soap skipped */ +} + +int _interswitch__SendBillPaymentAdviceResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__SendBillPaymentAdviceResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__SendBillPaymentAdviceResponse(struct soap *soap, const char *tag, int id, const _interswitch__SendBillPaymentAdviceResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse), type)) + return soap->error; + if (a->SendBillPaymentAdviceResult) + soap_element_result(soap, "interswitch:SendBillPaymentAdviceResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:SendBillPaymentAdviceResult", -1, &(a->_interswitch__SendBillPaymentAdviceResponse::SendBillPaymentAdviceResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__SendBillPaymentAdviceResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__SendBillPaymentAdviceResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__SendBillPaymentAdviceResponse * SOAP_FMAC4 soap_in__interswitch__SendBillPaymentAdviceResponse(struct soap *soap, const char *tag, _interswitch__SendBillPaymentAdviceResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__SendBillPaymentAdviceResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse, sizeof(_interswitch__SendBillPaymentAdviceResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__SendBillPaymentAdviceResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_SendBillPaymentAdviceResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_SendBillPaymentAdviceResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:SendBillPaymentAdviceResult", &(a->_interswitch__SendBillPaymentAdviceResponse::SendBillPaymentAdviceResult), "xsd:string")) + { soap_flag_SendBillPaymentAdviceResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:SendBillPaymentAdviceResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__SendBillPaymentAdviceResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse, 0, sizeof(_interswitch__SendBillPaymentAdviceResponse), 0, soap_copy__interswitch__SendBillPaymentAdviceResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__SendBillPaymentAdviceResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse); + if (this->soap_out(soap, tag?tag:"interswitch:SendBillPaymentAdviceResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__SendBillPaymentAdviceResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__SendBillPaymentAdviceResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__SendBillPaymentAdviceResponse * SOAP_FMAC4 soap_get__interswitch__SendBillPaymentAdviceResponse(struct soap *soap, _interswitch__SendBillPaymentAdviceResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__SendBillPaymentAdviceResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__SendBillPaymentAdviceResponse * SOAP_FMAC2 soap_instantiate__interswitch__SendBillPaymentAdviceResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__SendBillPaymentAdviceResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__SendBillPaymentAdviceResponse); + if (size) + *size = sizeof(_interswitch__SendBillPaymentAdviceResponse); + ((_interswitch__SendBillPaymentAdviceResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__SendBillPaymentAdviceResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__SendBillPaymentAdviceResponse); + for (int i = 0; i < n; i++) + ((_interswitch__SendBillPaymentAdviceResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__SendBillPaymentAdviceResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__SendBillPaymentAdviceResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__SendBillPaymentAdviceResponse %p -> %p\n", q, p)); + *(_interswitch__SendBillPaymentAdviceResponse*)p = *(_interswitch__SendBillPaymentAdviceResponse*)q; +} + +void _interswitch__SendBillPaymentAdvice::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__SendBillPaymentAdvice::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__SendBillPaymentAdvice::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__SendBillPaymentAdvice::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__SendBillPaymentAdvice::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__SendBillPaymentAdvice(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__SendBillPaymentAdvice(struct soap *soap, const char *tag, int id, const _interswitch__SendBillPaymentAdvice *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__SendBillPaymentAdvice::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__SendBillPaymentAdvice::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__SendBillPaymentAdvice(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__SendBillPaymentAdvice * SOAP_FMAC4 soap_in__interswitch__SendBillPaymentAdvice(struct soap *soap, const char *tag, _interswitch__SendBillPaymentAdvice *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__SendBillPaymentAdvice *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice, sizeof(_interswitch__SendBillPaymentAdvice), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__SendBillPaymentAdvice *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__SendBillPaymentAdvice::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__SendBillPaymentAdvice *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice, 0, sizeof(_interswitch__SendBillPaymentAdvice), 0, soap_copy__interswitch__SendBillPaymentAdvice); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__SendBillPaymentAdvice::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice); + if (this->soap_out(soap, tag?tag:"interswitch:SendBillPaymentAdvice", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__SendBillPaymentAdvice::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__SendBillPaymentAdvice(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__SendBillPaymentAdvice * SOAP_FMAC4 soap_get__interswitch__SendBillPaymentAdvice(struct soap *soap, _interswitch__SendBillPaymentAdvice *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__SendBillPaymentAdvice(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__SendBillPaymentAdvice * SOAP_FMAC2 soap_instantiate__interswitch__SendBillPaymentAdvice(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__SendBillPaymentAdvice(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__SendBillPaymentAdvice); + if (size) + *size = sizeof(_interswitch__SendBillPaymentAdvice); + ((_interswitch__SendBillPaymentAdvice*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__SendBillPaymentAdvice[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__SendBillPaymentAdvice); + for (int i = 0; i < n; i++) + ((_interswitch__SendBillPaymentAdvice*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__SendBillPaymentAdvice*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__SendBillPaymentAdvice(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__SendBillPaymentAdvice %p -> %p\n", q, p)); + *(_interswitch__SendBillPaymentAdvice*)p = *(_interswitch__SendBillPaymentAdvice*)q; +} + +void _interswitch__AuthenticateCustomerResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__AuthenticateCustomerResponse::AuthenticateCustomerResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__AuthenticateCustomerResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__AuthenticateCustomerResponse::AuthenticateCustomerResult); + /* transient soap skipped */ +} + +int _interswitch__AuthenticateCustomerResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__AuthenticateCustomerResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthenticateCustomerResponse(struct soap *soap, const char *tag, int id, const _interswitch__AuthenticateCustomerResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse), type)) + return soap->error; + if (a->AuthenticateCustomerResult) + soap_element_result(soap, "interswitch:AuthenticateCustomerResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:AuthenticateCustomerResult", -1, &(a->_interswitch__AuthenticateCustomerResponse::AuthenticateCustomerResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__AuthenticateCustomerResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__AuthenticateCustomerResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__AuthenticateCustomerResponse * SOAP_FMAC4 soap_in__interswitch__AuthenticateCustomerResponse(struct soap *soap, const char *tag, _interswitch__AuthenticateCustomerResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__AuthenticateCustomerResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse, sizeof(_interswitch__AuthenticateCustomerResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__AuthenticateCustomerResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_AuthenticateCustomerResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_AuthenticateCustomerResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:AuthenticateCustomerResult", &(a->_interswitch__AuthenticateCustomerResponse::AuthenticateCustomerResult), "xsd:string")) + { soap_flag_AuthenticateCustomerResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:AuthenticateCustomerResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__AuthenticateCustomerResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse, 0, sizeof(_interswitch__AuthenticateCustomerResponse), 0, soap_copy__interswitch__AuthenticateCustomerResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__AuthenticateCustomerResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse); + if (this->soap_out(soap, tag?tag:"interswitch:AuthenticateCustomerResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__AuthenticateCustomerResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__AuthenticateCustomerResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__AuthenticateCustomerResponse * SOAP_FMAC4 soap_get__interswitch__AuthenticateCustomerResponse(struct soap *soap, _interswitch__AuthenticateCustomerResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__AuthenticateCustomerResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__AuthenticateCustomerResponse * SOAP_FMAC2 soap_instantiate__interswitch__AuthenticateCustomerResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__AuthenticateCustomerResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthenticateCustomerResponse); + if (size) + *size = sizeof(_interswitch__AuthenticateCustomerResponse); + ((_interswitch__AuthenticateCustomerResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthenticateCustomerResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__AuthenticateCustomerResponse); + for (int i = 0; i < n; i++) + ((_interswitch__AuthenticateCustomerResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__AuthenticateCustomerResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthenticateCustomerResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__AuthenticateCustomerResponse %p -> %p\n", q, p)); + *(_interswitch__AuthenticateCustomerResponse*)p = *(_interswitch__AuthenticateCustomerResponse*)q; +} + +void _interswitch__AuthenticateCustomer::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__AuthenticateCustomer::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__AuthenticateCustomer::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__AuthenticateCustomer::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__AuthenticateCustomer::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__AuthenticateCustomer(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthenticateCustomer(struct soap *soap, const char *tag, int id, const _interswitch__AuthenticateCustomer *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__AuthenticateCustomer::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__AuthenticateCustomer::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__AuthenticateCustomer(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__AuthenticateCustomer * SOAP_FMAC4 soap_in__interswitch__AuthenticateCustomer(struct soap *soap, const char *tag, _interswitch__AuthenticateCustomer *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__AuthenticateCustomer *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer, sizeof(_interswitch__AuthenticateCustomer), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__AuthenticateCustomer *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__AuthenticateCustomer::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__AuthenticateCustomer *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer, 0, sizeof(_interswitch__AuthenticateCustomer), 0, soap_copy__interswitch__AuthenticateCustomer); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__AuthenticateCustomer::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer); + if (this->soap_out(soap, tag?tag:"interswitch:AuthenticateCustomer", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__AuthenticateCustomer::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__AuthenticateCustomer(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__AuthenticateCustomer * SOAP_FMAC4 soap_get__interswitch__AuthenticateCustomer(struct soap *soap, _interswitch__AuthenticateCustomer *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__AuthenticateCustomer(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__AuthenticateCustomer * SOAP_FMAC2 soap_instantiate__interswitch__AuthenticateCustomer(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__AuthenticateCustomer(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthenticateCustomer); + if (size) + *size = sizeof(_interswitch__AuthenticateCustomer); + ((_interswitch__AuthenticateCustomer*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthenticateCustomer[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__AuthenticateCustomer); + for (int i = 0; i < n; i++) + ((_interswitch__AuthenticateCustomer*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__AuthenticateCustomer*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthenticateCustomer(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__AuthenticateCustomer %p -> %p\n", q, p)); + *(_interswitch__AuthenticateCustomer*)p = *(_interswitch__AuthenticateCustomer*)q; +} + +void _interswitch__DoBillPaymentInquiryResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__DoBillPaymentInquiryResponse::DoBillPaymentInquiryResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__DoBillPaymentInquiryResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__DoBillPaymentInquiryResponse::DoBillPaymentInquiryResult); + /* transient soap skipped */ +} + +int _interswitch__DoBillPaymentInquiryResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__DoBillPaymentInquiryResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__DoBillPaymentInquiryResponse(struct soap *soap, const char *tag, int id, const _interswitch__DoBillPaymentInquiryResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse), type)) + return soap->error; + if (a->DoBillPaymentInquiryResult) + soap_element_result(soap, "interswitch:DoBillPaymentInquiryResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:DoBillPaymentInquiryResult", -1, &(a->_interswitch__DoBillPaymentInquiryResponse::DoBillPaymentInquiryResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__DoBillPaymentInquiryResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__DoBillPaymentInquiryResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__DoBillPaymentInquiryResponse * SOAP_FMAC4 soap_in__interswitch__DoBillPaymentInquiryResponse(struct soap *soap, const char *tag, _interswitch__DoBillPaymentInquiryResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__DoBillPaymentInquiryResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse, sizeof(_interswitch__DoBillPaymentInquiryResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__DoBillPaymentInquiryResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_DoBillPaymentInquiryResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_DoBillPaymentInquiryResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:DoBillPaymentInquiryResult", &(a->_interswitch__DoBillPaymentInquiryResponse::DoBillPaymentInquiryResult), "xsd:string")) + { soap_flag_DoBillPaymentInquiryResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:DoBillPaymentInquiryResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__DoBillPaymentInquiryResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse, 0, sizeof(_interswitch__DoBillPaymentInquiryResponse), 0, soap_copy__interswitch__DoBillPaymentInquiryResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__DoBillPaymentInquiryResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse); + if (this->soap_out(soap, tag?tag:"interswitch:DoBillPaymentInquiryResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__DoBillPaymentInquiryResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__DoBillPaymentInquiryResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__DoBillPaymentInquiryResponse * SOAP_FMAC4 soap_get__interswitch__DoBillPaymentInquiryResponse(struct soap *soap, _interswitch__DoBillPaymentInquiryResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__DoBillPaymentInquiryResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__DoBillPaymentInquiryResponse * SOAP_FMAC2 soap_instantiate__interswitch__DoBillPaymentInquiryResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__DoBillPaymentInquiryResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__DoBillPaymentInquiryResponse); + if (size) + *size = sizeof(_interswitch__DoBillPaymentInquiryResponse); + ((_interswitch__DoBillPaymentInquiryResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__DoBillPaymentInquiryResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__DoBillPaymentInquiryResponse); + for (int i = 0; i < n; i++) + ((_interswitch__DoBillPaymentInquiryResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__DoBillPaymentInquiryResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__DoBillPaymentInquiryResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__DoBillPaymentInquiryResponse %p -> %p\n", q, p)); + *(_interswitch__DoBillPaymentInquiryResponse*)p = *(_interswitch__DoBillPaymentInquiryResponse*)q; +} + +void _interswitch__DoBillPaymentInquiry::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__DoBillPaymentInquiry::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__DoBillPaymentInquiry::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__DoBillPaymentInquiry::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__DoBillPaymentInquiry::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__DoBillPaymentInquiry(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__DoBillPaymentInquiry(struct soap *soap, const char *tag, int id, const _interswitch__DoBillPaymentInquiry *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__DoBillPaymentInquiry::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__DoBillPaymentInquiry::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__DoBillPaymentInquiry(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__DoBillPaymentInquiry * SOAP_FMAC4 soap_in__interswitch__DoBillPaymentInquiry(struct soap *soap, const char *tag, _interswitch__DoBillPaymentInquiry *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__DoBillPaymentInquiry *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry, sizeof(_interswitch__DoBillPaymentInquiry), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__DoBillPaymentInquiry *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__DoBillPaymentInquiry::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__DoBillPaymentInquiry *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry, 0, sizeof(_interswitch__DoBillPaymentInquiry), 0, soap_copy__interswitch__DoBillPaymentInquiry); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__DoBillPaymentInquiry::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry); + if (this->soap_out(soap, tag?tag:"interswitch:DoBillPaymentInquiry", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__DoBillPaymentInquiry::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__DoBillPaymentInquiry(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__DoBillPaymentInquiry * SOAP_FMAC4 soap_get__interswitch__DoBillPaymentInquiry(struct soap *soap, _interswitch__DoBillPaymentInquiry *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__DoBillPaymentInquiry(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__DoBillPaymentInquiry * SOAP_FMAC2 soap_instantiate__interswitch__DoBillPaymentInquiry(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__DoBillPaymentInquiry(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__DoBillPaymentInquiry); + if (size) + *size = sizeof(_interswitch__DoBillPaymentInquiry); + ((_interswitch__DoBillPaymentInquiry*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__DoBillPaymentInquiry[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__DoBillPaymentInquiry); + for (int i = 0; i < n; i++) + ((_interswitch__DoBillPaymentInquiry*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__DoBillPaymentInquiry*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__DoBillPaymentInquiry(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__DoBillPaymentInquiry %p -> %p\n", q, p)); + *(_interswitch__DoBillPaymentInquiry*)p = *(_interswitch__DoBillPaymentInquiry*)q; +} + +void _interswitch__GetBillerCategoriesResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetBillerCategoriesResponse::GetBillerCategoriesResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetBillerCategoriesResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetBillerCategoriesResponse::GetBillerCategoriesResult); + /* transient soap skipped */ +} + +int _interswitch__GetBillerCategoriesResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetBillerCategoriesResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetBillerCategoriesResponse(struct soap *soap, const char *tag, int id, const _interswitch__GetBillerCategoriesResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse), type)) + return soap->error; + if (a->GetBillerCategoriesResult) + soap_element_result(soap, "interswitch:GetBillerCategoriesResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:GetBillerCategoriesResult", -1, &(a->_interswitch__GetBillerCategoriesResponse::GetBillerCategoriesResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetBillerCategoriesResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetBillerCategoriesResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetBillerCategoriesResponse * SOAP_FMAC4 soap_in__interswitch__GetBillerCategoriesResponse(struct soap *soap, const char *tag, _interswitch__GetBillerCategoriesResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetBillerCategoriesResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse, sizeof(_interswitch__GetBillerCategoriesResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetBillerCategoriesResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_GetBillerCategoriesResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_GetBillerCategoriesResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:GetBillerCategoriesResult", &(a->_interswitch__GetBillerCategoriesResponse::GetBillerCategoriesResult), "xsd:string")) + { soap_flag_GetBillerCategoriesResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:GetBillerCategoriesResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetBillerCategoriesResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse, 0, sizeof(_interswitch__GetBillerCategoriesResponse), 0, soap_copy__interswitch__GetBillerCategoriesResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetBillerCategoriesResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse); + if (this->soap_out(soap, tag?tag:"interswitch:GetBillerCategoriesResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetBillerCategoriesResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetBillerCategoriesResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetBillerCategoriesResponse * SOAP_FMAC4 soap_get__interswitch__GetBillerCategoriesResponse(struct soap *soap, _interswitch__GetBillerCategoriesResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetBillerCategoriesResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetBillerCategoriesResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetBillerCategoriesResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetBillerCategoriesResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetBillerCategoriesResponse); + if (size) + *size = sizeof(_interswitch__GetBillerCategoriesResponse); + ((_interswitch__GetBillerCategoriesResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetBillerCategoriesResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetBillerCategoriesResponse); + for (int i = 0; i < n; i++) + ((_interswitch__GetBillerCategoriesResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetBillerCategoriesResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetBillerCategoriesResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetBillerCategoriesResponse %p -> %p\n", q, p)); + *(_interswitch__GetBillerCategoriesResponse*)p = *(_interswitch__GetBillerCategoriesResponse*)q; +} + +void _interswitch__GetBillerCategories::soap_default(struct soap *soap) +{ + this->soap = soap; + /* transient soap skipped */ +} + +void _interswitch__GetBillerCategories::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + /* transient soap skipped */ +} + +int _interswitch__GetBillerCategories::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetBillerCategories(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetBillerCategories(struct soap *soap, const char *tag, int id, const _interswitch__GetBillerCategories *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetBillerCategories), type)) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetBillerCategories::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetBillerCategories(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetBillerCategories * SOAP_FMAC4 soap_in__interswitch__GetBillerCategories(struct soap *soap, const char *tag, _interswitch__GetBillerCategories *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetBillerCategories *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetBillerCategories, sizeof(_interswitch__GetBillerCategories), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetBillerCategories) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetBillerCategories *)a->soap_in(soap, tag, type); + } + } + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetBillerCategories *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetBillerCategories, 0, sizeof(_interswitch__GetBillerCategories), 0, soap_copy__interswitch__GetBillerCategories); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetBillerCategories::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetBillerCategories); + if (this->soap_out(soap, tag?tag:"interswitch:GetBillerCategories", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetBillerCategories::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetBillerCategories(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetBillerCategories * SOAP_FMAC4 soap_get__interswitch__GetBillerCategories(struct soap *soap, _interswitch__GetBillerCategories *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetBillerCategories(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetBillerCategories * SOAP_FMAC2 soap_instantiate__interswitch__GetBillerCategories(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetBillerCategories(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetBillerCategories, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetBillerCategories); + if (size) + *size = sizeof(_interswitch__GetBillerCategories); + ((_interswitch__GetBillerCategories*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetBillerCategories[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetBillerCategories); + for (int i = 0; i < n; i++) + ((_interswitch__GetBillerCategories*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetBillerCategories*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetBillerCategories(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetBillerCategories %p -> %p\n", q, p)); + *(_interswitch__GetBillerCategories*)p = *(_interswitch__GetBillerCategories*)q; +} + +void _interswitch__GetBillerPaymentItemsResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetBillerPaymentItemsResponse::GetBillerPaymentItemsResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetBillerPaymentItemsResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetBillerPaymentItemsResponse::GetBillerPaymentItemsResult); + /* transient soap skipped */ +} + +int _interswitch__GetBillerPaymentItemsResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetBillerPaymentItemsResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetBillerPaymentItemsResponse(struct soap *soap, const char *tag, int id, const _interswitch__GetBillerPaymentItemsResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse), type)) + return soap->error; + if (a->GetBillerPaymentItemsResult) + soap_element_result(soap, "interswitch:GetBillerPaymentItemsResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:GetBillerPaymentItemsResult", -1, &(a->_interswitch__GetBillerPaymentItemsResponse::GetBillerPaymentItemsResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetBillerPaymentItemsResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetBillerPaymentItemsResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetBillerPaymentItemsResponse * SOAP_FMAC4 soap_in__interswitch__GetBillerPaymentItemsResponse(struct soap *soap, const char *tag, _interswitch__GetBillerPaymentItemsResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetBillerPaymentItemsResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse, sizeof(_interswitch__GetBillerPaymentItemsResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetBillerPaymentItemsResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_GetBillerPaymentItemsResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_GetBillerPaymentItemsResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:GetBillerPaymentItemsResult", &(a->_interswitch__GetBillerPaymentItemsResponse::GetBillerPaymentItemsResult), "xsd:string")) + { soap_flag_GetBillerPaymentItemsResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:GetBillerPaymentItemsResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetBillerPaymentItemsResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse, 0, sizeof(_interswitch__GetBillerPaymentItemsResponse), 0, soap_copy__interswitch__GetBillerPaymentItemsResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetBillerPaymentItemsResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse); + if (this->soap_out(soap, tag?tag:"interswitch:GetBillerPaymentItemsResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetBillerPaymentItemsResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetBillerPaymentItemsResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetBillerPaymentItemsResponse * SOAP_FMAC4 soap_get__interswitch__GetBillerPaymentItemsResponse(struct soap *soap, _interswitch__GetBillerPaymentItemsResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetBillerPaymentItemsResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetBillerPaymentItemsResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetBillerPaymentItemsResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetBillerPaymentItemsResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetBillerPaymentItemsResponse); + if (size) + *size = sizeof(_interswitch__GetBillerPaymentItemsResponse); + ((_interswitch__GetBillerPaymentItemsResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetBillerPaymentItemsResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetBillerPaymentItemsResponse); + for (int i = 0; i < n; i++) + ((_interswitch__GetBillerPaymentItemsResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetBillerPaymentItemsResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetBillerPaymentItemsResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetBillerPaymentItemsResponse %p -> %p\n", q, p)); + *(_interswitch__GetBillerPaymentItemsResponse*)p = *(_interswitch__GetBillerPaymentItemsResponse*)q; +} + +void _interswitch__GetBillerPaymentItems::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetBillerPaymentItems::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetBillerPaymentItems::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetBillerPaymentItems::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__GetBillerPaymentItems::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetBillerPaymentItems(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetBillerPaymentItems(struct soap *soap, const char *tag, int id, const _interswitch__GetBillerPaymentItems *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__GetBillerPaymentItems::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetBillerPaymentItems::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetBillerPaymentItems(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetBillerPaymentItems * SOAP_FMAC4 soap_in__interswitch__GetBillerPaymentItems(struct soap *soap, const char *tag, _interswitch__GetBillerPaymentItems *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetBillerPaymentItems *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems, sizeof(_interswitch__GetBillerPaymentItems), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetBillerPaymentItems *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__GetBillerPaymentItems::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetBillerPaymentItems *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems, 0, sizeof(_interswitch__GetBillerPaymentItems), 0, soap_copy__interswitch__GetBillerPaymentItems); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetBillerPaymentItems::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems); + if (this->soap_out(soap, tag?tag:"interswitch:GetBillerPaymentItems", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetBillerPaymentItems::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetBillerPaymentItems(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetBillerPaymentItems * SOAP_FMAC4 soap_get__interswitch__GetBillerPaymentItems(struct soap *soap, _interswitch__GetBillerPaymentItems *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetBillerPaymentItems(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetBillerPaymentItems * SOAP_FMAC2 soap_instantiate__interswitch__GetBillerPaymentItems(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetBillerPaymentItems(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetBillerPaymentItems); + if (size) + *size = sizeof(_interswitch__GetBillerPaymentItems); + ((_interswitch__GetBillerPaymentItems*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetBillerPaymentItems[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetBillerPaymentItems); + for (int i = 0; i < n; i++) + ((_interswitch__GetBillerPaymentItems*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetBillerPaymentItems*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetBillerPaymentItems(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetBillerPaymentItems %p -> %p\n", q, p)); + *(_interswitch__GetBillerPaymentItems*)p = *(_interswitch__GetBillerPaymentItems*)q; +} + +void _interswitch__GetFeaturedBillersResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetFeaturedBillersResponse::GetFeaturedBillersResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetFeaturedBillersResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetFeaturedBillersResponse::GetFeaturedBillersResult); + /* transient soap skipped */ +} + +int _interswitch__GetFeaturedBillersResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetFeaturedBillersResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetFeaturedBillersResponse(struct soap *soap, const char *tag, int id, const _interswitch__GetFeaturedBillersResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse), type)) + return soap->error; + if (a->GetFeaturedBillersResult) + soap_element_result(soap, "interswitch:GetFeaturedBillersResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:GetFeaturedBillersResult", -1, &(a->_interswitch__GetFeaturedBillersResponse::GetFeaturedBillersResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetFeaturedBillersResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetFeaturedBillersResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetFeaturedBillersResponse * SOAP_FMAC4 soap_in__interswitch__GetFeaturedBillersResponse(struct soap *soap, const char *tag, _interswitch__GetFeaturedBillersResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetFeaturedBillersResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse, sizeof(_interswitch__GetFeaturedBillersResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetFeaturedBillersResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_GetFeaturedBillersResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_GetFeaturedBillersResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:GetFeaturedBillersResult", &(a->_interswitch__GetFeaturedBillersResponse::GetFeaturedBillersResult), "xsd:string")) + { soap_flag_GetFeaturedBillersResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:GetFeaturedBillersResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetFeaturedBillersResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse, 0, sizeof(_interswitch__GetFeaturedBillersResponse), 0, soap_copy__interswitch__GetFeaturedBillersResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetFeaturedBillersResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse); + if (this->soap_out(soap, tag?tag:"interswitch:GetFeaturedBillersResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetFeaturedBillersResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetFeaturedBillersResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetFeaturedBillersResponse * SOAP_FMAC4 soap_get__interswitch__GetFeaturedBillersResponse(struct soap *soap, _interswitch__GetFeaturedBillersResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetFeaturedBillersResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetFeaturedBillersResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetFeaturedBillersResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetFeaturedBillersResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetFeaturedBillersResponse); + if (size) + *size = sizeof(_interswitch__GetFeaturedBillersResponse); + ((_interswitch__GetFeaturedBillersResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetFeaturedBillersResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetFeaturedBillersResponse); + for (int i = 0; i < n; i++) + ((_interswitch__GetFeaturedBillersResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetFeaturedBillersResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetFeaturedBillersResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetFeaturedBillersResponse %p -> %p\n", q, p)); + *(_interswitch__GetFeaturedBillersResponse*)p = *(_interswitch__GetFeaturedBillersResponse*)q; +} + +void _interswitch__GetFeaturedBillers::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetFeaturedBillers::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetFeaturedBillers::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetFeaturedBillers::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__GetFeaturedBillers::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetFeaturedBillers(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetFeaturedBillers(struct soap *soap, const char *tag, int id, const _interswitch__GetFeaturedBillers *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__GetFeaturedBillers::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetFeaturedBillers::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetFeaturedBillers(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetFeaturedBillers * SOAP_FMAC4 soap_in__interswitch__GetFeaturedBillers(struct soap *soap, const char *tag, _interswitch__GetFeaturedBillers *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetFeaturedBillers *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers, sizeof(_interswitch__GetFeaturedBillers), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetFeaturedBillers *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__GetFeaturedBillers::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetFeaturedBillers *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers, 0, sizeof(_interswitch__GetFeaturedBillers), 0, soap_copy__interswitch__GetFeaturedBillers); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetFeaturedBillers::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers); + if (this->soap_out(soap, tag?tag:"interswitch:GetFeaturedBillers", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetFeaturedBillers::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetFeaturedBillers(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetFeaturedBillers * SOAP_FMAC4 soap_get__interswitch__GetFeaturedBillers(struct soap *soap, _interswitch__GetFeaturedBillers *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetFeaturedBillers(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetFeaturedBillers * SOAP_FMAC2 soap_instantiate__interswitch__GetFeaturedBillers(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetFeaturedBillers(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetFeaturedBillers); + if (size) + *size = sizeof(_interswitch__GetFeaturedBillers); + ((_interswitch__GetFeaturedBillers*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetFeaturedBillers[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetFeaturedBillers); + for (int i = 0; i < n; i++) + ((_interswitch__GetFeaturedBillers*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetFeaturedBillers*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetFeaturedBillers(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetFeaturedBillers %p -> %p\n", q, p)); + *(_interswitch__GetFeaturedBillers*)p = *(_interswitch__GetFeaturedBillers*)q; +} + +void _interswitch__GetLatestBillersResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetLatestBillersResponse::GetLatestBillersResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetLatestBillersResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetLatestBillersResponse::GetLatestBillersResult); + /* transient soap skipped */ +} + +int _interswitch__GetLatestBillersResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetLatestBillersResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetLatestBillersResponse(struct soap *soap, const char *tag, int id, const _interswitch__GetLatestBillersResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse), type)) + return soap->error; + if (a->GetLatestBillersResult) + soap_element_result(soap, "interswitch:GetLatestBillersResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:GetLatestBillersResult", -1, &(a->_interswitch__GetLatestBillersResponse::GetLatestBillersResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetLatestBillersResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetLatestBillersResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetLatestBillersResponse * SOAP_FMAC4 soap_in__interswitch__GetLatestBillersResponse(struct soap *soap, const char *tag, _interswitch__GetLatestBillersResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetLatestBillersResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse, sizeof(_interswitch__GetLatestBillersResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetLatestBillersResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_GetLatestBillersResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_GetLatestBillersResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:GetLatestBillersResult", &(a->_interswitch__GetLatestBillersResponse::GetLatestBillersResult), "xsd:string")) + { soap_flag_GetLatestBillersResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:GetLatestBillersResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetLatestBillersResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse, 0, sizeof(_interswitch__GetLatestBillersResponse), 0, soap_copy__interswitch__GetLatestBillersResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetLatestBillersResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse); + if (this->soap_out(soap, tag?tag:"interswitch:GetLatestBillersResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetLatestBillersResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetLatestBillersResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetLatestBillersResponse * SOAP_FMAC4 soap_get__interswitch__GetLatestBillersResponse(struct soap *soap, _interswitch__GetLatestBillersResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetLatestBillersResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetLatestBillersResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetLatestBillersResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetLatestBillersResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetLatestBillersResponse); + if (size) + *size = sizeof(_interswitch__GetLatestBillersResponse); + ((_interswitch__GetLatestBillersResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetLatestBillersResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetLatestBillersResponse); + for (int i = 0; i < n; i++) + ((_interswitch__GetLatestBillersResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetLatestBillersResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetLatestBillersResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetLatestBillersResponse %p -> %p\n", q, p)); + *(_interswitch__GetLatestBillersResponse*)p = *(_interswitch__GetLatestBillersResponse*)q; +} + +void _interswitch__GetLatestBillers::soap_default(struct soap *soap) +{ + this->soap = soap; + /* transient soap skipped */ +} + +void _interswitch__GetLatestBillers::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + /* transient soap skipped */ +} + +int _interswitch__GetLatestBillers::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetLatestBillers(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetLatestBillers(struct soap *soap, const char *tag, int id, const _interswitch__GetLatestBillers *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetLatestBillers), type)) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetLatestBillers::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetLatestBillers(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetLatestBillers * SOAP_FMAC4 soap_in__interswitch__GetLatestBillers(struct soap *soap, const char *tag, _interswitch__GetLatestBillers *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetLatestBillers *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetLatestBillers, sizeof(_interswitch__GetLatestBillers), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetLatestBillers) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetLatestBillers *)a->soap_in(soap, tag, type); + } + } + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetLatestBillers *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetLatestBillers, 0, sizeof(_interswitch__GetLatestBillers), 0, soap_copy__interswitch__GetLatestBillers); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetLatestBillers::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetLatestBillers); + if (this->soap_out(soap, tag?tag:"interswitch:GetLatestBillers", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetLatestBillers::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetLatestBillers(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetLatestBillers * SOAP_FMAC4 soap_get__interswitch__GetLatestBillers(struct soap *soap, _interswitch__GetLatestBillers *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetLatestBillers(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetLatestBillers * SOAP_FMAC2 soap_instantiate__interswitch__GetLatestBillers(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetLatestBillers(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetLatestBillers, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetLatestBillers); + if (size) + *size = sizeof(_interswitch__GetLatestBillers); + ((_interswitch__GetLatestBillers*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetLatestBillers[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetLatestBillers); + for (int i = 0; i < n; i++) + ((_interswitch__GetLatestBillers*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetLatestBillers*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetLatestBillers(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetLatestBillers %p -> %p\n", q, p)); + *(_interswitch__GetLatestBillers*)p = *(_interswitch__GetLatestBillers*)q; +} + +void _interswitch__GetBillersResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetBillersResponse::GetBillersResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetBillersResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetBillersResponse::GetBillersResult); + /* transient soap skipped */ +} + +int _interswitch__GetBillersResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetBillersResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetBillersResponse(struct soap *soap, const char *tag, int id, const _interswitch__GetBillersResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetBillersResponse), type)) + return soap->error; + if (a->GetBillersResult) + soap_element_result(soap, "interswitch:GetBillersResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:GetBillersResult", -1, &(a->_interswitch__GetBillersResponse::GetBillersResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetBillersResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetBillersResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetBillersResponse * SOAP_FMAC4 soap_in__interswitch__GetBillersResponse(struct soap *soap, const char *tag, _interswitch__GetBillersResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetBillersResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetBillersResponse, sizeof(_interswitch__GetBillersResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetBillersResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetBillersResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_GetBillersResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_GetBillersResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:GetBillersResult", &(a->_interswitch__GetBillersResponse::GetBillersResult), "xsd:string")) + { soap_flag_GetBillersResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:GetBillersResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetBillersResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetBillersResponse, 0, sizeof(_interswitch__GetBillersResponse), 0, soap_copy__interswitch__GetBillersResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetBillersResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetBillersResponse); + if (this->soap_out(soap, tag?tag:"interswitch:GetBillersResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetBillersResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetBillersResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetBillersResponse * SOAP_FMAC4 soap_get__interswitch__GetBillersResponse(struct soap *soap, _interswitch__GetBillersResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetBillersResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetBillersResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetBillersResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetBillersResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetBillersResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetBillersResponse); + if (size) + *size = sizeof(_interswitch__GetBillersResponse); + ((_interswitch__GetBillersResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetBillersResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetBillersResponse); + for (int i = 0; i < n; i++) + ((_interswitch__GetBillersResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetBillersResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetBillersResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetBillersResponse %p -> %p\n", q, p)); + *(_interswitch__GetBillersResponse*)p = *(_interswitch__GetBillersResponse*)q; +} + +void _interswitch__GetBillers::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetBillers::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetBillers::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetBillers::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__GetBillers::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetBillers(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetBillers(struct soap *soap, const char *tag, int id, const _interswitch__GetBillers *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetBillers), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__GetBillers::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetBillers::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetBillers(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetBillers * SOAP_FMAC4 soap_in__interswitch__GetBillers(struct soap *soap, const char *tag, _interswitch__GetBillers *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetBillers *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetBillers, sizeof(_interswitch__GetBillers), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetBillers) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetBillers *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__GetBillers::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetBillers *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetBillers, 0, sizeof(_interswitch__GetBillers), 0, soap_copy__interswitch__GetBillers); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetBillers::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetBillers); + if (this->soap_out(soap, tag?tag:"interswitch:GetBillers", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetBillers::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetBillers(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetBillers * SOAP_FMAC4 soap_get__interswitch__GetBillers(struct soap *soap, _interswitch__GetBillers *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetBillers(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetBillers * SOAP_FMAC2 soap_instantiate__interswitch__GetBillers(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetBillers(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetBillers, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetBillers); + if (size) + *size = sizeof(_interswitch__GetBillers); + ((_interswitch__GetBillers*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetBillers[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetBillers); + for (int i = 0; i < n; i++) + ((_interswitch__GetBillers*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetBillers*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetBillers(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetBillers %p -> %p\n", q, p)); + *(_interswitch__GetBillers*)p = *(_interswitch__GetBillers*)q; +} + +void _interswitch__GetUserResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetUserResponse::GetUserResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetUserResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetUserResponse::GetUserResult); + /* transient soap skipped */ +} + +int _interswitch__GetUserResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetUserResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetUserResponse(struct soap *soap, const char *tag, int id, const _interswitch__GetUserResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetUserResponse), type)) + return soap->error; + if (a->GetUserResult) + soap_element_result(soap, "interswitch:GetUserResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:GetUserResult", -1, &(a->_interswitch__GetUserResponse::GetUserResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetUserResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetUserResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetUserResponse * SOAP_FMAC4 soap_in__interswitch__GetUserResponse(struct soap *soap, const char *tag, _interswitch__GetUserResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetUserResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetUserResponse, sizeof(_interswitch__GetUserResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetUserResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetUserResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_GetUserResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_GetUserResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:GetUserResult", &(a->_interswitch__GetUserResponse::GetUserResult), "xsd:string")) + { soap_flag_GetUserResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:GetUserResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetUserResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetUserResponse, 0, sizeof(_interswitch__GetUserResponse), 0, soap_copy__interswitch__GetUserResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetUserResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetUserResponse); + if (this->soap_out(soap, tag?tag:"interswitch:GetUserResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetUserResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetUserResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetUserResponse * SOAP_FMAC4 soap_get__interswitch__GetUserResponse(struct soap *soap, _interswitch__GetUserResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetUserResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetUserResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetUserResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetUserResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetUserResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetUserResponse); + if (size) + *size = sizeof(_interswitch__GetUserResponse); + ((_interswitch__GetUserResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetUserResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetUserResponse); + for (int i = 0; i < n; i++) + ((_interswitch__GetUserResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetUserResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetUserResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetUserResponse %p -> %p\n", q, p)); + *(_interswitch__GetUserResponse*)p = *(_interswitch__GetUserResponse*)q; +} + +void _interswitch__GetUser::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetUser::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetUser::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetUser::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__GetUser::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetUser(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetUser(struct soap *soap, const char *tag, int id, const _interswitch__GetUser *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetUser), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__GetUser::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetUser::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetUser(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetUser * SOAP_FMAC4 soap_in__interswitch__GetUser(struct soap *soap, const char *tag, _interswitch__GetUser *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetUser *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetUser, sizeof(_interswitch__GetUser), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetUser) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetUser *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__GetUser::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetUser *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetUser, 0, sizeof(_interswitch__GetUser), 0, soap_copy__interswitch__GetUser); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetUser::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetUser); + if (this->soap_out(soap, tag?tag:"interswitch:GetUser", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetUser::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetUser(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetUser * SOAP_FMAC4 soap_get__interswitch__GetUser(struct soap *soap, _interswitch__GetUser *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetUser(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetUser * SOAP_FMAC2 soap_instantiate__interswitch__GetUser(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetUser(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetUser, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetUser); + if (size) + *size = sizeof(_interswitch__GetUser); + ((_interswitch__GetUser*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetUser[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetUser); + for (int i = 0; i < n; i++) + ((_interswitch__GetUser*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetUser*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetUser(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetUser %p -> %p\n", q, p)); + *(_interswitch__GetUser*)p = *(_interswitch__GetUser*)q; +} + +void _interswitch__AuthenticateUserSecurityTokenResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__AuthenticateUserSecurityTokenResponse::AuthenticateUserSecurityTokenResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__AuthenticateUserSecurityTokenResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__AuthenticateUserSecurityTokenResponse::AuthenticateUserSecurityTokenResult); + /* transient soap skipped */ +} + +int _interswitch__AuthenticateUserSecurityTokenResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__AuthenticateUserSecurityTokenResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthenticateUserSecurityTokenResponse(struct soap *soap, const char *tag, int id, const _interswitch__AuthenticateUserSecurityTokenResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse), type)) + return soap->error; + if (a->AuthenticateUserSecurityTokenResult) + soap_element_result(soap, "interswitch:AuthenticateUserSecurityTokenResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:AuthenticateUserSecurityTokenResult", -1, &(a->_interswitch__AuthenticateUserSecurityTokenResponse::AuthenticateUserSecurityTokenResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__AuthenticateUserSecurityTokenResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__AuthenticateUserSecurityTokenResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__AuthenticateUserSecurityTokenResponse * SOAP_FMAC4 soap_in__interswitch__AuthenticateUserSecurityTokenResponse(struct soap *soap, const char *tag, _interswitch__AuthenticateUserSecurityTokenResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__AuthenticateUserSecurityTokenResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse, sizeof(_interswitch__AuthenticateUserSecurityTokenResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__AuthenticateUserSecurityTokenResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_AuthenticateUserSecurityTokenResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_AuthenticateUserSecurityTokenResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:AuthenticateUserSecurityTokenResult", &(a->_interswitch__AuthenticateUserSecurityTokenResponse::AuthenticateUserSecurityTokenResult), "xsd:string")) + { soap_flag_AuthenticateUserSecurityTokenResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:AuthenticateUserSecurityTokenResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__AuthenticateUserSecurityTokenResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse, 0, sizeof(_interswitch__AuthenticateUserSecurityTokenResponse), 0, soap_copy__interswitch__AuthenticateUserSecurityTokenResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__AuthenticateUserSecurityTokenResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse); + if (this->soap_out(soap, tag?tag:"interswitch:AuthenticateUserSecurityTokenResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__AuthenticateUserSecurityTokenResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__AuthenticateUserSecurityTokenResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__AuthenticateUserSecurityTokenResponse * SOAP_FMAC4 soap_get__interswitch__AuthenticateUserSecurityTokenResponse(struct soap *soap, _interswitch__AuthenticateUserSecurityTokenResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__AuthenticateUserSecurityTokenResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__AuthenticateUserSecurityTokenResponse * SOAP_FMAC2 soap_instantiate__interswitch__AuthenticateUserSecurityTokenResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__AuthenticateUserSecurityTokenResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthenticateUserSecurityTokenResponse); + if (size) + *size = sizeof(_interswitch__AuthenticateUserSecurityTokenResponse); + ((_interswitch__AuthenticateUserSecurityTokenResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthenticateUserSecurityTokenResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__AuthenticateUserSecurityTokenResponse); + for (int i = 0; i < n; i++) + ((_interswitch__AuthenticateUserSecurityTokenResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__AuthenticateUserSecurityTokenResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthenticateUserSecurityTokenResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__AuthenticateUserSecurityTokenResponse %p -> %p\n", q, p)); + *(_interswitch__AuthenticateUserSecurityTokenResponse*)p = *(_interswitch__AuthenticateUserSecurityTokenResponse*)q; +} + +void _interswitch__AuthenticateUserSecurityToken::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__AuthenticateUserSecurityToken::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__AuthenticateUserSecurityToken::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__AuthenticateUserSecurityToken::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__AuthenticateUserSecurityToken::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__AuthenticateUserSecurityToken(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthenticateUserSecurityToken(struct soap *soap, const char *tag, int id, const _interswitch__AuthenticateUserSecurityToken *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__AuthenticateUserSecurityToken::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__AuthenticateUserSecurityToken::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__AuthenticateUserSecurityToken(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__AuthenticateUserSecurityToken * SOAP_FMAC4 soap_in__interswitch__AuthenticateUserSecurityToken(struct soap *soap, const char *tag, _interswitch__AuthenticateUserSecurityToken *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__AuthenticateUserSecurityToken *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken, sizeof(_interswitch__AuthenticateUserSecurityToken), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__AuthenticateUserSecurityToken *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__AuthenticateUserSecurityToken::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__AuthenticateUserSecurityToken *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken, 0, sizeof(_interswitch__AuthenticateUserSecurityToken), 0, soap_copy__interswitch__AuthenticateUserSecurityToken); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__AuthenticateUserSecurityToken::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken); + if (this->soap_out(soap, tag?tag:"interswitch:AuthenticateUserSecurityToken", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__AuthenticateUserSecurityToken::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__AuthenticateUserSecurityToken(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__AuthenticateUserSecurityToken * SOAP_FMAC4 soap_get__interswitch__AuthenticateUserSecurityToken(struct soap *soap, _interswitch__AuthenticateUserSecurityToken *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__AuthenticateUserSecurityToken(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__AuthenticateUserSecurityToken * SOAP_FMAC2 soap_instantiate__interswitch__AuthenticateUserSecurityToken(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__AuthenticateUserSecurityToken(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthenticateUserSecurityToken); + if (size) + *size = sizeof(_interswitch__AuthenticateUserSecurityToken); + ((_interswitch__AuthenticateUserSecurityToken*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthenticateUserSecurityToken[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__AuthenticateUserSecurityToken); + for (int i = 0; i < n; i++) + ((_interswitch__AuthenticateUserSecurityToken*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__AuthenticateUserSecurityToken*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthenticateUserSecurityToken(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__AuthenticateUserSecurityToken %p -> %p\n", q, p)); + *(_interswitch__AuthenticateUserSecurityToken*)p = *(_interswitch__AuthenticateUserSecurityToken*)q; +} + +void _interswitch__AuthenticateUserResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__AuthenticateUserResponse::AuthenticateUserResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__AuthenticateUserResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__AuthenticateUserResponse::AuthenticateUserResult); + /* transient soap skipped */ +} + +int _interswitch__AuthenticateUserResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__AuthenticateUserResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthenticateUserResponse(struct soap *soap, const char *tag, int id, const _interswitch__AuthenticateUserResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse), type)) + return soap->error; + if (a->AuthenticateUserResult) + soap_element_result(soap, "interswitch:AuthenticateUserResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:AuthenticateUserResult", -1, &(a->_interswitch__AuthenticateUserResponse::AuthenticateUserResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__AuthenticateUserResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__AuthenticateUserResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__AuthenticateUserResponse * SOAP_FMAC4 soap_in__interswitch__AuthenticateUserResponse(struct soap *soap, const char *tag, _interswitch__AuthenticateUserResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__AuthenticateUserResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse, sizeof(_interswitch__AuthenticateUserResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__AuthenticateUserResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_AuthenticateUserResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_AuthenticateUserResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:AuthenticateUserResult", &(a->_interswitch__AuthenticateUserResponse::AuthenticateUserResult), "xsd:string")) + { soap_flag_AuthenticateUserResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:AuthenticateUserResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__AuthenticateUserResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse, 0, sizeof(_interswitch__AuthenticateUserResponse), 0, soap_copy__interswitch__AuthenticateUserResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__AuthenticateUserResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse); + if (this->soap_out(soap, tag?tag:"interswitch:AuthenticateUserResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__AuthenticateUserResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__AuthenticateUserResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__AuthenticateUserResponse * SOAP_FMAC4 soap_get__interswitch__AuthenticateUserResponse(struct soap *soap, _interswitch__AuthenticateUserResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__AuthenticateUserResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__AuthenticateUserResponse * SOAP_FMAC2 soap_instantiate__interswitch__AuthenticateUserResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__AuthenticateUserResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthenticateUserResponse); + if (size) + *size = sizeof(_interswitch__AuthenticateUserResponse); + ((_interswitch__AuthenticateUserResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthenticateUserResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__AuthenticateUserResponse); + for (int i = 0; i < n; i++) + ((_interswitch__AuthenticateUserResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__AuthenticateUserResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthenticateUserResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__AuthenticateUserResponse %p -> %p\n", q, p)); + *(_interswitch__AuthenticateUserResponse*)p = *(_interswitch__AuthenticateUserResponse*)q; +} + +void _interswitch__AuthenticateUser::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__AuthenticateUser::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__AuthenticateUser::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__AuthenticateUser::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__AuthenticateUser::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__AuthenticateUser(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthenticateUser(struct soap *soap, const char *tag, int id, const _interswitch__AuthenticateUser *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__AuthenticateUser), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__AuthenticateUser::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__AuthenticateUser::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__AuthenticateUser(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__AuthenticateUser * SOAP_FMAC4 soap_in__interswitch__AuthenticateUser(struct soap *soap, const char *tag, _interswitch__AuthenticateUser *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__AuthenticateUser *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__AuthenticateUser, sizeof(_interswitch__AuthenticateUser), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__AuthenticateUser) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__AuthenticateUser *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__AuthenticateUser::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__AuthenticateUser *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__AuthenticateUser, 0, sizeof(_interswitch__AuthenticateUser), 0, soap_copy__interswitch__AuthenticateUser); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__AuthenticateUser::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__AuthenticateUser); + if (this->soap_out(soap, tag?tag:"interswitch:AuthenticateUser", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__AuthenticateUser::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__AuthenticateUser(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__AuthenticateUser * SOAP_FMAC4 soap_get__interswitch__AuthenticateUser(struct soap *soap, _interswitch__AuthenticateUser *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__AuthenticateUser(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__AuthenticateUser * SOAP_FMAC2 soap_instantiate__interswitch__AuthenticateUser(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__AuthenticateUser(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__AuthenticateUser, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthenticateUser); + if (size) + *size = sizeof(_interswitch__AuthenticateUser); + ((_interswitch__AuthenticateUser*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthenticateUser[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__AuthenticateUser); + for (int i = 0; i < n; i++) + ((_interswitch__AuthenticateUser*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__AuthenticateUser*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthenticateUser(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__AuthenticateUser %p -> %p\n", q, p)); + *(_interswitch__AuthenticateUser*)p = *(_interswitch__AuthenticateUser*)q; +} + +void _interswitch__ResetPasswordResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__ResetPasswordResponse::ResetPasswordResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__ResetPasswordResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__ResetPasswordResponse::ResetPasswordResult); + /* transient soap skipped */ +} + +int _interswitch__ResetPasswordResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__ResetPasswordResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ResetPasswordResponse(struct soap *soap, const char *tag, int id, const _interswitch__ResetPasswordResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse), type)) + return soap->error; + if (a->ResetPasswordResult) + soap_element_result(soap, "interswitch:ResetPasswordResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:ResetPasswordResult", -1, &(a->_interswitch__ResetPasswordResponse::ResetPasswordResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__ResetPasswordResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__ResetPasswordResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__ResetPasswordResponse * SOAP_FMAC4 soap_in__interswitch__ResetPasswordResponse(struct soap *soap, const char *tag, _interswitch__ResetPasswordResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__ResetPasswordResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse, sizeof(_interswitch__ResetPasswordResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__ResetPasswordResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_ResetPasswordResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_ResetPasswordResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:ResetPasswordResult", &(a->_interswitch__ResetPasswordResponse::ResetPasswordResult), "xsd:string")) + { soap_flag_ResetPasswordResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:ResetPasswordResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__ResetPasswordResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse, 0, sizeof(_interswitch__ResetPasswordResponse), 0, soap_copy__interswitch__ResetPasswordResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__ResetPasswordResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse); + if (this->soap_out(soap, tag?tag:"interswitch:ResetPasswordResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__ResetPasswordResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__ResetPasswordResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__ResetPasswordResponse * SOAP_FMAC4 soap_get__interswitch__ResetPasswordResponse(struct soap *soap, _interswitch__ResetPasswordResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__ResetPasswordResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__ResetPasswordResponse * SOAP_FMAC2 soap_instantiate__interswitch__ResetPasswordResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__ResetPasswordResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__ResetPasswordResponse); + if (size) + *size = sizeof(_interswitch__ResetPasswordResponse); + ((_interswitch__ResetPasswordResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__ResetPasswordResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__ResetPasswordResponse); + for (int i = 0; i < n; i++) + ((_interswitch__ResetPasswordResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__ResetPasswordResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ResetPasswordResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__ResetPasswordResponse %p -> %p\n", q, p)); + *(_interswitch__ResetPasswordResponse*)p = *(_interswitch__ResetPasswordResponse*)q; +} + +void _interswitch__ResetPassword::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__ResetPassword::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__ResetPassword::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__ResetPassword::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__ResetPassword::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__ResetPassword(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ResetPassword(struct soap *soap, const char *tag, int id, const _interswitch__ResetPassword *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__ResetPassword), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__ResetPassword::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__ResetPassword::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__ResetPassword(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__ResetPassword * SOAP_FMAC4 soap_in__interswitch__ResetPassword(struct soap *soap, const char *tag, _interswitch__ResetPassword *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__ResetPassword *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__ResetPassword, sizeof(_interswitch__ResetPassword), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__ResetPassword) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__ResetPassword *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__ResetPassword::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__ResetPassword *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__ResetPassword, 0, sizeof(_interswitch__ResetPassword), 0, soap_copy__interswitch__ResetPassword); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__ResetPassword::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__ResetPassword); + if (this->soap_out(soap, tag?tag:"interswitch:ResetPassword", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__ResetPassword::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__ResetPassword(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__ResetPassword * SOAP_FMAC4 soap_get__interswitch__ResetPassword(struct soap *soap, _interswitch__ResetPassword *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__ResetPassword(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__ResetPassword * SOAP_FMAC2 soap_instantiate__interswitch__ResetPassword(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__ResetPassword(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__ResetPassword, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__ResetPassword); + if (size) + *size = sizeof(_interswitch__ResetPassword); + ((_interswitch__ResetPassword*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__ResetPassword[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__ResetPassword); + for (int i = 0; i < n; i++) + ((_interswitch__ResetPassword*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__ResetPassword*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ResetPassword(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__ResetPassword %p -> %p\n", q, p)); + *(_interswitch__ResetPassword*)p = *(_interswitch__ResetPassword*)q; +} + +void _interswitch__ChangePasswordResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__ChangePasswordResponse::ChangePasswordResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__ChangePasswordResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__ChangePasswordResponse::ChangePasswordResult); + /* transient soap skipped */ +} + +int _interswitch__ChangePasswordResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__ChangePasswordResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ChangePasswordResponse(struct soap *soap, const char *tag, int id, const _interswitch__ChangePasswordResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse), type)) + return soap->error; + if (a->ChangePasswordResult) + soap_element_result(soap, "interswitch:ChangePasswordResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:ChangePasswordResult", -1, &(a->_interswitch__ChangePasswordResponse::ChangePasswordResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__ChangePasswordResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__ChangePasswordResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__ChangePasswordResponse * SOAP_FMAC4 soap_in__interswitch__ChangePasswordResponse(struct soap *soap, const char *tag, _interswitch__ChangePasswordResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__ChangePasswordResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse, sizeof(_interswitch__ChangePasswordResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__ChangePasswordResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_ChangePasswordResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_ChangePasswordResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:ChangePasswordResult", &(a->_interswitch__ChangePasswordResponse::ChangePasswordResult), "xsd:string")) + { soap_flag_ChangePasswordResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:ChangePasswordResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__ChangePasswordResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse, 0, sizeof(_interswitch__ChangePasswordResponse), 0, soap_copy__interswitch__ChangePasswordResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__ChangePasswordResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse); + if (this->soap_out(soap, tag?tag:"interswitch:ChangePasswordResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__ChangePasswordResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__ChangePasswordResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__ChangePasswordResponse * SOAP_FMAC4 soap_get__interswitch__ChangePasswordResponse(struct soap *soap, _interswitch__ChangePasswordResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__ChangePasswordResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__ChangePasswordResponse * SOAP_FMAC2 soap_instantiate__interswitch__ChangePasswordResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__ChangePasswordResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__ChangePasswordResponse); + if (size) + *size = sizeof(_interswitch__ChangePasswordResponse); + ((_interswitch__ChangePasswordResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__ChangePasswordResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__ChangePasswordResponse); + for (int i = 0; i < n; i++) + ((_interswitch__ChangePasswordResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__ChangePasswordResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ChangePasswordResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__ChangePasswordResponse %p -> %p\n", q, p)); + *(_interswitch__ChangePasswordResponse*)p = *(_interswitch__ChangePasswordResponse*)q; +} + +void _interswitch__ChangePassword::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__ChangePassword::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__ChangePassword::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__ChangePassword::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__ChangePassword::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__ChangePassword(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ChangePassword(struct soap *soap, const char *tag, int id, const _interswitch__ChangePassword *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__ChangePassword), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__ChangePassword::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__ChangePassword::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__ChangePassword(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__ChangePassword * SOAP_FMAC4 soap_in__interswitch__ChangePassword(struct soap *soap, const char *tag, _interswitch__ChangePassword *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__ChangePassword *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__ChangePassword, sizeof(_interswitch__ChangePassword), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__ChangePassword) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__ChangePassword *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__ChangePassword::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__ChangePassword *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__ChangePassword, 0, sizeof(_interswitch__ChangePassword), 0, soap_copy__interswitch__ChangePassword); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__ChangePassword::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__ChangePassword); + if (this->soap_out(soap, tag?tag:"interswitch:ChangePassword", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__ChangePassword::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__ChangePassword(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__ChangePassword * SOAP_FMAC4 soap_get__interswitch__ChangePassword(struct soap *soap, _interswitch__ChangePassword *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__ChangePassword(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__ChangePassword * SOAP_FMAC2 soap_instantiate__interswitch__ChangePassword(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__ChangePassword(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__ChangePassword, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__ChangePassword); + if (size) + *size = sizeof(_interswitch__ChangePassword); + ((_interswitch__ChangePassword*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__ChangePassword[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__ChangePassword); + for (int i = 0; i < n; i++) + ((_interswitch__ChangePassword*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__ChangePassword*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ChangePassword(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__ChangePassword %p -> %p\n", q, p)); + *(_interswitch__ChangePassword*)p = *(_interswitch__ChangePassword*)q; +} + +void _interswitch__UpdateUserResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__UpdateUserResponse::UpdateUserResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__UpdateUserResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__UpdateUserResponse::UpdateUserResult); + /* transient soap skipped */ +} + +int _interswitch__UpdateUserResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__UpdateUserResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__UpdateUserResponse(struct soap *soap, const char *tag, int id, const _interswitch__UpdateUserResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__UpdateUserResponse), type)) + return soap->error; + if (a->UpdateUserResult) + soap_element_result(soap, "interswitch:UpdateUserResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:UpdateUserResult", -1, &(a->_interswitch__UpdateUserResponse::UpdateUserResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__UpdateUserResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__UpdateUserResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__UpdateUserResponse * SOAP_FMAC4 soap_in__interswitch__UpdateUserResponse(struct soap *soap, const char *tag, _interswitch__UpdateUserResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__UpdateUserResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__UpdateUserResponse, sizeof(_interswitch__UpdateUserResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__UpdateUserResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__UpdateUserResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_UpdateUserResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_UpdateUserResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:UpdateUserResult", &(a->_interswitch__UpdateUserResponse::UpdateUserResult), "xsd:string")) + { soap_flag_UpdateUserResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:UpdateUserResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__UpdateUserResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__UpdateUserResponse, 0, sizeof(_interswitch__UpdateUserResponse), 0, soap_copy__interswitch__UpdateUserResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__UpdateUserResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__UpdateUserResponse); + if (this->soap_out(soap, tag?tag:"interswitch:UpdateUserResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__UpdateUserResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__UpdateUserResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__UpdateUserResponse * SOAP_FMAC4 soap_get__interswitch__UpdateUserResponse(struct soap *soap, _interswitch__UpdateUserResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__UpdateUserResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__UpdateUserResponse * SOAP_FMAC2 soap_instantiate__interswitch__UpdateUserResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__UpdateUserResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__UpdateUserResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__UpdateUserResponse); + if (size) + *size = sizeof(_interswitch__UpdateUserResponse); + ((_interswitch__UpdateUserResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__UpdateUserResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__UpdateUserResponse); + for (int i = 0; i < n; i++) + ((_interswitch__UpdateUserResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__UpdateUserResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__UpdateUserResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__UpdateUserResponse %p -> %p\n", q, p)); + *(_interswitch__UpdateUserResponse*)p = *(_interswitch__UpdateUserResponse*)q; +} + +void _interswitch__UpdateUser::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__UpdateUser::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__UpdateUser::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__UpdateUser::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__UpdateUser::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__UpdateUser(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__UpdateUser(struct soap *soap, const char *tag, int id, const _interswitch__UpdateUser *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__UpdateUser), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__UpdateUser::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__UpdateUser::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__UpdateUser(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__UpdateUser * SOAP_FMAC4 soap_in__interswitch__UpdateUser(struct soap *soap, const char *tag, _interswitch__UpdateUser *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__UpdateUser *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__UpdateUser, sizeof(_interswitch__UpdateUser), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__UpdateUser) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__UpdateUser *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__UpdateUser::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__UpdateUser *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__UpdateUser, 0, sizeof(_interswitch__UpdateUser), 0, soap_copy__interswitch__UpdateUser); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__UpdateUser::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__UpdateUser); + if (this->soap_out(soap, tag?tag:"interswitch:UpdateUser", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__UpdateUser::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__UpdateUser(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__UpdateUser * SOAP_FMAC4 soap_get__interswitch__UpdateUser(struct soap *soap, _interswitch__UpdateUser *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__UpdateUser(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__UpdateUser * SOAP_FMAC2 soap_instantiate__interswitch__UpdateUser(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__UpdateUser(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__UpdateUser, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__UpdateUser); + if (size) + *size = sizeof(_interswitch__UpdateUser); + ((_interswitch__UpdateUser*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__UpdateUser[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__UpdateUser); + for (int i = 0; i < n; i++) + ((_interswitch__UpdateUser*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__UpdateUser*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__UpdateUser(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__UpdateUser %p -> %p\n", q, p)); + *(_interswitch__UpdateUser*)p = *(_interswitch__UpdateUser*)q; +} + +void _interswitch__ActivateUserResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__ActivateUserResponse::ActivateUserResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__ActivateUserResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__ActivateUserResponse::ActivateUserResult); + /* transient soap skipped */ +} + +int _interswitch__ActivateUserResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__ActivateUserResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ActivateUserResponse(struct soap *soap, const char *tag, int id, const _interswitch__ActivateUserResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__ActivateUserResponse), type)) + return soap->error; + if (a->ActivateUserResult) + soap_element_result(soap, "interswitch:ActivateUserResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:ActivateUserResult", -1, &(a->_interswitch__ActivateUserResponse::ActivateUserResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__ActivateUserResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__ActivateUserResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__ActivateUserResponse * SOAP_FMAC4 soap_in__interswitch__ActivateUserResponse(struct soap *soap, const char *tag, _interswitch__ActivateUserResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__ActivateUserResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__ActivateUserResponse, sizeof(_interswitch__ActivateUserResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__ActivateUserResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__ActivateUserResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_ActivateUserResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_ActivateUserResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:ActivateUserResult", &(a->_interswitch__ActivateUserResponse::ActivateUserResult), "xsd:string")) + { soap_flag_ActivateUserResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:ActivateUserResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__ActivateUserResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__ActivateUserResponse, 0, sizeof(_interswitch__ActivateUserResponse), 0, soap_copy__interswitch__ActivateUserResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__ActivateUserResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__ActivateUserResponse); + if (this->soap_out(soap, tag?tag:"interswitch:ActivateUserResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__ActivateUserResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__ActivateUserResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__ActivateUserResponse * SOAP_FMAC4 soap_get__interswitch__ActivateUserResponse(struct soap *soap, _interswitch__ActivateUserResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__ActivateUserResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__ActivateUserResponse * SOAP_FMAC2 soap_instantiate__interswitch__ActivateUserResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__ActivateUserResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__ActivateUserResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__ActivateUserResponse); + if (size) + *size = sizeof(_interswitch__ActivateUserResponse); + ((_interswitch__ActivateUserResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__ActivateUserResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__ActivateUserResponse); + for (int i = 0; i < n; i++) + ((_interswitch__ActivateUserResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__ActivateUserResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ActivateUserResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__ActivateUserResponse %p -> %p\n", q, p)); + *(_interswitch__ActivateUserResponse*)p = *(_interswitch__ActivateUserResponse*)q; +} + +void _interswitch__ActivateUser::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__ActivateUser::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__ActivateUser::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__ActivateUser::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__ActivateUser::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__ActivateUser(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ActivateUser(struct soap *soap, const char *tag, int id, const _interswitch__ActivateUser *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__ActivateUser), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__ActivateUser::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__ActivateUser::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__ActivateUser(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__ActivateUser * SOAP_FMAC4 soap_in__interswitch__ActivateUser(struct soap *soap, const char *tag, _interswitch__ActivateUser *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__ActivateUser *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__ActivateUser, sizeof(_interswitch__ActivateUser), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__ActivateUser) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__ActivateUser *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__ActivateUser::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__ActivateUser *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__ActivateUser, 0, sizeof(_interswitch__ActivateUser), 0, soap_copy__interswitch__ActivateUser); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__ActivateUser::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__ActivateUser); + if (this->soap_out(soap, tag?tag:"interswitch:ActivateUser", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__ActivateUser::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__ActivateUser(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__ActivateUser * SOAP_FMAC4 soap_get__interswitch__ActivateUser(struct soap *soap, _interswitch__ActivateUser *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__ActivateUser(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__ActivateUser * SOAP_FMAC2 soap_instantiate__interswitch__ActivateUser(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__ActivateUser(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__ActivateUser, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__ActivateUser); + if (size) + *size = sizeof(_interswitch__ActivateUser); + ((_interswitch__ActivateUser*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__ActivateUser[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__ActivateUser); + for (int i = 0; i < n; i++) + ((_interswitch__ActivateUser*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__ActivateUser*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ActivateUser(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__ActivateUser %p -> %p\n", q, p)); + *(_interswitch__ActivateUser*)p = *(_interswitch__ActivateUser*)q; +} + +void _interswitch__CreateUserResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__CreateUserResponse::CreateUserResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__CreateUserResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__CreateUserResponse::CreateUserResult); + /* transient soap skipped */ +} + +int _interswitch__CreateUserResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__CreateUserResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__CreateUserResponse(struct soap *soap, const char *tag, int id, const _interswitch__CreateUserResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__CreateUserResponse), type)) + return soap->error; + if (a->CreateUserResult) + soap_element_result(soap, "interswitch:CreateUserResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:CreateUserResult", -1, &(a->_interswitch__CreateUserResponse::CreateUserResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__CreateUserResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__CreateUserResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__CreateUserResponse * SOAP_FMAC4 soap_in__interswitch__CreateUserResponse(struct soap *soap, const char *tag, _interswitch__CreateUserResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__CreateUserResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__CreateUserResponse, sizeof(_interswitch__CreateUserResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__CreateUserResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__CreateUserResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_CreateUserResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_CreateUserResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:CreateUserResult", &(a->_interswitch__CreateUserResponse::CreateUserResult), "xsd:string")) + { soap_flag_CreateUserResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:CreateUserResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__CreateUserResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__CreateUserResponse, 0, sizeof(_interswitch__CreateUserResponse), 0, soap_copy__interswitch__CreateUserResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__CreateUserResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__CreateUserResponse); + if (this->soap_out(soap, tag?tag:"interswitch:CreateUserResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__CreateUserResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__CreateUserResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__CreateUserResponse * SOAP_FMAC4 soap_get__interswitch__CreateUserResponse(struct soap *soap, _interswitch__CreateUserResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__CreateUserResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__CreateUserResponse * SOAP_FMAC2 soap_instantiate__interswitch__CreateUserResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__CreateUserResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__CreateUserResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__CreateUserResponse); + if (size) + *size = sizeof(_interswitch__CreateUserResponse); + ((_interswitch__CreateUserResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__CreateUserResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__CreateUserResponse); + for (int i = 0; i < n; i++) + ((_interswitch__CreateUserResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__CreateUserResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__CreateUserResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__CreateUserResponse %p -> %p\n", q, p)); + *(_interswitch__CreateUserResponse*)p = *(_interswitch__CreateUserResponse*)q; +} + +void _interswitch__CreateUser::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__CreateUser::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__CreateUser::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__CreateUser::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__CreateUser::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__CreateUser(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__CreateUser(struct soap *soap, const char *tag, int id, const _interswitch__CreateUser *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__CreateUser), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__CreateUser::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__CreateUser::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__CreateUser(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__CreateUser * SOAP_FMAC4 soap_in__interswitch__CreateUser(struct soap *soap, const char *tag, _interswitch__CreateUser *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__CreateUser *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__CreateUser, sizeof(_interswitch__CreateUser), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__CreateUser) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__CreateUser *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__CreateUser::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__CreateUser *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__CreateUser, 0, sizeof(_interswitch__CreateUser), 0, soap_copy__interswitch__CreateUser); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__CreateUser::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__CreateUser); + if (this->soap_out(soap, tag?tag:"interswitch:CreateUser", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__CreateUser::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__CreateUser(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__CreateUser * SOAP_FMAC4 soap_get__interswitch__CreateUser(struct soap *soap, _interswitch__CreateUser *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__CreateUser(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__CreateUser * SOAP_FMAC2 soap_instantiate__interswitch__CreateUser(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__CreateUser(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__CreateUser, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__CreateUser); + if (size) + *size = sizeof(_interswitch__CreateUser); + ((_interswitch__CreateUser*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__CreateUser[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__CreateUser); + for (int i = 0; i < n; i++) + ((_interswitch__CreateUser*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__CreateUser*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__CreateUser(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__CreateUser %p -> %p\n", q, p)); + *(_interswitch__CreateUser*)p = *(_interswitch__CreateUser*)q; +} + +void _interswitch__GetSystemSettingsResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetSystemSettingsResponse::GetSystemSettingsResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetSystemSettingsResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetSystemSettingsResponse::GetSystemSettingsResult); + /* transient soap skipped */ +} + +int _interswitch__GetSystemSettingsResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetSystemSettingsResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetSystemSettingsResponse(struct soap *soap, const char *tag, int id, const _interswitch__GetSystemSettingsResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse), type)) + return soap->error; + if (a->GetSystemSettingsResult) + soap_element_result(soap, "interswitch:GetSystemSettingsResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:GetSystemSettingsResult", -1, &(a->_interswitch__GetSystemSettingsResponse::GetSystemSettingsResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetSystemSettingsResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetSystemSettingsResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetSystemSettingsResponse * SOAP_FMAC4 soap_in__interswitch__GetSystemSettingsResponse(struct soap *soap, const char *tag, _interswitch__GetSystemSettingsResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetSystemSettingsResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse, sizeof(_interswitch__GetSystemSettingsResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetSystemSettingsResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_GetSystemSettingsResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_GetSystemSettingsResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:GetSystemSettingsResult", &(a->_interswitch__GetSystemSettingsResponse::GetSystemSettingsResult), "xsd:string")) + { soap_flag_GetSystemSettingsResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:GetSystemSettingsResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetSystemSettingsResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse, 0, sizeof(_interswitch__GetSystemSettingsResponse), 0, soap_copy__interswitch__GetSystemSettingsResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetSystemSettingsResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse); + if (this->soap_out(soap, tag?tag:"interswitch:GetSystemSettingsResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetSystemSettingsResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetSystemSettingsResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetSystemSettingsResponse * SOAP_FMAC4 soap_get__interswitch__GetSystemSettingsResponse(struct soap *soap, _interswitch__GetSystemSettingsResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetSystemSettingsResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetSystemSettingsResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetSystemSettingsResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetSystemSettingsResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetSystemSettingsResponse); + if (size) + *size = sizeof(_interswitch__GetSystemSettingsResponse); + ((_interswitch__GetSystemSettingsResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetSystemSettingsResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetSystemSettingsResponse); + for (int i = 0; i < n; i++) + ((_interswitch__GetSystemSettingsResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetSystemSettingsResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetSystemSettingsResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetSystemSettingsResponse %p -> %p\n", q, p)); + *(_interswitch__GetSystemSettingsResponse*)p = *(_interswitch__GetSystemSettingsResponse*)q; +} + +void _interswitch__GetSystemSettings::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetSystemSettings::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetSystemSettings::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetSystemSettings::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__GetSystemSettings::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetSystemSettings(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetSystemSettings(struct soap *soap, const char *tag, int id, const _interswitch__GetSystemSettings *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetSystemSettings), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__GetSystemSettings::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetSystemSettings::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetSystemSettings(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetSystemSettings * SOAP_FMAC4 soap_in__interswitch__GetSystemSettings(struct soap *soap, const char *tag, _interswitch__GetSystemSettings *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetSystemSettings *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetSystemSettings, sizeof(_interswitch__GetSystemSettings), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetSystemSettings) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetSystemSettings *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__GetSystemSettings::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetSystemSettings *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetSystemSettings, 0, sizeof(_interswitch__GetSystemSettings), 0, soap_copy__interswitch__GetSystemSettings); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetSystemSettings::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetSystemSettings); + if (this->soap_out(soap, tag?tag:"interswitch:GetSystemSettings", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetSystemSettings::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetSystemSettings(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetSystemSettings * SOAP_FMAC4 soap_get__interswitch__GetSystemSettings(struct soap *soap, _interswitch__GetSystemSettings *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetSystemSettings(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetSystemSettings * SOAP_FMAC2 soap_instantiate__interswitch__GetSystemSettings(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetSystemSettings(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetSystemSettings, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetSystemSettings); + if (size) + *size = sizeof(_interswitch__GetSystemSettings); + ((_interswitch__GetSystemSettings*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetSystemSettings[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetSystemSettings); + for (int i = 0; i < n; i++) + ((_interswitch__GetSystemSettings*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetSystemSettings*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetSystemSettings(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetSystemSettings %p -> %p\n", q, p)); + *(_interswitch__GetSystemSettings*)p = *(_interswitch__GetSystemSettings*)q; +} + +void _interswitch__QueryTransactionResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__QueryTransactionResponse::QueryTransactionResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__QueryTransactionResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__QueryTransactionResponse::QueryTransactionResult); + /* transient soap skipped */ +} + +int _interswitch__QueryTransactionResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__QueryTransactionResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__QueryTransactionResponse(struct soap *soap, const char *tag, int id, const _interswitch__QueryTransactionResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse), type)) + return soap->error; + if (a->QueryTransactionResult) + soap_element_result(soap, "interswitch:QueryTransactionResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:QueryTransactionResult", -1, &(a->_interswitch__QueryTransactionResponse::QueryTransactionResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__QueryTransactionResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__QueryTransactionResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__QueryTransactionResponse * SOAP_FMAC4 soap_in__interswitch__QueryTransactionResponse(struct soap *soap, const char *tag, _interswitch__QueryTransactionResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__QueryTransactionResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse, sizeof(_interswitch__QueryTransactionResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__QueryTransactionResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_QueryTransactionResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_QueryTransactionResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:QueryTransactionResult", &(a->_interswitch__QueryTransactionResponse::QueryTransactionResult), "xsd:string")) + { soap_flag_QueryTransactionResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:QueryTransactionResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__QueryTransactionResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse, 0, sizeof(_interswitch__QueryTransactionResponse), 0, soap_copy__interswitch__QueryTransactionResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__QueryTransactionResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse); + if (this->soap_out(soap, tag?tag:"interswitch:QueryTransactionResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__QueryTransactionResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__QueryTransactionResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__QueryTransactionResponse * SOAP_FMAC4 soap_get__interswitch__QueryTransactionResponse(struct soap *soap, _interswitch__QueryTransactionResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__QueryTransactionResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__QueryTransactionResponse * SOAP_FMAC2 soap_instantiate__interswitch__QueryTransactionResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__QueryTransactionResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__QueryTransactionResponse); + if (size) + *size = sizeof(_interswitch__QueryTransactionResponse); + ((_interswitch__QueryTransactionResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__QueryTransactionResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__QueryTransactionResponse); + for (int i = 0; i < n; i++) + ((_interswitch__QueryTransactionResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__QueryTransactionResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__QueryTransactionResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__QueryTransactionResponse %p -> %p\n", q, p)); + *(_interswitch__QueryTransactionResponse*)p = *(_interswitch__QueryTransactionResponse*)q; +} + +void _interswitch__QueryTransaction::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__QueryTransaction::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__QueryTransaction::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__QueryTransaction::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__QueryTransaction::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__QueryTransaction(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__QueryTransaction(struct soap *soap, const char *tag, int id, const _interswitch__QueryTransaction *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__QueryTransaction), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__QueryTransaction::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__QueryTransaction::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__QueryTransaction(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__QueryTransaction * SOAP_FMAC4 soap_in__interswitch__QueryTransaction(struct soap *soap, const char *tag, _interswitch__QueryTransaction *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__QueryTransaction *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__QueryTransaction, sizeof(_interswitch__QueryTransaction), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__QueryTransaction) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__QueryTransaction *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__QueryTransaction::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__QueryTransaction *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__QueryTransaction, 0, sizeof(_interswitch__QueryTransaction), 0, soap_copy__interswitch__QueryTransaction); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__QueryTransaction::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__QueryTransaction); + if (this->soap_out(soap, tag?tag:"interswitch:QueryTransaction", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__QueryTransaction::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__QueryTransaction(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__QueryTransaction * SOAP_FMAC4 soap_get__interswitch__QueryTransaction(struct soap *soap, _interswitch__QueryTransaction *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__QueryTransaction(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__QueryTransaction * SOAP_FMAC2 soap_instantiate__interswitch__QueryTransaction(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__QueryTransaction(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__QueryTransaction, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__QueryTransaction); + if (size) + *size = sizeof(_interswitch__QueryTransaction); + ((_interswitch__QueryTransaction*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__QueryTransaction[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__QueryTransaction); + for (int i = 0; i < n; i++) + ((_interswitch__QueryTransaction*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__QueryTransaction*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__QueryTransaction(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__QueryTransaction %p -> %p\n", q, p)); + *(_interswitch__QueryTransaction*)p = *(_interswitch__QueryTransaction*)q; +} + +void _interswitch__StatusCheckResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__StatusCheckResponse::StatusCheckResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__StatusCheckResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__StatusCheckResponse::StatusCheckResult); + /* transient soap skipped */ +} + +int _interswitch__StatusCheckResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__StatusCheckResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__StatusCheckResponse(struct soap *soap, const char *tag, int id, const _interswitch__StatusCheckResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__StatusCheckResponse), type)) + return soap->error; + if (a->StatusCheckResult) + soap_element_result(soap, "interswitch:StatusCheckResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:StatusCheckResult", -1, &(a->_interswitch__StatusCheckResponse::StatusCheckResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__StatusCheckResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__StatusCheckResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__StatusCheckResponse * SOAP_FMAC4 soap_in__interswitch__StatusCheckResponse(struct soap *soap, const char *tag, _interswitch__StatusCheckResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__StatusCheckResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__StatusCheckResponse, sizeof(_interswitch__StatusCheckResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__StatusCheckResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__StatusCheckResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_StatusCheckResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_StatusCheckResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:StatusCheckResult", &(a->_interswitch__StatusCheckResponse::StatusCheckResult), "xsd:string")) + { soap_flag_StatusCheckResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:StatusCheckResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__StatusCheckResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__StatusCheckResponse, 0, sizeof(_interswitch__StatusCheckResponse), 0, soap_copy__interswitch__StatusCheckResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__StatusCheckResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__StatusCheckResponse); + if (this->soap_out(soap, tag?tag:"interswitch:StatusCheckResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__StatusCheckResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__StatusCheckResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__StatusCheckResponse * SOAP_FMAC4 soap_get__interswitch__StatusCheckResponse(struct soap *soap, _interswitch__StatusCheckResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__StatusCheckResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__StatusCheckResponse * SOAP_FMAC2 soap_instantiate__interswitch__StatusCheckResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__StatusCheckResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__StatusCheckResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__StatusCheckResponse); + if (size) + *size = sizeof(_interswitch__StatusCheckResponse); + ((_interswitch__StatusCheckResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__StatusCheckResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__StatusCheckResponse); + for (int i = 0; i < n; i++) + ((_interswitch__StatusCheckResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__StatusCheckResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__StatusCheckResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__StatusCheckResponse %p -> %p\n", q, p)); + *(_interswitch__StatusCheckResponse*)p = *(_interswitch__StatusCheckResponse*)q; +} + +void _interswitch__StatusCheck::soap_default(struct soap *soap) +{ + this->soap = soap; + /* transient soap skipped */ +} + +void _interswitch__StatusCheck::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + /* transient soap skipped */ +} + +int _interswitch__StatusCheck::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__StatusCheck(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__StatusCheck(struct soap *soap, const char *tag, int id, const _interswitch__StatusCheck *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__StatusCheck), type)) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__StatusCheck::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__StatusCheck(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__StatusCheck * SOAP_FMAC4 soap_in__interswitch__StatusCheck(struct soap *soap, const char *tag, _interswitch__StatusCheck *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__StatusCheck *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__StatusCheck, sizeof(_interswitch__StatusCheck), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__StatusCheck) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__StatusCheck *)a->soap_in(soap, tag, type); + } + } + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__StatusCheck *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__StatusCheck, 0, sizeof(_interswitch__StatusCheck), 0, soap_copy__interswitch__StatusCheck); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__StatusCheck::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__StatusCheck); + if (this->soap_out(soap, tag?tag:"interswitch:StatusCheck", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__StatusCheck::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__StatusCheck(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__StatusCheck * SOAP_FMAC4 soap_get__interswitch__StatusCheck(struct soap *soap, _interswitch__StatusCheck *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__StatusCheck(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__StatusCheck * SOAP_FMAC2 soap_instantiate__interswitch__StatusCheck(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__StatusCheck(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__StatusCheck, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__StatusCheck); + if (size) + *size = sizeof(_interswitch__StatusCheck); + ((_interswitch__StatusCheck*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__StatusCheck[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__StatusCheck); + for (int i = 0; i < n; i++) + ((_interswitch__StatusCheck*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__StatusCheck*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__StatusCheck(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__StatusCheck %p -> %p\n", q, p)); + *(_interswitch__StatusCheck*)p = *(_interswitch__StatusCheck*)q; +} + +void _interswitch__ReverseCashOutResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__ReverseCashOutResponse::ReverseCashOutResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__ReverseCashOutResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__ReverseCashOutResponse::ReverseCashOutResult); + /* transient soap skipped */ +} + +int _interswitch__ReverseCashOutResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__ReverseCashOutResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ReverseCashOutResponse(struct soap *soap, const char *tag, int id, const _interswitch__ReverseCashOutResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse), type)) + return soap->error; + if (a->ReverseCashOutResult) + soap_element_result(soap, "interswitch:ReverseCashOutResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:ReverseCashOutResult", -1, &(a->_interswitch__ReverseCashOutResponse::ReverseCashOutResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__ReverseCashOutResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__ReverseCashOutResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__ReverseCashOutResponse * SOAP_FMAC4 soap_in__interswitch__ReverseCashOutResponse(struct soap *soap, const char *tag, _interswitch__ReverseCashOutResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__ReverseCashOutResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse, sizeof(_interswitch__ReverseCashOutResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__ReverseCashOutResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_ReverseCashOutResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_ReverseCashOutResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:ReverseCashOutResult", &(a->_interswitch__ReverseCashOutResponse::ReverseCashOutResult), "xsd:string")) + { soap_flag_ReverseCashOutResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:ReverseCashOutResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__ReverseCashOutResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse, 0, sizeof(_interswitch__ReverseCashOutResponse), 0, soap_copy__interswitch__ReverseCashOutResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__ReverseCashOutResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse); + if (this->soap_out(soap, tag?tag:"interswitch:ReverseCashOutResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__ReverseCashOutResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__ReverseCashOutResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__ReverseCashOutResponse * SOAP_FMAC4 soap_get__interswitch__ReverseCashOutResponse(struct soap *soap, _interswitch__ReverseCashOutResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__ReverseCashOutResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__ReverseCashOutResponse * SOAP_FMAC2 soap_instantiate__interswitch__ReverseCashOutResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__ReverseCashOutResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__ReverseCashOutResponse); + if (size) + *size = sizeof(_interswitch__ReverseCashOutResponse); + ((_interswitch__ReverseCashOutResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__ReverseCashOutResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__ReverseCashOutResponse); + for (int i = 0; i < n; i++) + ((_interswitch__ReverseCashOutResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__ReverseCashOutResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ReverseCashOutResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__ReverseCashOutResponse %p -> %p\n", q, p)); + *(_interswitch__ReverseCashOutResponse*)p = *(_interswitch__ReverseCashOutResponse*)q; +} + +void _interswitch__ReverseCashOut::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__ReverseCashOut::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__ReverseCashOut::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__ReverseCashOut::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__ReverseCashOut::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__ReverseCashOut(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ReverseCashOut(struct soap *soap, const char *tag, int id, const _interswitch__ReverseCashOut *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__ReverseCashOut), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__ReverseCashOut::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__ReverseCashOut::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__ReverseCashOut(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__ReverseCashOut * SOAP_FMAC4 soap_in__interswitch__ReverseCashOut(struct soap *soap, const char *tag, _interswitch__ReverseCashOut *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__ReverseCashOut *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__ReverseCashOut, sizeof(_interswitch__ReverseCashOut), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__ReverseCashOut) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__ReverseCashOut *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__ReverseCashOut::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__ReverseCashOut *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__ReverseCashOut, 0, sizeof(_interswitch__ReverseCashOut), 0, soap_copy__interswitch__ReverseCashOut); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__ReverseCashOut::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__ReverseCashOut); + if (this->soap_out(soap, tag?tag:"interswitch:ReverseCashOut", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__ReverseCashOut::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__ReverseCashOut(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__ReverseCashOut * SOAP_FMAC4 soap_get__interswitch__ReverseCashOut(struct soap *soap, _interswitch__ReverseCashOut *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__ReverseCashOut(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__ReverseCashOut * SOAP_FMAC2 soap_instantiate__interswitch__ReverseCashOut(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__ReverseCashOut(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__ReverseCashOut, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__ReverseCashOut); + if (size) + *size = sizeof(_interswitch__ReverseCashOut); + ((_interswitch__ReverseCashOut*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__ReverseCashOut[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__ReverseCashOut); + for (int i = 0; i < n; i++) + ((_interswitch__ReverseCashOut*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__ReverseCashOut*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ReverseCashOut(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__ReverseCashOut %p -> %p\n", q, p)); + *(_interswitch__ReverseCashOut*)p = *(_interswitch__ReverseCashOut*)q; +} + +void _interswitch__AuthoriseAccountCashOutResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__AuthoriseAccountCashOutResponse::AuthoriseAccountCashOutResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__AuthoriseAccountCashOutResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__AuthoriseAccountCashOutResponse::AuthoriseAccountCashOutResult); + /* transient soap skipped */ +} + +int _interswitch__AuthoriseAccountCashOutResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__AuthoriseAccountCashOutResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthoriseAccountCashOutResponse(struct soap *soap, const char *tag, int id, const _interswitch__AuthoriseAccountCashOutResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse), type)) + return soap->error; + if (a->AuthoriseAccountCashOutResult) + soap_element_result(soap, "interswitch:AuthoriseAccountCashOutResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:AuthoriseAccountCashOutResult", -1, &(a->_interswitch__AuthoriseAccountCashOutResponse::AuthoriseAccountCashOutResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__AuthoriseAccountCashOutResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__AuthoriseAccountCashOutResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__AuthoriseAccountCashOutResponse * SOAP_FMAC4 soap_in__interswitch__AuthoriseAccountCashOutResponse(struct soap *soap, const char *tag, _interswitch__AuthoriseAccountCashOutResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__AuthoriseAccountCashOutResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse, sizeof(_interswitch__AuthoriseAccountCashOutResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__AuthoriseAccountCashOutResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_AuthoriseAccountCashOutResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_AuthoriseAccountCashOutResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:AuthoriseAccountCashOutResult", &(a->_interswitch__AuthoriseAccountCashOutResponse::AuthoriseAccountCashOutResult), "xsd:string")) + { soap_flag_AuthoriseAccountCashOutResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:AuthoriseAccountCashOutResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__AuthoriseAccountCashOutResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse, 0, sizeof(_interswitch__AuthoriseAccountCashOutResponse), 0, soap_copy__interswitch__AuthoriseAccountCashOutResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__AuthoriseAccountCashOutResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse); + if (this->soap_out(soap, tag?tag:"interswitch:AuthoriseAccountCashOutResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__AuthoriseAccountCashOutResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__AuthoriseAccountCashOutResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__AuthoriseAccountCashOutResponse * SOAP_FMAC4 soap_get__interswitch__AuthoriseAccountCashOutResponse(struct soap *soap, _interswitch__AuthoriseAccountCashOutResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__AuthoriseAccountCashOutResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__AuthoriseAccountCashOutResponse * SOAP_FMAC2 soap_instantiate__interswitch__AuthoriseAccountCashOutResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__AuthoriseAccountCashOutResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthoriseAccountCashOutResponse); + if (size) + *size = sizeof(_interswitch__AuthoriseAccountCashOutResponse); + ((_interswitch__AuthoriseAccountCashOutResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthoriseAccountCashOutResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__AuthoriseAccountCashOutResponse); + for (int i = 0; i < n; i++) + ((_interswitch__AuthoriseAccountCashOutResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__AuthoriseAccountCashOutResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthoriseAccountCashOutResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__AuthoriseAccountCashOutResponse %p -> %p\n", q, p)); + *(_interswitch__AuthoriseAccountCashOutResponse*)p = *(_interswitch__AuthoriseAccountCashOutResponse*)q; +} + +void _interswitch__AuthoriseAccountCashOut::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__AuthoriseAccountCashOut::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__AuthoriseAccountCashOut::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__AuthoriseAccountCashOut::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__AuthoriseAccountCashOut::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__AuthoriseAccountCashOut(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthoriseAccountCashOut(struct soap *soap, const char *tag, int id, const _interswitch__AuthoriseAccountCashOut *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__AuthoriseAccountCashOut::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__AuthoriseAccountCashOut::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__AuthoriseAccountCashOut(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__AuthoriseAccountCashOut * SOAP_FMAC4 soap_in__interswitch__AuthoriseAccountCashOut(struct soap *soap, const char *tag, _interswitch__AuthoriseAccountCashOut *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__AuthoriseAccountCashOut *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut, sizeof(_interswitch__AuthoriseAccountCashOut), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__AuthoriseAccountCashOut *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__AuthoriseAccountCashOut::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__AuthoriseAccountCashOut *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut, 0, sizeof(_interswitch__AuthoriseAccountCashOut), 0, soap_copy__interswitch__AuthoriseAccountCashOut); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__AuthoriseAccountCashOut::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut); + if (this->soap_out(soap, tag?tag:"interswitch:AuthoriseAccountCashOut", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__AuthoriseAccountCashOut::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__AuthoriseAccountCashOut(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__AuthoriseAccountCashOut * SOAP_FMAC4 soap_get__interswitch__AuthoriseAccountCashOut(struct soap *soap, _interswitch__AuthoriseAccountCashOut *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__AuthoriseAccountCashOut(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__AuthoriseAccountCashOut * SOAP_FMAC2 soap_instantiate__interswitch__AuthoriseAccountCashOut(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__AuthoriseAccountCashOut(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthoriseAccountCashOut); + if (size) + *size = sizeof(_interswitch__AuthoriseAccountCashOut); + ((_interswitch__AuthoriseAccountCashOut*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthoriseAccountCashOut[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__AuthoriseAccountCashOut); + for (int i = 0; i < n; i++) + ((_interswitch__AuthoriseAccountCashOut*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__AuthoriseAccountCashOut*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthoriseAccountCashOut(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__AuthoriseAccountCashOut %p -> %p\n", q, p)); + *(_interswitch__AuthoriseAccountCashOut*)p = *(_interswitch__AuthoriseAccountCashOut*)q; +} + +void _interswitch__AuthoriseCashOutResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__AuthoriseCashOutResponse::AuthoriseCashOutResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__AuthoriseCashOutResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__AuthoriseCashOutResponse::AuthoriseCashOutResult); + /* transient soap skipped */ +} + +int _interswitch__AuthoriseCashOutResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__AuthoriseCashOutResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthoriseCashOutResponse(struct soap *soap, const char *tag, int id, const _interswitch__AuthoriseCashOutResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse), type)) + return soap->error; + if (a->AuthoriseCashOutResult) + soap_element_result(soap, "interswitch:AuthoriseCashOutResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:AuthoriseCashOutResult", -1, &(a->_interswitch__AuthoriseCashOutResponse::AuthoriseCashOutResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__AuthoriseCashOutResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__AuthoriseCashOutResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__AuthoriseCashOutResponse * SOAP_FMAC4 soap_in__interswitch__AuthoriseCashOutResponse(struct soap *soap, const char *tag, _interswitch__AuthoriseCashOutResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__AuthoriseCashOutResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse, sizeof(_interswitch__AuthoriseCashOutResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__AuthoriseCashOutResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_AuthoriseCashOutResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_AuthoriseCashOutResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:AuthoriseCashOutResult", &(a->_interswitch__AuthoriseCashOutResponse::AuthoriseCashOutResult), "xsd:string")) + { soap_flag_AuthoriseCashOutResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:AuthoriseCashOutResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__AuthoriseCashOutResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse, 0, sizeof(_interswitch__AuthoriseCashOutResponse), 0, soap_copy__interswitch__AuthoriseCashOutResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__AuthoriseCashOutResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse); + if (this->soap_out(soap, tag?tag:"interswitch:AuthoriseCashOutResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__AuthoriseCashOutResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__AuthoriseCashOutResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__AuthoriseCashOutResponse * SOAP_FMAC4 soap_get__interswitch__AuthoriseCashOutResponse(struct soap *soap, _interswitch__AuthoriseCashOutResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__AuthoriseCashOutResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__AuthoriseCashOutResponse * SOAP_FMAC2 soap_instantiate__interswitch__AuthoriseCashOutResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__AuthoriseCashOutResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthoriseCashOutResponse); + if (size) + *size = sizeof(_interswitch__AuthoriseCashOutResponse); + ((_interswitch__AuthoriseCashOutResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthoriseCashOutResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__AuthoriseCashOutResponse); + for (int i = 0; i < n; i++) + ((_interswitch__AuthoriseCashOutResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__AuthoriseCashOutResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthoriseCashOutResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__AuthoriseCashOutResponse %p -> %p\n", q, p)); + *(_interswitch__AuthoriseCashOutResponse*)p = *(_interswitch__AuthoriseCashOutResponse*)q; +} + +void _interswitch__AuthoriseCashOut::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__AuthoriseCashOut::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__AuthoriseCashOut::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__AuthoriseCashOut::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__AuthoriseCashOut::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__AuthoriseCashOut(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthoriseCashOut(struct soap *soap, const char *tag, int id, const _interswitch__AuthoriseCashOut *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__AuthoriseCashOut::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__AuthoriseCashOut::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__AuthoriseCashOut(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__AuthoriseCashOut * SOAP_FMAC4 soap_in__interswitch__AuthoriseCashOut(struct soap *soap, const char *tag, _interswitch__AuthoriseCashOut *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__AuthoriseCashOut *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut, sizeof(_interswitch__AuthoriseCashOut), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__AuthoriseCashOut *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__AuthoriseCashOut::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__AuthoriseCashOut *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut, 0, sizeof(_interswitch__AuthoriseCashOut), 0, soap_copy__interswitch__AuthoriseCashOut); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__AuthoriseCashOut::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut); + if (this->soap_out(soap, tag?tag:"interswitch:AuthoriseCashOut", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__AuthoriseCashOut::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__AuthoriseCashOut(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__AuthoriseCashOut * SOAP_FMAC4 soap_get__interswitch__AuthoriseCashOut(struct soap *soap, _interswitch__AuthoriseCashOut *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__AuthoriseCashOut(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__AuthoriseCashOut * SOAP_FMAC2 soap_instantiate__interswitch__AuthoriseCashOut(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__AuthoriseCashOut(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthoriseCashOut); + if (size) + *size = sizeof(_interswitch__AuthoriseCashOut); + ((_interswitch__AuthoriseCashOut*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthoriseCashOut[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__AuthoriseCashOut); + for (int i = 0; i < n; i++) + ((_interswitch__AuthoriseCashOut*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__AuthoriseCashOut*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthoriseCashOut(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__AuthoriseCashOut %p -> %p\n", q, p)); + *(_interswitch__AuthoriseCashOut*)p = *(_interswitch__AuthoriseCashOut*)q; +} + +void _interswitch__QueryTransferResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__QueryTransferResponse::QueryTransferResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__QueryTransferResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__QueryTransferResponse::QueryTransferResult); + /* transient soap skipped */ +} + +int _interswitch__QueryTransferResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__QueryTransferResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__QueryTransferResponse(struct soap *soap, const char *tag, int id, const _interswitch__QueryTransferResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__QueryTransferResponse), type)) + return soap->error; + if (a->QueryTransferResult) + soap_element_result(soap, "interswitch:QueryTransferResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:QueryTransferResult", -1, &(a->_interswitch__QueryTransferResponse::QueryTransferResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__QueryTransferResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__QueryTransferResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__QueryTransferResponse * SOAP_FMAC4 soap_in__interswitch__QueryTransferResponse(struct soap *soap, const char *tag, _interswitch__QueryTransferResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__QueryTransferResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__QueryTransferResponse, sizeof(_interswitch__QueryTransferResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__QueryTransferResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__QueryTransferResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_QueryTransferResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_QueryTransferResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:QueryTransferResult", &(a->_interswitch__QueryTransferResponse::QueryTransferResult), "xsd:string")) + { soap_flag_QueryTransferResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:QueryTransferResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__QueryTransferResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__QueryTransferResponse, 0, sizeof(_interswitch__QueryTransferResponse), 0, soap_copy__interswitch__QueryTransferResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__QueryTransferResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__QueryTransferResponse); + if (this->soap_out(soap, tag?tag:"interswitch:QueryTransferResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__QueryTransferResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__QueryTransferResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__QueryTransferResponse * SOAP_FMAC4 soap_get__interswitch__QueryTransferResponse(struct soap *soap, _interswitch__QueryTransferResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__QueryTransferResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__QueryTransferResponse * SOAP_FMAC2 soap_instantiate__interswitch__QueryTransferResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__QueryTransferResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__QueryTransferResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__QueryTransferResponse); + if (size) + *size = sizeof(_interswitch__QueryTransferResponse); + ((_interswitch__QueryTransferResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__QueryTransferResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__QueryTransferResponse); + for (int i = 0; i < n; i++) + ((_interswitch__QueryTransferResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__QueryTransferResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__QueryTransferResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__QueryTransferResponse %p -> %p\n", q, p)); + *(_interswitch__QueryTransferResponse*)p = *(_interswitch__QueryTransferResponse*)q; +} + +void _interswitch__QueryTransfer::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__QueryTransfer::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__QueryTransfer::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__QueryTransfer::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__QueryTransfer::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__QueryTransfer(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__QueryTransfer(struct soap *soap, const char *tag, int id, const _interswitch__QueryTransfer *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__QueryTransfer), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__QueryTransfer::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__QueryTransfer::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__QueryTransfer(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__QueryTransfer * SOAP_FMAC4 soap_in__interswitch__QueryTransfer(struct soap *soap, const char *tag, _interswitch__QueryTransfer *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__QueryTransfer *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__QueryTransfer, sizeof(_interswitch__QueryTransfer), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__QueryTransfer) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__QueryTransfer *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__QueryTransfer::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__QueryTransfer *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__QueryTransfer, 0, sizeof(_interswitch__QueryTransfer), 0, soap_copy__interswitch__QueryTransfer); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__QueryTransfer::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__QueryTransfer); + if (this->soap_out(soap, tag?tag:"interswitch:QueryTransfer", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__QueryTransfer::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__QueryTransfer(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__QueryTransfer * SOAP_FMAC4 soap_get__interswitch__QueryTransfer(struct soap *soap, _interswitch__QueryTransfer *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__QueryTransfer(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__QueryTransfer * SOAP_FMAC2 soap_instantiate__interswitch__QueryTransfer(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__QueryTransfer(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__QueryTransfer, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__QueryTransfer); + if (size) + *size = sizeof(_interswitch__QueryTransfer); + ((_interswitch__QueryTransfer*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__QueryTransfer[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__QueryTransfer); + for (int i = 0; i < n; i++) + ((_interswitch__QueryTransfer*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__QueryTransfer*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__QueryTransfer(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__QueryTransfer %p -> %p\n", q, p)); + *(_interswitch__QueryTransfer*)p = *(_interswitch__QueryTransfer*)q; +} + +void _interswitch__SendSessionKeyResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__SendSessionKeyResponse::SendSessionKeyResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__SendSessionKeyResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__SendSessionKeyResponse::SendSessionKeyResult); + /* transient soap skipped */ +} + +int _interswitch__SendSessionKeyResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__SendSessionKeyResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__SendSessionKeyResponse(struct soap *soap, const char *tag, int id, const _interswitch__SendSessionKeyResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse), type)) + return soap->error; + if (a->SendSessionKeyResult) + soap_element_result(soap, "interswitch:SendSessionKeyResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:SendSessionKeyResult", -1, &(a->_interswitch__SendSessionKeyResponse::SendSessionKeyResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__SendSessionKeyResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__SendSessionKeyResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__SendSessionKeyResponse * SOAP_FMAC4 soap_in__interswitch__SendSessionKeyResponse(struct soap *soap, const char *tag, _interswitch__SendSessionKeyResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__SendSessionKeyResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse, sizeof(_interswitch__SendSessionKeyResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__SendSessionKeyResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_SendSessionKeyResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_SendSessionKeyResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:SendSessionKeyResult", &(a->_interswitch__SendSessionKeyResponse::SendSessionKeyResult), "xsd:string")) + { soap_flag_SendSessionKeyResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:SendSessionKeyResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__SendSessionKeyResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse, 0, sizeof(_interswitch__SendSessionKeyResponse), 0, soap_copy__interswitch__SendSessionKeyResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__SendSessionKeyResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse); + if (this->soap_out(soap, tag?tag:"interswitch:SendSessionKeyResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__SendSessionKeyResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__SendSessionKeyResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__SendSessionKeyResponse * SOAP_FMAC4 soap_get__interswitch__SendSessionKeyResponse(struct soap *soap, _interswitch__SendSessionKeyResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__SendSessionKeyResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__SendSessionKeyResponse * SOAP_FMAC2 soap_instantiate__interswitch__SendSessionKeyResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__SendSessionKeyResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__SendSessionKeyResponse); + if (size) + *size = sizeof(_interswitch__SendSessionKeyResponse); + ((_interswitch__SendSessionKeyResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__SendSessionKeyResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__SendSessionKeyResponse); + for (int i = 0; i < n; i++) + ((_interswitch__SendSessionKeyResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__SendSessionKeyResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__SendSessionKeyResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__SendSessionKeyResponse %p -> %p\n", q, p)); + *(_interswitch__SendSessionKeyResponse*)p = *(_interswitch__SendSessionKeyResponse*)q; +} + +void _interswitch__SendSessionKey::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__SendSessionKey::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__SendSessionKey::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__SendSessionKey::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__SendSessionKey::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__SendSessionKey(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__SendSessionKey(struct soap *soap, const char *tag, int id, const _interswitch__SendSessionKey *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__SendSessionKey), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__SendSessionKey::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__SendSessionKey::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__SendSessionKey(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__SendSessionKey * SOAP_FMAC4 soap_in__interswitch__SendSessionKey(struct soap *soap, const char *tag, _interswitch__SendSessionKey *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__SendSessionKey *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__SendSessionKey, sizeof(_interswitch__SendSessionKey), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__SendSessionKey) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__SendSessionKey *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__SendSessionKey::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__SendSessionKey *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__SendSessionKey, 0, sizeof(_interswitch__SendSessionKey), 0, soap_copy__interswitch__SendSessionKey); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__SendSessionKey::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__SendSessionKey); + if (this->soap_out(soap, tag?tag:"interswitch:SendSessionKey", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__SendSessionKey::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__SendSessionKey(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__SendSessionKey * SOAP_FMAC4 soap_get__interswitch__SendSessionKey(struct soap *soap, _interswitch__SendSessionKey *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__SendSessionKey(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__SendSessionKey * SOAP_FMAC2 soap_instantiate__interswitch__SendSessionKey(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__SendSessionKey(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__SendSessionKey, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__SendSessionKey); + if (size) + *size = sizeof(_interswitch__SendSessionKey); + ((_interswitch__SendSessionKey*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__SendSessionKey[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__SendSessionKey); + for (int i = 0; i < n; i++) + ((_interswitch__SendSessionKey*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__SendSessionKey*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__SendSessionKey(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__SendSessionKey %p -> %p\n", q, p)); + *(_interswitch__SendSessionKey*)p = *(_interswitch__SendSessionKey*)q; +} + +void _interswitch__CancelTransferResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__CancelTransferResponse::CancelTransferResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__CancelTransferResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__CancelTransferResponse::CancelTransferResult); + /* transient soap skipped */ +} + +int _interswitch__CancelTransferResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__CancelTransferResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__CancelTransferResponse(struct soap *soap, const char *tag, int id, const _interswitch__CancelTransferResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__CancelTransferResponse), type)) + return soap->error; + if (a->CancelTransferResult) + soap_element_result(soap, "interswitch:CancelTransferResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:CancelTransferResult", -1, &(a->_interswitch__CancelTransferResponse::CancelTransferResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__CancelTransferResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__CancelTransferResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__CancelTransferResponse * SOAP_FMAC4 soap_in__interswitch__CancelTransferResponse(struct soap *soap, const char *tag, _interswitch__CancelTransferResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__CancelTransferResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__CancelTransferResponse, sizeof(_interswitch__CancelTransferResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__CancelTransferResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__CancelTransferResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_CancelTransferResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_CancelTransferResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:CancelTransferResult", &(a->_interswitch__CancelTransferResponse::CancelTransferResult), "xsd:string")) + { soap_flag_CancelTransferResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:CancelTransferResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__CancelTransferResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__CancelTransferResponse, 0, sizeof(_interswitch__CancelTransferResponse), 0, soap_copy__interswitch__CancelTransferResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__CancelTransferResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__CancelTransferResponse); + if (this->soap_out(soap, tag?tag:"interswitch:CancelTransferResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__CancelTransferResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__CancelTransferResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__CancelTransferResponse * SOAP_FMAC4 soap_get__interswitch__CancelTransferResponse(struct soap *soap, _interswitch__CancelTransferResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__CancelTransferResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__CancelTransferResponse * SOAP_FMAC2 soap_instantiate__interswitch__CancelTransferResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__CancelTransferResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__CancelTransferResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__CancelTransferResponse); + if (size) + *size = sizeof(_interswitch__CancelTransferResponse); + ((_interswitch__CancelTransferResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__CancelTransferResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__CancelTransferResponse); + for (int i = 0; i < n; i++) + ((_interswitch__CancelTransferResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__CancelTransferResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__CancelTransferResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__CancelTransferResponse %p -> %p\n", q, p)); + *(_interswitch__CancelTransferResponse*)p = *(_interswitch__CancelTransferResponse*)q; +} + +void _interswitch__CancelTransfer::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__CancelTransfer::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__CancelTransfer::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__CancelTransfer::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__CancelTransfer::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__CancelTransfer(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__CancelTransfer(struct soap *soap, const char *tag, int id, const _interswitch__CancelTransfer *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__CancelTransfer), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__CancelTransfer::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__CancelTransfer::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__CancelTransfer(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__CancelTransfer * SOAP_FMAC4 soap_in__interswitch__CancelTransfer(struct soap *soap, const char *tag, _interswitch__CancelTransfer *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__CancelTransfer *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__CancelTransfer, sizeof(_interswitch__CancelTransfer), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__CancelTransfer) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__CancelTransfer *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__CancelTransfer::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__CancelTransfer *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__CancelTransfer, 0, sizeof(_interswitch__CancelTransfer), 0, soap_copy__interswitch__CancelTransfer); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__CancelTransfer::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__CancelTransfer); + if (this->soap_out(soap, tag?tag:"interswitch:CancelTransfer", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__CancelTransfer::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__CancelTransfer(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__CancelTransfer * SOAP_FMAC4 soap_get__interswitch__CancelTransfer(struct soap *soap, _interswitch__CancelTransfer *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__CancelTransfer(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__CancelTransfer * SOAP_FMAC2 soap_instantiate__interswitch__CancelTransfer(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__CancelTransfer(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__CancelTransfer, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__CancelTransfer); + if (size) + *size = sizeof(_interswitch__CancelTransfer); + ((_interswitch__CancelTransfer*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__CancelTransfer[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__CancelTransfer); + for (int i = 0; i < n; i++) + ((_interswitch__CancelTransfer*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__CancelTransfer*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__CancelTransfer(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__CancelTransfer %p -> %p\n", q, p)); + *(_interswitch__CancelTransfer*)p = *(_interswitch__CancelTransfer*)q; +} + +void _interswitch__DoTransferResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__DoTransferResponse::DoTransferResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__DoTransferResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__DoTransferResponse::DoTransferResult); + /* transient soap skipped */ +} + +int _interswitch__DoTransferResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__DoTransferResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__DoTransferResponse(struct soap *soap, const char *tag, int id, const _interswitch__DoTransferResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__DoTransferResponse), type)) + return soap->error; + if (a->DoTransferResult) + soap_element_result(soap, "interswitch:DoTransferResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:DoTransferResult", -1, &(a->_interswitch__DoTransferResponse::DoTransferResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__DoTransferResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__DoTransferResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__DoTransferResponse * SOAP_FMAC4 soap_in__interswitch__DoTransferResponse(struct soap *soap, const char *tag, _interswitch__DoTransferResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__DoTransferResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__DoTransferResponse, sizeof(_interswitch__DoTransferResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__DoTransferResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__DoTransferResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_DoTransferResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_DoTransferResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:DoTransferResult", &(a->_interswitch__DoTransferResponse::DoTransferResult), "xsd:string")) + { soap_flag_DoTransferResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:DoTransferResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__DoTransferResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__DoTransferResponse, 0, sizeof(_interswitch__DoTransferResponse), 0, soap_copy__interswitch__DoTransferResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__DoTransferResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__DoTransferResponse); + if (this->soap_out(soap, tag?tag:"interswitch:DoTransferResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__DoTransferResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__DoTransferResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__DoTransferResponse * SOAP_FMAC4 soap_get__interswitch__DoTransferResponse(struct soap *soap, _interswitch__DoTransferResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__DoTransferResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__DoTransferResponse * SOAP_FMAC2 soap_instantiate__interswitch__DoTransferResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__DoTransferResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__DoTransferResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__DoTransferResponse); + if (size) + *size = sizeof(_interswitch__DoTransferResponse); + ((_interswitch__DoTransferResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__DoTransferResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__DoTransferResponse); + for (int i = 0; i < n; i++) + ((_interswitch__DoTransferResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__DoTransferResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__DoTransferResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__DoTransferResponse %p -> %p\n", q, p)); + *(_interswitch__DoTransferResponse*)p = *(_interswitch__DoTransferResponse*)q; +} + +void _interswitch__DoTransfer::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__DoTransfer::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__DoTransfer::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__DoTransfer::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__DoTransfer::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__DoTransfer(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__DoTransfer(struct soap *soap, const char *tag, int id, const _interswitch__DoTransfer *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__DoTransfer), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__DoTransfer::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__DoTransfer::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__DoTransfer(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__DoTransfer * SOAP_FMAC4 soap_in__interswitch__DoTransfer(struct soap *soap, const char *tag, _interswitch__DoTransfer *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__DoTransfer *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__DoTransfer, sizeof(_interswitch__DoTransfer), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__DoTransfer) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__DoTransfer *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__DoTransfer::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__DoTransfer *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__DoTransfer, 0, sizeof(_interswitch__DoTransfer), 0, soap_copy__interswitch__DoTransfer); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__DoTransfer::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__DoTransfer); + if (this->soap_out(soap, tag?tag:"interswitch:DoTransfer", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__DoTransfer::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__DoTransfer(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__DoTransfer * SOAP_FMAC4 soap_get__interswitch__DoTransfer(struct soap *soap, _interswitch__DoTransfer *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__DoTransfer(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__DoTransfer * SOAP_FMAC2 soap_instantiate__interswitch__DoTransfer(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__DoTransfer(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__DoTransfer, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__DoTransfer); + if (size) + *size = sizeof(_interswitch__DoTransfer); + ((_interswitch__DoTransfer*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__DoTransfer[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__DoTransfer); + for (int i = 0; i < n; i++) + ((_interswitch__DoTransfer*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__DoTransfer*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__DoTransfer(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__DoTransfer %p -> %p\n", q, p)); + *(_interswitch__DoTransfer*)p = *(_interswitch__DoTransfer*)q; +} + +void _interswitch__ValidateCustomerResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__ValidateCustomerResponse::ValidateCustomerResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__ValidateCustomerResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__ValidateCustomerResponse::ValidateCustomerResult); + /* transient soap skipped */ +} + +int _interswitch__ValidateCustomerResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__ValidateCustomerResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ValidateCustomerResponse(struct soap *soap, const char *tag, int id, const _interswitch__ValidateCustomerResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse), type)) + return soap->error; + if (a->ValidateCustomerResult) + soap_element_result(soap, "interswitch:ValidateCustomerResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:ValidateCustomerResult", -1, &(a->_interswitch__ValidateCustomerResponse::ValidateCustomerResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__ValidateCustomerResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__ValidateCustomerResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__ValidateCustomerResponse * SOAP_FMAC4 soap_in__interswitch__ValidateCustomerResponse(struct soap *soap, const char *tag, _interswitch__ValidateCustomerResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__ValidateCustomerResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse, sizeof(_interswitch__ValidateCustomerResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__ValidateCustomerResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_ValidateCustomerResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_ValidateCustomerResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:ValidateCustomerResult", &(a->_interswitch__ValidateCustomerResponse::ValidateCustomerResult), "xsd:string")) + { soap_flag_ValidateCustomerResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:ValidateCustomerResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__ValidateCustomerResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse, 0, sizeof(_interswitch__ValidateCustomerResponse), 0, soap_copy__interswitch__ValidateCustomerResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__ValidateCustomerResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse); + if (this->soap_out(soap, tag?tag:"interswitch:ValidateCustomerResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__ValidateCustomerResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__ValidateCustomerResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__ValidateCustomerResponse * SOAP_FMAC4 soap_get__interswitch__ValidateCustomerResponse(struct soap *soap, _interswitch__ValidateCustomerResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__ValidateCustomerResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__ValidateCustomerResponse * SOAP_FMAC2 soap_instantiate__interswitch__ValidateCustomerResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__ValidateCustomerResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__ValidateCustomerResponse); + if (size) + *size = sizeof(_interswitch__ValidateCustomerResponse); + ((_interswitch__ValidateCustomerResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__ValidateCustomerResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__ValidateCustomerResponse); + for (int i = 0; i < n; i++) + ((_interswitch__ValidateCustomerResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__ValidateCustomerResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ValidateCustomerResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__ValidateCustomerResponse %p -> %p\n", q, p)); + *(_interswitch__ValidateCustomerResponse*)p = *(_interswitch__ValidateCustomerResponse*)q; +} + +void _interswitch__ValidateCustomer::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__ValidateCustomer::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__ValidateCustomer::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__ValidateCustomer::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__ValidateCustomer::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__ValidateCustomer(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ValidateCustomer(struct soap *soap, const char *tag, int id, const _interswitch__ValidateCustomer *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__ValidateCustomer), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__ValidateCustomer::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__ValidateCustomer::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__ValidateCustomer(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__ValidateCustomer * SOAP_FMAC4 soap_in__interswitch__ValidateCustomer(struct soap *soap, const char *tag, _interswitch__ValidateCustomer *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__ValidateCustomer *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__ValidateCustomer, sizeof(_interswitch__ValidateCustomer), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__ValidateCustomer) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__ValidateCustomer *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__ValidateCustomer::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__ValidateCustomer *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__ValidateCustomer, 0, sizeof(_interswitch__ValidateCustomer), 0, soap_copy__interswitch__ValidateCustomer); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__ValidateCustomer::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__ValidateCustomer); + if (this->soap_out(soap, tag?tag:"interswitch:ValidateCustomer", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__ValidateCustomer::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__ValidateCustomer(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__ValidateCustomer * SOAP_FMAC4 soap_get__interswitch__ValidateCustomer(struct soap *soap, _interswitch__ValidateCustomer *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__ValidateCustomer(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__ValidateCustomer * SOAP_FMAC2 soap_instantiate__interswitch__ValidateCustomer(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__ValidateCustomer(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__ValidateCustomer, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__ValidateCustomer); + if (size) + *size = sizeof(_interswitch__ValidateCustomer); + ((_interswitch__ValidateCustomer*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__ValidateCustomer[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__ValidateCustomer); + for (int i = 0; i < n; i++) + ((_interswitch__ValidateCustomer*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__ValidateCustomer*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ValidateCustomer(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__ValidateCustomer %p -> %p\n", q, p)); + *(_interswitch__ValidateCustomer*)p = *(_interswitch__ValidateCustomer*)q; +} + +void xsd__unsignedShort::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_unsignedShort(soap, &this->xsd__unsignedShort::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__unsignedShort::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + /* transient soap skipped */ +} + +int xsd__unsignedShort::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__unsignedShort(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__unsignedShort(struct soap *soap, const char *tag, int id, const xsd__unsignedShort *a, const char *type) +{ + return soap_out_unsignedShort(soap, tag, id, &(a->xsd__unsignedShort::__item), "xsd:unsignedShort"); +} + +void *xsd__unsignedShort::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__unsignedShort(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__unsignedShort * SOAP_FMAC4 soap_in_xsd__unsignedShort(struct soap *soap, const char *tag, xsd__unsignedShort *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__unsignedShort *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__unsignedShort, sizeof(xsd__unsignedShort), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__unsignedShort) + return (xsd__unsignedShort *)a->soap_in(soap, tag, type); + } + if (!soap_in_unsignedShort(soap, tag, &(a->xsd__unsignedShort::__item), "xsd:unsignedShort")) + return NULL; + return a; +} + +int xsd__unsignedShort::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__unsignedShort); + if (this->soap_out(soap, tag?tag:"xsd:unsignedShort", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__unsignedShort::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__unsignedShort(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__unsignedShort * SOAP_FMAC4 soap_get_xsd__unsignedShort(struct soap *soap, xsd__unsignedShort *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__unsignedShort(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__unsignedShort * SOAP_FMAC2 soap_instantiate_xsd__unsignedShort(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__unsignedShort(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__unsignedShort, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__unsignedShort); + if (size) + *size = sizeof(xsd__unsignedShort); + ((xsd__unsignedShort*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__unsignedShort[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__unsignedShort); + for (int i = 0; i < n; i++) + ((xsd__unsignedShort*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__unsignedShort*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__unsignedShort(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__unsignedShort %p -> %p\n", q, p)); + *(xsd__unsignedShort*)p = *(xsd__unsignedShort*)q; +} + +void xsd__unsignedLong::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_unsignedLONG64(soap, &this->xsd__unsignedLong::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__unsignedLong::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + /* transient soap skipped */ +} + +int xsd__unsignedLong::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__unsignedLong(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__unsignedLong(struct soap *soap, const char *tag, int id, const xsd__unsignedLong *a, const char *type) +{ + return soap_out_unsignedLONG64(soap, tag, id, &(a->xsd__unsignedLong::__item), "xsd:unsignedLong"); +} + +void *xsd__unsignedLong::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__unsignedLong(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__unsignedLong * SOAP_FMAC4 soap_in_xsd__unsignedLong(struct soap *soap, const char *tag, xsd__unsignedLong *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__unsignedLong *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__unsignedLong, sizeof(xsd__unsignedLong), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__unsignedLong) + return (xsd__unsignedLong *)a->soap_in(soap, tag, type); + } + if (!soap_in_unsignedLONG64(soap, tag, &(a->xsd__unsignedLong::__item), "xsd:unsignedLong")) + return NULL; + return a; +} + +int xsd__unsignedLong::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__unsignedLong); + if (this->soap_out(soap, tag?tag:"xsd:unsignedLong", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__unsignedLong::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__unsignedLong(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__unsignedLong * SOAP_FMAC4 soap_get_xsd__unsignedLong(struct soap *soap, xsd__unsignedLong *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__unsignedLong(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__unsignedLong * SOAP_FMAC2 soap_instantiate_xsd__unsignedLong(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__unsignedLong(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__unsignedLong, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__unsignedLong); + if (size) + *size = sizeof(xsd__unsignedLong); + ((xsd__unsignedLong*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__unsignedLong[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__unsignedLong); + for (int i = 0; i < n; i++) + ((xsd__unsignedLong*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__unsignedLong*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__unsignedLong(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__unsignedLong %p -> %p\n", q, p)); + *(xsd__unsignedLong*)p = *(xsd__unsignedLong*)q; +} + +void xsd__unsignedInt::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_unsignedInt(soap, &this->xsd__unsignedInt::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__unsignedInt::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + /* transient soap skipped */ +} + +int xsd__unsignedInt::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__unsignedInt(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__unsignedInt(struct soap *soap, const char *tag, int id, const xsd__unsignedInt *a, const char *type) +{ + return soap_out_unsignedInt(soap, tag, id, &(a->xsd__unsignedInt::__item), "xsd:unsignedInt"); +} + +void *xsd__unsignedInt::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__unsignedInt(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__unsignedInt * SOAP_FMAC4 soap_in_xsd__unsignedInt(struct soap *soap, const char *tag, xsd__unsignedInt *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__unsignedInt *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__unsignedInt, sizeof(xsd__unsignedInt), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__unsignedInt) + return (xsd__unsignedInt *)a->soap_in(soap, tag, type); + } + if (!soap_in_unsignedInt(soap, tag, &(a->xsd__unsignedInt::__item), "xsd:unsignedInt")) + return NULL; + return a; +} + +int xsd__unsignedInt::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__unsignedInt); + if (this->soap_out(soap, tag?tag:"xsd:unsignedInt", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__unsignedInt::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__unsignedInt(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__unsignedInt * SOAP_FMAC4 soap_get_xsd__unsignedInt(struct soap *soap, xsd__unsignedInt *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__unsignedInt(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__unsignedInt * SOAP_FMAC2 soap_instantiate_xsd__unsignedInt(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__unsignedInt(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__unsignedInt, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__unsignedInt); + if (size) + *size = sizeof(xsd__unsignedInt); + ((xsd__unsignedInt*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__unsignedInt[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__unsignedInt); + for (int i = 0; i < n; i++) + ((xsd__unsignedInt*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__unsignedInt*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__unsignedInt(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__unsignedInt %p -> %p\n", q, p)); + *(xsd__unsignedInt*)p = *(xsd__unsignedInt*)q; +} + +void xsd__unsignedByte_::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_xsd__unsignedByte(soap, &this->xsd__unsignedByte_::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__unsignedByte_::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + /* transient soap skipped */ +} + +int xsd__unsignedByte_::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__unsignedByte_(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__unsignedByte_(struct soap *soap, const char *tag, int id, const xsd__unsignedByte_ *a, const char *type) +{ + return soap_out_xsd__unsignedByte(soap, tag, id, &(a->xsd__unsignedByte_::__item), "xsd:unsignedByte"); +} + +void *xsd__unsignedByte_::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__unsignedByte_(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__unsignedByte_ * SOAP_FMAC4 soap_in_xsd__unsignedByte_(struct soap *soap, const char *tag, xsd__unsignedByte_ *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__unsignedByte_ *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__unsignedByte_, sizeof(xsd__unsignedByte_), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__unsignedByte_) + return (xsd__unsignedByte_ *)a->soap_in(soap, tag, type); + } + if (!soap_in_xsd__unsignedByte(soap, tag, &(a->xsd__unsignedByte_::__item), "xsd:unsignedByte")) + return NULL; + return a; +} + +int xsd__unsignedByte_::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__unsignedByte_); + if (this->soap_out(soap, tag?tag:"xsd:unsignedByte", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__unsignedByte_::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__unsignedByte_(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__unsignedByte_ * SOAP_FMAC4 soap_get_xsd__unsignedByte_(struct soap *soap, xsd__unsignedByte_ *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__unsignedByte_(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__unsignedByte_ * SOAP_FMAC2 soap_instantiate_xsd__unsignedByte_(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__unsignedByte_(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__unsignedByte_, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__unsignedByte_); + if (size) + *size = sizeof(xsd__unsignedByte_); + ((xsd__unsignedByte_*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__unsignedByte_[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__unsignedByte_); + for (int i = 0; i < n; i++) + ((xsd__unsignedByte_*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__unsignedByte_*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__unsignedByte_(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__unsignedByte_ %p -> %p\n", q, p)); + *(xsd__unsignedByte_*)p = *(xsd__unsignedByte_*)q; +} + +void xsd__string::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_std__string(soap, &this->xsd__string::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__string::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_embedded(soap, &this->xsd__string::__item, SOAP_TYPE_interswitch_std__string); + soap_serialize_std__string(soap, &this->xsd__string::__item); + /* transient soap skipped */ +} + +int xsd__string::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__string(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__string(struct soap *soap, const char *tag, int id, const xsd__string *a, const char *type) +{ + return soap_out_std__string(soap, tag, id, &(a->xsd__string::__item), "xsd:string"); +} + +void *xsd__string::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__string(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__string * SOAP_FMAC4 soap_in_xsd__string(struct soap *soap, const char *tag, xsd__string *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__string *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__string, sizeof(xsd__string), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__string) + return (xsd__string *)a->soap_in(soap, tag, type); + } + if (!soap_in_std__string(soap, tag, &(a->xsd__string::__item), "xsd:string")) + return NULL; + return a; +} + +int xsd__string::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__string); + if (this->soap_out(soap, tag?tag:"xsd:string", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__string::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__string(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__string * SOAP_FMAC4 soap_get_xsd__string(struct soap *soap, xsd__string *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__string(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__string * SOAP_FMAC2 soap_instantiate_xsd__string(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__string(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__string, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__string); + if (size) + *size = sizeof(xsd__string); + ((xsd__string*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__string[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__string); + for (int i = 0; i < n; i++) + ((xsd__string*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__string*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__string(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__string %p -> %p\n", q, p)); + *(xsd__string*)p = *(xsd__string*)q; +} + +void xsd__short::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_short(soap, &this->xsd__short::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__short::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + /* transient soap skipped */ +} + +int xsd__short::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__short(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__short(struct soap *soap, const char *tag, int id, const xsd__short *a, const char *type) +{ + return soap_out_short(soap, tag, id, &(a->xsd__short::__item), "xsd:short"); +} + +void *xsd__short::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__short(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__short * SOAP_FMAC4 soap_in_xsd__short(struct soap *soap, const char *tag, xsd__short *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__short *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__short, sizeof(xsd__short), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__short) + return (xsd__short *)a->soap_in(soap, tag, type); + } + if (!soap_in_short(soap, tag, &(a->xsd__short::__item), "xsd:short")) + return NULL; + return a; +} + +int xsd__short::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__short); + if (this->soap_out(soap, tag?tag:"xsd:short", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__short::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__short(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__short * SOAP_FMAC4 soap_get_xsd__short(struct soap *soap, xsd__short *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__short(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__short * SOAP_FMAC2 soap_instantiate_xsd__short(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__short(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__short, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__short); + if (size) + *size = sizeof(xsd__short); + ((xsd__short*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__short[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__short); + for (int i = 0; i < n; i++) + ((xsd__short*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__short*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__short(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__short %p -> %p\n", q, p)); + *(xsd__short*)p = *(xsd__short*)q; +} + +void xsd__long::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_LONG64(soap, &this->xsd__long::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__long::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + /* transient soap skipped */ +} + +int xsd__long::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__long(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__long(struct soap *soap, const char *tag, int id, const xsd__long *a, const char *type) +{ + return soap_out_LONG64(soap, tag, id, &(a->xsd__long::__item), "xsd:long"); +} + +void *xsd__long::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__long(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__long * SOAP_FMAC4 soap_in_xsd__long(struct soap *soap, const char *tag, xsd__long *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__long *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__long, sizeof(xsd__long), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__long) + return (xsd__long *)a->soap_in(soap, tag, type); + } + if (!soap_in_LONG64(soap, tag, &(a->xsd__long::__item), "xsd:long")) + return NULL; + return a; +} + +int xsd__long::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__long); + if (this->soap_out(soap, tag?tag:"xsd:long", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__long::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__long(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__long * SOAP_FMAC4 soap_get_xsd__long(struct soap *soap, xsd__long *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__long(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__long * SOAP_FMAC2 soap_instantiate_xsd__long(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__long(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__long, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__long); + if (size) + *size = sizeof(xsd__long); + ((xsd__long*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__long[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__long); + for (int i = 0; i < n; i++) + ((xsd__long*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__long*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__long(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__long %p -> %p\n", q, p)); + *(xsd__long*)p = *(xsd__long*)q; +} + +void xsd__int::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_int(soap, &this->xsd__int::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__int::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + /* transient soap skipped */ +} + +int xsd__int::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__int(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__int(struct soap *soap, const char *tag, int id, const xsd__int *a, const char *type) +{ + return soap_out_int(soap, tag, id, &(a->xsd__int::__item), "xsd:int"); +} + +void *xsd__int::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__int(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__int * SOAP_FMAC4 soap_in_xsd__int(struct soap *soap, const char *tag, xsd__int *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__int *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__int, sizeof(xsd__int), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__int) + return (xsd__int *)a->soap_in(soap, tag, type); + } + if (!soap_in_int(soap, tag, &(a->xsd__int::__item), "xsd:int")) + return NULL; + return a; +} + +int xsd__int::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__int); + if (this->soap_out(soap, tag?tag:"xsd:int", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__int::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__int(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__int * SOAP_FMAC4 soap_get_xsd__int(struct soap *soap, xsd__int *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__int(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__int * SOAP_FMAC2 soap_instantiate_xsd__int(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__int(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__int, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__int); + if (size) + *size = sizeof(xsd__int); + ((xsd__int*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__int[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__int); + for (int i = 0; i < n; i++) + ((xsd__int*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__int*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__int(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__int %p -> %p\n", q, p)); + *(xsd__int*)p = *(xsd__int*)q; +} + +void xsd__float::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_float(soap, &this->xsd__float::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__float::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + /* transient soap skipped */ +} + +int xsd__float::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__float(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__float(struct soap *soap, const char *tag, int id, const xsd__float *a, const char *type) +{ + return soap_out_float(soap, tag, id, &(a->xsd__float::__item), "xsd:float"); +} + +void *xsd__float::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__float(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__float * SOAP_FMAC4 soap_in_xsd__float(struct soap *soap, const char *tag, xsd__float *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__float *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__float, sizeof(xsd__float), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__float) + return (xsd__float *)a->soap_in(soap, tag, type); + } + if (!soap_in_float(soap, tag, &(a->xsd__float::__item), "xsd:float")) + return NULL; + return a; +} + +int xsd__float::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__float); + if (this->soap_out(soap, tag?tag:"xsd:float", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__float::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__float(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__float * SOAP_FMAC4 soap_get_xsd__float(struct soap *soap, xsd__float *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__float(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__float * SOAP_FMAC2 soap_instantiate_xsd__float(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__float(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__float, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__float); + if (size) + *size = sizeof(xsd__float); + ((xsd__float*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__float[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__float); + for (int i = 0; i < n; i++) + ((xsd__float*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__float*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__float(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__float %p -> %p\n", q, p)); + *(xsd__float*)p = *(xsd__float*)q; +} + +void xsd__duration_::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_xsd__duration(soap, &this->xsd__duration_::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__duration_::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_xsd__duration(soap, &this->xsd__duration_::__item); + /* transient soap skipped */ +} + +int xsd__duration_::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__duration_(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__duration_(struct soap *soap, const char *tag, int id, const xsd__duration_ *a, const char *type) +{ + return soap_out_xsd__duration(soap, tag, id, &(a->xsd__duration_::__item), "xsd:duration"); +} + +void *xsd__duration_::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__duration_(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__duration_ * SOAP_FMAC4 soap_in_xsd__duration_(struct soap *soap, const char *tag, xsd__duration_ *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__duration_ *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__duration_, sizeof(xsd__duration_), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__duration_) + return (xsd__duration_ *)a->soap_in(soap, tag, type); + } + if (!soap_in_xsd__duration(soap, tag, &(a->xsd__duration_::__item), "xsd:duration")) + return NULL; + return a; +} + +int xsd__duration_::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__duration_); + if (this->soap_out(soap, tag?tag:"xsd:duration", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__duration_::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__duration_(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__duration_ * SOAP_FMAC4 soap_get_xsd__duration_(struct soap *soap, xsd__duration_ *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__duration_(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__duration_ * SOAP_FMAC2 soap_instantiate_xsd__duration_(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__duration_(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__duration_, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__duration_); + if (size) + *size = sizeof(xsd__duration_); + ((xsd__duration_*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__duration_[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__duration_); + for (int i = 0; i < n; i++) + ((xsd__duration_*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__duration_*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__duration_(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__duration_ %p -> %p\n", q, p)); + *(xsd__duration_*)p = *(xsd__duration_*)q; +} +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__duration(struct soap *soap, const char *tag, int id, const std::string *s, const char *type) +{ + if ((soap->mode & SOAP_C_NILSTRING) && s->empty()) + return soap_element_null(soap, tag, id, type); + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, s, SOAP_TYPE_interswitch_xsd__duration), type) || soap_string_out(soap, s->c_str(), 0) || soap_element_end_out(soap, tag)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_xsd__duration(struct soap *soap, const char *tag, std::string *s, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!s) + s = soap_new_std__string(soap, -1); + if (soap->null) + if (s) + s->erase(); + if (soap->body && !*soap->href) + { char *t; + s = (std::string*)soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_interswitch_xsd__duration, sizeof(std::string), soap->type, soap->arrayType); + if (s) + { if ((t = soap_string_in(soap, 1, -1, -1))) + s->assign(t); + else + return NULL; + } + } + else + s = (std::string*)soap_id_forward(soap, soap->href, soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_interswitch_xsd__duration, sizeof(std::string), soap->type, soap->arrayType), 0, SOAP_TYPE_interswitch_xsd__duration, 0, sizeof(std::string), 0, soap_copy_xsd__duration); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + return s; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__duration(struct soap *soap, const std::string *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__duration); + if (soap_out_xsd__duration(soap, tag?tag:"xsd:duration", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_xsd__duration(struct soap *soap, std::string *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__duration(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void xsd__double::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_double(soap, &this->xsd__double::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__double::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + /* transient soap skipped */ +} + +int xsd__double::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__double(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__double(struct soap *soap, const char *tag, int id, const xsd__double *a, const char *type) +{ + return soap_out_double(soap, tag, id, &(a->xsd__double::__item), "xsd:double"); +} + +void *xsd__double::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__double(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__double * SOAP_FMAC4 soap_in_xsd__double(struct soap *soap, const char *tag, xsd__double *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__double *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__double, sizeof(xsd__double), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__double) + return (xsd__double *)a->soap_in(soap, tag, type); + } + if (!soap_in_double(soap, tag, &(a->xsd__double::__item), "xsd:double")) + return NULL; + return a; +} + +int xsd__double::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__double); + if (this->soap_out(soap, tag?tag:"xsd:double", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__double::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__double(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__double * SOAP_FMAC4 soap_get_xsd__double(struct soap *soap, xsd__double *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__double(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__double * SOAP_FMAC2 soap_instantiate_xsd__double(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__double(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__double, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__double); + if (size) + *size = sizeof(xsd__double); + ((xsd__double*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__double[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__double); + for (int i = 0; i < n; i++) + ((xsd__double*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__double*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__double(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__double %p -> %p\n", q, p)); + *(xsd__double*)p = *(xsd__double*)q; +} + +void xsd__decimal_::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_xsd__decimal(soap, &this->xsd__decimal_::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__decimal_::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_xsd__decimal(soap, &this->xsd__decimal_::__item); + /* transient soap skipped */ +} + +int xsd__decimal_::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__decimal_(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__decimal_(struct soap *soap, const char *tag, int id, const xsd__decimal_ *a, const char *type) +{ + return soap_out_xsd__decimal(soap, tag, id, &(a->xsd__decimal_::__item), "xsd:decimal"); +} + +void *xsd__decimal_::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__decimal_(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__decimal_ * SOAP_FMAC4 soap_in_xsd__decimal_(struct soap *soap, const char *tag, xsd__decimal_ *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__decimal_ *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__decimal_, sizeof(xsd__decimal_), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__decimal_) + return (xsd__decimal_ *)a->soap_in(soap, tag, type); + } + if (!soap_in_xsd__decimal(soap, tag, &(a->xsd__decimal_::__item), "xsd:decimal")) + return NULL; + return a; +} + +int xsd__decimal_::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__decimal_); + if (this->soap_out(soap, tag?tag:"xsd:decimal", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__decimal_::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__decimal_(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__decimal_ * SOAP_FMAC4 soap_get_xsd__decimal_(struct soap *soap, xsd__decimal_ *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__decimal_(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__decimal_ * SOAP_FMAC2 soap_instantiate_xsd__decimal_(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__decimal_(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__decimal_, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__decimal_); + if (size) + *size = sizeof(xsd__decimal_); + ((xsd__decimal_*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__decimal_[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__decimal_); + for (int i = 0; i < n; i++) + ((xsd__decimal_*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__decimal_*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__decimal_(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__decimal_ %p -> %p\n", q, p)); + *(xsd__decimal_*)p = *(xsd__decimal_*)q; +} +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__decimal(struct soap *soap, const char *tag, int id, const std::string *s, const char *type) +{ + if ((soap->mode & SOAP_C_NILSTRING) && s->empty()) + return soap_element_null(soap, tag, id, type); + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, s, SOAP_TYPE_interswitch_xsd__decimal), type) || soap_string_out(soap, s->c_str(), 0) || soap_element_end_out(soap, tag)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_xsd__decimal(struct soap *soap, const char *tag, std::string *s, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!s) + s = soap_new_std__string(soap, -1); + if (soap->null) + if (s) + s->erase(); + if (soap->body && !*soap->href) + { char *t; + s = (std::string*)soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_interswitch_xsd__decimal, sizeof(std::string), soap->type, soap->arrayType); + if (s) + { if ((t = soap_string_in(soap, 1, -1, -1))) + s->assign(t); + else + return NULL; + } + } + else + s = (std::string*)soap_id_forward(soap, soap->href, soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_interswitch_xsd__decimal, sizeof(std::string), soap->type, soap->arrayType), 0, SOAP_TYPE_interswitch_xsd__decimal, 0, sizeof(std::string), 0, soap_copy_xsd__decimal); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + return s; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__decimal(struct soap *soap, const std::string *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__decimal); + if (soap_out_xsd__decimal(soap, tag?tag:"xsd:decimal", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_xsd__decimal(struct soap *soap, std::string *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__decimal(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void xsd__dateTime::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_time(soap, &this->xsd__dateTime::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__dateTime::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + /* transient soap skipped */ +} + +int xsd__dateTime::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__dateTime(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__dateTime(struct soap *soap, const char *tag, int id, const xsd__dateTime *a, const char *type) +{ + return soap_out_time(soap, tag, id, &(a->xsd__dateTime::__item), "xsd:dateTime"); +} + +void *xsd__dateTime::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__dateTime(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__dateTime * SOAP_FMAC4 soap_in_xsd__dateTime(struct soap *soap, const char *tag, xsd__dateTime *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__dateTime *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__dateTime, sizeof(xsd__dateTime), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__dateTime) + return (xsd__dateTime *)a->soap_in(soap, tag, type); + } + if (!soap_in_time(soap, tag, &(a->xsd__dateTime::__item), "xsd:dateTime")) + return NULL; + return a; +} + +int xsd__dateTime::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__dateTime); + if (this->soap_out(soap, tag?tag:"xsd:dateTime", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__dateTime::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__dateTime(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__dateTime * SOAP_FMAC4 soap_get_xsd__dateTime(struct soap *soap, xsd__dateTime *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__dateTime(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__dateTime * SOAP_FMAC2 soap_instantiate_xsd__dateTime(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__dateTime(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__dateTime, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__dateTime); + if (size) + *size = sizeof(xsd__dateTime); + ((xsd__dateTime*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__dateTime[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__dateTime); + for (int i = 0; i < n; i++) + ((xsd__dateTime*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__dateTime*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__dateTime(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__dateTime %p -> %p\n", q, p)); + *(xsd__dateTime*)p = *(xsd__dateTime*)q; +} + +void xsd__byte_::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_xsd__byte(soap, &this->xsd__byte_::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__byte_::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + /* transient soap skipped */ +} + +int xsd__byte_::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__byte_(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__byte_(struct soap *soap, const char *tag, int id, const xsd__byte_ *a, const char *type) +{ + return soap_out_xsd__byte(soap, tag, id, &(a->xsd__byte_::__item), "xsd:byte"); +} + +void *xsd__byte_::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__byte_(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__byte_ * SOAP_FMAC4 soap_in_xsd__byte_(struct soap *soap, const char *tag, xsd__byte_ *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__byte_ *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__byte_, sizeof(xsd__byte_), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__byte_) + return (xsd__byte_ *)a->soap_in(soap, tag, type); + } + if (!soap_in_xsd__byte(soap, tag, &(a->xsd__byte_::__item), "xsd:byte")) + return NULL; + return a; +} + +int xsd__byte_::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__byte_); + if (this->soap_out(soap, tag?tag:"xsd:byte", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__byte_::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__byte_(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__byte_ * SOAP_FMAC4 soap_get_xsd__byte_(struct soap *soap, xsd__byte_ *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__byte_(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__byte_ * SOAP_FMAC2 soap_instantiate_xsd__byte_(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__byte_(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__byte_, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__byte_); + if (size) + *size = sizeof(xsd__byte_); + ((xsd__byte_*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__byte_[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__byte_); + for (int i = 0; i < n; i++) + ((xsd__byte_*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__byte_*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__byte_(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__byte_ %p -> %p\n", q, p)); + *(xsd__byte_*)p = *(xsd__byte_*)q; +} + +void xsd__boolean::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_bool(soap, &this->xsd__boolean::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__boolean::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + /* transient soap skipped */ +} + +int xsd__boolean::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__boolean(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__boolean(struct soap *soap, const char *tag, int id, const xsd__boolean *a, const char *type) +{ + return soap_out_bool(soap, tag, id, &(a->xsd__boolean::__item), "xsd:boolean"); +} + +void *xsd__boolean::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__boolean(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__boolean * SOAP_FMAC4 soap_in_xsd__boolean(struct soap *soap, const char *tag, xsd__boolean *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__boolean *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__boolean, sizeof(xsd__boolean), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__boolean) + return (xsd__boolean *)a->soap_in(soap, tag, type); + } + if (!soap_in_bool(soap, tag, &(a->xsd__boolean::__item), "xsd:boolean")) + return NULL; + return a; +} + +int xsd__boolean::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__boolean); + if (this->soap_out(soap, tag?tag:"xsd:boolean", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__boolean::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__boolean(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__boolean * SOAP_FMAC4 soap_get_xsd__boolean(struct soap *soap, xsd__boolean *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__boolean(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__boolean * SOAP_FMAC2 soap_instantiate_xsd__boolean(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__boolean(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__boolean, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__boolean); + if (size) + *size = sizeof(xsd__boolean); + ((xsd__boolean*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__boolean[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__boolean); + for (int i = 0; i < n; i++) + ((xsd__boolean*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__boolean*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__boolean(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__boolean %p -> %p\n", q, p)); + *(xsd__boolean*)p = *(xsd__boolean*)q; +} + +void xsd__base64Binary_::soap_default(struct soap *soap) +{ + this->soap = soap; + this->xsd__base64Binary_::__item.xsd__base64Binary::soap_default(soap); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__base64Binary_::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + this->xsd__base64Binary_::__item.soap_serialize(soap); + /* transient soap skipped */ +} + +int xsd__base64Binary_::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__base64Binary_(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__base64Binary_(struct soap *soap, const char *tag, int id, const xsd__base64Binary_ *a, const char *type) +{ + return (a->xsd__base64Binary_::__item).soap_out(soap, tag, id, "xsd:base64Binary"); +} + +void *xsd__base64Binary_::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__base64Binary_(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__base64Binary_ * SOAP_FMAC4 soap_in_xsd__base64Binary_(struct soap *soap, const char *tag, xsd__base64Binary_ *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__base64Binary_ *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__base64Binary_, sizeof(xsd__base64Binary_), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__base64Binary_) + return (xsd__base64Binary_ *)a->soap_in(soap, tag, type); + } + if (!(a->xsd__base64Binary_::__item).soap_in(soap, tag, "xsd:base64Binary")) + return NULL; + return a; +} + +int xsd__base64Binary_::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__base64Binary_); + if (this->soap_out(soap, tag?tag:"xsd:base64Binary", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__base64Binary_::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__base64Binary_(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__base64Binary_ * SOAP_FMAC4 soap_get_xsd__base64Binary_(struct soap *soap, xsd__base64Binary_ *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__base64Binary_(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__base64Binary_ * SOAP_FMAC2 soap_instantiate_xsd__base64Binary_(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__base64Binary_(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__base64Binary_, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__base64Binary_); + if (size) + *size = sizeof(xsd__base64Binary_); + ((xsd__base64Binary_*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__base64Binary_[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__base64Binary_); + for (int i = 0; i < n; i++) + ((xsd__base64Binary_*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__base64Binary_*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__base64Binary_(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__base64Binary_ %p -> %p\n", q, p)); + *(xsd__base64Binary_*)p = *(xsd__base64Binary_*)q; +} + +void xsd__base64Binary::soap_default(struct soap *soap) +{ + this->soap = soap; + this->__size = 0; + this->__ptr = NULL; + this->id = NULL; + this->type = NULL; + this->options = NULL; +} + +void xsd__base64Binary::soap_serialize(struct soap *soap) const +{ + if (this->__ptr && !soap_array_reference(soap, this, (struct soap_array*)&this->__ptr, 1, SOAP_TYPE_interswitch_xsd__base64Binary)) + if (this->id || this->type) + soap->mode |= SOAP_ENC_DIME; +} + +int xsd__base64Binary::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ return soap_out_xsd__base64Binary(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__base64Binary(struct soap *soap, const char *tag, int id, const xsd__base64Binary *a, const char *type) +{ +#ifndef WITH_LEANER + id = soap_attachment(soap, tag, id, a, (struct soap_array*)&a->__ptr, a->id, a->type, a->options, 1, type, SOAP_TYPE_interswitch_xsd__base64Binary); +#else + id = soap_element_id(soap, tag, id, a, (struct soap_array*)&a->__ptr, 1, type, SOAP_TYPE_interswitch_xsd__base64Binary); +#endif + if (id < 0) + return soap->error; + if (soap_element_begin_out(soap, tag, id, type)) + return soap->error; + if (soap_putbase64(soap, a->__ptr, a->__size)) + return soap->error; + return soap_element_end_out(soap, tag); +} + +void *xsd__base64Binary::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__base64Binary(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__base64Binary * SOAP_FMAC4 soap_in_xsd__base64Binary(struct soap *soap, const char *tag, xsd__base64Binary *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (*soap->type && soap_match_tag(soap, soap->type, type) && soap_match_tag(soap, soap->type, ":base64Binary") && soap_match_tag(soap, soap->type, ":base64")) + { soap->error = SOAP_TYPE; + return NULL; + } + a = (xsd__base64Binary *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__base64Binary, sizeof(xsd__base64Binary), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + a->soap_default(soap); + if (soap->body && !*soap->href) + { + a->__ptr = soap_getbase64(soap, &a->__size, 0); +#ifndef WITH_LEANER + if (soap_xop_forward(soap, &a->__ptr, &a->__size, &a->id, &a->type, &a->options)) + return NULL; +#endif + if ((!a->__ptr && soap->error) || soap_element_end_in(soap, tag)) + return NULL; + } + else + { +#ifndef WITH_LEANER + if (*soap->href != '#') + { if (soap_dime_forward(soap, &a->__ptr, &a->__size, &a->id, &a->type, &a->options)) + return NULL; + } + else +#endif + a = (xsd__base64Binary *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch_xsd__base64Binary, 0, sizeof(xsd__base64Binary), 0, soap_copy_xsd__base64Binary); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int xsd__base64Binary::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, (struct soap_array*)&this->__ptr, 1, tag, SOAP_TYPE_interswitch_xsd__base64Binary); + if (this->soap_out(soap, tag?tag:"xsd:base64Binary", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__base64Binary::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__base64Binary(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__base64Binary * SOAP_FMAC4 soap_get_xsd__base64Binary(struct soap *soap, xsd__base64Binary *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__base64Binary(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__base64Binary * SOAP_FMAC2 soap_instantiate_xsd__base64Binary(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__base64Binary(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__base64Binary, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__base64Binary); + if (size) + *size = sizeof(xsd__base64Binary); + ((xsd__base64Binary*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__base64Binary[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__base64Binary); + for (int i = 0; i < n; i++) + ((xsd__base64Binary*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__base64Binary*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__base64Binary(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__base64Binary %p -> %p\n", q, p)); + *(xsd__base64Binary*)p = *(xsd__base64Binary*)q; +} + +void xsd__anyURI_::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_xsd__anyURI(soap, &this->xsd__anyURI_::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__anyURI_::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_xsd__anyURI(soap, &this->xsd__anyURI_::__item); + /* transient soap skipped */ +} + +int xsd__anyURI_::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__anyURI_(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__anyURI_(struct soap *soap, const char *tag, int id, const xsd__anyURI_ *a, const char *type) +{ + return soap_out_xsd__anyURI(soap, tag, id, &(a->xsd__anyURI_::__item), "xsd:anyURI"); +} + +void *xsd__anyURI_::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__anyURI_(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__anyURI_ * SOAP_FMAC4 soap_in_xsd__anyURI_(struct soap *soap, const char *tag, xsd__anyURI_ *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__anyURI_ *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__anyURI_, sizeof(xsd__anyURI_), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__anyURI_) + return (xsd__anyURI_ *)a->soap_in(soap, tag, type); + } + if (!soap_in_xsd__anyURI(soap, tag, &(a->xsd__anyURI_::__item), "xsd:anyURI")) + return NULL; + return a; +} + +int xsd__anyURI_::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__anyURI_); + if (this->soap_out(soap, tag?tag:"xsd:anyURI", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__anyURI_::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__anyURI_(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__anyURI_ * SOAP_FMAC4 soap_get_xsd__anyURI_(struct soap *soap, xsd__anyURI_ *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__anyURI_(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__anyURI_ * SOAP_FMAC2 soap_instantiate_xsd__anyURI_(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__anyURI_(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__anyURI_, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__anyURI_); + if (size) + *size = sizeof(xsd__anyURI_); + ((xsd__anyURI_*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__anyURI_[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__anyURI_); + for (int i = 0; i < n; i++) + ((xsd__anyURI_*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__anyURI_*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__anyURI_(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__anyURI_ %p -> %p\n", q, p)); + *(xsd__anyURI_*)p = *(xsd__anyURI_*)q; +} +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__anyURI(struct soap *soap, const char *tag, int id, const std::string *s, const char *type) +{ + if ((soap->mode & SOAP_C_NILSTRING) && s->empty()) + return soap_element_null(soap, tag, id, type); + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, s, SOAP_TYPE_interswitch_xsd__anyURI), type) || soap_string_out(soap, s->c_str(), 0) || soap_element_end_out(soap, tag)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_xsd__anyURI(struct soap *soap, const char *tag, std::string *s, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!s) + s = soap_new_std__string(soap, -1); + if (soap->null) + if (s) + s->erase(); + if (soap->body && !*soap->href) + { char *t; + s = (std::string*)soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_interswitch_xsd__anyURI, sizeof(std::string), soap->type, soap->arrayType); + if (s) + { if ((t = soap_string_in(soap, 1, -1, -1))) + s->assign(t); + else + return NULL; + } + } + else + s = (std::string*)soap_id_forward(soap, soap->href, soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_interswitch_xsd__anyURI, sizeof(std::string), soap->type, soap->arrayType), 0, SOAP_TYPE_interswitch_xsd__anyURI, 0, sizeof(std::string), 0, soap_copy_xsd__anyURI); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + return s; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__anyURI(struct soap *soap, const std::string *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__anyURI); + if (soap_out_xsd__anyURI(soap, tag?tag:"xsd:anyURI", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_xsd__anyURI(struct soap *soap, std::string *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__anyURI(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void xsd__QName_::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_xsd__QName(soap, &this->xsd__QName_::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__QName_::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_xsd__QName(soap, &this->xsd__QName_::__item); + /* transient soap skipped */ +} + +int xsd__QName_::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__QName_(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__QName_(struct soap *soap, const char *tag, int id, const xsd__QName_ *a, const char *type) +{ + std::string soap_tmp___item(soap_QName2s(soap, a->__item.c_str())); + return soap_out_xsd__QName(soap, tag, id, &soap_tmp___item, "xsd:QName"); +} + +void *xsd__QName_::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__QName_(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__QName_ * SOAP_FMAC4 soap_in_xsd__QName_(struct soap *soap, const char *tag, xsd__QName_ *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__QName_ *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__QName_, sizeof(xsd__QName_), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__QName_) + return (xsd__QName_ *)a->soap_in(soap, tag, type); + } + if (!soap_in_xsd__QName(soap, tag, &(a->xsd__QName_::__item), "xsd:QName")) + return NULL; + return a; +} + +int xsd__QName_::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__QName_); + if (this->soap_out(soap, tag?tag:"xsd:QName", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__QName_::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__QName_(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__QName_ * SOAP_FMAC4 soap_get_xsd__QName_(struct soap *soap, xsd__QName_ *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__QName_(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__QName_ * SOAP_FMAC2 soap_instantiate_xsd__QName_(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__QName_(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__QName_, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__QName_); + if (size) + *size = sizeof(xsd__QName_); + ((xsd__QName_*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__QName_[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__QName_); + for (int i = 0; i < n; i++) + ((xsd__QName_*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__QName_*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__QName_(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__QName_ %p -> %p\n", q, p)); + *(xsd__QName_*)p = *(xsd__QName_*)q; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__QName(struct soap *soap, const char *tag, int id, const xsd__QName *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch_xsd__QName), type)) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC1 std::string * SOAP_FMAC2 soap_in_xsd__QName(struct soap *soap, const char *tag, std::string *s, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, type)) + return NULL; + if (!s) + s = soap_new_std__string(soap, -1); + if (soap->null) + if (s) + s->erase(); + if (soap->body && !*soap->href) + { char *t; + s = (std::string*)soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_interswitch_xsd__QName, sizeof(std::string), soap->type, soap->arrayType); + if (s) + { if ((t = soap_string_in(soap, 2, -1, -1))) + s->assign(t); + else + return NULL; + } + } + else + s = (std::string*)soap_id_forward(soap, soap->href, soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_interswitch_xsd__QName, sizeof(std::string), soap->type, soap->arrayType), 0, SOAP_TYPE_interswitch_xsd__QName, 0, sizeof(std::string), 0, soap_copy_xsd__QName); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + return s; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__QName(struct soap *soap, const xsd__QName *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__QName); + if (soap_out_xsd__QName(soap, tag?tag:"xsd:QName", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 xsd__QName * SOAP_FMAC4 soap_get_xsd__QName(struct soap *soap, xsd__QName *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__QName(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__QName * SOAP_FMAC2 soap_instantiate_xsd__QName(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__QName(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__QName, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__QName); + if (size) + *size = sizeof(xsd__QName); + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__QName[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__QName); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__QName*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__QName(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__QName %p -> %p\n", q, p)); + *(xsd__QName*)p = *(xsd__QName*)q; +} + +void xsd__IDREF_::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_xsd__IDREF(soap, &this->xsd__IDREF_::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__IDREF_::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_xsd__IDREF(soap, &this->xsd__IDREF_::__item); + /* transient soap skipped */ +} + +int xsd__IDREF_::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__IDREF_(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__IDREF_(struct soap *soap, const char *tag, int id, const xsd__IDREF_ *a, const char *type) +{ + return soap_out_xsd__IDREF(soap, tag, id, &(a->xsd__IDREF_::__item), "xsd:IDREF"); +} + +void *xsd__IDREF_::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__IDREF_(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__IDREF_ * SOAP_FMAC4 soap_in_xsd__IDREF_(struct soap *soap, const char *tag, xsd__IDREF_ *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__IDREF_ *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__IDREF_, sizeof(xsd__IDREF_), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__IDREF_) + return (xsd__IDREF_ *)a->soap_in(soap, tag, type); + } + if (!soap_in_xsd__IDREF(soap, tag, &(a->xsd__IDREF_::__item), "xsd:IDREF")) + return NULL; + return a; +} + +int xsd__IDREF_::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__IDREF_); + if (this->soap_out(soap, tag?tag:"xsd:IDREF", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__IDREF_::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__IDREF_(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__IDREF_ * SOAP_FMAC4 soap_get_xsd__IDREF_(struct soap *soap, xsd__IDREF_ *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__IDREF_(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__IDREF_ * SOAP_FMAC2 soap_instantiate_xsd__IDREF_(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__IDREF_(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__IDREF_, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__IDREF_); + if (size) + *size = sizeof(xsd__IDREF_); + ((xsd__IDREF_*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__IDREF_[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__IDREF_); + for (int i = 0; i < n; i++) + ((xsd__IDREF_*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__IDREF_*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__IDREF_(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__IDREF_ %p -> %p\n", q, p)); + *(xsd__IDREF_*)p = *(xsd__IDREF_*)q; +} +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__IDREF(struct soap *soap, const char *tag, int id, const std::string *s, const char *type) +{ + if ((soap->mode & SOAP_C_NILSTRING) && s->empty()) + return soap_element_null(soap, tag, id, type); + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, s, SOAP_TYPE_interswitch_xsd__IDREF), type) || soap_string_out(soap, s->c_str(), 0) || soap_element_end_out(soap, tag)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_xsd__IDREF(struct soap *soap, const char *tag, std::string *s, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!s) + s = soap_new_std__string(soap, -1); + if (soap->null) + if (s) + s->erase(); + if (soap->body && !*soap->href) + { char *t; + s = (std::string*)soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_interswitch_xsd__IDREF, sizeof(std::string), soap->type, soap->arrayType); + if (s) + { if ((t = soap_string_in(soap, 1, -1, -1))) + s->assign(t); + else + return NULL; + } + } + else + s = (std::string*)soap_id_forward(soap, soap->href, soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_interswitch_xsd__IDREF, sizeof(std::string), soap->type, soap->arrayType), 0, SOAP_TYPE_interswitch_xsd__IDREF, 0, sizeof(std::string), 0, soap_copy_xsd__IDREF); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + return s; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__IDREF(struct soap *soap, const std::string *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__IDREF); + if (soap_out_xsd__IDREF(soap, tag?tag:"xsd:IDREF", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_xsd__IDREF(struct soap *soap, std::string *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__IDREF(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void xsd__ID_::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_xsd__ID(soap, &this->xsd__ID_::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__ID_::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_xsd__ID(soap, &this->xsd__ID_::__item); + /* transient soap skipped */ +} + +int xsd__ID_::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__ID_(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__ID_(struct soap *soap, const char *tag, int id, const xsd__ID_ *a, const char *type) +{ + return soap_out_xsd__ID(soap, tag, id, &(a->xsd__ID_::__item), "xsd:ID"); +} + +void *xsd__ID_::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__ID_(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__ID_ * SOAP_FMAC4 soap_in_xsd__ID_(struct soap *soap, const char *tag, xsd__ID_ *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__ID_ *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__ID_, sizeof(xsd__ID_), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__ID_) + return (xsd__ID_ *)a->soap_in(soap, tag, type); + } + if (!soap_in_xsd__ID(soap, tag, &(a->xsd__ID_::__item), "xsd:ID")) + return NULL; + return a; +} + +int xsd__ID_::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__ID_); + if (this->soap_out(soap, tag?tag:"xsd:ID", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__ID_::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__ID_(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__ID_ * SOAP_FMAC4 soap_get_xsd__ID_(struct soap *soap, xsd__ID_ *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__ID_(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__ID_ * SOAP_FMAC2 soap_instantiate_xsd__ID_(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__ID_(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__ID_, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__ID_); + if (size) + *size = sizeof(xsd__ID_); + ((xsd__ID_*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__ID_[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__ID_); + for (int i = 0; i < n; i++) + ((xsd__ID_*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__ID_*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__ID_(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__ID_ %p -> %p\n", q, p)); + *(xsd__ID_*)p = *(xsd__ID_*)q; +} +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__ID(struct soap *soap, const char *tag, int id, const std::string *s, const char *type) +{ + if ((soap->mode & SOAP_C_NILSTRING) && s->empty()) + return soap_element_null(soap, tag, id, type); + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, s, SOAP_TYPE_interswitch_xsd__ID), type) || soap_string_out(soap, s->c_str(), 0) || soap_element_end_out(soap, tag)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_xsd__ID(struct soap *soap, const char *tag, std::string *s, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!s) + s = soap_new_std__string(soap, -1); + if (soap->null) + if (s) + s->erase(); + if (soap->body && !*soap->href) + { char *t; + s = (std::string*)soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_interswitch_xsd__ID, sizeof(std::string), soap->type, soap->arrayType); + if (s) + { if ((t = soap_string_in(soap, 1, -1, -1))) + s->assign(t); + else + return NULL; + } + } + else + s = (std::string*)soap_id_forward(soap, soap->href, soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_interswitch_xsd__ID, sizeof(std::string), soap->type, soap->arrayType), 0, SOAP_TYPE_interswitch_xsd__ID, 0, sizeof(std::string), 0, soap_copy_xsd__ID); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + return s; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__ID(struct soap *soap, const std::string *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__ID); + if (soap_out_xsd__ID(soap, tag?tag:"xsd:ID", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_xsd__ID(struct soap *soap, std::string *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__ID(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_std__string(struct soap *soap, std::string *p) +{ + (void)soap; /* appease -Wall -Werror */ + p->erase(); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__string(struct soap *soap, const std::string *p) +{ (void)soap; (void)p; /* appease -Wall -Werror */ +} +SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__string(struct soap *soap, const char *tag, int id, const std::string *s, const char *type) +{ + if ((soap->mode & SOAP_C_NILSTRING) && s->empty()) + return soap_element_null(soap, tag, id, type); + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, s, SOAP_TYPE_interswitch_std__string), type) || soap_string_out(soap, s->c_str(), 0) || soap_element_end_out(soap, tag)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_std__string(struct soap *soap, const char *tag, std::string *s, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!s) + s = soap_new_std__string(soap, -1); + if (soap->null) + if (s) + s->erase(); + if (soap->body && !*soap->href) + { char *t; + s = (std::string*)soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_interswitch_std__string, sizeof(std::string), soap->type, soap->arrayType); + if (s) + { if ((t = soap_string_in(soap, 1, -1, -1))) + s->assign(t); + else + return NULL; + } + } + else + s = (std::string*)soap_id_forward(soap, soap->href, soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_interswitch_std__string, sizeof(std::string), soap->type, soap->arrayType), 0, SOAP_TYPE_interswitch_std__string, 0, sizeof(std::string), 0, soap_copy_std__string); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + return s; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__string(struct soap *soap, const std::string *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_std__string); + if (soap_out_std__string(soap, tag?tag:"string", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_std__string(struct soap *soap, std::string *p, const char *tag, const char *type) +{ + if ((p = soap_in_std__string(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 std::string * SOAP_FMAC2 soap_instantiate_std__string(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_std__string(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_std__string, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(std::string); + if (size) + *size = sizeof(std::string); + } + else + { cp->ptr = (void*)SOAP_NEW(std::string[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(std::string); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (std::string*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_std__string(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying std::string %p -> %p\n", q, p)); + *(std::string*)p = *(std::string*)q; +} + +void xsd__anyType::soap_default(struct soap *soap) +{ + this->soap = soap; + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__anyType::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + /* transient soap skipped */ +} + +int xsd__anyType::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__anyType(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__anyType(struct soap *soap, const char *tag, int id, const xsd__anyType *a, const char *type) +{ + return soap_outliteral(soap, tag, &(a->xsd__anyType::__item), NULL); +} + +void *xsd__anyType::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__anyType(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__anyType * SOAP_FMAC4 soap_in_xsd__anyType(struct soap *soap, const char *tag, xsd__anyType *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__anyType *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__anyType, sizeof(xsd__anyType), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__anyType) + return (xsd__anyType *)a->soap_in(soap, tag, type); + } + if (!soap_inliteral(soap, tag, &(a->xsd__anyType::__item))) + return NULL; + return a; +} + +int xsd__anyType::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__anyType); + if (this->soap_out(soap, tag?tag:"xsd:anyType", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__anyType::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__anyType(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__anyType * SOAP_FMAC4 soap_get_xsd__anyType(struct soap *soap, xsd__anyType *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__anyType(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__anyType * SOAP_FMAC2 soap_instantiate_xsd__anyType(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__anyType(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__anyType, n, soap_fdelete); + if (!cp) + return NULL; + if (type && !soap_match_tag(soap, type, "xsd:ID")) + { cp->type = SOAP_TYPE_interswitch_xsd__ID_; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__ID_); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__ID_); + ((xsd__ID_*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__ID_[n]); + if (size) + *size = n * sizeof(xsd__ID_); + for (int i = 0; i < n; i++) + ((xsd__ID_*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__ID_*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:IDREF")) + { cp->type = SOAP_TYPE_interswitch_xsd__IDREF_; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__IDREF_); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__IDREF_); + ((xsd__IDREF_*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__IDREF_[n]); + if (size) + *size = n * sizeof(xsd__IDREF_); + for (int i = 0; i < n; i++) + ((xsd__IDREF_*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__IDREF_*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:QName")) + { cp->type = SOAP_TYPE_interswitch_xsd__QName_; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__QName_); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__QName_); + ((xsd__QName_*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__QName_[n]); + if (size) + *size = n * sizeof(xsd__QName_); + for (int i = 0; i < n; i++) + ((xsd__QName_*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__QName_*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:anyURI")) + { cp->type = SOAP_TYPE_interswitch_xsd__anyURI_; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__anyURI_); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__anyURI_); + ((xsd__anyURI_*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__anyURI_[n]); + if (size) + *size = n * sizeof(xsd__anyURI_); + for (int i = 0; i < n; i++) + ((xsd__anyURI_*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__anyURI_*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:base64Binary")) + { cp->type = SOAP_TYPE_interswitch_xsd__base64Binary_; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__base64Binary_); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__base64Binary_); + ((xsd__base64Binary_*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__base64Binary_[n]); + if (size) + *size = n * sizeof(xsd__base64Binary_); + for (int i = 0; i < n; i++) + ((xsd__base64Binary_*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__base64Binary_*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:boolean")) + { cp->type = SOAP_TYPE_interswitch_xsd__boolean; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__boolean); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__boolean); + ((xsd__boolean*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__boolean[n]); + if (size) + *size = n * sizeof(xsd__boolean); + for (int i = 0; i < n; i++) + ((xsd__boolean*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__boolean*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:byte")) + { cp->type = SOAP_TYPE_interswitch_xsd__byte_; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__byte_); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__byte_); + ((xsd__byte_*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__byte_[n]); + if (size) + *size = n * sizeof(xsd__byte_); + for (int i = 0; i < n; i++) + ((xsd__byte_*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__byte_*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:dateTime")) + { cp->type = SOAP_TYPE_interswitch_xsd__dateTime; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__dateTime); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__dateTime); + ((xsd__dateTime*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__dateTime[n]); + if (size) + *size = n * sizeof(xsd__dateTime); + for (int i = 0; i < n; i++) + ((xsd__dateTime*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__dateTime*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:decimal")) + { cp->type = SOAP_TYPE_interswitch_xsd__decimal_; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__decimal_); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__decimal_); + ((xsd__decimal_*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__decimal_[n]); + if (size) + *size = n * sizeof(xsd__decimal_); + for (int i = 0; i < n; i++) + ((xsd__decimal_*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__decimal_*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:double")) + { cp->type = SOAP_TYPE_interswitch_xsd__double; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__double); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__double); + ((xsd__double*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__double[n]); + if (size) + *size = n * sizeof(xsd__double); + for (int i = 0; i < n; i++) + ((xsd__double*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__double*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:duration")) + { cp->type = SOAP_TYPE_interswitch_xsd__duration_; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__duration_); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__duration_); + ((xsd__duration_*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__duration_[n]); + if (size) + *size = n * sizeof(xsd__duration_); + for (int i = 0; i < n; i++) + ((xsd__duration_*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__duration_*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:float")) + { cp->type = SOAP_TYPE_interswitch_xsd__float; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__float); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__float); + ((xsd__float*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__float[n]); + if (size) + *size = n * sizeof(xsd__float); + for (int i = 0; i < n; i++) + ((xsd__float*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__float*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:int")) + { cp->type = SOAP_TYPE_interswitch_xsd__int; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__int); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__int); + ((xsd__int*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__int[n]); + if (size) + *size = n * sizeof(xsd__int); + for (int i = 0; i < n; i++) + ((xsd__int*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__int*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:long")) + { cp->type = SOAP_TYPE_interswitch_xsd__long; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__long); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__long); + ((xsd__long*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__long[n]); + if (size) + *size = n * sizeof(xsd__long); + for (int i = 0; i < n; i++) + ((xsd__long*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__long*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:short")) + { cp->type = SOAP_TYPE_interswitch_xsd__short; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__short); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__short); + ((xsd__short*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__short[n]); + if (size) + *size = n * sizeof(xsd__short); + for (int i = 0; i < n; i++) + ((xsd__short*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__short*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:string")) + { cp->type = SOAP_TYPE_interswitch_xsd__string; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__string); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__string); + ((xsd__string*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__string[n]); + if (size) + *size = n * sizeof(xsd__string); + for (int i = 0; i < n; i++) + ((xsd__string*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__string*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:unsignedByte")) + { cp->type = SOAP_TYPE_interswitch_xsd__unsignedByte_; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__unsignedByte_); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__unsignedByte_); + ((xsd__unsignedByte_*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__unsignedByte_[n]); + if (size) + *size = n * sizeof(xsd__unsignedByte_); + for (int i = 0; i < n; i++) + ((xsd__unsignedByte_*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__unsignedByte_*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:unsignedInt")) + { cp->type = SOAP_TYPE_interswitch_xsd__unsignedInt; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__unsignedInt); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__unsignedInt); + ((xsd__unsignedInt*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__unsignedInt[n]); + if (size) + *size = n * sizeof(xsd__unsignedInt); + for (int i = 0; i < n; i++) + ((xsd__unsignedInt*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__unsignedInt*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:unsignedLong")) + { cp->type = SOAP_TYPE_interswitch_xsd__unsignedLong; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__unsignedLong); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__unsignedLong); + ((xsd__unsignedLong*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__unsignedLong[n]); + if (size) + *size = n * sizeof(xsd__unsignedLong); + for (int i = 0; i < n; i++) + ((xsd__unsignedLong*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__unsignedLong*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:unsignedShort")) + { cp->type = SOAP_TYPE_interswitch_xsd__unsignedShort; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__unsignedShort); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__unsignedShort); + ((xsd__unsignedShort*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__unsignedShort[n]); + if (size) + *size = n * sizeof(xsd__unsignedShort); + for (int i = 0; i < n; i++) + ((xsd__unsignedShort*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__unsignedShort*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "interswitch2:char")) + { cp->type = SOAP_TYPE_interswitch_interswitch2__char__; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(interswitch2__char__); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(interswitch2__char__); + ((interswitch2__char__*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(interswitch2__char__[n]); + if (size) + *size = n * sizeof(interswitch2__char__); + for (int i = 0; i < n; i++) + ((interswitch2__char__*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (interswitch2__char__*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "interswitch2:duration")) + { cp->type = SOAP_TYPE_interswitch_interswitch2__duration__; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(interswitch2__duration__); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(interswitch2__duration__); + ((interswitch2__duration__*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(interswitch2__duration__[n]); + if (size) + *size = n * sizeof(interswitch2__duration__); + for (int i = 0; i < n; i++) + ((interswitch2__duration__*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (interswitch2__duration__*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "interswitch2:guid")) + { cp->type = SOAP_TYPE_interswitch_interswitch2__guid__; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(interswitch2__guid__); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(interswitch2__guid__); + ((interswitch2__guid__*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(interswitch2__guid__[n]); + if (size) + *size = n * sizeof(interswitch2__guid__); + for (int i = 0; i < n; i++) + ((interswitch2__guid__*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (interswitch2__guid__*)cp->ptr; + } + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__anyType); + if (size) + *size = sizeof(xsd__anyType); + ((xsd__anyType*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__anyType[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__anyType); + for (int i = 0; i < n; i++) + ((xsd__anyType*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__anyType*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__anyType(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__anyType %p -> %p\n", q, p)); + *(xsd__anyType*)p = *(xsd__anyType*)q; +} + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Fault(struct soap *soap, struct SOAP_ENV__Fault *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default__QName(soap, &a->faultcode); + soap_default_string(soap, &a->faultstring); + soap_default_string(soap, &a->faultactor); + a->detail = NULL; + a->SOAP_ENV__Code = NULL; + a->SOAP_ENV__Reason = NULL; + soap_default_string(soap, &a->SOAP_ENV__Node); + soap_default_string(soap, &a->SOAP_ENV__Role); + a->SOAP_ENV__Detail = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Fault(struct soap *soap, const struct SOAP_ENV__Fault *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize__QName(soap, &a->faultcode); + soap_serialize_string(soap, &a->faultstring); + soap_serialize_string(soap, &a->faultactor); + soap_serialize_PointerToSOAP_ENV__Detail(soap, &a->detail); + soap_serialize_PointerToSOAP_ENV__Code(soap, &a->SOAP_ENV__Code); + soap_serialize_PointerToSOAP_ENV__Reason(soap, &a->SOAP_ENV__Reason); + soap_serialize_string(soap, &a->SOAP_ENV__Node); + soap_serialize_string(soap, &a->SOAP_ENV__Role); + soap_serialize_PointerToSOAP_ENV__Detail(soap, &a->SOAP_ENV__Detail); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Fault(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Fault *a, const char *type) +{ + const char *soap_tmp_faultcode = soap_QName2s(soap, a->faultcode); + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch_SOAP_ENV__Fault), type)) + return soap->error; + if (soap_out__QName(soap, "faultcode", -1, (char*const*)&soap_tmp_faultcode, "")) + return soap->error; + if (soap_out_string(soap, "faultstring", -1, &a->faultstring, "")) + return soap->error; + if (soap_out_string(soap, "faultactor", -1, &a->faultactor, "")) + return soap->error; + if (soap_out_PointerToSOAP_ENV__Detail(soap, "detail", -1, &a->detail, "")) + return soap->error; + if (soap_out_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Code", -1, &a->SOAP_ENV__Code, "")) + return soap->error; + if (soap_out_PointerToSOAP_ENV__Reason(soap, "SOAP-ENV:Reason", -1, &a->SOAP_ENV__Reason, "")) + return soap->error; + if (soap_out_string(soap, "SOAP-ENV:Node", -1, &a->SOAP_ENV__Node, "")) + return soap->error; + if (soap_out_string(soap, "SOAP-ENV:Role", -1, &a->SOAP_ENV__Role, "")) + return soap->error; + if (soap_out_PointerToSOAP_ENV__Detail(soap, "SOAP-ENV:Detail", -1, &a->SOAP_ENV__Detail, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_in_SOAP_ENV__Fault(struct soap *soap, const char *tag, struct SOAP_ENV__Fault *a, const char *type) +{ + size_t soap_flag_faultcode = 1; + size_t soap_flag_faultstring = 1; + size_t soap_flag_faultactor = 1; + size_t soap_flag_detail = 1; + size_t soap_flag_SOAP_ENV__Code = 1; + size_t soap_flag_SOAP_ENV__Reason = 1; + size_t soap_flag_SOAP_ENV__Node = 1; + size_t soap_flag_SOAP_ENV__Role = 1; + size_t soap_flag_SOAP_ENV__Detail = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct SOAP_ENV__Fault *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_SOAP_ENV__Fault, sizeof(struct SOAP_ENV__Fault), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default_SOAP_ENV__Fault(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_faultcode && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in__QName(soap, "faultcode", &a->faultcode, "")) + { soap_flag_faultcode--; + continue; + } + if (soap_flag_faultstring && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_string(soap, "faultstring", &a->faultstring, "xsd:string")) + { soap_flag_faultstring--; + continue; + } + if (soap_flag_faultactor && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_string(soap, "faultactor", &a->faultactor, "xsd:string")) + { soap_flag_faultactor--; + continue; + } + if (soap_flag_detail && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerToSOAP_ENV__Detail(soap, "detail", &a->detail, "")) + { soap_flag_detail--; + continue; + } + if (soap_flag_SOAP_ENV__Code && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Code", &a->SOAP_ENV__Code, "")) + { soap_flag_SOAP_ENV__Code--; + continue; + } + if (soap_flag_SOAP_ENV__Reason && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerToSOAP_ENV__Reason(soap, "SOAP-ENV:Reason", &a->SOAP_ENV__Reason, "")) + { soap_flag_SOAP_ENV__Reason--; + continue; + } + if (soap_flag_SOAP_ENV__Node && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_string(soap, "SOAP-ENV:Node", &a->SOAP_ENV__Node, "xsd:string")) + { soap_flag_SOAP_ENV__Node--; + continue; + } + if (soap_flag_SOAP_ENV__Role && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_string(soap, "SOAP-ENV:Role", &a->SOAP_ENV__Role, "xsd:string")) + { soap_flag_SOAP_ENV__Role--; + continue; + } + if (soap_flag_SOAP_ENV__Detail && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerToSOAP_ENV__Detail(soap, "SOAP-ENV:Detail", &a->SOAP_ENV__Detail, "")) + { soap_flag_SOAP_ENV__Detail--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct SOAP_ENV__Fault *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch_SOAP_ENV__Fault, 0, sizeof(struct SOAP_ENV__Fault), 0, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Fault(struct soap *soap, const struct SOAP_ENV__Fault *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_SOAP_ENV__Fault); + if (soap_out_SOAP_ENV__Fault(soap, tag?tag:"SOAP-ENV:Fault", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_get_SOAP_ENV__Fault(struct soap *soap, struct SOAP_ENV__Fault *p, const char *tag, const char *type) +{ + if ((p = soap_in_SOAP_ENV__Fault(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct SOAP_ENV__Fault * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Fault(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Fault(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_SOAP_ENV__Fault, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Fault); + if (size) + *size = sizeof(struct SOAP_ENV__Fault); + } + else + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Fault[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct SOAP_ENV__Fault); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct SOAP_ENV__Fault*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Fault(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Fault %p -> %p\n", q, p)); + *(struct SOAP_ENV__Fault*)p = *(struct SOAP_ENV__Fault*)q; +} + +#endif + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_string(soap, &a->SOAP_ENV__Text); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Reason(struct soap *soap, const struct SOAP_ENV__Reason *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_string(soap, &a->SOAP_ENV__Text); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Reason(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Reason *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch_SOAP_ENV__Reason), type)) + return soap->error; + if (soap->lang) + soap_set_attr(soap, "xml:lang", soap->lang); + if (soap_out_string(soap, "SOAP-ENV:Text", -1, &a->SOAP_ENV__Text, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_in_SOAP_ENV__Reason(struct soap *soap, const char *tag, struct SOAP_ENV__Reason *a, const char *type) +{ + size_t soap_flag_SOAP_ENV__Text = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct SOAP_ENV__Reason *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_SOAP_ENV__Reason, sizeof(struct SOAP_ENV__Reason), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default_SOAP_ENV__Reason(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_SOAP_ENV__Text && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_string(soap, "SOAP-ENV:Text", &a->SOAP_ENV__Text, "xsd:string")) + { soap_flag_SOAP_ENV__Text--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct SOAP_ENV__Reason *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch_SOAP_ENV__Reason, 0, sizeof(struct SOAP_ENV__Reason), 0, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Reason(struct soap *soap, const struct SOAP_ENV__Reason *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_SOAP_ENV__Reason); + if (soap_out_SOAP_ENV__Reason(soap, tag?tag:"SOAP-ENV:Reason", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_get_SOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *p, const char *tag, const char *type) +{ + if ((p = soap_in_SOAP_ENV__Reason(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct SOAP_ENV__Reason * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Reason(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Reason(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_SOAP_ENV__Reason, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Reason); + if (size) + *size = sizeof(struct SOAP_ENV__Reason); + } + else + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Reason[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct SOAP_ENV__Reason); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct SOAP_ENV__Reason*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Reason(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Reason %p -> %p\n", q, p)); + *(struct SOAP_ENV__Reason*)p = *(struct SOAP_ENV__Reason*)q; +} + +#endif + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->__type = 0; + a->fault = NULL; + a->__any = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Detail(struct soap *soap, const struct SOAP_ENV__Detail *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_markelement(soap, a->fault, a->__type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Detail(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Detail *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch_SOAP_ENV__Detail), type)) + return soap->error; + if (soap_putelement(soap, a->fault, "fault", -1, a->__type)) + return soap->error; + soap_outliteral(soap, "-any", &a->__any, NULL); + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_in_SOAP_ENV__Detail(struct soap *soap, const char *tag, struct SOAP_ENV__Detail *a, const char *type) +{ + size_t soap_flag_fault = 1; + size_t soap_flag___any = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct SOAP_ENV__Detail *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_SOAP_ENV__Detail, sizeof(struct SOAP_ENV__Detail), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default_SOAP_ENV__Detail(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_fault && soap->error == SOAP_TAG_MISMATCH) + if ((a->fault = soap_getelement(soap, &a->__type))) + { soap_flag_fault = 0; + continue; + } + if (soap_flag___any && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_inliteral(soap, "-any", &a->__any)) + { soap_flag___any--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct SOAP_ENV__Detail *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch_SOAP_ENV__Detail, 0, sizeof(struct SOAP_ENV__Detail), 0, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Detail(struct soap *soap, const struct SOAP_ENV__Detail *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_SOAP_ENV__Detail); + if (soap_out_SOAP_ENV__Detail(soap, tag?tag:"SOAP-ENV:Detail", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_get_SOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *p, const char *tag, const char *type) +{ + if ((p = soap_in_SOAP_ENV__Detail(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct SOAP_ENV__Detail * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Detail(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Detail(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_SOAP_ENV__Detail, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Detail); + if (size) + *size = sizeof(struct SOAP_ENV__Detail); + } + else + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Detail[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct SOAP_ENV__Detail); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct SOAP_ENV__Detail*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Detail(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Detail %p -> %p\n", q, p)); + *(struct SOAP_ENV__Detail*)p = *(struct SOAP_ENV__Detail*)q; +} + +#endif + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default__QName(soap, &a->SOAP_ENV__Value); + a->SOAP_ENV__Subcode = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Code(struct soap *soap, const struct SOAP_ENV__Code *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize__QName(soap, &a->SOAP_ENV__Value); + soap_serialize_PointerToSOAP_ENV__Code(soap, &a->SOAP_ENV__Subcode); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Code(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Code *a, const char *type) +{ + const char *soap_tmp_SOAP_ENV__Value = soap_QName2s(soap, a->SOAP_ENV__Value); + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch_SOAP_ENV__Code), type)) + return soap->error; + if (soap_out__QName(soap, "SOAP-ENV:Value", -1, (char*const*)&soap_tmp_SOAP_ENV__Value, "")) + return soap->error; + if (soap_out_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Subcode", -1, &a->SOAP_ENV__Subcode, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_in_SOAP_ENV__Code(struct soap *soap, const char *tag, struct SOAP_ENV__Code *a, const char *type) +{ + size_t soap_flag_SOAP_ENV__Value = 1; + size_t soap_flag_SOAP_ENV__Subcode = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct SOAP_ENV__Code *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_SOAP_ENV__Code, sizeof(struct SOAP_ENV__Code), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default_SOAP_ENV__Code(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_SOAP_ENV__Value && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in__QName(soap, "SOAP-ENV:Value", &a->SOAP_ENV__Value, "")) + { soap_flag_SOAP_ENV__Value--; + continue; + } + if (soap_flag_SOAP_ENV__Subcode && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Subcode", &a->SOAP_ENV__Subcode, "")) + { soap_flag_SOAP_ENV__Subcode--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct SOAP_ENV__Code *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch_SOAP_ENV__Code, 0, sizeof(struct SOAP_ENV__Code), 0, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Code(struct soap *soap, const struct SOAP_ENV__Code *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_SOAP_ENV__Code); + if (soap_out_SOAP_ENV__Code(soap, tag?tag:"SOAP-ENV:Code", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_get_SOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *p, const char *tag, const char *type) +{ + if ((p = soap_in_SOAP_ENV__Code(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct SOAP_ENV__Code * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Code(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Code(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_SOAP_ENV__Code, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Code); + if (size) + *size = sizeof(struct SOAP_ENV__Code); + } + else + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Code[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct SOAP_ENV__Code); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct SOAP_ENV__Code*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Code(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Code %p -> %p\n", q, p)); + *(struct SOAP_ENV__Code*)p = *(struct SOAP_ENV__Code*)q; +} + +#endif + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Header(struct soap *soap, struct SOAP_ENV__Header *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Header(struct soap *soap, const struct SOAP_ENV__Header *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Header(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Header *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch_SOAP_ENV__Header), type)) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_in_SOAP_ENV__Header(struct soap *soap, const char *tag, struct SOAP_ENV__Header *a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct SOAP_ENV__Header *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_SOAP_ENV__Header, sizeof(struct SOAP_ENV__Header), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default_SOAP_ENV__Header(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct SOAP_ENV__Header *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch_SOAP_ENV__Header, 0, sizeof(struct SOAP_ENV__Header), 0, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Header(struct soap *soap, const struct SOAP_ENV__Header *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_SOAP_ENV__Header); + if (soap_out_SOAP_ENV__Header(soap, tag?tag:"SOAP-ENV:Header", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_get_SOAP_ENV__Header(struct soap *soap, struct SOAP_ENV__Header *p, const char *tag, const char *type) +{ + if ((p = soap_in_SOAP_ENV__Header(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct SOAP_ENV__Header * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Header(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Header(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_SOAP_ENV__Header, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Header); + if (size) + *size = sizeof(struct SOAP_ENV__Header); + } + else + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Header[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct SOAP_ENV__Header); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct SOAP_ENV__Header*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Header(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Header %p -> %p\n", q, p)); + *(struct SOAP_ENV__Header*)p = *(struct SOAP_ENV__Header*)q; +} + +#endif + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__VerifyBiller(struct soap *soap, struct __interswitch__VerifyBiller *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__VerifyBiller = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__VerifyBiller(struct soap *soap, const struct __interswitch__VerifyBiller *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__VerifyBiller(soap, &a->interswitch__VerifyBiller); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__VerifyBiller(struct soap *soap, const char *tag, int id, const struct __interswitch__VerifyBiller *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__VerifyBiller(soap, "interswitch:VerifyBiller", -1, &a->interswitch__VerifyBiller, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__VerifyBiller * SOAP_FMAC4 soap_in___interswitch__VerifyBiller(struct soap *soap, const char *tag, struct __interswitch__VerifyBiller *a, const char *type) +{ + size_t soap_flag_interswitch__VerifyBiller = 1; + short soap_flag; + a = (struct __interswitch__VerifyBiller *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__VerifyBiller, sizeof(struct __interswitch__VerifyBiller), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__VerifyBiller(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__VerifyBiller && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__VerifyBiller(soap, "interswitch:VerifyBiller", &a->interswitch__VerifyBiller, "")) + { soap_flag_interswitch__VerifyBiller--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__VerifyBiller(struct soap *soap, const struct __interswitch__VerifyBiller *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__VerifyBiller(soap, tag?tag:"-interswitch:VerifyBiller", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__VerifyBiller * SOAP_FMAC4 soap_get___interswitch__VerifyBiller(struct soap *soap, struct __interswitch__VerifyBiller *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__VerifyBiller(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__VerifyBiller * SOAP_FMAC2 soap_instantiate___interswitch__VerifyBiller(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__VerifyBiller(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__VerifyBiller, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__VerifyBiller); + if (size) + *size = sizeof(struct __interswitch__VerifyBiller); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__VerifyBiller[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__VerifyBiller); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__VerifyBiller*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__VerifyBiller(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__VerifyBiller %p -> %p\n", q, p)); + *(struct __interswitch__VerifyBiller*)p = *(struct __interswitch__VerifyBiller*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__CreateBiller(struct soap *soap, struct __interswitch__CreateBiller *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__CreateBiller = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__CreateBiller(struct soap *soap, const struct __interswitch__CreateBiller *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__CreateBiller(soap, &a->interswitch__CreateBiller); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__CreateBiller(struct soap *soap, const char *tag, int id, const struct __interswitch__CreateBiller *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__CreateBiller(soap, "interswitch:CreateBiller", -1, &a->interswitch__CreateBiller, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__CreateBiller * SOAP_FMAC4 soap_in___interswitch__CreateBiller(struct soap *soap, const char *tag, struct __interswitch__CreateBiller *a, const char *type) +{ + size_t soap_flag_interswitch__CreateBiller = 1; + short soap_flag; + a = (struct __interswitch__CreateBiller *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__CreateBiller, sizeof(struct __interswitch__CreateBiller), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__CreateBiller(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__CreateBiller && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__CreateBiller(soap, "interswitch:CreateBiller", &a->interswitch__CreateBiller, "")) + { soap_flag_interswitch__CreateBiller--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__CreateBiller(struct soap *soap, const struct __interswitch__CreateBiller *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__CreateBiller(soap, tag?tag:"-interswitch:CreateBiller", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__CreateBiller * SOAP_FMAC4 soap_get___interswitch__CreateBiller(struct soap *soap, struct __interswitch__CreateBiller *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__CreateBiller(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__CreateBiller * SOAP_FMAC2 soap_instantiate___interswitch__CreateBiller(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__CreateBiller(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__CreateBiller, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__CreateBiller); + if (size) + *size = sizeof(struct __interswitch__CreateBiller); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__CreateBiller[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__CreateBiller); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__CreateBiller*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__CreateBiller(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__CreateBiller %p -> %p\n", q, p)); + *(struct __interswitch__CreateBiller*)p = *(struct __interswitch__CreateBiller*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__DoCustomProcessing(struct soap *soap, struct __interswitch__DoCustomProcessing *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__DoCustomProcessing = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__DoCustomProcessing(struct soap *soap, const struct __interswitch__DoCustomProcessing *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__DoCustomProcessing(soap, &a->interswitch__DoCustomProcessing); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__DoCustomProcessing(struct soap *soap, const char *tag, int id, const struct __interswitch__DoCustomProcessing *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__DoCustomProcessing(soap, "interswitch:DoCustomProcessing", -1, &a->interswitch__DoCustomProcessing, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__DoCustomProcessing * SOAP_FMAC4 soap_in___interswitch__DoCustomProcessing(struct soap *soap, const char *tag, struct __interswitch__DoCustomProcessing *a, const char *type) +{ + size_t soap_flag_interswitch__DoCustomProcessing = 1; + short soap_flag; + a = (struct __interswitch__DoCustomProcessing *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__DoCustomProcessing, sizeof(struct __interswitch__DoCustomProcessing), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__DoCustomProcessing(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__DoCustomProcessing && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__DoCustomProcessing(soap, "interswitch:DoCustomProcessing", &a->interswitch__DoCustomProcessing, "")) + { soap_flag_interswitch__DoCustomProcessing--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__DoCustomProcessing(struct soap *soap, const struct __interswitch__DoCustomProcessing *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__DoCustomProcessing(soap, tag?tag:"-interswitch:DoCustomProcessing", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__DoCustomProcessing * SOAP_FMAC4 soap_get___interswitch__DoCustomProcessing(struct soap *soap, struct __interswitch__DoCustomProcessing *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__DoCustomProcessing(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__DoCustomProcessing * SOAP_FMAC2 soap_instantiate___interswitch__DoCustomProcessing(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__DoCustomProcessing(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__DoCustomProcessing, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__DoCustomProcessing); + if (size) + *size = sizeof(struct __interswitch__DoCustomProcessing); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__DoCustomProcessing[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__DoCustomProcessing); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__DoCustomProcessing*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__DoCustomProcessing(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__DoCustomProcessing %p -> %p\n", q, p)); + *(struct __interswitch__DoCustomProcessing*)p = *(struct __interswitch__DoCustomProcessing*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__ResendActivationToken(struct soap *soap, struct __interswitch__ResendActivationToken *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__ResendActivationToken = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__ResendActivationToken(struct soap *soap, const struct __interswitch__ResendActivationToken *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__ResendActivationToken(soap, &a->interswitch__ResendActivationToken); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__ResendActivationToken(struct soap *soap, const char *tag, int id, const struct __interswitch__ResendActivationToken *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__ResendActivationToken(soap, "interswitch:ResendActivationToken", -1, &a->interswitch__ResendActivationToken, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__ResendActivationToken * SOAP_FMAC4 soap_in___interswitch__ResendActivationToken(struct soap *soap, const char *tag, struct __interswitch__ResendActivationToken *a, const char *type) +{ + size_t soap_flag_interswitch__ResendActivationToken = 1; + short soap_flag; + a = (struct __interswitch__ResendActivationToken *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__ResendActivationToken, sizeof(struct __interswitch__ResendActivationToken), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__ResendActivationToken(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__ResendActivationToken && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__ResendActivationToken(soap, "interswitch:ResendActivationToken", &a->interswitch__ResendActivationToken, "")) + { soap_flag_interswitch__ResendActivationToken--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__ResendActivationToken(struct soap *soap, const struct __interswitch__ResendActivationToken *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__ResendActivationToken(soap, tag?tag:"-interswitch:ResendActivationToken", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__ResendActivationToken * SOAP_FMAC4 soap_get___interswitch__ResendActivationToken(struct soap *soap, struct __interswitch__ResendActivationToken *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__ResendActivationToken(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__ResendActivationToken * SOAP_FMAC2 soap_instantiate___interswitch__ResendActivationToken(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__ResendActivationToken(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__ResendActivationToken, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__ResendActivationToken); + if (size) + *size = sizeof(struct __interswitch__ResendActivationToken); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__ResendActivationToken[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__ResendActivationToken); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__ResendActivationToken*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__ResendActivationToken(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__ResendActivationToken %p -> %p\n", q, p)); + *(struct __interswitch__ResendActivationToken*)p = *(struct __interswitch__ResendActivationToken*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__EditCustomerBillerAccount(struct soap *soap, struct __interswitch__EditCustomerBillerAccount *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__EditCustomerBillerAccount = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__EditCustomerBillerAccount(struct soap *soap, const struct __interswitch__EditCustomerBillerAccount *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__EditCustomerBillerAccount(soap, &a->interswitch__EditCustomerBillerAccount); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__EditCustomerBillerAccount(struct soap *soap, const char *tag, int id, const struct __interswitch__EditCustomerBillerAccount *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__EditCustomerBillerAccount(soap, "interswitch:EditCustomerBillerAccount", -1, &a->interswitch__EditCustomerBillerAccount, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__EditCustomerBillerAccount * SOAP_FMAC4 soap_in___interswitch__EditCustomerBillerAccount(struct soap *soap, const char *tag, struct __interswitch__EditCustomerBillerAccount *a, const char *type) +{ + size_t soap_flag_interswitch__EditCustomerBillerAccount = 1; + short soap_flag; + a = (struct __interswitch__EditCustomerBillerAccount *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__EditCustomerBillerAccount, sizeof(struct __interswitch__EditCustomerBillerAccount), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__EditCustomerBillerAccount(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__EditCustomerBillerAccount && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__EditCustomerBillerAccount(soap, "interswitch:EditCustomerBillerAccount", &a->interswitch__EditCustomerBillerAccount, "")) + { soap_flag_interswitch__EditCustomerBillerAccount--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__EditCustomerBillerAccount(struct soap *soap, const struct __interswitch__EditCustomerBillerAccount *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__EditCustomerBillerAccount(soap, tag?tag:"-interswitch:EditCustomerBillerAccount", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__EditCustomerBillerAccount * SOAP_FMAC4 soap_get___interswitch__EditCustomerBillerAccount(struct soap *soap, struct __interswitch__EditCustomerBillerAccount *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__EditCustomerBillerAccount(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__EditCustomerBillerAccount * SOAP_FMAC2 soap_instantiate___interswitch__EditCustomerBillerAccount(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__EditCustomerBillerAccount(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__EditCustomerBillerAccount, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__EditCustomerBillerAccount); + if (size) + *size = sizeof(struct __interswitch__EditCustomerBillerAccount); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__EditCustomerBillerAccount[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__EditCustomerBillerAccount); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__EditCustomerBillerAccount*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__EditCustomerBillerAccount(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__EditCustomerBillerAccount %p -> %p\n", q, p)); + *(struct __interswitch__EditCustomerBillerAccount*)p = *(struct __interswitch__EditCustomerBillerAccount*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetBillersCollectionsAccount(struct soap *soap, struct __interswitch__GetBillersCollectionsAccount *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__GetBillersCollectionsAccount = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetBillersCollectionsAccount(struct soap *soap, const struct __interswitch__GetBillersCollectionsAccount *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__GetBillersCollectionsAccount(soap, &a->interswitch__GetBillersCollectionsAccount); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetBillersCollectionsAccount(struct soap *soap, const char *tag, int id, const struct __interswitch__GetBillersCollectionsAccount *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__GetBillersCollectionsAccount(soap, "interswitch:GetBillersCollectionsAccount", -1, &a->interswitch__GetBillersCollectionsAccount, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetBillersCollectionsAccount * SOAP_FMAC4 soap_in___interswitch__GetBillersCollectionsAccount(struct soap *soap, const char *tag, struct __interswitch__GetBillersCollectionsAccount *a, const char *type) +{ + size_t soap_flag_interswitch__GetBillersCollectionsAccount = 1; + short soap_flag; + a = (struct __interswitch__GetBillersCollectionsAccount *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__GetBillersCollectionsAccount, sizeof(struct __interswitch__GetBillersCollectionsAccount), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__GetBillersCollectionsAccount(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__GetBillersCollectionsAccount && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__GetBillersCollectionsAccount(soap, "interswitch:GetBillersCollectionsAccount", &a->interswitch__GetBillersCollectionsAccount, "")) + { soap_flag_interswitch__GetBillersCollectionsAccount--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetBillersCollectionsAccount(struct soap *soap, const struct __interswitch__GetBillersCollectionsAccount *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__GetBillersCollectionsAccount(soap, tag?tag:"-interswitch:GetBillersCollectionsAccount", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetBillersCollectionsAccount * SOAP_FMAC4 soap_get___interswitch__GetBillersCollectionsAccount(struct soap *soap, struct __interswitch__GetBillersCollectionsAccount *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__GetBillersCollectionsAccount(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__GetBillersCollectionsAccount * SOAP_FMAC2 soap_instantiate___interswitch__GetBillersCollectionsAccount(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__GetBillersCollectionsAccount(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__GetBillersCollectionsAccount, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetBillersCollectionsAccount); + if (size) + *size = sizeof(struct __interswitch__GetBillersCollectionsAccount); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetBillersCollectionsAccount[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__GetBillersCollectionsAccount); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__GetBillersCollectionsAccount*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetBillersCollectionsAccount(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__GetBillersCollectionsAccount %p -> %p\n", q, p)); + *(struct __interswitch__GetBillersCollectionsAccount*)p = *(struct __interswitch__GetBillersCollectionsAccount*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetCollectionsAccount(struct soap *soap, struct __interswitch__GetCollectionsAccount *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__GetCollectionsAccount = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetCollectionsAccount(struct soap *soap, const struct __interswitch__GetCollectionsAccount *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__GetCollectionsAccount(soap, &a->interswitch__GetCollectionsAccount); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetCollectionsAccount(struct soap *soap, const char *tag, int id, const struct __interswitch__GetCollectionsAccount *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__GetCollectionsAccount(soap, "interswitch:GetCollectionsAccount", -1, &a->interswitch__GetCollectionsAccount, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetCollectionsAccount * SOAP_FMAC4 soap_in___interswitch__GetCollectionsAccount(struct soap *soap, const char *tag, struct __interswitch__GetCollectionsAccount *a, const char *type) +{ + size_t soap_flag_interswitch__GetCollectionsAccount = 1; + short soap_flag; + a = (struct __interswitch__GetCollectionsAccount *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__GetCollectionsAccount, sizeof(struct __interswitch__GetCollectionsAccount), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__GetCollectionsAccount(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__GetCollectionsAccount && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__GetCollectionsAccount(soap, "interswitch:GetCollectionsAccount", &a->interswitch__GetCollectionsAccount, "")) + { soap_flag_interswitch__GetCollectionsAccount--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetCollectionsAccount(struct soap *soap, const struct __interswitch__GetCollectionsAccount *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__GetCollectionsAccount(soap, tag?tag:"-interswitch:GetCollectionsAccount", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetCollectionsAccount * SOAP_FMAC4 soap_get___interswitch__GetCollectionsAccount(struct soap *soap, struct __interswitch__GetCollectionsAccount *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__GetCollectionsAccount(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__GetCollectionsAccount * SOAP_FMAC2 soap_instantiate___interswitch__GetCollectionsAccount(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__GetCollectionsAccount(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__GetCollectionsAccount, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetCollectionsAccount); + if (size) + *size = sizeof(struct __interswitch__GetCollectionsAccount); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetCollectionsAccount[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__GetCollectionsAccount); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__GetCollectionsAccount*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetCollectionsAccount(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__GetCollectionsAccount %p -> %p\n", q, p)); + *(struct __interswitch__GetCollectionsAccount*)p = *(struct __interswitch__GetCollectionsAccount*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__AddBillerCustomer(struct soap *soap, struct __interswitch__AddBillerCustomer *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__AddBillerCustomer = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__AddBillerCustomer(struct soap *soap, const struct __interswitch__AddBillerCustomer *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__AddBillerCustomer(soap, &a->interswitch__AddBillerCustomer); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__AddBillerCustomer(struct soap *soap, const char *tag, int id, const struct __interswitch__AddBillerCustomer *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__AddBillerCustomer(soap, "interswitch:AddBillerCustomer", -1, &a->interswitch__AddBillerCustomer, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__AddBillerCustomer * SOAP_FMAC4 soap_in___interswitch__AddBillerCustomer(struct soap *soap, const char *tag, struct __interswitch__AddBillerCustomer *a, const char *type) +{ + size_t soap_flag_interswitch__AddBillerCustomer = 1; + short soap_flag; + a = (struct __interswitch__AddBillerCustomer *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__AddBillerCustomer, sizeof(struct __interswitch__AddBillerCustomer), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__AddBillerCustomer(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__AddBillerCustomer && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__AddBillerCustomer(soap, "interswitch:AddBillerCustomer", &a->interswitch__AddBillerCustomer, "")) + { soap_flag_interswitch__AddBillerCustomer--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__AddBillerCustomer(struct soap *soap, const struct __interswitch__AddBillerCustomer *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__AddBillerCustomer(soap, tag?tag:"-interswitch:AddBillerCustomer", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__AddBillerCustomer * SOAP_FMAC4 soap_get___interswitch__AddBillerCustomer(struct soap *soap, struct __interswitch__AddBillerCustomer *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__AddBillerCustomer(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__AddBillerCustomer * SOAP_FMAC2 soap_instantiate___interswitch__AddBillerCustomer(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__AddBillerCustomer(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__AddBillerCustomer, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__AddBillerCustomer); + if (size) + *size = sizeof(struct __interswitch__AddBillerCustomer); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__AddBillerCustomer[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__AddBillerCustomer); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__AddBillerCustomer*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__AddBillerCustomer(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__AddBillerCustomer %p -> %p\n", q, p)); + *(struct __interswitch__AddBillerCustomer*)p = *(struct __interswitch__AddBillerCustomer*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetCustomerPayments(struct soap *soap, struct __interswitch__GetCustomerPayments *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__GetCustomerPayments = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetCustomerPayments(struct soap *soap, const struct __interswitch__GetCustomerPayments *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__GetCustomerPayments(soap, &a->interswitch__GetCustomerPayments); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetCustomerPayments(struct soap *soap, const char *tag, int id, const struct __interswitch__GetCustomerPayments *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__GetCustomerPayments(soap, "interswitch:GetCustomerPayments", -1, &a->interswitch__GetCustomerPayments, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetCustomerPayments * SOAP_FMAC4 soap_in___interswitch__GetCustomerPayments(struct soap *soap, const char *tag, struct __interswitch__GetCustomerPayments *a, const char *type) +{ + size_t soap_flag_interswitch__GetCustomerPayments = 1; + short soap_flag; + a = (struct __interswitch__GetCustomerPayments *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__GetCustomerPayments, sizeof(struct __interswitch__GetCustomerPayments), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__GetCustomerPayments(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__GetCustomerPayments && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__GetCustomerPayments(soap, "interswitch:GetCustomerPayments", &a->interswitch__GetCustomerPayments, "")) + { soap_flag_interswitch__GetCustomerPayments--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetCustomerPayments(struct soap *soap, const struct __interswitch__GetCustomerPayments *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__GetCustomerPayments(soap, tag?tag:"-interswitch:GetCustomerPayments", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetCustomerPayments * SOAP_FMAC4 soap_get___interswitch__GetCustomerPayments(struct soap *soap, struct __interswitch__GetCustomerPayments *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__GetCustomerPayments(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__GetCustomerPayments * SOAP_FMAC2 soap_instantiate___interswitch__GetCustomerPayments(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__GetCustomerPayments(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__GetCustomerPayments, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetCustomerPayments); + if (size) + *size = sizeof(struct __interswitch__GetCustomerPayments); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetCustomerPayments[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__GetCustomerPayments); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__GetCustomerPayments*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetCustomerPayments(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__GetCustomerPayments %p -> %p\n", q, p)); + *(struct __interswitch__GetCustomerPayments*)p = *(struct __interswitch__GetCustomerPayments*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetCustomerBillerAccounts(struct soap *soap, struct __interswitch__GetCustomerBillerAccounts *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__GetCustomerBillerAccounts = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetCustomerBillerAccounts(struct soap *soap, const struct __interswitch__GetCustomerBillerAccounts *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__GetCustomerBillerAccounts(soap, &a->interswitch__GetCustomerBillerAccounts); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetCustomerBillerAccounts(struct soap *soap, const char *tag, int id, const struct __interswitch__GetCustomerBillerAccounts *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__GetCustomerBillerAccounts(soap, "interswitch:GetCustomerBillerAccounts", -1, &a->interswitch__GetCustomerBillerAccounts, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetCustomerBillerAccounts * SOAP_FMAC4 soap_in___interswitch__GetCustomerBillerAccounts(struct soap *soap, const char *tag, struct __interswitch__GetCustomerBillerAccounts *a, const char *type) +{ + size_t soap_flag_interswitch__GetCustomerBillerAccounts = 1; + short soap_flag; + a = (struct __interswitch__GetCustomerBillerAccounts *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__GetCustomerBillerAccounts, sizeof(struct __interswitch__GetCustomerBillerAccounts), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__GetCustomerBillerAccounts(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__GetCustomerBillerAccounts && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__GetCustomerBillerAccounts(soap, "interswitch:GetCustomerBillerAccounts", &a->interswitch__GetCustomerBillerAccounts, "")) + { soap_flag_interswitch__GetCustomerBillerAccounts--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetCustomerBillerAccounts(struct soap *soap, const struct __interswitch__GetCustomerBillerAccounts *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__GetCustomerBillerAccounts(soap, tag?tag:"-interswitch:GetCustomerBillerAccounts", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetCustomerBillerAccounts * SOAP_FMAC4 soap_get___interswitch__GetCustomerBillerAccounts(struct soap *soap, struct __interswitch__GetCustomerBillerAccounts *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__GetCustomerBillerAccounts(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__GetCustomerBillerAccounts * SOAP_FMAC2 soap_instantiate___interswitch__GetCustomerBillerAccounts(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__GetCustomerBillerAccounts(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__GetCustomerBillerAccounts, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetCustomerBillerAccounts); + if (size) + *size = sizeof(struct __interswitch__GetCustomerBillerAccounts); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetCustomerBillerAccounts[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__GetCustomerBillerAccounts); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__GetCustomerBillerAccounts*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetCustomerBillerAccounts(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__GetCustomerBillerAccounts %p -> %p\n", q, p)); + *(struct __interswitch__GetCustomerBillerAccounts*)p = *(struct __interswitch__GetCustomerBillerAccounts*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__AddCustomerBillerAccount(struct soap *soap, struct __interswitch__AddCustomerBillerAccount *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__AddCustomerBillerAccount = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__AddCustomerBillerAccount(struct soap *soap, const struct __interswitch__AddCustomerBillerAccount *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__AddCustomerBillerAccount(soap, &a->interswitch__AddCustomerBillerAccount); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__AddCustomerBillerAccount(struct soap *soap, const char *tag, int id, const struct __interswitch__AddCustomerBillerAccount *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__AddCustomerBillerAccount(soap, "interswitch:AddCustomerBillerAccount", -1, &a->interswitch__AddCustomerBillerAccount, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__AddCustomerBillerAccount * SOAP_FMAC4 soap_in___interswitch__AddCustomerBillerAccount(struct soap *soap, const char *tag, struct __interswitch__AddCustomerBillerAccount *a, const char *type) +{ + size_t soap_flag_interswitch__AddCustomerBillerAccount = 1; + short soap_flag; + a = (struct __interswitch__AddCustomerBillerAccount *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__AddCustomerBillerAccount, sizeof(struct __interswitch__AddCustomerBillerAccount), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__AddCustomerBillerAccount(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__AddCustomerBillerAccount && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__AddCustomerBillerAccount(soap, "interswitch:AddCustomerBillerAccount", &a->interswitch__AddCustomerBillerAccount, "")) + { soap_flag_interswitch__AddCustomerBillerAccount--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__AddCustomerBillerAccount(struct soap *soap, const struct __interswitch__AddCustomerBillerAccount *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__AddCustomerBillerAccount(soap, tag?tag:"-interswitch:AddCustomerBillerAccount", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__AddCustomerBillerAccount * SOAP_FMAC4 soap_get___interswitch__AddCustomerBillerAccount(struct soap *soap, struct __interswitch__AddCustomerBillerAccount *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__AddCustomerBillerAccount(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__AddCustomerBillerAccount * SOAP_FMAC2 soap_instantiate___interswitch__AddCustomerBillerAccount(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__AddCustomerBillerAccount(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__AddCustomerBillerAccount, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__AddCustomerBillerAccount); + if (size) + *size = sizeof(struct __interswitch__AddCustomerBillerAccount); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__AddCustomerBillerAccount[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__AddCustomerBillerAccount); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__AddCustomerBillerAccount*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__AddCustomerBillerAccount(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__AddCustomerBillerAccount %p -> %p\n", q, p)); + *(struct __interswitch__AddCustomerBillerAccount*)p = *(struct __interswitch__AddCustomerBillerAccount*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__SendPayments(struct soap *soap, struct __interswitch__SendPayments *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__SendPayments = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__SendPayments(struct soap *soap, const struct __interswitch__SendPayments *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__SendPayments(soap, &a->interswitch__SendPayments); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__SendPayments(struct soap *soap, const char *tag, int id, const struct __interswitch__SendPayments *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__SendPayments(soap, "interswitch:SendPayments", -1, &a->interswitch__SendPayments, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__SendPayments * SOAP_FMAC4 soap_in___interswitch__SendPayments(struct soap *soap, const char *tag, struct __interswitch__SendPayments *a, const char *type) +{ + size_t soap_flag_interswitch__SendPayments = 1; + short soap_flag; + a = (struct __interswitch__SendPayments *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__SendPayments, sizeof(struct __interswitch__SendPayments), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__SendPayments(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__SendPayments && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__SendPayments(soap, "interswitch:SendPayments", &a->interswitch__SendPayments, "")) + { soap_flag_interswitch__SendPayments--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__SendPayments(struct soap *soap, const struct __interswitch__SendPayments *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__SendPayments(soap, tag?tag:"-interswitch:SendPayments", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__SendPayments * SOAP_FMAC4 soap_get___interswitch__SendPayments(struct soap *soap, struct __interswitch__SendPayments *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__SendPayments(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__SendPayments * SOAP_FMAC2 soap_instantiate___interswitch__SendPayments(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__SendPayments(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__SendPayments, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__SendPayments); + if (size) + *size = sizeof(struct __interswitch__SendPayments); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__SendPayments[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__SendPayments); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__SendPayments*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__SendPayments(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__SendPayments %p -> %p\n", q, p)); + *(struct __interswitch__SendPayments*)p = *(struct __interswitch__SendPayments*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__SendBillPaymentAdvice(struct soap *soap, struct __interswitch__SendBillPaymentAdvice *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__SendBillPaymentAdvice = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__SendBillPaymentAdvice(struct soap *soap, const struct __interswitch__SendBillPaymentAdvice *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__SendBillPaymentAdvice(soap, &a->interswitch__SendBillPaymentAdvice); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__SendBillPaymentAdvice(struct soap *soap, const char *tag, int id, const struct __interswitch__SendBillPaymentAdvice *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__SendBillPaymentAdvice(soap, "interswitch:SendBillPaymentAdvice", -1, &a->interswitch__SendBillPaymentAdvice, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__SendBillPaymentAdvice * SOAP_FMAC4 soap_in___interswitch__SendBillPaymentAdvice(struct soap *soap, const char *tag, struct __interswitch__SendBillPaymentAdvice *a, const char *type) +{ + size_t soap_flag_interswitch__SendBillPaymentAdvice = 1; + short soap_flag; + a = (struct __interswitch__SendBillPaymentAdvice *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__SendBillPaymentAdvice, sizeof(struct __interswitch__SendBillPaymentAdvice), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__SendBillPaymentAdvice(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__SendBillPaymentAdvice && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__SendBillPaymentAdvice(soap, "interswitch:SendBillPaymentAdvice", &a->interswitch__SendBillPaymentAdvice, "")) + { soap_flag_interswitch__SendBillPaymentAdvice--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__SendBillPaymentAdvice(struct soap *soap, const struct __interswitch__SendBillPaymentAdvice *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__SendBillPaymentAdvice(soap, tag?tag:"-interswitch:SendBillPaymentAdvice", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__SendBillPaymentAdvice * SOAP_FMAC4 soap_get___interswitch__SendBillPaymentAdvice(struct soap *soap, struct __interswitch__SendBillPaymentAdvice *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__SendBillPaymentAdvice(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__SendBillPaymentAdvice * SOAP_FMAC2 soap_instantiate___interswitch__SendBillPaymentAdvice(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__SendBillPaymentAdvice(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__SendBillPaymentAdvice, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__SendBillPaymentAdvice); + if (size) + *size = sizeof(struct __interswitch__SendBillPaymentAdvice); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__SendBillPaymentAdvice[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__SendBillPaymentAdvice); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__SendBillPaymentAdvice*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__SendBillPaymentAdvice(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__SendBillPaymentAdvice %p -> %p\n", q, p)); + *(struct __interswitch__SendBillPaymentAdvice*)p = *(struct __interswitch__SendBillPaymentAdvice*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__AuthenticateCustomer(struct soap *soap, struct __interswitch__AuthenticateCustomer *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__AuthenticateCustomer = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__AuthenticateCustomer(struct soap *soap, const struct __interswitch__AuthenticateCustomer *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__AuthenticateCustomer(soap, &a->interswitch__AuthenticateCustomer); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__AuthenticateCustomer(struct soap *soap, const char *tag, int id, const struct __interswitch__AuthenticateCustomer *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__AuthenticateCustomer(soap, "interswitch:AuthenticateCustomer", -1, &a->interswitch__AuthenticateCustomer, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__AuthenticateCustomer * SOAP_FMAC4 soap_in___interswitch__AuthenticateCustomer(struct soap *soap, const char *tag, struct __interswitch__AuthenticateCustomer *a, const char *type) +{ + size_t soap_flag_interswitch__AuthenticateCustomer = 1; + short soap_flag; + a = (struct __interswitch__AuthenticateCustomer *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__AuthenticateCustomer, sizeof(struct __interswitch__AuthenticateCustomer), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__AuthenticateCustomer(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__AuthenticateCustomer && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__AuthenticateCustomer(soap, "interswitch:AuthenticateCustomer", &a->interswitch__AuthenticateCustomer, "")) + { soap_flag_interswitch__AuthenticateCustomer--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__AuthenticateCustomer(struct soap *soap, const struct __interswitch__AuthenticateCustomer *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__AuthenticateCustomer(soap, tag?tag:"-interswitch:AuthenticateCustomer", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__AuthenticateCustomer * SOAP_FMAC4 soap_get___interswitch__AuthenticateCustomer(struct soap *soap, struct __interswitch__AuthenticateCustomer *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__AuthenticateCustomer(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__AuthenticateCustomer * SOAP_FMAC2 soap_instantiate___interswitch__AuthenticateCustomer(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__AuthenticateCustomer(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__AuthenticateCustomer, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__AuthenticateCustomer); + if (size) + *size = sizeof(struct __interswitch__AuthenticateCustomer); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__AuthenticateCustomer[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__AuthenticateCustomer); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__AuthenticateCustomer*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__AuthenticateCustomer(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__AuthenticateCustomer %p -> %p\n", q, p)); + *(struct __interswitch__AuthenticateCustomer*)p = *(struct __interswitch__AuthenticateCustomer*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__DoBillPaymentInquiry(struct soap *soap, struct __interswitch__DoBillPaymentInquiry *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__DoBillPaymentInquiry = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__DoBillPaymentInquiry(struct soap *soap, const struct __interswitch__DoBillPaymentInquiry *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__DoBillPaymentInquiry(soap, &a->interswitch__DoBillPaymentInquiry); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__DoBillPaymentInquiry(struct soap *soap, const char *tag, int id, const struct __interswitch__DoBillPaymentInquiry *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__DoBillPaymentInquiry(soap, "interswitch:DoBillPaymentInquiry", -1, &a->interswitch__DoBillPaymentInquiry, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__DoBillPaymentInquiry * SOAP_FMAC4 soap_in___interswitch__DoBillPaymentInquiry(struct soap *soap, const char *tag, struct __interswitch__DoBillPaymentInquiry *a, const char *type) +{ + size_t soap_flag_interswitch__DoBillPaymentInquiry = 1; + short soap_flag; + a = (struct __interswitch__DoBillPaymentInquiry *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__DoBillPaymentInquiry, sizeof(struct __interswitch__DoBillPaymentInquiry), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__DoBillPaymentInquiry(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__DoBillPaymentInquiry && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__DoBillPaymentInquiry(soap, "interswitch:DoBillPaymentInquiry", &a->interswitch__DoBillPaymentInquiry, "")) + { soap_flag_interswitch__DoBillPaymentInquiry--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__DoBillPaymentInquiry(struct soap *soap, const struct __interswitch__DoBillPaymentInquiry *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__DoBillPaymentInquiry(soap, tag?tag:"-interswitch:DoBillPaymentInquiry", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__DoBillPaymentInquiry * SOAP_FMAC4 soap_get___interswitch__DoBillPaymentInquiry(struct soap *soap, struct __interswitch__DoBillPaymentInquiry *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__DoBillPaymentInquiry(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__DoBillPaymentInquiry * SOAP_FMAC2 soap_instantiate___interswitch__DoBillPaymentInquiry(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__DoBillPaymentInquiry(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__DoBillPaymentInquiry, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__DoBillPaymentInquiry); + if (size) + *size = sizeof(struct __interswitch__DoBillPaymentInquiry); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__DoBillPaymentInquiry[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__DoBillPaymentInquiry); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__DoBillPaymentInquiry*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__DoBillPaymentInquiry(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__DoBillPaymentInquiry %p -> %p\n", q, p)); + *(struct __interswitch__DoBillPaymentInquiry*)p = *(struct __interswitch__DoBillPaymentInquiry*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetBillerCategories(struct soap *soap, struct __interswitch__GetBillerCategories *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__GetBillerCategories = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetBillerCategories(struct soap *soap, const struct __interswitch__GetBillerCategories *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__GetBillerCategories(soap, &a->interswitch__GetBillerCategories); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetBillerCategories(struct soap *soap, const char *tag, int id, const struct __interswitch__GetBillerCategories *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__GetBillerCategories(soap, "interswitch:GetBillerCategories", -1, &a->interswitch__GetBillerCategories, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetBillerCategories * SOAP_FMAC4 soap_in___interswitch__GetBillerCategories(struct soap *soap, const char *tag, struct __interswitch__GetBillerCategories *a, const char *type) +{ + size_t soap_flag_interswitch__GetBillerCategories = 1; + short soap_flag; + a = (struct __interswitch__GetBillerCategories *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__GetBillerCategories, sizeof(struct __interswitch__GetBillerCategories), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__GetBillerCategories(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__GetBillerCategories && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__GetBillerCategories(soap, "interswitch:GetBillerCategories", &a->interswitch__GetBillerCategories, "")) + { soap_flag_interswitch__GetBillerCategories--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetBillerCategories(struct soap *soap, const struct __interswitch__GetBillerCategories *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__GetBillerCategories(soap, tag?tag:"-interswitch:GetBillerCategories", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetBillerCategories * SOAP_FMAC4 soap_get___interswitch__GetBillerCategories(struct soap *soap, struct __interswitch__GetBillerCategories *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__GetBillerCategories(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__GetBillerCategories * SOAP_FMAC2 soap_instantiate___interswitch__GetBillerCategories(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__GetBillerCategories(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__GetBillerCategories, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetBillerCategories); + if (size) + *size = sizeof(struct __interswitch__GetBillerCategories); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetBillerCategories[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__GetBillerCategories); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__GetBillerCategories*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetBillerCategories(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__GetBillerCategories %p -> %p\n", q, p)); + *(struct __interswitch__GetBillerCategories*)p = *(struct __interswitch__GetBillerCategories*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetBillerPaymentItems(struct soap *soap, struct __interswitch__GetBillerPaymentItems *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__GetBillerPaymentItems = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetBillerPaymentItems(struct soap *soap, const struct __interswitch__GetBillerPaymentItems *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__GetBillerPaymentItems(soap, &a->interswitch__GetBillerPaymentItems); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetBillerPaymentItems(struct soap *soap, const char *tag, int id, const struct __interswitch__GetBillerPaymentItems *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__GetBillerPaymentItems(soap, "interswitch:GetBillerPaymentItems", -1, &a->interswitch__GetBillerPaymentItems, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetBillerPaymentItems * SOAP_FMAC4 soap_in___interswitch__GetBillerPaymentItems(struct soap *soap, const char *tag, struct __interswitch__GetBillerPaymentItems *a, const char *type) +{ + size_t soap_flag_interswitch__GetBillerPaymentItems = 1; + short soap_flag; + a = (struct __interswitch__GetBillerPaymentItems *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__GetBillerPaymentItems, sizeof(struct __interswitch__GetBillerPaymentItems), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__GetBillerPaymentItems(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__GetBillerPaymentItems && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__GetBillerPaymentItems(soap, "interswitch:GetBillerPaymentItems", &a->interswitch__GetBillerPaymentItems, "")) + { soap_flag_interswitch__GetBillerPaymentItems--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetBillerPaymentItems(struct soap *soap, const struct __interswitch__GetBillerPaymentItems *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__GetBillerPaymentItems(soap, tag?tag:"-interswitch:GetBillerPaymentItems", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetBillerPaymentItems * SOAP_FMAC4 soap_get___interswitch__GetBillerPaymentItems(struct soap *soap, struct __interswitch__GetBillerPaymentItems *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__GetBillerPaymentItems(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__GetBillerPaymentItems * SOAP_FMAC2 soap_instantiate___interswitch__GetBillerPaymentItems(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__GetBillerPaymentItems(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__GetBillerPaymentItems, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetBillerPaymentItems); + if (size) + *size = sizeof(struct __interswitch__GetBillerPaymentItems); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetBillerPaymentItems[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__GetBillerPaymentItems); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__GetBillerPaymentItems*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetBillerPaymentItems(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__GetBillerPaymentItems %p -> %p\n", q, p)); + *(struct __interswitch__GetBillerPaymentItems*)p = *(struct __interswitch__GetBillerPaymentItems*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetFeaturedBillers(struct soap *soap, struct __interswitch__GetFeaturedBillers *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__GetFeaturedBillers = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetFeaturedBillers(struct soap *soap, const struct __interswitch__GetFeaturedBillers *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__GetFeaturedBillers(soap, &a->interswitch__GetFeaturedBillers); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetFeaturedBillers(struct soap *soap, const char *tag, int id, const struct __interswitch__GetFeaturedBillers *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__GetFeaturedBillers(soap, "interswitch:GetFeaturedBillers", -1, &a->interswitch__GetFeaturedBillers, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetFeaturedBillers * SOAP_FMAC4 soap_in___interswitch__GetFeaturedBillers(struct soap *soap, const char *tag, struct __interswitch__GetFeaturedBillers *a, const char *type) +{ + size_t soap_flag_interswitch__GetFeaturedBillers = 1; + short soap_flag; + a = (struct __interswitch__GetFeaturedBillers *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__GetFeaturedBillers, sizeof(struct __interswitch__GetFeaturedBillers), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__GetFeaturedBillers(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__GetFeaturedBillers && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__GetFeaturedBillers(soap, "interswitch:GetFeaturedBillers", &a->interswitch__GetFeaturedBillers, "")) + { soap_flag_interswitch__GetFeaturedBillers--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetFeaturedBillers(struct soap *soap, const struct __interswitch__GetFeaturedBillers *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__GetFeaturedBillers(soap, tag?tag:"-interswitch:GetFeaturedBillers", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetFeaturedBillers * SOAP_FMAC4 soap_get___interswitch__GetFeaturedBillers(struct soap *soap, struct __interswitch__GetFeaturedBillers *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__GetFeaturedBillers(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__GetFeaturedBillers * SOAP_FMAC2 soap_instantiate___interswitch__GetFeaturedBillers(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__GetFeaturedBillers(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__GetFeaturedBillers, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetFeaturedBillers); + if (size) + *size = sizeof(struct __interswitch__GetFeaturedBillers); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetFeaturedBillers[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__GetFeaturedBillers); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__GetFeaturedBillers*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetFeaturedBillers(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__GetFeaturedBillers %p -> %p\n", q, p)); + *(struct __interswitch__GetFeaturedBillers*)p = *(struct __interswitch__GetFeaturedBillers*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetLatestBillers(struct soap *soap, struct __interswitch__GetLatestBillers *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__GetLatestBillers = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetLatestBillers(struct soap *soap, const struct __interswitch__GetLatestBillers *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__GetLatestBillers(soap, &a->interswitch__GetLatestBillers); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetLatestBillers(struct soap *soap, const char *tag, int id, const struct __interswitch__GetLatestBillers *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__GetLatestBillers(soap, "interswitch:GetLatestBillers", -1, &a->interswitch__GetLatestBillers, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetLatestBillers * SOAP_FMAC4 soap_in___interswitch__GetLatestBillers(struct soap *soap, const char *tag, struct __interswitch__GetLatestBillers *a, const char *type) +{ + size_t soap_flag_interswitch__GetLatestBillers = 1; + short soap_flag; + a = (struct __interswitch__GetLatestBillers *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__GetLatestBillers, sizeof(struct __interswitch__GetLatestBillers), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__GetLatestBillers(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__GetLatestBillers && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__GetLatestBillers(soap, "interswitch:GetLatestBillers", &a->interswitch__GetLatestBillers, "")) + { soap_flag_interswitch__GetLatestBillers--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetLatestBillers(struct soap *soap, const struct __interswitch__GetLatestBillers *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__GetLatestBillers(soap, tag?tag:"-interswitch:GetLatestBillers", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetLatestBillers * SOAP_FMAC4 soap_get___interswitch__GetLatestBillers(struct soap *soap, struct __interswitch__GetLatestBillers *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__GetLatestBillers(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__GetLatestBillers * SOAP_FMAC2 soap_instantiate___interswitch__GetLatestBillers(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__GetLatestBillers(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__GetLatestBillers, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetLatestBillers); + if (size) + *size = sizeof(struct __interswitch__GetLatestBillers); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetLatestBillers[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__GetLatestBillers); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__GetLatestBillers*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetLatestBillers(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__GetLatestBillers %p -> %p\n", q, p)); + *(struct __interswitch__GetLatestBillers*)p = *(struct __interswitch__GetLatestBillers*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetBillers(struct soap *soap, struct __interswitch__GetBillers *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__GetBillers = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetBillers(struct soap *soap, const struct __interswitch__GetBillers *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__GetBillers(soap, &a->interswitch__GetBillers); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetBillers(struct soap *soap, const char *tag, int id, const struct __interswitch__GetBillers *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__GetBillers(soap, "interswitch:GetBillers", -1, &a->interswitch__GetBillers, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetBillers * SOAP_FMAC4 soap_in___interswitch__GetBillers(struct soap *soap, const char *tag, struct __interswitch__GetBillers *a, const char *type) +{ + size_t soap_flag_interswitch__GetBillers = 1; + short soap_flag; + a = (struct __interswitch__GetBillers *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__GetBillers, sizeof(struct __interswitch__GetBillers), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__GetBillers(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__GetBillers && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__GetBillers(soap, "interswitch:GetBillers", &a->interswitch__GetBillers, "")) + { soap_flag_interswitch__GetBillers--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetBillers(struct soap *soap, const struct __interswitch__GetBillers *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__GetBillers(soap, tag?tag:"-interswitch:GetBillers", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetBillers * SOAP_FMAC4 soap_get___interswitch__GetBillers(struct soap *soap, struct __interswitch__GetBillers *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__GetBillers(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__GetBillers * SOAP_FMAC2 soap_instantiate___interswitch__GetBillers(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__GetBillers(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__GetBillers, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetBillers); + if (size) + *size = sizeof(struct __interswitch__GetBillers); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetBillers[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__GetBillers); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__GetBillers*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetBillers(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__GetBillers %p -> %p\n", q, p)); + *(struct __interswitch__GetBillers*)p = *(struct __interswitch__GetBillers*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetUser(struct soap *soap, struct __interswitch__GetUser *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__GetUser = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetUser(struct soap *soap, const struct __interswitch__GetUser *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__GetUser(soap, &a->interswitch__GetUser); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetUser(struct soap *soap, const char *tag, int id, const struct __interswitch__GetUser *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__GetUser(soap, "interswitch:GetUser", -1, &a->interswitch__GetUser, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetUser * SOAP_FMAC4 soap_in___interswitch__GetUser(struct soap *soap, const char *tag, struct __interswitch__GetUser *a, const char *type) +{ + size_t soap_flag_interswitch__GetUser = 1; + short soap_flag; + a = (struct __interswitch__GetUser *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__GetUser, sizeof(struct __interswitch__GetUser), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__GetUser(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__GetUser && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__GetUser(soap, "interswitch:GetUser", &a->interswitch__GetUser, "")) + { soap_flag_interswitch__GetUser--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetUser(struct soap *soap, const struct __interswitch__GetUser *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__GetUser(soap, tag?tag:"-interswitch:GetUser", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetUser * SOAP_FMAC4 soap_get___interswitch__GetUser(struct soap *soap, struct __interswitch__GetUser *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__GetUser(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__GetUser * SOAP_FMAC2 soap_instantiate___interswitch__GetUser(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__GetUser(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__GetUser, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetUser); + if (size) + *size = sizeof(struct __interswitch__GetUser); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetUser[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__GetUser); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__GetUser*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetUser(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__GetUser %p -> %p\n", q, p)); + *(struct __interswitch__GetUser*)p = *(struct __interswitch__GetUser*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__AuthenticateUserSecurityToken(struct soap *soap, struct __interswitch__AuthenticateUserSecurityToken *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__AuthenticateUserSecurityToken = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__AuthenticateUserSecurityToken(struct soap *soap, const struct __interswitch__AuthenticateUserSecurityToken *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__AuthenticateUserSecurityToken(soap, &a->interswitch__AuthenticateUserSecurityToken); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__AuthenticateUserSecurityToken(struct soap *soap, const char *tag, int id, const struct __interswitch__AuthenticateUserSecurityToken *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__AuthenticateUserSecurityToken(soap, "interswitch:AuthenticateUserSecurityToken", -1, &a->interswitch__AuthenticateUserSecurityToken, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__AuthenticateUserSecurityToken * SOAP_FMAC4 soap_in___interswitch__AuthenticateUserSecurityToken(struct soap *soap, const char *tag, struct __interswitch__AuthenticateUserSecurityToken *a, const char *type) +{ + size_t soap_flag_interswitch__AuthenticateUserSecurityToken = 1; + short soap_flag; + a = (struct __interswitch__AuthenticateUserSecurityToken *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__AuthenticateUserSecurityToken, sizeof(struct __interswitch__AuthenticateUserSecurityToken), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__AuthenticateUserSecurityToken(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__AuthenticateUserSecurityToken && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__AuthenticateUserSecurityToken(soap, "interswitch:AuthenticateUserSecurityToken", &a->interswitch__AuthenticateUserSecurityToken, "")) + { soap_flag_interswitch__AuthenticateUserSecurityToken--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__AuthenticateUserSecurityToken(struct soap *soap, const struct __interswitch__AuthenticateUserSecurityToken *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__AuthenticateUserSecurityToken(soap, tag?tag:"-interswitch:AuthenticateUserSecurityToken", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__AuthenticateUserSecurityToken * SOAP_FMAC4 soap_get___interswitch__AuthenticateUserSecurityToken(struct soap *soap, struct __interswitch__AuthenticateUserSecurityToken *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__AuthenticateUserSecurityToken(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__AuthenticateUserSecurityToken * SOAP_FMAC2 soap_instantiate___interswitch__AuthenticateUserSecurityToken(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__AuthenticateUserSecurityToken(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__AuthenticateUserSecurityToken, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__AuthenticateUserSecurityToken); + if (size) + *size = sizeof(struct __interswitch__AuthenticateUserSecurityToken); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__AuthenticateUserSecurityToken[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__AuthenticateUserSecurityToken); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__AuthenticateUserSecurityToken*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__AuthenticateUserSecurityToken(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__AuthenticateUserSecurityToken %p -> %p\n", q, p)); + *(struct __interswitch__AuthenticateUserSecurityToken*)p = *(struct __interswitch__AuthenticateUserSecurityToken*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__AuthenticateUser(struct soap *soap, struct __interswitch__AuthenticateUser *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__AuthenticateUser = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__AuthenticateUser(struct soap *soap, const struct __interswitch__AuthenticateUser *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__AuthenticateUser(soap, &a->interswitch__AuthenticateUser); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__AuthenticateUser(struct soap *soap, const char *tag, int id, const struct __interswitch__AuthenticateUser *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__AuthenticateUser(soap, "interswitch:AuthenticateUser", -1, &a->interswitch__AuthenticateUser, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__AuthenticateUser * SOAP_FMAC4 soap_in___interswitch__AuthenticateUser(struct soap *soap, const char *tag, struct __interswitch__AuthenticateUser *a, const char *type) +{ + size_t soap_flag_interswitch__AuthenticateUser = 1; + short soap_flag; + a = (struct __interswitch__AuthenticateUser *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__AuthenticateUser, sizeof(struct __interswitch__AuthenticateUser), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__AuthenticateUser(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__AuthenticateUser && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__AuthenticateUser(soap, "interswitch:AuthenticateUser", &a->interswitch__AuthenticateUser, "")) + { soap_flag_interswitch__AuthenticateUser--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__AuthenticateUser(struct soap *soap, const struct __interswitch__AuthenticateUser *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__AuthenticateUser(soap, tag?tag:"-interswitch:AuthenticateUser", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__AuthenticateUser * SOAP_FMAC4 soap_get___interswitch__AuthenticateUser(struct soap *soap, struct __interswitch__AuthenticateUser *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__AuthenticateUser(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__AuthenticateUser * SOAP_FMAC2 soap_instantiate___interswitch__AuthenticateUser(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__AuthenticateUser(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__AuthenticateUser, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__AuthenticateUser); + if (size) + *size = sizeof(struct __interswitch__AuthenticateUser); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__AuthenticateUser[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__AuthenticateUser); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__AuthenticateUser*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__AuthenticateUser(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__AuthenticateUser %p -> %p\n", q, p)); + *(struct __interswitch__AuthenticateUser*)p = *(struct __interswitch__AuthenticateUser*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__ResetPassword(struct soap *soap, struct __interswitch__ResetPassword *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__ResetPassword = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__ResetPassword(struct soap *soap, const struct __interswitch__ResetPassword *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__ResetPassword(soap, &a->interswitch__ResetPassword); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__ResetPassword(struct soap *soap, const char *tag, int id, const struct __interswitch__ResetPassword *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__ResetPassword(soap, "interswitch:ResetPassword", -1, &a->interswitch__ResetPassword, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__ResetPassword * SOAP_FMAC4 soap_in___interswitch__ResetPassword(struct soap *soap, const char *tag, struct __interswitch__ResetPassword *a, const char *type) +{ + size_t soap_flag_interswitch__ResetPassword = 1; + short soap_flag; + a = (struct __interswitch__ResetPassword *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__ResetPassword, sizeof(struct __interswitch__ResetPassword), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__ResetPassword(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__ResetPassword && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__ResetPassword(soap, "interswitch:ResetPassword", &a->interswitch__ResetPassword, "")) + { soap_flag_interswitch__ResetPassword--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__ResetPassword(struct soap *soap, const struct __interswitch__ResetPassword *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__ResetPassword(soap, tag?tag:"-interswitch:ResetPassword", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__ResetPassword * SOAP_FMAC4 soap_get___interswitch__ResetPassword(struct soap *soap, struct __interswitch__ResetPassword *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__ResetPassword(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__ResetPassword * SOAP_FMAC2 soap_instantiate___interswitch__ResetPassword(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__ResetPassword(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__ResetPassword, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__ResetPassword); + if (size) + *size = sizeof(struct __interswitch__ResetPassword); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__ResetPassword[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__ResetPassword); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__ResetPassword*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__ResetPassword(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__ResetPassword %p -> %p\n", q, p)); + *(struct __interswitch__ResetPassword*)p = *(struct __interswitch__ResetPassword*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__ChangePassword(struct soap *soap, struct __interswitch__ChangePassword *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__ChangePassword = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__ChangePassword(struct soap *soap, const struct __interswitch__ChangePassword *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__ChangePassword(soap, &a->interswitch__ChangePassword); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__ChangePassword(struct soap *soap, const char *tag, int id, const struct __interswitch__ChangePassword *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__ChangePassword(soap, "interswitch:ChangePassword", -1, &a->interswitch__ChangePassword, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__ChangePassword * SOAP_FMAC4 soap_in___interswitch__ChangePassword(struct soap *soap, const char *tag, struct __interswitch__ChangePassword *a, const char *type) +{ + size_t soap_flag_interswitch__ChangePassword = 1; + short soap_flag; + a = (struct __interswitch__ChangePassword *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__ChangePassword, sizeof(struct __interswitch__ChangePassword), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__ChangePassword(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__ChangePassword && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__ChangePassword(soap, "interswitch:ChangePassword", &a->interswitch__ChangePassword, "")) + { soap_flag_interswitch__ChangePassword--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__ChangePassword(struct soap *soap, const struct __interswitch__ChangePassword *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__ChangePassword(soap, tag?tag:"-interswitch:ChangePassword", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__ChangePassword * SOAP_FMAC4 soap_get___interswitch__ChangePassword(struct soap *soap, struct __interswitch__ChangePassword *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__ChangePassword(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__ChangePassword * SOAP_FMAC2 soap_instantiate___interswitch__ChangePassword(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__ChangePassword(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__ChangePassword, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__ChangePassword); + if (size) + *size = sizeof(struct __interswitch__ChangePassword); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__ChangePassword[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__ChangePassword); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__ChangePassword*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__ChangePassword(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__ChangePassword %p -> %p\n", q, p)); + *(struct __interswitch__ChangePassword*)p = *(struct __interswitch__ChangePassword*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__UpdateUser(struct soap *soap, struct __interswitch__UpdateUser *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__UpdateUser = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__UpdateUser(struct soap *soap, const struct __interswitch__UpdateUser *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__UpdateUser(soap, &a->interswitch__UpdateUser); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__UpdateUser(struct soap *soap, const char *tag, int id, const struct __interswitch__UpdateUser *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__UpdateUser(soap, "interswitch:UpdateUser", -1, &a->interswitch__UpdateUser, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__UpdateUser * SOAP_FMAC4 soap_in___interswitch__UpdateUser(struct soap *soap, const char *tag, struct __interswitch__UpdateUser *a, const char *type) +{ + size_t soap_flag_interswitch__UpdateUser = 1; + short soap_flag; + a = (struct __interswitch__UpdateUser *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__UpdateUser, sizeof(struct __interswitch__UpdateUser), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__UpdateUser(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__UpdateUser && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__UpdateUser(soap, "interswitch:UpdateUser", &a->interswitch__UpdateUser, "")) + { soap_flag_interswitch__UpdateUser--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__UpdateUser(struct soap *soap, const struct __interswitch__UpdateUser *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__UpdateUser(soap, tag?tag:"-interswitch:UpdateUser", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__UpdateUser * SOAP_FMAC4 soap_get___interswitch__UpdateUser(struct soap *soap, struct __interswitch__UpdateUser *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__UpdateUser(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__UpdateUser * SOAP_FMAC2 soap_instantiate___interswitch__UpdateUser(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__UpdateUser(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__UpdateUser, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__UpdateUser); + if (size) + *size = sizeof(struct __interswitch__UpdateUser); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__UpdateUser[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__UpdateUser); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__UpdateUser*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__UpdateUser(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__UpdateUser %p -> %p\n", q, p)); + *(struct __interswitch__UpdateUser*)p = *(struct __interswitch__UpdateUser*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__ActivateUser(struct soap *soap, struct __interswitch__ActivateUser *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__ActivateUser = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__ActivateUser(struct soap *soap, const struct __interswitch__ActivateUser *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__ActivateUser(soap, &a->interswitch__ActivateUser); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__ActivateUser(struct soap *soap, const char *tag, int id, const struct __interswitch__ActivateUser *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__ActivateUser(soap, "interswitch:ActivateUser", -1, &a->interswitch__ActivateUser, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__ActivateUser * SOAP_FMAC4 soap_in___interswitch__ActivateUser(struct soap *soap, const char *tag, struct __interswitch__ActivateUser *a, const char *type) +{ + size_t soap_flag_interswitch__ActivateUser = 1; + short soap_flag; + a = (struct __interswitch__ActivateUser *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__ActivateUser, sizeof(struct __interswitch__ActivateUser), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__ActivateUser(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__ActivateUser && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__ActivateUser(soap, "interswitch:ActivateUser", &a->interswitch__ActivateUser, "")) + { soap_flag_interswitch__ActivateUser--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__ActivateUser(struct soap *soap, const struct __interswitch__ActivateUser *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__ActivateUser(soap, tag?tag:"-interswitch:ActivateUser", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__ActivateUser * SOAP_FMAC4 soap_get___interswitch__ActivateUser(struct soap *soap, struct __interswitch__ActivateUser *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__ActivateUser(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__ActivateUser * SOAP_FMAC2 soap_instantiate___interswitch__ActivateUser(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__ActivateUser(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__ActivateUser, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__ActivateUser); + if (size) + *size = sizeof(struct __interswitch__ActivateUser); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__ActivateUser[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__ActivateUser); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__ActivateUser*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__ActivateUser(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__ActivateUser %p -> %p\n", q, p)); + *(struct __interswitch__ActivateUser*)p = *(struct __interswitch__ActivateUser*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__CreateUser(struct soap *soap, struct __interswitch__CreateUser *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__CreateUser = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__CreateUser(struct soap *soap, const struct __interswitch__CreateUser *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__CreateUser(soap, &a->interswitch__CreateUser); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__CreateUser(struct soap *soap, const char *tag, int id, const struct __interswitch__CreateUser *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__CreateUser(soap, "interswitch:CreateUser", -1, &a->interswitch__CreateUser, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__CreateUser * SOAP_FMAC4 soap_in___interswitch__CreateUser(struct soap *soap, const char *tag, struct __interswitch__CreateUser *a, const char *type) +{ + size_t soap_flag_interswitch__CreateUser = 1; + short soap_flag; + a = (struct __interswitch__CreateUser *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__CreateUser, sizeof(struct __interswitch__CreateUser), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__CreateUser(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__CreateUser && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__CreateUser(soap, "interswitch:CreateUser", &a->interswitch__CreateUser, "")) + { soap_flag_interswitch__CreateUser--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__CreateUser(struct soap *soap, const struct __interswitch__CreateUser *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__CreateUser(soap, tag?tag:"-interswitch:CreateUser", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__CreateUser * SOAP_FMAC4 soap_get___interswitch__CreateUser(struct soap *soap, struct __interswitch__CreateUser *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__CreateUser(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__CreateUser * SOAP_FMAC2 soap_instantiate___interswitch__CreateUser(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__CreateUser(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__CreateUser, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__CreateUser); + if (size) + *size = sizeof(struct __interswitch__CreateUser); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__CreateUser[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__CreateUser); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__CreateUser*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__CreateUser(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__CreateUser %p -> %p\n", q, p)); + *(struct __interswitch__CreateUser*)p = *(struct __interswitch__CreateUser*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetSystemSettings(struct soap *soap, struct __interswitch__GetSystemSettings *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__GetSystemSettings = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetSystemSettings(struct soap *soap, const struct __interswitch__GetSystemSettings *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__GetSystemSettings(soap, &a->interswitch__GetSystemSettings); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetSystemSettings(struct soap *soap, const char *tag, int id, const struct __interswitch__GetSystemSettings *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__GetSystemSettings(soap, "interswitch:GetSystemSettings", -1, &a->interswitch__GetSystemSettings, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetSystemSettings * SOAP_FMAC4 soap_in___interswitch__GetSystemSettings(struct soap *soap, const char *tag, struct __interswitch__GetSystemSettings *a, const char *type) +{ + size_t soap_flag_interswitch__GetSystemSettings = 1; + short soap_flag; + a = (struct __interswitch__GetSystemSettings *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__GetSystemSettings, sizeof(struct __interswitch__GetSystemSettings), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__GetSystemSettings(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__GetSystemSettings && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__GetSystemSettings(soap, "interswitch:GetSystemSettings", &a->interswitch__GetSystemSettings, "")) + { soap_flag_interswitch__GetSystemSettings--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetSystemSettings(struct soap *soap, const struct __interswitch__GetSystemSettings *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__GetSystemSettings(soap, tag?tag:"-interswitch:GetSystemSettings", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetSystemSettings * SOAP_FMAC4 soap_get___interswitch__GetSystemSettings(struct soap *soap, struct __interswitch__GetSystemSettings *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__GetSystemSettings(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__GetSystemSettings * SOAP_FMAC2 soap_instantiate___interswitch__GetSystemSettings(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__GetSystemSettings(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__GetSystemSettings, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetSystemSettings); + if (size) + *size = sizeof(struct __interswitch__GetSystemSettings); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetSystemSettings[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__GetSystemSettings); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__GetSystemSettings*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetSystemSettings(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__GetSystemSettings %p -> %p\n", q, p)); + *(struct __interswitch__GetSystemSettings*)p = *(struct __interswitch__GetSystemSettings*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__QueryTransaction(struct soap *soap, struct __interswitch__QueryTransaction *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__QueryTransaction = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__QueryTransaction(struct soap *soap, const struct __interswitch__QueryTransaction *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__QueryTransaction(soap, &a->interswitch__QueryTransaction); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__QueryTransaction(struct soap *soap, const char *tag, int id, const struct __interswitch__QueryTransaction *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__QueryTransaction(soap, "interswitch:QueryTransaction", -1, &a->interswitch__QueryTransaction, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__QueryTransaction * SOAP_FMAC4 soap_in___interswitch__QueryTransaction(struct soap *soap, const char *tag, struct __interswitch__QueryTransaction *a, const char *type) +{ + size_t soap_flag_interswitch__QueryTransaction = 1; + short soap_flag; + a = (struct __interswitch__QueryTransaction *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__QueryTransaction, sizeof(struct __interswitch__QueryTransaction), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__QueryTransaction(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__QueryTransaction && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__QueryTransaction(soap, "interswitch:QueryTransaction", &a->interswitch__QueryTransaction, "")) + { soap_flag_interswitch__QueryTransaction--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__QueryTransaction(struct soap *soap, const struct __interswitch__QueryTransaction *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__QueryTransaction(soap, tag?tag:"-interswitch:QueryTransaction", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__QueryTransaction * SOAP_FMAC4 soap_get___interswitch__QueryTransaction(struct soap *soap, struct __interswitch__QueryTransaction *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__QueryTransaction(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__QueryTransaction * SOAP_FMAC2 soap_instantiate___interswitch__QueryTransaction(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__QueryTransaction(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__QueryTransaction, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__QueryTransaction); + if (size) + *size = sizeof(struct __interswitch__QueryTransaction); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__QueryTransaction[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__QueryTransaction); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__QueryTransaction*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__QueryTransaction(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__QueryTransaction %p -> %p\n", q, p)); + *(struct __interswitch__QueryTransaction*)p = *(struct __interswitch__QueryTransaction*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__StatusCheck(struct soap *soap, struct __interswitch__StatusCheck *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__StatusCheck = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__StatusCheck(struct soap *soap, const struct __interswitch__StatusCheck *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__StatusCheck(soap, &a->interswitch__StatusCheck); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__StatusCheck(struct soap *soap, const char *tag, int id, const struct __interswitch__StatusCheck *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__StatusCheck(soap, "interswitch:StatusCheck", -1, &a->interswitch__StatusCheck, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__StatusCheck * SOAP_FMAC4 soap_in___interswitch__StatusCheck(struct soap *soap, const char *tag, struct __interswitch__StatusCheck *a, const char *type) +{ + size_t soap_flag_interswitch__StatusCheck = 1; + short soap_flag; + a = (struct __interswitch__StatusCheck *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__StatusCheck, sizeof(struct __interswitch__StatusCheck), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__StatusCheck(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__StatusCheck && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__StatusCheck(soap, "interswitch:StatusCheck", &a->interswitch__StatusCheck, "")) + { soap_flag_interswitch__StatusCheck--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__StatusCheck(struct soap *soap, const struct __interswitch__StatusCheck *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__StatusCheck(soap, tag?tag:"-interswitch:StatusCheck", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__StatusCheck * SOAP_FMAC4 soap_get___interswitch__StatusCheck(struct soap *soap, struct __interswitch__StatusCheck *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__StatusCheck(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__StatusCheck * SOAP_FMAC2 soap_instantiate___interswitch__StatusCheck(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__StatusCheck(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__StatusCheck, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__StatusCheck); + if (size) + *size = sizeof(struct __interswitch__StatusCheck); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__StatusCheck[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__StatusCheck); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__StatusCheck*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__StatusCheck(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__StatusCheck %p -> %p\n", q, p)); + *(struct __interswitch__StatusCheck*)p = *(struct __interswitch__StatusCheck*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__ReverseCashOut(struct soap *soap, struct __interswitch__ReverseCashOut *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__ReverseCashOut = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__ReverseCashOut(struct soap *soap, const struct __interswitch__ReverseCashOut *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__ReverseCashOut(soap, &a->interswitch__ReverseCashOut); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__ReverseCashOut(struct soap *soap, const char *tag, int id, const struct __interswitch__ReverseCashOut *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__ReverseCashOut(soap, "interswitch:ReverseCashOut", -1, &a->interswitch__ReverseCashOut, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__ReverseCashOut * SOAP_FMAC4 soap_in___interswitch__ReverseCashOut(struct soap *soap, const char *tag, struct __interswitch__ReverseCashOut *a, const char *type) +{ + size_t soap_flag_interswitch__ReverseCashOut = 1; + short soap_flag; + a = (struct __interswitch__ReverseCashOut *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__ReverseCashOut, sizeof(struct __interswitch__ReverseCashOut), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__ReverseCashOut(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__ReverseCashOut && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__ReverseCashOut(soap, "interswitch:ReverseCashOut", &a->interswitch__ReverseCashOut, "")) + { soap_flag_interswitch__ReverseCashOut--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__ReverseCashOut(struct soap *soap, const struct __interswitch__ReverseCashOut *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__ReverseCashOut(soap, tag?tag:"-interswitch:ReverseCashOut", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__ReverseCashOut * SOAP_FMAC4 soap_get___interswitch__ReverseCashOut(struct soap *soap, struct __interswitch__ReverseCashOut *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__ReverseCashOut(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__ReverseCashOut * SOAP_FMAC2 soap_instantiate___interswitch__ReverseCashOut(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__ReverseCashOut(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__ReverseCashOut, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__ReverseCashOut); + if (size) + *size = sizeof(struct __interswitch__ReverseCashOut); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__ReverseCashOut[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__ReverseCashOut); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__ReverseCashOut*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__ReverseCashOut(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__ReverseCashOut %p -> %p\n", q, p)); + *(struct __interswitch__ReverseCashOut*)p = *(struct __interswitch__ReverseCashOut*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__AuthoriseAccountCashOut(struct soap *soap, struct __interswitch__AuthoriseAccountCashOut *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__AuthoriseAccountCashOut = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__AuthoriseAccountCashOut(struct soap *soap, const struct __interswitch__AuthoriseAccountCashOut *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__AuthoriseAccountCashOut(soap, &a->interswitch__AuthoriseAccountCashOut); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__AuthoriseAccountCashOut(struct soap *soap, const char *tag, int id, const struct __interswitch__AuthoriseAccountCashOut *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__AuthoriseAccountCashOut(soap, "interswitch:AuthoriseAccountCashOut", -1, &a->interswitch__AuthoriseAccountCashOut, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__AuthoriseAccountCashOut * SOAP_FMAC4 soap_in___interswitch__AuthoriseAccountCashOut(struct soap *soap, const char *tag, struct __interswitch__AuthoriseAccountCashOut *a, const char *type) +{ + size_t soap_flag_interswitch__AuthoriseAccountCashOut = 1; + short soap_flag; + a = (struct __interswitch__AuthoriseAccountCashOut *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__AuthoriseAccountCashOut, sizeof(struct __interswitch__AuthoriseAccountCashOut), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__AuthoriseAccountCashOut(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__AuthoriseAccountCashOut && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__AuthoriseAccountCashOut(soap, "interswitch:AuthoriseAccountCashOut", &a->interswitch__AuthoriseAccountCashOut, "")) + { soap_flag_interswitch__AuthoriseAccountCashOut--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__AuthoriseAccountCashOut(struct soap *soap, const struct __interswitch__AuthoriseAccountCashOut *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__AuthoriseAccountCashOut(soap, tag?tag:"-interswitch:AuthoriseAccountCashOut", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__AuthoriseAccountCashOut * SOAP_FMAC4 soap_get___interswitch__AuthoriseAccountCashOut(struct soap *soap, struct __interswitch__AuthoriseAccountCashOut *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__AuthoriseAccountCashOut(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__AuthoriseAccountCashOut * SOAP_FMAC2 soap_instantiate___interswitch__AuthoriseAccountCashOut(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__AuthoriseAccountCashOut(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__AuthoriseAccountCashOut, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__AuthoriseAccountCashOut); + if (size) + *size = sizeof(struct __interswitch__AuthoriseAccountCashOut); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__AuthoriseAccountCashOut[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__AuthoriseAccountCashOut); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__AuthoriseAccountCashOut*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__AuthoriseAccountCashOut(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__AuthoriseAccountCashOut %p -> %p\n", q, p)); + *(struct __interswitch__AuthoriseAccountCashOut*)p = *(struct __interswitch__AuthoriseAccountCashOut*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__AuthoriseCashOut(struct soap *soap, struct __interswitch__AuthoriseCashOut *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__AuthoriseCashOut = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__AuthoriseCashOut(struct soap *soap, const struct __interswitch__AuthoriseCashOut *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__AuthoriseCashOut(soap, &a->interswitch__AuthoriseCashOut); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__AuthoriseCashOut(struct soap *soap, const char *tag, int id, const struct __interswitch__AuthoriseCashOut *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__AuthoriseCashOut(soap, "interswitch:AuthoriseCashOut", -1, &a->interswitch__AuthoriseCashOut, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__AuthoriseCashOut * SOAP_FMAC4 soap_in___interswitch__AuthoriseCashOut(struct soap *soap, const char *tag, struct __interswitch__AuthoriseCashOut *a, const char *type) +{ + size_t soap_flag_interswitch__AuthoriseCashOut = 1; + short soap_flag; + a = (struct __interswitch__AuthoriseCashOut *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__AuthoriseCashOut, sizeof(struct __interswitch__AuthoriseCashOut), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__AuthoriseCashOut(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__AuthoriseCashOut && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__AuthoriseCashOut(soap, "interswitch:AuthoriseCashOut", &a->interswitch__AuthoriseCashOut, "")) + { soap_flag_interswitch__AuthoriseCashOut--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__AuthoriseCashOut(struct soap *soap, const struct __interswitch__AuthoriseCashOut *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__AuthoriseCashOut(soap, tag?tag:"-interswitch:AuthoriseCashOut", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__AuthoriseCashOut * SOAP_FMAC4 soap_get___interswitch__AuthoriseCashOut(struct soap *soap, struct __interswitch__AuthoriseCashOut *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__AuthoriseCashOut(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__AuthoriseCashOut * SOAP_FMAC2 soap_instantiate___interswitch__AuthoriseCashOut(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__AuthoriseCashOut(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__AuthoriseCashOut, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__AuthoriseCashOut); + if (size) + *size = sizeof(struct __interswitch__AuthoriseCashOut); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__AuthoriseCashOut[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__AuthoriseCashOut); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__AuthoriseCashOut*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__AuthoriseCashOut(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__AuthoriseCashOut %p -> %p\n", q, p)); + *(struct __interswitch__AuthoriseCashOut*)p = *(struct __interswitch__AuthoriseCashOut*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__QueryTransfer(struct soap *soap, struct __interswitch__QueryTransfer *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__QueryTransfer = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__QueryTransfer(struct soap *soap, const struct __interswitch__QueryTransfer *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__QueryTransfer(soap, &a->interswitch__QueryTransfer); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__QueryTransfer(struct soap *soap, const char *tag, int id, const struct __interswitch__QueryTransfer *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__QueryTransfer(soap, "interswitch:QueryTransfer", -1, &a->interswitch__QueryTransfer, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__QueryTransfer * SOAP_FMAC4 soap_in___interswitch__QueryTransfer(struct soap *soap, const char *tag, struct __interswitch__QueryTransfer *a, const char *type) +{ + size_t soap_flag_interswitch__QueryTransfer = 1; + short soap_flag; + a = (struct __interswitch__QueryTransfer *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__QueryTransfer, sizeof(struct __interswitch__QueryTransfer), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__QueryTransfer(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__QueryTransfer && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__QueryTransfer(soap, "interswitch:QueryTransfer", &a->interswitch__QueryTransfer, "")) + { soap_flag_interswitch__QueryTransfer--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__QueryTransfer(struct soap *soap, const struct __interswitch__QueryTransfer *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__QueryTransfer(soap, tag?tag:"-interswitch:QueryTransfer", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__QueryTransfer * SOAP_FMAC4 soap_get___interswitch__QueryTransfer(struct soap *soap, struct __interswitch__QueryTransfer *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__QueryTransfer(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__QueryTransfer * SOAP_FMAC2 soap_instantiate___interswitch__QueryTransfer(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__QueryTransfer(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__QueryTransfer, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__QueryTransfer); + if (size) + *size = sizeof(struct __interswitch__QueryTransfer); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__QueryTransfer[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__QueryTransfer); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__QueryTransfer*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__QueryTransfer(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__QueryTransfer %p -> %p\n", q, p)); + *(struct __interswitch__QueryTransfer*)p = *(struct __interswitch__QueryTransfer*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__SendSessionKey(struct soap *soap, struct __interswitch__SendSessionKey *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__SendSessionKey = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__SendSessionKey(struct soap *soap, const struct __interswitch__SendSessionKey *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__SendSessionKey(soap, &a->interswitch__SendSessionKey); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__SendSessionKey(struct soap *soap, const char *tag, int id, const struct __interswitch__SendSessionKey *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__SendSessionKey(soap, "interswitch:SendSessionKey", -1, &a->interswitch__SendSessionKey, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__SendSessionKey * SOAP_FMAC4 soap_in___interswitch__SendSessionKey(struct soap *soap, const char *tag, struct __interswitch__SendSessionKey *a, const char *type) +{ + size_t soap_flag_interswitch__SendSessionKey = 1; + short soap_flag; + a = (struct __interswitch__SendSessionKey *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__SendSessionKey, sizeof(struct __interswitch__SendSessionKey), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__SendSessionKey(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__SendSessionKey && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__SendSessionKey(soap, "interswitch:SendSessionKey", &a->interswitch__SendSessionKey, "")) + { soap_flag_interswitch__SendSessionKey--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__SendSessionKey(struct soap *soap, const struct __interswitch__SendSessionKey *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__SendSessionKey(soap, tag?tag:"-interswitch:SendSessionKey", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__SendSessionKey * SOAP_FMAC4 soap_get___interswitch__SendSessionKey(struct soap *soap, struct __interswitch__SendSessionKey *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__SendSessionKey(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__SendSessionKey * SOAP_FMAC2 soap_instantiate___interswitch__SendSessionKey(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__SendSessionKey(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__SendSessionKey, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__SendSessionKey); + if (size) + *size = sizeof(struct __interswitch__SendSessionKey); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__SendSessionKey[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__SendSessionKey); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__SendSessionKey*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__SendSessionKey(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__SendSessionKey %p -> %p\n", q, p)); + *(struct __interswitch__SendSessionKey*)p = *(struct __interswitch__SendSessionKey*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__CancelTransfer(struct soap *soap, struct __interswitch__CancelTransfer *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__CancelTransfer = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__CancelTransfer(struct soap *soap, const struct __interswitch__CancelTransfer *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__CancelTransfer(soap, &a->interswitch__CancelTransfer); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__CancelTransfer(struct soap *soap, const char *tag, int id, const struct __interswitch__CancelTransfer *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__CancelTransfer(soap, "interswitch:CancelTransfer", -1, &a->interswitch__CancelTransfer, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__CancelTransfer * SOAP_FMAC4 soap_in___interswitch__CancelTransfer(struct soap *soap, const char *tag, struct __interswitch__CancelTransfer *a, const char *type) +{ + size_t soap_flag_interswitch__CancelTransfer = 1; + short soap_flag; + a = (struct __interswitch__CancelTransfer *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__CancelTransfer, sizeof(struct __interswitch__CancelTransfer), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__CancelTransfer(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__CancelTransfer && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__CancelTransfer(soap, "interswitch:CancelTransfer", &a->interswitch__CancelTransfer, "")) + { soap_flag_interswitch__CancelTransfer--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__CancelTransfer(struct soap *soap, const struct __interswitch__CancelTransfer *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__CancelTransfer(soap, tag?tag:"-interswitch:CancelTransfer", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__CancelTransfer * SOAP_FMAC4 soap_get___interswitch__CancelTransfer(struct soap *soap, struct __interswitch__CancelTransfer *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__CancelTransfer(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__CancelTransfer * SOAP_FMAC2 soap_instantiate___interswitch__CancelTransfer(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__CancelTransfer(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__CancelTransfer, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__CancelTransfer); + if (size) + *size = sizeof(struct __interswitch__CancelTransfer); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__CancelTransfer[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__CancelTransfer); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__CancelTransfer*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__CancelTransfer(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__CancelTransfer %p -> %p\n", q, p)); + *(struct __interswitch__CancelTransfer*)p = *(struct __interswitch__CancelTransfer*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__DoTransfer(struct soap *soap, struct __interswitch__DoTransfer *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__DoTransfer = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__DoTransfer(struct soap *soap, const struct __interswitch__DoTransfer *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__DoTransfer(soap, &a->interswitch__DoTransfer); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__DoTransfer(struct soap *soap, const char *tag, int id, const struct __interswitch__DoTransfer *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__DoTransfer(soap, "interswitch:DoTransfer", -1, &a->interswitch__DoTransfer, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__DoTransfer * SOAP_FMAC4 soap_in___interswitch__DoTransfer(struct soap *soap, const char *tag, struct __interswitch__DoTransfer *a, const char *type) +{ + size_t soap_flag_interswitch__DoTransfer = 1; + short soap_flag; + a = (struct __interswitch__DoTransfer *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__DoTransfer, sizeof(struct __interswitch__DoTransfer), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__DoTransfer(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__DoTransfer && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__DoTransfer(soap, "interswitch:DoTransfer", &a->interswitch__DoTransfer, "")) + { soap_flag_interswitch__DoTransfer--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__DoTransfer(struct soap *soap, const struct __interswitch__DoTransfer *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__DoTransfer(soap, tag?tag:"-interswitch:DoTransfer", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__DoTransfer * SOAP_FMAC4 soap_get___interswitch__DoTransfer(struct soap *soap, struct __interswitch__DoTransfer *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__DoTransfer(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__DoTransfer * SOAP_FMAC2 soap_instantiate___interswitch__DoTransfer(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__DoTransfer(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__DoTransfer, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__DoTransfer); + if (size) + *size = sizeof(struct __interswitch__DoTransfer); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__DoTransfer[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__DoTransfer); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__DoTransfer*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__DoTransfer(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__DoTransfer %p -> %p\n", q, p)); + *(struct __interswitch__DoTransfer*)p = *(struct __interswitch__DoTransfer*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__ValidateCustomer(struct soap *soap, struct __interswitch__ValidateCustomer *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__ValidateCustomer = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__ValidateCustomer(struct soap *soap, const struct __interswitch__ValidateCustomer *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__ValidateCustomer(soap, &a->interswitch__ValidateCustomer); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__ValidateCustomer(struct soap *soap, const char *tag, int id, const struct __interswitch__ValidateCustomer *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__ValidateCustomer(soap, "interswitch:ValidateCustomer", -1, &a->interswitch__ValidateCustomer, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__ValidateCustomer * SOAP_FMAC4 soap_in___interswitch__ValidateCustomer(struct soap *soap, const char *tag, struct __interswitch__ValidateCustomer *a, const char *type) +{ + size_t soap_flag_interswitch__ValidateCustomer = 1; + short soap_flag; + a = (struct __interswitch__ValidateCustomer *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__ValidateCustomer, sizeof(struct __interswitch__ValidateCustomer), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__ValidateCustomer(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__ValidateCustomer && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__ValidateCustomer(soap, "interswitch:ValidateCustomer", &a->interswitch__ValidateCustomer, "")) + { soap_flag_interswitch__ValidateCustomer--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__ValidateCustomer(struct soap *soap, const struct __interswitch__ValidateCustomer *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__ValidateCustomer(soap, tag?tag:"-interswitch:ValidateCustomer", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__ValidateCustomer * SOAP_FMAC4 soap_get___interswitch__ValidateCustomer(struct soap *soap, struct __interswitch__ValidateCustomer *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__ValidateCustomer(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__ValidateCustomer * SOAP_FMAC2 soap_instantiate___interswitch__ValidateCustomer(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__ValidateCustomer(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__ValidateCustomer, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__ValidateCustomer); + if (size) + *size = sizeof(struct __interswitch__ValidateCustomer); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__ValidateCustomer[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__ValidateCustomer); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__ValidateCustomer*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__ValidateCustomer(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__ValidateCustomer %p -> %p\n", q, p)); + *(struct __interswitch__ValidateCustomer*)p = *(struct __interswitch__ValidateCustomer*)q; +} + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch_SOAP_ENV__Reason)) + soap_serialize_SOAP_ENV__Reason(soap, *a); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Reason(struct soap *soap, const char *tag, int id, struct SOAP_ENV__Reason *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch_SOAP_ENV__Reason); + if (id < 0) + return soap->error; + return soap_out_SOAP_ENV__Reason(soap, tag, id, *a, type); +} + +SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Reason(struct soap *soap, const char *tag, struct SOAP_ENV__Reason **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (struct SOAP_ENV__Reason **)soap_malloc(soap, sizeof(struct SOAP_ENV__Reason *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = soap_in_SOAP_ENV__Reason(soap, tag, *a, type))) + return NULL; + } + else + { a = (struct SOAP_ENV__Reason **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch_SOAP_ENV__Reason, sizeof(struct SOAP_ENV__Reason), 0); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerToSOAP_ENV__Reason); + if (soap_out_PointerToSOAP_ENV__Reason(soap, tag?tag:"SOAP-ENV:Reason", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerToSOAP_ENV__Reason(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +#endif + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch_SOAP_ENV__Detail)) + soap_serialize_SOAP_ENV__Detail(soap, *a); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Detail(struct soap *soap, const char *tag, int id, struct SOAP_ENV__Detail *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch_SOAP_ENV__Detail); + if (id < 0) + return soap->error; + return soap_out_SOAP_ENV__Detail(soap, tag, id, *a, type); +} + +SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Detail(struct soap *soap, const char *tag, struct SOAP_ENV__Detail **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (struct SOAP_ENV__Detail **)soap_malloc(soap, sizeof(struct SOAP_ENV__Detail *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = soap_in_SOAP_ENV__Detail(soap, tag, *a, type))) + return NULL; + } + else + { a = (struct SOAP_ENV__Detail **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch_SOAP_ENV__Detail, sizeof(struct SOAP_ENV__Detail), 0); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerToSOAP_ENV__Detail); + if (soap_out_PointerToSOAP_ENV__Detail(soap, tag?tag:"SOAP-ENV:Detail", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerToSOAP_ENV__Detail(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +#endif + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch_SOAP_ENV__Code)) + soap_serialize_SOAP_ENV__Code(soap, *a); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Code(struct soap *soap, const char *tag, int id, struct SOAP_ENV__Code *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch_SOAP_ENV__Code); + if (id < 0) + return soap->error; + return soap_out_SOAP_ENV__Code(soap, tag, id, *a, type); +} + +SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Code(struct soap *soap, const char *tag, struct SOAP_ENV__Code **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (struct SOAP_ENV__Code **)soap_malloc(soap, sizeof(struct SOAP_ENV__Code *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = soap_in_SOAP_ENV__Code(soap, tag, *a, type))) + return NULL; + } + else + { a = (struct SOAP_ENV__Code **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch_SOAP_ENV__Code, sizeof(struct SOAP_ENV__Code), 0); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerToSOAP_ENV__Code); + if (soap_out_PointerToSOAP_ENV__Code(soap, tag?tag:"SOAP-ENV:Code", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerToSOAP_ENV__Code(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +#endif + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__VerifyBillerResponse(struct soap *soap, _interswitch__VerifyBillerResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__VerifyBillerResponse(struct soap *soap, const char *tag, int id, _interswitch__VerifyBillerResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__VerifyBillerResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__VerifyBillerResponse(struct soap *soap, const char *tag, _interswitch__VerifyBillerResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__VerifyBillerResponse **)soap_malloc(soap, sizeof(_interswitch__VerifyBillerResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__VerifyBillerResponse *)soap_instantiate__interswitch__VerifyBillerResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__VerifyBillerResponse ** p = (_interswitch__VerifyBillerResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse, sizeof(_interswitch__VerifyBillerResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__VerifyBillerResponse(struct soap *soap, _interswitch__VerifyBillerResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__VerifyBillerResponse); + if (soap_out_PointerTo_interswitch__VerifyBillerResponse(soap, tag?tag:"interswitch:VerifyBillerResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__VerifyBillerResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__VerifyBillerResponse(struct soap *soap, _interswitch__VerifyBillerResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__VerifyBillerResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__VerifyBiller(struct soap *soap, _interswitch__VerifyBiller *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__VerifyBiller)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__VerifyBiller(struct soap *soap, const char *tag, int id, _interswitch__VerifyBiller *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__VerifyBiller); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__VerifyBiller ** SOAP_FMAC4 soap_in_PointerTo_interswitch__VerifyBiller(struct soap *soap, const char *tag, _interswitch__VerifyBiller **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__VerifyBiller **)soap_malloc(soap, sizeof(_interswitch__VerifyBiller *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__VerifyBiller *)soap_instantiate__interswitch__VerifyBiller(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__VerifyBiller ** p = (_interswitch__VerifyBiller **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__VerifyBiller, sizeof(_interswitch__VerifyBiller), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__VerifyBiller(struct soap *soap, _interswitch__VerifyBiller *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__VerifyBiller); + if (soap_out_PointerTo_interswitch__VerifyBiller(soap, tag?tag:"interswitch:VerifyBiller", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__VerifyBiller ** SOAP_FMAC4 soap_get_PointerTo_interswitch__VerifyBiller(struct soap *soap, _interswitch__VerifyBiller **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__VerifyBiller(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__CreateBillerResponse(struct soap *soap, _interswitch__CreateBillerResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__CreateBillerResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__CreateBillerResponse(struct soap *soap, const char *tag, int id, _interswitch__CreateBillerResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__CreateBillerResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__CreateBillerResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__CreateBillerResponse(struct soap *soap, const char *tag, _interswitch__CreateBillerResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__CreateBillerResponse **)soap_malloc(soap, sizeof(_interswitch__CreateBillerResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__CreateBillerResponse *)soap_instantiate__interswitch__CreateBillerResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__CreateBillerResponse ** p = (_interswitch__CreateBillerResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__CreateBillerResponse, sizeof(_interswitch__CreateBillerResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__CreateBillerResponse(struct soap *soap, _interswitch__CreateBillerResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__CreateBillerResponse); + if (soap_out_PointerTo_interswitch__CreateBillerResponse(soap, tag?tag:"interswitch:CreateBillerResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__CreateBillerResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__CreateBillerResponse(struct soap *soap, _interswitch__CreateBillerResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__CreateBillerResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__CreateBiller(struct soap *soap, _interswitch__CreateBiller *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__CreateBiller)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__CreateBiller(struct soap *soap, const char *tag, int id, _interswitch__CreateBiller *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__CreateBiller); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__CreateBiller ** SOAP_FMAC4 soap_in_PointerTo_interswitch__CreateBiller(struct soap *soap, const char *tag, _interswitch__CreateBiller **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__CreateBiller **)soap_malloc(soap, sizeof(_interswitch__CreateBiller *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__CreateBiller *)soap_instantiate__interswitch__CreateBiller(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__CreateBiller ** p = (_interswitch__CreateBiller **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__CreateBiller, sizeof(_interswitch__CreateBiller), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__CreateBiller(struct soap *soap, _interswitch__CreateBiller *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__CreateBiller); + if (soap_out_PointerTo_interswitch__CreateBiller(soap, tag?tag:"interswitch:CreateBiller", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__CreateBiller ** SOAP_FMAC4 soap_get_PointerTo_interswitch__CreateBiller(struct soap *soap, _interswitch__CreateBiller **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__CreateBiller(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__DoCustomProcessingResponse(struct soap *soap, _interswitch__DoCustomProcessingResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__DoCustomProcessingResponse(struct soap *soap, const char *tag, int id, _interswitch__DoCustomProcessingResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__DoCustomProcessingResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__DoCustomProcessingResponse(struct soap *soap, const char *tag, _interswitch__DoCustomProcessingResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__DoCustomProcessingResponse **)soap_malloc(soap, sizeof(_interswitch__DoCustomProcessingResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__DoCustomProcessingResponse *)soap_instantiate__interswitch__DoCustomProcessingResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__DoCustomProcessingResponse ** p = (_interswitch__DoCustomProcessingResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse, sizeof(_interswitch__DoCustomProcessingResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__DoCustomProcessingResponse(struct soap *soap, _interswitch__DoCustomProcessingResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__DoCustomProcessingResponse); + if (soap_out_PointerTo_interswitch__DoCustomProcessingResponse(soap, tag?tag:"interswitch:DoCustomProcessingResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__DoCustomProcessingResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__DoCustomProcessingResponse(struct soap *soap, _interswitch__DoCustomProcessingResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__DoCustomProcessingResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__DoCustomProcessing(struct soap *soap, _interswitch__DoCustomProcessing *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__DoCustomProcessing)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__DoCustomProcessing(struct soap *soap, const char *tag, int id, _interswitch__DoCustomProcessing *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__DoCustomProcessing); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__DoCustomProcessing ** SOAP_FMAC4 soap_in_PointerTo_interswitch__DoCustomProcessing(struct soap *soap, const char *tag, _interswitch__DoCustomProcessing **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__DoCustomProcessing **)soap_malloc(soap, sizeof(_interswitch__DoCustomProcessing *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__DoCustomProcessing *)soap_instantiate__interswitch__DoCustomProcessing(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__DoCustomProcessing ** p = (_interswitch__DoCustomProcessing **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__DoCustomProcessing, sizeof(_interswitch__DoCustomProcessing), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__DoCustomProcessing(struct soap *soap, _interswitch__DoCustomProcessing *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__DoCustomProcessing); + if (soap_out_PointerTo_interswitch__DoCustomProcessing(soap, tag?tag:"interswitch:DoCustomProcessing", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__DoCustomProcessing ** SOAP_FMAC4 soap_get_PointerTo_interswitch__DoCustomProcessing(struct soap *soap, _interswitch__DoCustomProcessing **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__DoCustomProcessing(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ResendActivationTokenResponse(struct soap *soap, _interswitch__ResendActivationTokenResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ResendActivationTokenResponse(struct soap *soap, const char *tag, int id, _interswitch__ResendActivationTokenResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__ResendActivationTokenResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ResendActivationTokenResponse(struct soap *soap, const char *tag, _interswitch__ResendActivationTokenResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__ResendActivationTokenResponse **)soap_malloc(soap, sizeof(_interswitch__ResendActivationTokenResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__ResendActivationTokenResponse *)soap_instantiate__interswitch__ResendActivationTokenResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__ResendActivationTokenResponse ** p = (_interswitch__ResendActivationTokenResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse, sizeof(_interswitch__ResendActivationTokenResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ResendActivationTokenResponse(struct soap *soap, _interswitch__ResendActivationTokenResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__ResendActivationTokenResponse); + if (soap_out_PointerTo_interswitch__ResendActivationTokenResponse(soap, tag?tag:"interswitch:ResendActivationTokenResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__ResendActivationTokenResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ResendActivationTokenResponse(struct soap *soap, _interswitch__ResendActivationTokenResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__ResendActivationTokenResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ResendActivationToken(struct soap *soap, _interswitch__ResendActivationToken *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__ResendActivationToken)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ResendActivationToken(struct soap *soap, const char *tag, int id, _interswitch__ResendActivationToken *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__ResendActivationToken); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__ResendActivationToken ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ResendActivationToken(struct soap *soap, const char *tag, _interswitch__ResendActivationToken **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__ResendActivationToken **)soap_malloc(soap, sizeof(_interswitch__ResendActivationToken *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__ResendActivationToken *)soap_instantiate__interswitch__ResendActivationToken(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__ResendActivationToken ** p = (_interswitch__ResendActivationToken **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__ResendActivationToken, sizeof(_interswitch__ResendActivationToken), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ResendActivationToken(struct soap *soap, _interswitch__ResendActivationToken *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__ResendActivationToken); + if (soap_out_PointerTo_interswitch__ResendActivationToken(soap, tag?tag:"interswitch:ResendActivationToken", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__ResendActivationToken ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ResendActivationToken(struct soap *soap, _interswitch__ResendActivationToken **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__ResendActivationToken(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__EditCustomerBillerAccountResponse(struct soap *soap, _interswitch__EditCustomerBillerAccountResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__EditCustomerBillerAccountResponse(struct soap *soap, const char *tag, int id, _interswitch__EditCustomerBillerAccountResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__EditCustomerBillerAccountResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__EditCustomerBillerAccountResponse(struct soap *soap, const char *tag, _interswitch__EditCustomerBillerAccountResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__EditCustomerBillerAccountResponse **)soap_malloc(soap, sizeof(_interswitch__EditCustomerBillerAccountResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__EditCustomerBillerAccountResponse *)soap_instantiate__interswitch__EditCustomerBillerAccountResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__EditCustomerBillerAccountResponse ** p = (_interswitch__EditCustomerBillerAccountResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse, sizeof(_interswitch__EditCustomerBillerAccountResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__EditCustomerBillerAccountResponse(struct soap *soap, _interswitch__EditCustomerBillerAccountResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__EditCustomerBillerAccountResponse); + if (soap_out_PointerTo_interswitch__EditCustomerBillerAccountResponse(soap, tag?tag:"interswitch:EditCustomerBillerAccountResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__EditCustomerBillerAccountResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__EditCustomerBillerAccountResponse(struct soap *soap, _interswitch__EditCustomerBillerAccountResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__EditCustomerBillerAccountResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__EditCustomerBillerAccount(struct soap *soap, _interswitch__EditCustomerBillerAccount *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__EditCustomerBillerAccount(struct soap *soap, const char *tag, int id, _interswitch__EditCustomerBillerAccount *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__EditCustomerBillerAccount ** SOAP_FMAC4 soap_in_PointerTo_interswitch__EditCustomerBillerAccount(struct soap *soap, const char *tag, _interswitch__EditCustomerBillerAccount **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__EditCustomerBillerAccount **)soap_malloc(soap, sizeof(_interswitch__EditCustomerBillerAccount *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__EditCustomerBillerAccount *)soap_instantiate__interswitch__EditCustomerBillerAccount(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__EditCustomerBillerAccount ** p = (_interswitch__EditCustomerBillerAccount **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount, sizeof(_interswitch__EditCustomerBillerAccount), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__EditCustomerBillerAccount(struct soap *soap, _interswitch__EditCustomerBillerAccount *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__EditCustomerBillerAccount); + if (soap_out_PointerTo_interswitch__EditCustomerBillerAccount(soap, tag?tag:"interswitch:EditCustomerBillerAccount", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__EditCustomerBillerAccount ** SOAP_FMAC4 soap_get_PointerTo_interswitch__EditCustomerBillerAccount(struct soap *soap, _interswitch__EditCustomerBillerAccount **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__EditCustomerBillerAccount(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetBillersCollectionsAccountResponse(struct soap *soap, _interswitch__GetBillersCollectionsAccountResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetBillersCollectionsAccountResponse(struct soap *soap, const char *tag, int id, _interswitch__GetBillersCollectionsAccountResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetBillersCollectionsAccountResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetBillersCollectionsAccountResponse(struct soap *soap, const char *tag, _interswitch__GetBillersCollectionsAccountResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetBillersCollectionsAccountResponse **)soap_malloc(soap, sizeof(_interswitch__GetBillersCollectionsAccountResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetBillersCollectionsAccountResponse *)soap_instantiate__interswitch__GetBillersCollectionsAccountResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetBillersCollectionsAccountResponse ** p = (_interswitch__GetBillersCollectionsAccountResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse, sizeof(_interswitch__GetBillersCollectionsAccountResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetBillersCollectionsAccountResponse(struct soap *soap, _interswitch__GetBillersCollectionsAccountResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillersCollectionsAccountResponse); + if (soap_out_PointerTo_interswitch__GetBillersCollectionsAccountResponse(soap, tag?tag:"interswitch:GetBillersCollectionsAccountResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetBillersCollectionsAccountResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetBillersCollectionsAccountResponse(struct soap *soap, _interswitch__GetBillersCollectionsAccountResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetBillersCollectionsAccountResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetBillersCollectionsAccount(struct soap *soap, _interswitch__GetBillersCollectionsAccount *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetBillersCollectionsAccount(struct soap *soap, const char *tag, int id, _interswitch__GetBillersCollectionsAccount *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetBillersCollectionsAccount ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetBillersCollectionsAccount(struct soap *soap, const char *tag, _interswitch__GetBillersCollectionsAccount **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetBillersCollectionsAccount **)soap_malloc(soap, sizeof(_interswitch__GetBillersCollectionsAccount *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetBillersCollectionsAccount *)soap_instantiate__interswitch__GetBillersCollectionsAccount(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetBillersCollectionsAccount ** p = (_interswitch__GetBillersCollectionsAccount **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount, sizeof(_interswitch__GetBillersCollectionsAccount), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetBillersCollectionsAccount(struct soap *soap, _interswitch__GetBillersCollectionsAccount *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillersCollectionsAccount); + if (soap_out_PointerTo_interswitch__GetBillersCollectionsAccount(soap, tag?tag:"interswitch:GetBillersCollectionsAccount", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetBillersCollectionsAccount ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetBillersCollectionsAccount(struct soap *soap, _interswitch__GetBillersCollectionsAccount **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetBillersCollectionsAccount(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetCollectionsAccountResponse(struct soap *soap, _interswitch__GetCollectionsAccountResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetCollectionsAccountResponse(struct soap *soap, const char *tag, int id, _interswitch__GetCollectionsAccountResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetCollectionsAccountResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetCollectionsAccountResponse(struct soap *soap, const char *tag, _interswitch__GetCollectionsAccountResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetCollectionsAccountResponse **)soap_malloc(soap, sizeof(_interswitch__GetCollectionsAccountResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetCollectionsAccountResponse *)soap_instantiate__interswitch__GetCollectionsAccountResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetCollectionsAccountResponse ** p = (_interswitch__GetCollectionsAccountResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse, sizeof(_interswitch__GetCollectionsAccountResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetCollectionsAccountResponse(struct soap *soap, _interswitch__GetCollectionsAccountResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetCollectionsAccountResponse); + if (soap_out_PointerTo_interswitch__GetCollectionsAccountResponse(soap, tag?tag:"interswitch:GetCollectionsAccountResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetCollectionsAccountResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetCollectionsAccountResponse(struct soap *soap, _interswitch__GetCollectionsAccountResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetCollectionsAccountResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetCollectionsAccount(struct soap *soap, _interswitch__GetCollectionsAccount *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetCollectionsAccount(struct soap *soap, const char *tag, int id, _interswitch__GetCollectionsAccount *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetCollectionsAccount ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetCollectionsAccount(struct soap *soap, const char *tag, _interswitch__GetCollectionsAccount **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetCollectionsAccount **)soap_malloc(soap, sizeof(_interswitch__GetCollectionsAccount *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetCollectionsAccount *)soap_instantiate__interswitch__GetCollectionsAccount(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetCollectionsAccount ** p = (_interswitch__GetCollectionsAccount **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount, sizeof(_interswitch__GetCollectionsAccount), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetCollectionsAccount(struct soap *soap, _interswitch__GetCollectionsAccount *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetCollectionsAccount); + if (soap_out_PointerTo_interswitch__GetCollectionsAccount(soap, tag?tag:"interswitch:GetCollectionsAccount", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetCollectionsAccount ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetCollectionsAccount(struct soap *soap, _interswitch__GetCollectionsAccount **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetCollectionsAccount(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AddBillerCustomerResponse(struct soap *soap, _interswitch__AddBillerCustomerResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AddBillerCustomerResponse(struct soap *soap, const char *tag, int id, _interswitch__AddBillerCustomerResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__AddBillerCustomerResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AddBillerCustomerResponse(struct soap *soap, const char *tag, _interswitch__AddBillerCustomerResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__AddBillerCustomerResponse **)soap_malloc(soap, sizeof(_interswitch__AddBillerCustomerResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__AddBillerCustomerResponse *)soap_instantiate__interswitch__AddBillerCustomerResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__AddBillerCustomerResponse ** p = (_interswitch__AddBillerCustomerResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse, sizeof(_interswitch__AddBillerCustomerResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AddBillerCustomerResponse(struct soap *soap, _interswitch__AddBillerCustomerResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__AddBillerCustomerResponse); + if (soap_out_PointerTo_interswitch__AddBillerCustomerResponse(soap, tag?tag:"interswitch:AddBillerCustomerResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__AddBillerCustomerResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AddBillerCustomerResponse(struct soap *soap, _interswitch__AddBillerCustomerResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__AddBillerCustomerResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AddBillerCustomer(struct soap *soap, _interswitch__AddBillerCustomer *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__AddBillerCustomer)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AddBillerCustomer(struct soap *soap, const char *tag, int id, _interswitch__AddBillerCustomer *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__AddBillerCustomer); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__AddBillerCustomer ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AddBillerCustomer(struct soap *soap, const char *tag, _interswitch__AddBillerCustomer **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__AddBillerCustomer **)soap_malloc(soap, sizeof(_interswitch__AddBillerCustomer *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__AddBillerCustomer *)soap_instantiate__interswitch__AddBillerCustomer(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__AddBillerCustomer ** p = (_interswitch__AddBillerCustomer **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__AddBillerCustomer, sizeof(_interswitch__AddBillerCustomer), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AddBillerCustomer(struct soap *soap, _interswitch__AddBillerCustomer *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__AddBillerCustomer); + if (soap_out_PointerTo_interswitch__AddBillerCustomer(soap, tag?tag:"interswitch:AddBillerCustomer", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__AddBillerCustomer ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AddBillerCustomer(struct soap *soap, _interswitch__AddBillerCustomer **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__AddBillerCustomer(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetCustomerPaymentsResponse(struct soap *soap, _interswitch__GetCustomerPaymentsResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetCustomerPaymentsResponse(struct soap *soap, const char *tag, int id, _interswitch__GetCustomerPaymentsResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetCustomerPaymentsResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetCustomerPaymentsResponse(struct soap *soap, const char *tag, _interswitch__GetCustomerPaymentsResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetCustomerPaymentsResponse **)soap_malloc(soap, sizeof(_interswitch__GetCustomerPaymentsResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetCustomerPaymentsResponse *)soap_instantiate__interswitch__GetCustomerPaymentsResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetCustomerPaymentsResponse ** p = (_interswitch__GetCustomerPaymentsResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse, sizeof(_interswitch__GetCustomerPaymentsResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetCustomerPaymentsResponse(struct soap *soap, _interswitch__GetCustomerPaymentsResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerPaymentsResponse); + if (soap_out_PointerTo_interswitch__GetCustomerPaymentsResponse(soap, tag?tag:"interswitch:GetCustomerPaymentsResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetCustomerPaymentsResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetCustomerPaymentsResponse(struct soap *soap, _interswitch__GetCustomerPaymentsResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetCustomerPaymentsResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetCustomerPayments(struct soap *soap, _interswitch__GetCustomerPayments *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetCustomerPayments)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetCustomerPayments(struct soap *soap, const char *tag, int id, _interswitch__GetCustomerPayments *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetCustomerPayments); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetCustomerPayments ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetCustomerPayments(struct soap *soap, const char *tag, _interswitch__GetCustomerPayments **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetCustomerPayments **)soap_malloc(soap, sizeof(_interswitch__GetCustomerPayments *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetCustomerPayments *)soap_instantiate__interswitch__GetCustomerPayments(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetCustomerPayments ** p = (_interswitch__GetCustomerPayments **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetCustomerPayments, sizeof(_interswitch__GetCustomerPayments), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetCustomerPayments(struct soap *soap, _interswitch__GetCustomerPayments *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerPayments); + if (soap_out_PointerTo_interswitch__GetCustomerPayments(soap, tag?tag:"interswitch:GetCustomerPayments", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetCustomerPayments ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetCustomerPayments(struct soap *soap, _interswitch__GetCustomerPayments **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetCustomerPayments(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetCustomerBillerAccountsResponse(struct soap *soap, _interswitch__GetCustomerBillerAccountsResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetCustomerBillerAccountsResponse(struct soap *soap, const char *tag, int id, _interswitch__GetCustomerBillerAccountsResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetCustomerBillerAccountsResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetCustomerBillerAccountsResponse(struct soap *soap, const char *tag, _interswitch__GetCustomerBillerAccountsResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetCustomerBillerAccountsResponse **)soap_malloc(soap, sizeof(_interswitch__GetCustomerBillerAccountsResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetCustomerBillerAccountsResponse *)soap_instantiate__interswitch__GetCustomerBillerAccountsResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetCustomerBillerAccountsResponse ** p = (_interswitch__GetCustomerBillerAccountsResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse, sizeof(_interswitch__GetCustomerBillerAccountsResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetCustomerBillerAccountsResponse(struct soap *soap, _interswitch__GetCustomerBillerAccountsResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerBillerAccountsResponse); + if (soap_out_PointerTo_interswitch__GetCustomerBillerAccountsResponse(soap, tag?tag:"interswitch:GetCustomerBillerAccountsResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetCustomerBillerAccountsResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetCustomerBillerAccountsResponse(struct soap *soap, _interswitch__GetCustomerBillerAccountsResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetCustomerBillerAccountsResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetCustomerBillerAccounts(struct soap *soap, _interswitch__GetCustomerBillerAccounts *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetCustomerBillerAccounts(struct soap *soap, const char *tag, int id, _interswitch__GetCustomerBillerAccounts *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetCustomerBillerAccounts ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetCustomerBillerAccounts(struct soap *soap, const char *tag, _interswitch__GetCustomerBillerAccounts **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetCustomerBillerAccounts **)soap_malloc(soap, sizeof(_interswitch__GetCustomerBillerAccounts *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetCustomerBillerAccounts *)soap_instantiate__interswitch__GetCustomerBillerAccounts(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetCustomerBillerAccounts ** p = (_interswitch__GetCustomerBillerAccounts **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts, sizeof(_interswitch__GetCustomerBillerAccounts), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetCustomerBillerAccounts(struct soap *soap, _interswitch__GetCustomerBillerAccounts *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerBillerAccounts); + if (soap_out_PointerTo_interswitch__GetCustomerBillerAccounts(soap, tag?tag:"interswitch:GetCustomerBillerAccounts", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetCustomerBillerAccounts ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetCustomerBillerAccounts(struct soap *soap, _interswitch__GetCustomerBillerAccounts **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetCustomerBillerAccounts(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AddCustomerBillerAccountResponse(struct soap *soap, _interswitch__AddCustomerBillerAccountResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AddCustomerBillerAccountResponse(struct soap *soap, const char *tag, int id, _interswitch__AddCustomerBillerAccountResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__AddCustomerBillerAccountResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AddCustomerBillerAccountResponse(struct soap *soap, const char *tag, _interswitch__AddCustomerBillerAccountResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__AddCustomerBillerAccountResponse **)soap_malloc(soap, sizeof(_interswitch__AddCustomerBillerAccountResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__AddCustomerBillerAccountResponse *)soap_instantiate__interswitch__AddCustomerBillerAccountResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__AddCustomerBillerAccountResponse ** p = (_interswitch__AddCustomerBillerAccountResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse, sizeof(_interswitch__AddCustomerBillerAccountResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AddCustomerBillerAccountResponse(struct soap *soap, _interswitch__AddCustomerBillerAccountResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__AddCustomerBillerAccountResponse); + if (soap_out_PointerTo_interswitch__AddCustomerBillerAccountResponse(soap, tag?tag:"interswitch:AddCustomerBillerAccountResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__AddCustomerBillerAccountResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AddCustomerBillerAccountResponse(struct soap *soap, _interswitch__AddCustomerBillerAccountResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__AddCustomerBillerAccountResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AddCustomerBillerAccount(struct soap *soap, _interswitch__AddCustomerBillerAccount *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AddCustomerBillerAccount(struct soap *soap, const char *tag, int id, _interswitch__AddCustomerBillerAccount *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__AddCustomerBillerAccount ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AddCustomerBillerAccount(struct soap *soap, const char *tag, _interswitch__AddCustomerBillerAccount **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__AddCustomerBillerAccount **)soap_malloc(soap, sizeof(_interswitch__AddCustomerBillerAccount *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__AddCustomerBillerAccount *)soap_instantiate__interswitch__AddCustomerBillerAccount(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__AddCustomerBillerAccount ** p = (_interswitch__AddCustomerBillerAccount **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount, sizeof(_interswitch__AddCustomerBillerAccount), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AddCustomerBillerAccount(struct soap *soap, _interswitch__AddCustomerBillerAccount *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__AddCustomerBillerAccount); + if (soap_out_PointerTo_interswitch__AddCustomerBillerAccount(soap, tag?tag:"interswitch:AddCustomerBillerAccount", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__AddCustomerBillerAccount ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AddCustomerBillerAccount(struct soap *soap, _interswitch__AddCustomerBillerAccount **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__AddCustomerBillerAccount(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__SendPaymentsResponse(struct soap *soap, _interswitch__SendPaymentsResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__SendPaymentsResponse(struct soap *soap, const char *tag, int id, _interswitch__SendPaymentsResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__SendPaymentsResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__SendPaymentsResponse(struct soap *soap, const char *tag, _interswitch__SendPaymentsResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__SendPaymentsResponse **)soap_malloc(soap, sizeof(_interswitch__SendPaymentsResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__SendPaymentsResponse *)soap_instantiate__interswitch__SendPaymentsResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__SendPaymentsResponse ** p = (_interswitch__SendPaymentsResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse, sizeof(_interswitch__SendPaymentsResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__SendPaymentsResponse(struct soap *soap, _interswitch__SendPaymentsResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__SendPaymentsResponse); + if (soap_out_PointerTo_interswitch__SendPaymentsResponse(soap, tag?tag:"interswitch:SendPaymentsResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__SendPaymentsResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__SendPaymentsResponse(struct soap *soap, _interswitch__SendPaymentsResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__SendPaymentsResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__SendPayments(struct soap *soap, _interswitch__SendPayments *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__SendPayments)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__SendPayments(struct soap *soap, const char *tag, int id, _interswitch__SendPayments *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__SendPayments); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__SendPayments ** SOAP_FMAC4 soap_in_PointerTo_interswitch__SendPayments(struct soap *soap, const char *tag, _interswitch__SendPayments **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__SendPayments **)soap_malloc(soap, sizeof(_interswitch__SendPayments *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__SendPayments *)soap_instantiate__interswitch__SendPayments(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__SendPayments ** p = (_interswitch__SendPayments **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__SendPayments, sizeof(_interswitch__SendPayments), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__SendPayments(struct soap *soap, _interswitch__SendPayments *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__SendPayments); + if (soap_out_PointerTo_interswitch__SendPayments(soap, tag?tag:"interswitch:SendPayments", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__SendPayments ** SOAP_FMAC4 soap_get_PointerTo_interswitch__SendPayments(struct soap *soap, _interswitch__SendPayments **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__SendPayments(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__SendBillPaymentAdviceResponse(struct soap *soap, _interswitch__SendBillPaymentAdviceResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__SendBillPaymentAdviceResponse(struct soap *soap, const char *tag, int id, _interswitch__SendBillPaymentAdviceResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__SendBillPaymentAdviceResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__SendBillPaymentAdviceResponse(struct soap *soap, const char *tag, _interswitch__SendBillPaymentAdviceResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__SendBillPaymentAdviceResponse **)soap_malloc(soap, sizeof(_interswitch__SendBillPaymentAdviceResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__SendBillPaymentAdviceResponse *)soap_instantiate__interswitch__SendBillPaymentAdviceResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__SendBillPaymentAdviceResponse ** p = (_interswitch__SendBillPaymentAdviceResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse, sizeof(_interswitch__SendBillPaymentAdviceResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__SendBillPaymentAdviceResponse(struct soap *soap, _interswitch__SendBillPaymentAdviceResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__SendBillPaymentAdviceResponse); + if (soap_out_PointerTo_interswitch__SendBillPaymentAdviceResponse(soap, tag?tag:"interswitch:SendBillPaymentAdviceResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__SendBillPaymentAdviceResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__SendBillPaymentAdviceResponse(struct soap *soap, _interswitch__SendBillPaymentAdviceResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__SendBillPaymentAdviceResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__SendBillPaymentAdvice(struct soap *soap, _interswitch__SendBillPaymentAdvice *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__SendBillPaymentAdvice(struct soap *soap, const char *tag, int id, _interswitch__SendBillPaymentAdvice *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__SendBillPaymentAdvice ** SOAP_FMAC4 soap_in_PointerTo_interswitch__SendBillPaymentAdvice(struct soap *soap, const char *tag, _interswitch__SendBillPaymentAdvice **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__SendBillPaymentAdvice **)soap_malloc(soap, sizeof(_interswitch__SendBillPaymentAdvice *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__SendBillPaymentAdvice *)soap_instantiate__interswitch__SendBillPaymentAdvice(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__SendBillPaymentAdvice ** p = (_interswitch__SendBillPaymentAdvice **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice, sizeof(_interswitch__SendBillPaymentAdvice), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__SendBillPaymentAdvice(struct soap *soap, _interswitch__SendBillPaymentAdvice *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__SendBillPaymentAdvice); + if (soap_out_PointerTo_interswitch__SendBillPaymentAdvice(soap, tag?tag:"interswitch:SendBillPaymentAdvice", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__SendBillPaymentAdvice ** SOAP_FMAC4 soap_get_PointerTo_interswitch__SendBillPaymentAdvice(struct soap *soap, _interswitch__SendBillPaymentAdvice **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__SendBillPaymentAdvice(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthenticateCustomerResponse(struct soap *soap, _interswitch__AuthenticateCustomerResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthenticateCustomerResponse(struct soap *soap, const char *tag, int id, _interswitch__AuthenticateCustomerResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__AuthenticateCustomerResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthenticateCustomerResponse(struct soap *soap, const char *tag, _interswitch__AuthenticateCustomerResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__AuthenticateCustomerResponse **)soap_malloc(soap, sizeof(_interswitch__AuthenticateCustomerResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__AuthenticateCustomerResponse *)soap_instantiate__interswitch__AuthenticateCustomerResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__AuthenticateCustomerResponse ** p = (_interswitch__AuthenticateCustomerResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse, sizeof(_interswitch__AuthenticateCustomerResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthenticateCustomerResponse(struct soap *soap, _interswitch__AuthenticateCustomerResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateCustomerResponse); + if (soap_out_PointerTo_interswitch__AuthenticateCustomerResponse(soap, tag?tag:"interswitch:AuthenticateCustomerResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__AuthenticateCustomerResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthenticateCustomerResponse(struct soap *soap, _interswitch__AuthenticateCustomerResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__AuthenticateCustomerResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthenticateCustomer(struct soap *soap, _interswitch__AuthenticateCustomer *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthenticateCustomer(struct soap *soap, const char *tag, int id, _interswitch__AuthenticateCustomer *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__AuthenticateCustomer ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthenticateCustomer(struct soap *soap, const char *tag, _interswitch__AuthenticateCustomer **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__AuthenticateCustomer **)soap_malloc(soap, sizeof(_interswitch__AuthenticateCustomer *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__AuthenticateCustomer *)soap_instantiate__interswitch__AuthenticateCustomer(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__AuthenticateCustomer ** p = (_interswitch__AuthenticateCustomer **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer, sizeof(_interswitch__AuthenticateCustomer), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthenticateCustomer(struct soap *soap, _interswitch__AuthenticateCustomer *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateCustomer); + if (soap_out_PointerTo_interswitch__AuthenticateCustomer(soap, tag?tag:"interswitch:AuthenticateCustomer", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__AuthenticateCustomer ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthenticateCustomer(struct soap *soap, _interswitch__AuthenticateCustomer **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__AuthenticateCustomer(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__DoBillPaymentInquiryResponse(struct soap *soap, _interswitch__DoBillPaymentInquiryResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__DoBillPaymentInquiryResponse(struct soap *soap, const char *tag, int id, _interswitch__DoBillPaymentInquiryResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__DoBillPaymentInquiryResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__DoBillPaymentInquiryResponse(struct soap *soap, const char *tag, _interswitch__DoBillPaymentInquiryResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__DoBillPaymentInquiryResponse **)soap_malloc(soap, sizeof(_interswitch__DoBillPaymentInquiryResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__DoBillPaymentInquiryResponse *)soap_instantiate__interswitch__DoBillPaymentInquiryResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__DoBillPaymentInquiryResponse ** p = (_interswitch__DoBillPaymentInquiryResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse, sizeof(_interswitch__DoBillPaymentInquiryResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__DoBillPaymentInquiryResponse(struct soap *soap, _interswitch__DoBillPaymentInquiryResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__DoBillPaymentInquiryResponse); + if (soap_out_PointerTo_interswitch__DoBillPaymentInquiryResponse(soap, tag?tag:"interswitch:DoBillPaymentInquiryResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__DoBillPaymentInquiryResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__DoBillPaymentInquiryResponse(struct soap *soap, _interswitch__DoBillPaymentInquiryResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__DoBillPaymentInquiryResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__DoBillPaymentInquiry(struct soap *soap, _interswitch__DoBillPaymentInquiry *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__DoBillPaymentInquiry(struct soap *soap, const char *tag, int id, _interswitch__DoBillPaymentInquiry *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__DoBillPaymentInquiry ** SOAP_FMAC4 soap_in_PointerTo_interswitch__DoBillPaymentInquiry(struct soap *soap, const char *tag, _interswitch__DoBillPaymentInquiry **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__DoBillPaymentInquiry **)soap_malloc(soap, sizeof(_interswitch__DoBillPaymentInquiry *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__DoBillPaymentInquiry *)soap_instantiate__interswitch__DoBillPaymentInquiry(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__DoBillPaymentInquiry ** p = (_interswitch__DoBillPaymentInquiry **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry, sizeof(_interswitch__DoBillPaymentInquiry), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__DoBillPaymentInquiry(struct soap *soap, _interswitch__DoBillPaymentInquiry *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__DoBillPaymentInquiry); + if (soap_out_PointerTo_interswitch__DoBillPaymentInquiry(soap, tag?tag:"interswitch:DoBillPaymentInquiry", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__DoBillPaymentInquiry ** SOAP_FMAC4 soap_get_PointerTo_interswitch__DoBillPaymentInquiry(struct soap *soap, _interswitch__DoBillPaymentInquiry **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__DoBillPaymentInquiry(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetBillerCategoriesResponse(struct soap *soap, _interswitch__GetBillerCategoriesResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetBillerCategoriesResponse(struct soap *soap, const char *tag, int id, _interswitch__GetBillerCategoriesResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetBillerCategoriesResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetBillerCategoriesResponse(struct soap *soap, const char *tag, _interswitch__GetBillerCategoriesResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetBillerCategoriesResponse **)soap_malloc(soap, sizeof(_interswitch__GetBillerCategoriesResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetBillerCategoriesResponse *)soap_instantiate__interswitch__GetBillerCategoriesResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetBillerCategoriesResponse ** p = (_interswitch__GetBillerCategoriesResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse, sizeof(_interswitch__GetBillerCategoriesResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetBillerCategoriesResponse(struct soap *soap, _interswitch__GetBillerCategoriesResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerCategoriesResponse); + if (soap_out_PointerTo_interswitch__GetBillerCategoriesResponse(soap, tag?tag:"interswitch:GetBillerCategoriesResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetBillerCategoriesResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetBillerCategoriesResponse(struct soap *soap, _interswitch__GetBillerCategoriesResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetBillerCategoriesResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetBillerCategories(struct soap *soap, _interswitch__GetBillerCategories *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetBillerCategories)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetBillerCategories(struct soap *soap, const char *tag, int id, _interswitch__GetBillerCategories *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetBillerCategories); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetBillerCategories ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetBillerCategories(struct soap *soap, const char *tag, _interswitch__GetBillerCategories **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetBillerCategories **)soap_malloc(soap, sizeof(_interswitch__GetBillerCategories *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetBillerCategories *)soap_instantiate__interswitch__GetBillerCategories(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetBillerCategories ** p = (_interswitch__GetBillerCategories **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetBillerCategories, sizeof(_interswitch__GetBillerCategories), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetBillerCategories(struct soap *soap, _interswitch__GetBillerCategories *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerCategories); + if (soap_out_PointerTo_interswitch__GetBillerCategories(soap, tag?tag:"interswitch:GetBillerCategories", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetBillerCategories ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetBillerCategories(struct soap *soap, _interswitch__GetBillerCategories **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetBillerCategories(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetBillerPaymentItemsResponse(struct soap *soap, _interswitch__GetBillerPaymentItemsResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetBillerPaymentItemsResponse(struct soap *soap, const char *tag, int id, _interswitch__GetBillerPaymentItemsResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetBillerPaymentItemsResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetBillerPaymentItemsResponse(struct soap *soap, const char *tag, _interswitch__GetBillerPaymentItemsResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetBillerPaymentItemsResponse **)soap_malloc(soap, sizeof(_interswitch__GetBillerPaymentItemsResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetBillerPaymentItemsResponse *)soap_instantiate__interswitch__GetBillerPaymentItemsResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetBillerPaymentItemsResponse ** p = (_interswitch__GetBillerPaymentItemsResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse, sizeof(_interswitch__GetBillerPaymentItemsResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetBillerPaymentItemsResponse(struct soap *soap, _interswitch__GetBillerPaymentItemsResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerPaymentItemsResponse); + if (soap_out_PointerTo_interswitch__GetBillerPaymentItemsResponse(soap, tag?tag:"interswitch:GetBillerPaymentItemsResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetBillerPaymentItemsResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetBillerPaymentItemsResponse(struct soap *soap, _interswitch__GetBillerPaymentItemsResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetBillerPaymentItemsResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetBillerPaymentItems(struct soap *soap, _interswitch__GetBillerPaymentItems *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetBillerPaymentItems(struct soap *soap, const char *tag, int id, _interswitch__GetBillerPaymentItems *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetBillerPaymentItems ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetBillerPaymentItems(struct soap *soap, const char *tag, _interswitch__GetBillerPaymentItems **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetBillerPaymentItems **)soap_malloc(soap, sizeof(_interswitch__GetBillerPaymentItems *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetBillerPaymentItems *)soap_instantiate__interswitch__GetBillerPaymentItems(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetBillerPaymentItems ** p = (_interswitch__GetBillerPaymentItems **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems, sizeof(_interswitch__GetBillerPaymentItems), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetBillerPaymentItems(struct soap *soap, _interswitch__GetBillerPaymentItems *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerPaymentItems); + if (soap_out_PointerTo_interswitch__GetBillerPaymentItems(soap, tag?tag:"interswitch:GetBillerPaymentItems", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetBillerPaymentItems ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetBillerPaymentItems(struct soap *soap, _interswitch__GetBillerPaymentItems **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetBillerPaymentItems(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetFeaturedBillersResponse(struct soap *soap, _interswitch__GetFeaturedBillersResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetFeaturedBillersResponse(struct soap *soap, const char *tag, int id, _interswitch__GetFeaturedBillersResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetFeaturedBillersResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetFeaturedBillersResponse(struct soap *soap, const char *tag, _interswitch__GetFeaturedBillersResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetFeaturedBillersResponse **)soap_malloc(soap, sizeof(_interswitch__GetFeaturedBillersResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetFeaturedBillersResponse *)soap_instantiate__interswitch__GetFeaturedBillersResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetFeaturedBillersResponse ** p = (_interswitch__GetFeaturedBillersResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse, sizeof(_interswitch__GetFeaturedBillersResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetFeaturedBillersResponse(struct soap *soap, _interswitch__GetFeaturedBillersResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetFeaturedBillersResponse); + if (soap_out_PointerTo_interswitch__GetFeaturedBillersResponse(soap, tag?tag:"interswitch:GetFeaturedBillersResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetFeaturedBillersResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetFeaturedBillersResponse(struct soap *soap, _interswitch__GetFeaturedBillersResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetFeaturedBillersResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetFeaturedBillers(struct soap *soap, _interswitch__GetFeaturedBillers *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetFeaturedBillers(struct soap *soap, const char *tag, int id, _interswitch__GetFeaturedBillers *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetFeaturedBillers ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetFeaturedBillers(struct soap *soap, const char *tag, _interswitch__GetFeaturedBillers **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetFeaturedBillers **)soap_malloc(soap, sizeof(_interswitch__GetFeaturedBillers *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetFeaturedBillers *)soap_instantiate__interswitch__GetFeaturedBillers(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetFeaturedBillers ** p = (_interswitch__GetFeaturedBillers **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers, sizeof(_interswitch__GetFeaturedBillers), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetFeaturedBillers(struct soap *soap, _interswitch__GetFeaturedBillers *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetFeaturedBillers); + if (soap_out_PointerTo_interswitch__GetFeaturedBillers(soap, tag?tag:"interswitch:GetFeaturedBillers", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetFeaturedBillers ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetFeaturedBillers(struct soap *soap, _interswitch__GetFeaturedBillers **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetFeaturedBillers(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetLatestBillersResponse(struct soap *soap, _interswitch__GetLatestBillersResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetLatestBillersResponse(struct soap *soap, const char *tag, int id, _interswitch__GetLatestBillersResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetLatestBillersResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetLatestBillersResponse(struct soap *soap, const char *tag, _interswitch__GetLatestBillersResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetLatestBillersResponse **)soap_malloc(soap, sizeof(_interswitch__GetLatestBillersResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetLatestBillersResponse *)soap_instantiate__interswitch__GetLatestBillersResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetLatestBillersResponse ** p = (_interswitch__GetLatestBillersResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse, sizeof(_interswitch__GetLatestBillersResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetLatestBillersResponse(struct soap *soap, _interswitch__GetLatestBillersResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetLatestBillersResponse); + if (soap_out_PointerTo_interswitch__GetLatestBillersResponse(soap, tag?tag:"interswitch:GetLatestBillersResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetLatestBillersResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetLatestBillersResponse(struct soap *soap, _interswitch__GetLatestBillersResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetLatestBillersResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetLatestBillers(struct soap *soap, _interswitch__GetLatestBillers *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetLatestBillers)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetLatestBillers(struct soap *soap, const char *tag, int id, _interswitch__GetLatestBillers *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetLatestBillers); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetLatestBillers ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetLatestBillers(struct soap *soap, const char *tag, _interswitch__GetLatestBillers **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetLatestBillers **)soap_malloc(soap, sizeof(_interswitch__GetLatestBillers *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetLatestBillers *)soap_instantiate__interswitch__GetLatestBillers(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetLatestBillers ** p = (_interswitch__GetLatestBillers **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetLatestBillers, sizeof(_interswitch__GetLatestBillers), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetLatestBillers(struct soap *soap, _interswitch__GetLatestBillers *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetLatestBillers); + if (soap_out_PointerTo_interswitch__GetLatestBillers(soap, tag?tag:"interswitch:GetLatestBillers", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetLatestBillers ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetLatestBillers(struct soap *soap, _interswitch__GetLatestBillers **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetLatestBillers(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetBillersResponse(struct soap *soap, _interswitch__GetBillersResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetBillersResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetBillersResponse(struct soap *soap, const char *tag, int id, _interswitch__GetBillersResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetBillersResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetBillersResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetBillersResponse(struct soap *soap, const char *tag, _interswitch__GetBillersResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetBillersResponse **)soap_malloc(soap, sizeof(_interswitch__GetBillersResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetBillersResponse *)soap_instantiate__interswitch__GetBillersResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetBillersResponse ** p = (_interswitch__GetBillersResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetBillersResponse, sizeof(_interswitch__GetBillersResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetBillersResponse(struct soap *soap, _interswitch__GetBillersResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillersResponse); + if (soap_out_PointerTo_interswitch__GetBillersResponse(soap, tag?tag:"interswitch:GetBillersResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetBillersResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetBillersResponse(struct soap *soap, _interswitch__GetBillersResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetBillersResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetBillers(struct soap *soap, _interswitch__GetBillers *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetBillers)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetBillers(struct soap *soap, const char *tag, int id, _interswitch__GetBillers *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetBillers); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetBillers ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetBillers(struct soap *soap, const char *tag, _interswitch__GetBillers **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetBillers **)soap_malloc(soap, sizeof(_interswitch__GetBillers *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetBillers *)soap_instantiate__interswitch__GetBillers(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetBillers ** p = (_interswitch__GetBillers **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetBillers, sizeof(_interswitch__GetBillers), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetBillers(struct soap *soap, _interswitch__GetBillers *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillers); + if (soap_out_PointerTo_interswitch__GetBillers(soap, tag?tag:"interswitch:GetBillers", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetBillers ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetBillers(struct soap *soap, _interswitch__GetBillers **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetBillers(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetUserResponse(struct soap *soap, _interswitch__GetUserResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetUserResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetUserResponse(struct soap *soap, const char *tag, int id, _interswitch__GetUserResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetUserResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetUserResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetUserResponse(struct soap *soap, const char *tag, _interswitch__GetUserResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetUserResponse **)soap_malloc(soap, sizeof(_interswitch__GetUserResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetUserResponse *)soap_instantiate__interswitch__GetUserResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetUserResponse ** p = (_interswitch__GetUserResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetUserResponse, sizeof(_interswitch__GetUserResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetUserResponse(struct soap *soap, _interswitch__GetUserResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetUserResponse); + if (soap_out_PointerTo_interswitch__GetUserResponse(soap, tag?tag:"interswitch:GetUserResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetUserResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetUserResponse(struct soap *soap, _interswitch__GetUserResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetUserResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetUser(struct soap *soap, _interswitch__GetUser *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetUser)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetUser(struct soap *soap, const char *tag, int id, _interswitch__GetUser *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetUser); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetUser ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetUser(struct soap *soap, const char *tag, _interswitch__GetUser **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetUser **)soap_malloc(soap, sizeof(_interswitch__GetUser *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetUser *)soap_instantiate__interswitch__GetUser(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetUser ** p = (_interswitch__GetUser **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetUser, sizeof(_interswitch__GetUser), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetUser(struct soap *soap, _interswitch__GetUser *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetUser); + if (soap_out_PointerTo_interswitch__GetUser(soap, tag?tag:"interswitch:GetUser", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetUser ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetUser(struct soap *soap, _interswitch__GetUser **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetUser(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(struct soap *soap, _interswitch__AuthenticateUserSecurityTokenResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(struct soap *soap, const char *tag, int id, _interswitch__AuthenticateUserSecurityTokenResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__AuthenticateUserSecurityTokenResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(struct soap *soap, const char *tag, _interswitch__AuthenticateUserSecurityTokenResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__AuthenticateUserSecurityTokenResponse **)soap_malloc(soap, sizeof(_interswitch__AuthenticateUserSecurityTokenResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__AuthenticateUserSecurityTokenResponse *)soap_instantiate__interswitch__AuthenticateUserSecurityTokenResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__AuthenticateUserSecurityTokenResponse ** p = (_interswitch__AuthenticateUserSecurityTokenResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse, sizeof(_interswitch__AuthenticateUserSecurityTokenResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(struct soap *soap, _interswitch__AuthenticateUserSecurityTokenResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse); + if (soap_out_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(soap, tag?tag:"interswitch:AuthenticateUserSecurityTokenResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__AuthenticateUserSecurityTokenResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(struct soap *soap, _interswitch__AuthenticateUserSecurityTokenResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthenticateUserSecurityToken(struct soap *soap, _interswitch__AuthenticateUserSecurityToken *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthenticateUserSecurityToken(struct soap *soap, const char *tag, int id, _interswitch__AuthenticateUserSecurityToken *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__AuthenticateUserSecurityToken ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthenticateUserSecurityToken(struct soap *soap, const char *tag, _interswitch__AuthenticateUserSecurityToken **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__AuthenticateUserSecurityToken **)soap_malloc(soap, sizeof(_interswitch__AuthenticateUserSecurityToken *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__AuthenticateUserSecurityToken *)soap_instantiate__interswitch__AuthenticateUserSecurityToken(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__AuthenticateUserSecurityToken ** p = (_interswitch__AuthenticateUserSecurityToken **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken, sizeof(_interswitch__AuthenticateUserSecurityToken), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthenticateUserSecurityToken(struct soap *soap, _interswitch__AuthenticateUserSecurityToken *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUserSecurityToken); + if (soap_out_PointerTo_interswitch__AuthenticateUserSecurityToken(soap, tag?tag:"interswitch:AuthenticateUserSecurityToken", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__AuthenticateUserSecurityToken ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthenticateUserSecurityToken(struct soap *soap, _interswitch__AuthenticateUserSecurityToken **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__AuthenticateUserSecurityToken(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthenticateUserResponse(struct soap *soap, _interswitch__AuthenticateUserResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthenticateUserResponse(struct soap *soap, const char *tag, int id, _interswitch__AuthenticateUserResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__AuthenticateUserResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthenticateUserResponse(struct soap *soap, const char *tag, _interswitch__AuthenticateUserResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__AuthenticateUserResponse **)soap_malloc(soap, sizeof(_interswitch__AuthenticateUserResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__AuthenticateUserResponse *)soap_instantiate__interswitch__AuthenticateUserResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__AuthenticateUserResponse ** p = (_interswitch__AuthenticateUserResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse, sizeof(_interswitch__AuthenticateUserResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthenticateUserResponse(struct soap *soap, _interswitch__AuthenticateUserResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUserResponse); + if (soap_out_PointerTo_interswitch__AuthenticateUserResponse(soap, tag?tag:"interswitch:AuthenticateUserResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__AuthenticateUserResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthenticateUserResponse(struct soap *soap, _interswitch__AuthenticateUserResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__AuthenticateUserResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthenticateUser(struct soap *soap, _interswitch__AuthenticateUser *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__AuthenticateUser)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthenticateUser(struct soap *soap, const char *tag, int id, _interswitch__AuthenticateUser *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__AuthenticateUser); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__AuthenticateUser ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthenticateUser(struct soap *soap, const char *tag, _interswitch__AuthenticateUser **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__AuthenticateUser **)soap_malloc(soap, sizeof(_interswitch__AuthenticateUser *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__AuthenticateUser *)soap_instantiate__interswitch__AuthenticateUser(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__AuthenticateUser ** p = (_interswitch__AuthenticateUser **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__AuthenticateUser, sizeof(_interswitch__AuthenticateUser), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthenticateUser(struct soap *soap, _interswitch__AuthenticateUser *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUser); + if (soap_out_PointerTo_interswitch__AuthenticateUser(soap, tag?tag:"interswitch:AuthenticateUser", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__AuthenticateUser ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthenticateUser(struct soap *soap, _interswitch__AuthenticateUser **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__AuthenticateUser(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ResetPasswordResponse(struct soap *soap, _interswitch__ResetPasswordResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ResetPasswordResponse(struct soap *soap, const char *tag, int id, _interswitch__ResetPasswordResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__ResetPasswordResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ResetPasswordResponse(struct soap *soap, const char *tag, _interswitch__ResetPasswordResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__ResetPasswordResponse **)soap_malloc(soap, sizeof(_interswitch__ResetPasswordResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__ResetPasswordResponse *)soap_instantiate__interswitch__ResetPasswordResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__ResetPasswordResponse ** p = (_interswitch__ResetPasswordResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse, sizeof(_interswitch__ResetPasswordResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ResetPasswordResponse(struct soap *soap, _interswitch__ResetPasswordResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__ResetPasswordResponse); + if (soap_out_PointerTo_interswitch__ResetPasswordResponse(soap, tag?tag:"interswitch:ResetPasswordResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__ResetPasswordResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ResetPasswordResponse(struct soap *soap, _interswitch__ResetPasswordResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__ResetPasswordResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ResetPassword(struct soap *soap, _interswitch__ResetPassword *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__ResetPassword)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ResetPassword(struct soap *soap, const char *tag, int id, _interswitch__ResetPassword *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__ResetPassword); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__ResetPassword ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ResetPassword(struct soap *soap, const char *tag, _interswitch__ResetPassword **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__ResetPassword **)soap_malloc(soap, sizeof(_interswitch__ResetPassword *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__ResetPassword *)soap_instantiate__interswitch__ResetPassword(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__ResetPassword ** p = (_interswitch__ResetPassword **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__ResetPassword, sizeof(_interswitch__ResetPassword), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ResetPassword(struct soap *soap, _interswitch__ResetPassword *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__ResetPassword); + if (soap_out_PointerTo_interswitch__ResetPassword(soap, tag?tag:"interswitch:ResetPassword", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__ResetPassword ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ResetPassword(struct soap *soap, _interswitch__ResetPassword **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__ResetPassword(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ChangePasswordResponse(struct soap *soap, _interswitch__ChangePasswordResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ChangePasswordResponse(struct soap *soap, const char *tag, int id, _interswitch__ChangePasswordResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__ChangePasswordResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ChangePasswordResponse(struct soap *soap, const char *tag, _interswitch__ChangePasswordResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__ChangePasswordResponse **)soap_malloc(soap, sizeof(_interswitch__ChangePasswordResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__ChangePasswordResponse *)soap_instantiate__interswitch__ChangePasswordResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__ChangePasswordResponse ** p = (_interswitch__ChangePasswordResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse, sizeof(_interswitch__ChangePasswordResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ChangePasswordResponse(struct soap *soap, _interswitch__ChangePasswordResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__ChangePasswordResponse); + if (soap_out_PointerTo_interswitch__ChangePasswordResponse(soap, tag?tag:"interswitch:ChangePasswordResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__ChangePasswordResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ChangePasswordResponse(struct soap *soap, _interswitch__ChangePasswordResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__ChangePasswordResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ChangePassword(struct soap *soap, _interswitch__ChangePassword *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__ChangePassword)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ChangePassword(struct soap *soap, const char *tag, int id, _interswitch__ChangePassword *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__ChangePassword); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__ChangePassword ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ChangePassword(struct soap *soap, const char *tag, _interswitch__ChangePassword **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__ChangePassword **)soap_malloc(soap, sizeof(_interswitch__ChangePassword *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__ChangePassword *)soap_instantiate__interswitch__ChangePassword(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__ChangePassword ** p = (_interswitch__ChangePassword **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__ChangePassword, sizeof(_interswitch__ChangePassword), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ChangePassword(struct soap *soap, _interswitch__ChangePassword *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__ChangePassword); + if (soap_out_PointerTo_interswitch__ChangePassword(soap, tag?tag:"interswitch:ChangePassword", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__ChangePassword ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ChangePassword(struct soap *soap, _interswitch__ChangePassword **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__ChangePassword(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__UpdateUserResponse(struct soap *soap, _interswitch__UpdateUserResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__UpdateUserResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__UpdateUserResponse(struct soap *soap, const char *tag, int id, _interswitch__UpdateUserResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__UpdateUserResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__UpdateUserResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__UpdateUserResponse(struct soap *soap, const char *tag, _interswitch__UpdateUserResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__UpdateUserResponse **)soap_malloc(soap, sizeof(_interswitch__UpdateUserResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__UpdateUserResponse *)soap_instantiate__interswitch__UpdateUserResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__UpdateUserResponse ** p = (_interswitch__UpdateUserResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__UpdateUserResponse, sizeof(_interswitch__UpdateUserResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__UpdateUserResponse(struct soap *soap, _interswitch__UpdateUserResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__UpdateUserResponse); + if (soap_out_PointerTo_interswitch__UpdateUserResponse(soap, tag?tag:"interswitch:UpdateUserResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__UpdateUserResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__UpdateUserResponse(struct soap *soap, _interswitch__UpdateUserResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__UpdateUserResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__UpdateUser(struct soap *soap, _interswitch__UpdateUser *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__UpdateUser)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__UpdateUser(struct soap *soap, const char *tag, int id, _interswitch__UpdateUser *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__UpdateUser); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__UpdateUser ** SOAP_FMAC4 soap_in_PointerTo_interswitch__UpdateUser(struct soap *soap, const char *tag, _interswitch__UpdateUser **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__UpdateUser **)soap_malloc(soap, sizeof(_interswitch__UpdateUser *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__UpdateUser *)soap_instantiate__interswitch__UpdateUser(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__UpdateUser ** p = (_interswitch__UpdateUser **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__UpdateUser, sizeof(_interswitch__UpdateUser), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__UpdateUser(struct soap *soap, _interswitch__UpdateUser *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__UpdateUser); + if (soap_out_PointerTo_interswitch__UpdateUser(soap, tag?tag:"interswitch:UpdateUser", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__UpdateUser ** SOAP_FMAC4 soap_get_PointerTo_interswitch__UpdateUser(struct soap *soap, _interswitch__UpdateUser **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__UpdateUser(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ActivateUserResponse(struct soap *soap, _interswitch__ActivateUserResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__ActivateUserResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ActivateUserResponse(struct soap *soap, const char *tag, int id, _interswitch__ActivateUserResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__ActivateUserResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__ActivateUserResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ActivateUserResponse(struct soap *soap, const char *tag, _interswitch__ActivateUserResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__ActivateUserResponse **)soap_malloc(soap, sizeof(_interswitch__ActivateUserResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__ActivateUserResponse *)soap_instantiate__interswitch__ActivateUserResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__ActivateUserResponse ** p = (_interswitch__ActivateUserResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__ActivateUserResponse, sizeof(_interswitch__ActivateUserResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ActivateUserResponse(struct soap *soap, _interswitch__ActivateUserResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__ActivateUserResponse); + if (soap_out_PointerTo_interswitch__ActivateUserResponse(soap, tag?tag:"interswitch:ActivateUserResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__ActivateUserResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ActivateUserResponse(struct soap *soap, _interswitch__ActivateUserResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__ActivateUserResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ActivateUser(struct soap *soap, _interswitch__ActivateUser *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__ActivateUser)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ActivateUser(struct soap *soap, const char *tag, int id, _interswitch__ActivateUser *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__ActivateUser); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__ActivateUser ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ActivateUser(struct soap *soap, const char *tag, _interswitch__ActivateUser **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__ActivateUser **)soap_malloc(soap, sizeof(_interswitch__ActivateUser *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__ActivateUser *)soap_instantiate__interswitch__ActivateUser(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__ActivateUser ** p = (_interswitch__ActivateUser **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__ActivateUser, sizeof(_interswitch__ActivateUser), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ActivateUser(struct soap *soap, _interswitch__ActivateUser *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__ActivateUser); + if (soap_out_PointerTo_interswitch__ActivateUser(soap, tag?tag:"interswitch:ActivateUser", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__ActivateUser ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ActivateUser(struct soap *soap, _interswitch__ActivateUser **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__ActivateUser(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__CreateUserResponse(struct soap *soap, _interswitch__CreateUserResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__CreateUserResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__CreateUserResponse(struct soap *soap, const char *tag, int id, _interswitch__CreateUserResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__CreateUserResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__CreateUserResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__CreateUserResponse(struct soap *soap, const char *tag, _interswitch__CreateUserResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__CreateUserResponse **)soap_malloc(soap, sizeof(_interswitch__CreateUserResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__CreateUserResponse *)soap_instantiate__interswitch__CreateUserResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__CreateUserResponse ** p = (_interswitch__CreateUserResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__CreateUserResponse, sizeof(_interswitch__CreateUserResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__CreateUserResponse(struct soap *soap, _interswitch__CreateUserResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__CreateUserResponse); + if (soap_out_PointerTo_interswitch__CreateUserResponse(soap, tag?tag:"interswitch:CreateUserResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__CreateUserResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__CreateUserResponse(struct soap *soap, _interswitch__CreateUserResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__CreateUserResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__CreateUser(struct soap *soap, _interswitch__CreateUser *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__CreateUser)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__CreateUser(struct soap *soap, const char *tag, int id, _interswitch__CreateUser *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__CreateUser); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__CreateUser ** SOAP_FMAC4 soap_in_PointerTo_interswitch__CreateUser(struct soap *soap, const char *tag, _interswitch__CreateUser **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__CreateUser **)soap_malloc(soap, sizeof(_interswitch__CreateUser *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__CreateUser *)soap_instantiate__interswitch__CreateUser(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__CreateUser ** p = (_interswitch__CreateUser **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__CreateUser, sizeof(_interswitch__CreateUser), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__CreateUser(struct soap *soap, _interswitch__CreateUser *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__CreateUser); + if (soap_out_PointerTo_interswitch__CreateUser(soap, tag?tag:"interswitch:CreateUser", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__CreateUser ** SOAP_FMAC4 soap_get_PointerTo_interswitch__CreateUser(struct soap *soap, _interswitch__CreateUser **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__CreateUser(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetSystemSettingsResponse(struct soap *soap, _interswitch__GetSystemSettingsResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetSystemSettingsResponse(struct soap *soap, const char *tag, int id, _interswitch__GetSystemSettingsResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetSystemSettingsResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetSystemSettingsResponse(struct soap *soap, const char *tag, _interswitch__GetSystemSettingsResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetSystemSettingsResponse **)soap_malloc(soap, sizeof(_interswitch__GetSystemSettingsResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetSystemSettingsResponse *)soap_instantiate__interswitch__GetSystemSettingsResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetSystemSettingsResponse ** p = (_interswitch__GetSystemSettingsResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse, sizeof(_interswitch__GetSystemSettingsResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetSystemSettingsResponse(struct soap *soap, _interswitch__GetSystemSettingsResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetSystemSettingsResponse); + if (soap_out_PointerTo_interswitch__GetSystemSettingsResponse(soap, tag?tag:"interswitch:GetSystemSettingsResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetSystemSettingsResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetSystemSettingsResponse(struct soap *soap, _interswitch__GetSystemSettingsResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetSystemSettingsResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetSystemSettings(struct soap *soap, _interswitch__GetSystemSettings *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetSystemSettings)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetSystemSettings(struct soap *soap, const char *tag, int id, _interswitch__GetSystemSettings *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetSystemSettings); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetSystemSettings ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetSystemSettings(struct soap *soap, const char *tag, _interswitch__GetSystemSettings **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetSystemSettings **)soap_malloc(soap, sizeof(_interswitch__GetSystemSettings *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetSystemSettings *)soap_instantiate__interswitch__GetSystemSettings(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetSystemSettings ** p = (_interswitch__GetSystemSettings **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetSystemSettings, sizeof(_interswitch__GetSystemSettings), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetSystemSettings(struct soap *soap, _interswitch__GetSystemSettings *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetSystemSettings); + if (soap_out_PointerTo_interswitch__GetSystemSettings(soap, tag?tag:"interswitch:GetSystemSettings", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetSystemSettings ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetSystemSettings(struct soap *soap, _interswitch__GetSystemSettings **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetSystemSettings(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__QueryTransactionResponse(struct soap *soap, _interswitch__QueryTransactionResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__QueryTransactionResponse(struct soap *soap, const char *tag, int id, _interswitch__QueryTransactionResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__QueryTransactionResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__QueryTransactionResponse(struct soap *soap, const char *tag, _interswitch__QueryTransactionResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__QueryTransactionResponse **)soap_malloc(soap, sizeof(_interswitch__QueryTransactionResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__QueryTransactionResponse *)soap_instantiate__interswitch__QueryTransactionResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__QueryTransactionResponse ** p = (_interswitch__QueryTransactionResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse, sizeof(_interswitch__QueryTransactionResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__QueryTransactionResponse(struct soap *soap, _interswitch__QueryTransactionResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransactionResponse); + if (soap_out_PointerTo_interswitch__QueryTransactionResponse(soap, tag?tag:"interswitch:QueryTransactionResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__QueryTransactionResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__QueryTransactionResponse(struct soap *soap, _interswitch__QueryTransactionResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__QueryTransactionResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__QueryTransaction(struct soap *soap, _interswitch__QueryTransaction *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__QueryTransaction)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__QueryTransaction(struct soap *soap, const char *tag, int id, _interswitch__QueryTransaction *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__QueryTransaction); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__QueryTransaction ** SOAP_FMAC4 soap_in_PointerTo_interswitch__QueryTransaction(struct soap *soap, const char *tag, _interswitch__QueryTransaction **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__QueryTransaction **)soap_malloc(soap, sizeof(_interswitch__QueryTransaction *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__QueryTransaction *)soap_instantiate__interswitch__QueryTransaction(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__QueryTransaction ** p = (_interswitch__QueryTransaction **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__QueryTransaction, sizeof(_interswitch__QueryTransaction), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__QueryTransaction(struct soap *soap, _interswitch__QueryTransaction *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransaction); + if (soap_out_PointerTo_interswitch__QueryTransaction(soap, tag?tag:"interswitch:QueryTransaction", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__QueryTransaction ** SOAP_FMAC4 soap_get_PointerTo_interswitch__QueryTransaction(struct soap *soap, _interswitch__QueryTransaction **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__QueryTransaction(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__StatusCheckResponse(struct soap *soap, _interswitch__StatusCheckResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__StatusCheckResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__StatusCheckResponse(struct soap *soap, const char *tag, int id, _interswitch__StatusCheckResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__StatusCheckResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__StatusCheckResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__StatusCheckResponse(struct soap *soap, const char *tag, _interswitch__StatusCheckResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__StatusCheckResponse **)soap_malloc(soap, sizeof(_interswitch__StatusCheckResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__StatusCheckResponse *)soap_instantiate__interswitch__StatusCheckResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__StatusCheckResponse ** p = (_interswitch__StatusCheckResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__StatusCheckResponse, sizeof(_interswitch__StatusCheckResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__StatusCheckResponse(struct soap *soap, _interswitch__StatusCheckResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__StatusCheckResponse); + if (soap_out_PointerTo_interswitch__StatusCheckResponse(soap, tag?tag:"interswitch:StatusCheckResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__StatusCheckResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__StatusCheckResponse(struct soap *soap, _interswitch__StatusCheckResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__StatusCheckResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__StatusCheck(struct soap *soap, _interswitch__StatusCheck *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__StatusCheck)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__StatusCheck(struct soap *soap, const char *tag, int id, _interswitch__StatusCheck *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__StatusCheck); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__StatusCheck ** SOAP_FMAC4 soap_in_PointerTo_interswitch__StatusCheck(struct soap *soap, const char *tag, _interswitch__StatusCheck **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__StatusCheck **)soap_malloc(soap, sizeof(_interswitch__StatusCheck *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__StatusCheck *)soap_instantiate__interswitch__StatusCheck(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__StatusCheck ** p = (_interswitch__StatusCheck **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__StatusCheck, sizeof(_interswitch__StatusCheck), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__StatusCheck(struct soap *soap, _interswitch__StatusCheck *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__StatusCheck); + if (soap_out_PointerTo_interswitch__StatusCheck(soap, tag?tag:"interswitch:StatusCheck", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__StatusCheck ** SOAP_FMAC4 soap_get_PointerTo_interswitch__StatusCheck(struct soap *soap, _interswitch__StatusCheck **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__StatusCheck(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ReverseCashOutResponse(struct soap *soap, _interswitch__ReverseCashOutResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ReverseCashOutResponse(struct soap *soap, const char *tag, int id, _interswitch__ReverseCashOutResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__ReverseCashOutResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ReverseCashOutResponse(struct soap *soap, const char *tag, _interswitch__ReverseCashOutResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__ReverseCashOutResponse **)soap_malloc(soap, sizeof(_interswitch__ReverseCashOutResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__ReverseCashOutResponse *)soap_instantiate__interswitch__ReverseCashOutResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__ReverseCashOutResponse ** p = (_interswitch__ReverseCashOutResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse, sizeof(_interswitch__ReverseCashOutResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ReverseCashOutResponse(struct soap *soap, _interswitch__ReverseCashOutResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__ReverseCashOutResponse); + if (soap_out_PointerTo_interswitch__ReverseCashOutResponse(soap, tag?tag:"interswitch:ReverseCashOutResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__ReverseCashOutResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ReverseCashOutResponse(struct soap *soap, _interswitch__ReverseCashOutResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__ReverseCashOutResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ReverseCashOut(struct soap *soap, _interswitch__ReverseCashOut *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__ReverseCashOut)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ReverseCashOut(struct soap *soap, const char *tag, int id, _interswitch__ReverseCashOut *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__ReverseCashOut); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__ReverseCashOut ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ReverseCashOut(struct soap *soap, const char *tag, _interswitch__ReverseCashOut **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__ReverseCashOut **)soap_malloc(soap, sizeof(_interswitch__ReverseCashOut *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__ReverseCashOut *)soap_instantiate__interswitch__ReverseCashOut(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__ReverseCashOut ** p = (_interswitch__ReverseCashOut **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__ReverseCashOut, sizeof(_interswitch__ReverseCashOut), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ReverseCashOut(struct soap *soap, _interswitch__ReverseCashOut *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__ReverseCashOut); + if (soap_out_PointerTo_interswitch__ReverseCashOut(soap, tag?tag:"interswitch:ReverseCashOut", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__ReverseCashOut ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ReverseCashOut(struct soap *soap, _interswitch__ReverseCashOut **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__ReverseCashOut(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthoriseAccountCashOutResponse(struct soap *soap, _interswitch__AuthoriseAccountCashOutResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthoriseAccountCashOutResponse(struct soap *soap, const char *tag, int id, _interswitch__AuthoriseAccountCashOutResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__AuthoriseAccountCashOutResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthoriseAccountCashOutResponse(struct soap *soap, const char *tag, _interswitch__AuthoriseAccountCashOutResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__AuthoriseAccountCashOutResponse **)soap_malloc(soap, sizeof(_interswitch__AuthoriseAccountCashOutResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__AuthoriseAccountCashOutResponse *)soap_instantiate__interswitch__AuthoriseAccountCashOutResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__AuthoriseAccountCashOutResponse ** p = (_interswitch__AuthoriseAccountCashOutResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse, sizeof(_interswitch__AuthoriseAccountCashOutResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthoriseAccountCashOutResponse(struct soap *soap, _interswitch__AuthoriseAccountCashOutResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseAccountCashOutResponse); + if (soap_out_PointerTo_interswitch__AuthoriseAccountCashOutResponse(soap, tag?tag:"interswitch:AuthoriseAccountCashOutResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__AuthoriseAccountCashOutResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthoriseAccountCashOutResponse(struct soap *soap, _interswitch__AuthoriseAccountCashOutResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__AuthoriseAccountCashOutResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthoriseAccountCashOut(struct soap *soap, _interswitch__AuthoriseAccountCashOut *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthoriseAccountCashOut(struct soap *soap, const char *tag, int id, _interswitch__AuthoriseAccountCashOut *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__AuthoriseAccountCashOut ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthoriseAccountCashOut(struct soap *soap, const char *tag, _interswitch__AuthoriseAccountCashOut **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__AuthoriseAccountCashOut **)soap_malloc(soap, sizeof(_interswitch__AuthoriseAccountCashOut *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__AuthoriseAccountCashOut *)soap_instantiate__interswitch__AuthoriseAccountCashOut(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__AuthoriseAccountCashOut ** p = (_interswitch__AuthoriseAccountCashOut **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut, sizeof(_interswitch__AuthoriseAccountCashOut), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthoriseAccountCashOut(struct soap *soap, _interswitch__AuthoriseAccountCashOut *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseAccountCashOut); + if (soap_out_PointerTo_interswitch__AuthoriseAccountCashOut(soap, tag?tag:"interswitch:AuthoriseAccountCashOut", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__AuthoriseAccountCashOut ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthoriseAccountCashOut(struct soap *soap, _interswitch__AuthoriseAccountCashOut **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__AuthoriseAccountCashOut(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthoriseCashOutResponse(struct soap *soap, _interswitch__AuthoriseCashOutResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthoriseCashOutResponse(struct soap *soap, const char *tag, int id, _interswitch__AuthoriseCashOutResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__AuthoriseCashOutResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthoriseCashOutResponse(struct soap *soap, const char *tag, _interswitch__AuthoriseCashOutResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__AuthoriseCashOutResponse **)soap_malloc(soap, sizeof(_interswitch__AuthoriseCashOutResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__AuthoriseCashOutResponse *)soap_instantiate__interswitch__AuthoriseCashOutResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__AuthoriseCashOutResponse ** p = (_interswitch__AuthoriseCashOutResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse, sizeof(_interswitch__AuthoriseCashOutResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthoriseCashOutResponse(struct soap *soap, _interswitch__AuthoriseCashOutResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseCashOutResponse); + if (soap_out_PointerTo_interswitch__AuthoriseCashOutResponse(soap, tag?tag:"interswitch:AuthoriseCashOutResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__AuthoriseCashOutResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthoriseCashOutResponse(struct soap *soap, _interswitch__AuthoriseCashOutResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__AuthoriseCashOutResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthoriseCashOut(struct soap *soap, _interswitch__AuthoriseCashOut *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthoriseCashOut(struct soap *soap, const char *tag, int id, _interswitch__AuthoriseCashOut *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__AuthoriseCashOut ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthoriseCashOut(struct soap *soap, const char *tag, _interswitch__AuthoriseCashOut **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__AuthoriseCashOut **)soap_malloc(soap, sizeof(_interswitch__AuthoriseCashOut *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__AuthoriseCashOut *)soap_instantiate__interswitch__AuthoriseCashOut(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__AuthoriseCashOut ** p = (_interswitch__AuthoriseCashOut **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut, sizeof(_interswitch__AuthoriseCashOut), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthoriseCashOut(struct soap *soap, _interswitch__AuthoriseCashOut *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseCashOut); + if (soap_out_PointerTo_interswitch__AuthoriseCashOut(soap, tag?tag:"interswitch:AuthoriseCashOut", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__AuthoriseCashOut ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthoriseCashOut(struct soap *soap, _interswitch__AuthoriseCashOut **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__AuthoriseCashOut(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__QueryTransferResponse(struct soap *soap, _interswitch__QueryTransferResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__QueryTransferResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__QueryTransferResponse(struct soap *soap, const char *tag, int id, _interswitch__QueryTransferResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__QueryTransferResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__QueryTransferResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__QueryTransferResponse(struct soap *soap, const char *tag, _interswitch__QueryTransferResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__QueryTransferResponse **)soap_malloc(soap, sizeof(_interswitch__QueryTransferResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__QueryTransferResponse *)soap_instantiate__interswitch__QueryTransferResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__QueryTransferResponse ** p = (_interswitch__QueryTransferResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__QueryTransferResponse, sizeof(_interswitch__QueryTransferResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__QueryTransferResponse(struct soap *soap, _interswitch__QueryTransferResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransferResponse); + if (soap_out_PointerTo_interswitch__QueryTransferResponse(soap, tag?tag:"interswitch:QueryTransferResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__QueryTransferResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__QueryTransferResponse(struct soap *soap, _interswitch__QueryTransferResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__QueryTransferResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__QueryTransfer(struct soap *soap, _interswitch__QueryTransfer *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__QueryTransfer)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__QueryTransfer(struct soap *soap, const char *tag, int id, _interswitch__QueryTransfer *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__QueryTransfer); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__QueryTransfer ** SOAP_FMAC4 soap_in_PointerTo_interswitch__QueryTransfer(struct soap *soap, const char *tag, _interswitch__QueryTransfer **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__QueryTransfer **)soap_malloc(soap, sizeof(_interswitch__QueryTransfer *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__QueryTransfer *)soap_instantiate__interswitch__QueryTransfer(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__QueryTransfer ** p = (_interswitch__QueryTransfer **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__QueryTransfer, sizeof(_interswitch__QueryTransfer), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__QueryTransfer(struct soap *soap, _interswitch__QueryTransfer *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransfer); + if (soap_out_PointerTo_interswitch__QueryTransfer(soap, tag?tag:"interswitch:QueryTransfer", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__QueryTransfer ** SOAP_FMAC4 soap_get_PointerTo_interswitch__QueryTransfer(struct soap *soap, _interswitch__QueryTransfer **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__QueryTransfer(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__SendSessionKeyResponse(struct soap *soap, _interswitch__SendSessionKeyResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__SendSessionKeyResponse(struct soap *soap, const char *tag, int id, _interswitch__SendSessionKeyResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__SendSessionKeyResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__SendSessionKeyResponse(struct soap *soap, const char *tag, _interswitch__SendSessionKeyResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__SendSessionKeyResponse **)soap_malloc(soap, sizeof(_interswitch__SendSessionKeyResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__SendSessionKeyResponse *)soap_instantiate__interswitch__SendSessionKeyResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__SendSessionKeyResponse ** p = (_interswitch__SendSessionKeyResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse, sizeof(_interswitch__SendSessionKeyResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__SendSessionKeyResponse(struct soap *soap, _interswitch__SendSessionKeyResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__SendSessionKeyResponse); + if (soap_out_PointerTo_interswitch__SendSessionKeyResponse(soap, tag?tag:"interswitch:SendSessionKeyResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__SendSessionKeyResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__SendSessionKeyResponse(struct soap *soap, _interswitch__SendSessionKeyResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__SendSessionKeyResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__SendSessionKey(struct soap *soap, _interswitch__SendSessionKey *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__SendSessionKey)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__SendSessionKey(struct soap *soap, const char *tag, int id, _interswitch__SendSessionKey *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__SendSessionKey); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__SendSessionKey ** SOAP_FMAC4 soap_in_PointerTo_interswitch__SendSessionKey(struct soap *soap, const char *tag, _interswitch__SendSessionKey **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__SendSessionKey **)soap_malloc(soap, sizeof(_interswitch__SendSessionKey *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__SendSessionKey *)soap_instantiate__interswitch__SendSessionKey(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__SendSessionKey ** p = (_interswitch__SendSessionKey **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__SendSessionKey, sizeof(_interswitch__SendSessionKey), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__SendSessionKey(struct soap *soap, _interswitch__SendSessionKey *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__SendSessionKey); + if (soap_out_PointerTo_interswitch__SendSessionKey(soap, tag?tag:"interswitch:SendSessionKey", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__SendSessionKey ** SOAP_FMAC4 soap_get_PointerTo_interswitch__SendSessionKey(struct soap *soap, _interswitch__SendSessionKey **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__SendSessionKey(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__CancelTransferResponse(struct soap *soap, _interswitch__CancelTransferResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__CancelTransferResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__CancelTransferResponse(struct soap *soap, const char *tag, int id, _interswitch__CancelTransferResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__CancelTransferResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__CancelTransferResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__CancelTransferResponse(struct soap *soap, const char *tag, _interswitch__CancelTransferResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__CancelTransferResponse **)soap_malloc(soap, sizeof(_interswitch__CancelTransferResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__CancelTransferResponse *)soap_instantiate__interswitch__CancelTransferResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__CancelTransferResponse ** p = (_interswitch__CancelTransferResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__CancelTransferResponse, sizeof(_interswitch__CancelTransferResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__CancelTransferResponse(struct soap *soap, _interswitch__CancelTransferResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__CancelTransferResponse); + if (soap_out_PointerTo_interswitch__CancelTransferResponse(soap, tag?tag:"interswitch:CancelTransferResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__CancelTransferResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__CancelTransferResponse(struct soap *soap, _interswitch__CancelTransferResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__CancelTransferResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__CancelTransfer(struct soap *soap, _interswitch__CancelTransfer *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__CancelTransfer)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__CancelTransfer(struct soap *soap, const char *tag, int id, _interswitch__CancelTransfer *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__CancelTransfer); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__CancelTransfer ** SOAP_FMAC4 soap_in_PointerTo_interswitch__CancelTransfer(struct soap *soap, const char *tag, _interswitch__CancelTransfer **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__CancelTransfer **)soap_malloc(soap, sizeof(_interswitch__CancelTransfer *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__CancelTransfer *)soap_instantiate__interswitch__CancelTransfer(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__CancelTransfer ** p = (_interswitch__CancelTransfer **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__CancelTransfer, sizeof(_interswitch__CancelTransfer), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__CancelTransfer(struct soap *soap, _interswitch__CancelTransfer *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__CancelTransfer); + if (soap_out_PointerTo_interswitch__CancelTransfer(soap, tag?tag:"interswitch:CancelTransfer", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__CancelTransfer ** SOAP_FMAC4 soap_get_PointerTo_interswitch__CancelTransfer(struct soap *soap, _interswitch__CancelTransfer **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__CancelTransfer(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__DoTransferResponse(struct soap *soap, _interswitch__DoTransferResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__DoTransferResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__DoTransferResponse(struct soap *soap, const char *tag, int id, _interswitch__DoTransferResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__DoTransferResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__DoTransferResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__DoTransferResponse(struct soap *soap, const char *tag, _interswitch__DoTransferResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__DoTransferResponse **)soap_malloc(soap, sizeof(_interswitch__DoTransferResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__DoTransferResponse *)soap_instantiate__interswitch__DoTransferResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__DoTransferResponse ** p = (_interswitch__DoTransferResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__DoTransferResponse, sizeof(_interswitch__DoTransferResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__DoTransferResponse(struct soap *soap, _interswitch__DoTransferResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__DoTransferResponse); + if (soap_out_PointerTo_interswitch__DoTransferResponse(soap, tag?tag:"interswitch:DoTransferResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__DoTransferResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__DoTransferResponse(struct soap *soap, _interswitch__DoTransferResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__DoTransferResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__DoTransfer(struct soap *soap, _interswitch__DoTransfer *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__DoTransfer)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__DoTransfer(struct soap *soap, const char *tag, int id, _interswitch__DoTransfer *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__DoTransfer); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__DoTransfer ** SOAP_FMAC4 soap_in_PointerTo_interswitch__DoTransfer(struct soap *soap, const char *tag, _interswitch__DoTransfer **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__DoTransfer **)soap_malloc(soap, sizeof(_interswitch__DoTransfer *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__DoTransfer *)soap_instantiate__interswitch__DoTransfer(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__DoTransfer ** p = (_interswitch__DoTransfer **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__DoTransfer, sizeof(_interswitch__DoTransfer), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__DoTransfer(struct soap *soap, _interswitch__DoTransfer *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__DoTransfer); + if (soap_out_PointerTo_interswitch__DoTransfer(soap, tag?tag:"interswitch:DoTransfer", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__DoTransfer ** SOAP_FMAC4 soap_get_PointerTo_interswitch__DoTransfer(struct soap *soap, _interswitch__DoTransfer **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__DoTransfer(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ValidateCustomerResponse(struct soap *soap, _interswitch__ValidateCustomerResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ValidateCustomerResponse(struct soap *soap, const char *tag, int id, _interswitch__ValidateCustomerResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__ValidateCustomerResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ValidateCustomerResponse(struct soap *soap, const char *tag, _interswitch__ValidateCustomerResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__ValidateCustomerResponse **)soap_malloc(soap, sizeof(_interswitch__ValidateCustomerResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__ValidateCustomerResponse *)soap_instantiate__interswitch__ValidateCustomerResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__ValidateCustomerResponse ** p = (_interswitch__ValidateCustomerResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse, sizeof(_interswitch__ValidateCustomerResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ValidateCustomerResponse(struct soap *soap, _interswitch__ValidateCustomerResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__ValidateCustomerResponse); + if (soap_out_PointerTo_interswitch__ValidateCustomerResponse(soap, tag?tag:"interswitch:ValidateCustomerResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__ValidateCustomerResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ValidateCustomerResponse(struct soap *soap, _interswitch__ValidateCustomerResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__ValidateCustomerResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ValidateCustomer(struct soap *soap, _interswitch__ValidateCustomer *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__ValidateCustomer)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ValidateCustomer(struct soap *soap, const char *tag, int id, _interswitch__ValidateCustomer *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__ValidateCustomer); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__ValidateCustomer ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ValidateCustomer(struct soap *soap, const char *tag, _interswitch__ValidateCustomer **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__ValidateCustomer **)soap_malloc(soap, sizeof(_interswitch__ValidateCustomer *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__ValidateCustomer *)soap_instantiate__interswitch__ValidateCustomer(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__ValidateCustomer ** p = (_interswitch__ValidateCustomer **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__ValidateCustomer, sizeof(_interswitch__ValidateCustomer), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ValidateCustomer(struct soap *soap, _interswitch__ValidateCustomer *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__ValidateCustomer); + if (soap_out_PointerTo_interswitch__ValidateCustomer(soap, tag?tag:"interswitch:ValidateCustomer", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__ValidateCustomer ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ValidateCustomer(struct soap *soap, _interswitch__ValidateCustomer **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__ValidateCustomer(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTostd__string(struct soap *soap, std::string *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch_std__string)) + soap_serialize_std__string(soap, *a); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTostd__string(struct soap *soap, const char *tag, int id, std::string *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch_std__string); + if (id < 0) + return soap->error; + return soap_out_std__string(soap, tag, id, *a, type); +} + +SOAP_FMAC3 std::string ** SOAP_FMAC4 soap_in_PointerTostd__string(struct soap *soap, const char *tag, std::string **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (std::string **)soap_malloc(soap, sizeof(std::string *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = soap_in_std__string(soap, tag, *a, type))) + return NULL; + } + else + { a = (std::string **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch_std__string, sizeof(std::string), 0); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTostd__string(struct soap *soap, std::string *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTostd__string); + if (soap_out_PointerTostd__string(soap, tag?tag:"string", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 std::string ** SOAP_FMAC4 soap_get_PointerTostd__string(struct soap *soap, std::string **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTostd__string(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTounsignedByte(struct soap *soap, unsigned char *const*a) +{ + soap_reference(soap, *a, SOAP_TYPE_interswitch_unsignedByte); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTounsignedByte(struct soap *soap, const char *tag, int id, unsigned char *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch_unsignedByte); + if (id < 0) + return soap->error; + return soap_out_unsignedByte(soap, tag, id, *a, type); +} + +SOAP_FMAC3 unsigned char ** SOAP_FMAC4 soap_in_PointerTounsignedByte(struct soap *soap, const char *tag, unsigned char **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (unsigned char **)soap_malloc(soap, sizeof(unsigned char *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = soap_in_unsignedByte(soap, tag, *a, type))) + return NULL; + } + else + { a = (unsigned char **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch_unsignedByte, sizeof(unsigned char), 0); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTounsignedByte(struct soap *soap, unsigned char *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTounsignedByte); + if (soap_out_PointerTounsignedByte(soap, tag?tag:"unsignedByte", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 unsigned char ** SOAP_FMAC4 soap_get_PointerTounsignedByte(struct soap *soap, unsigned char **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTounsignedByte(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__QName(struct soap *soap, const char *tag, int id, char *const*a, const char *type) +{ + return soap_outstring(soap, tag, id, a, type, SOAP_TYPE_interswitch__QName); +} + +SOAP_FMAC3 char * * SOAP_FMAC4 soap_in__QName(struct soap *soap, const char *tag, char **a, const char *type) +{ char **p; + p = soap_instring(soap, tag, a, type, SOAP_TYPE_interswitch__QName, 2, -1, -1); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put__QName(struct soap *soap, char *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch__QName); + if (soap_out__QName(soap, tag?tag:"byte", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 char ** SOAP_FMAC4 soap_get__QName(struct soap *soap, char **p, const char *tag, const char *type) +{ + if ((p = soap_in__QName(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_string(struct soap *soap, char **a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_string + *a = SOAP_DEFAULT_string; +#else + *a = (char *)0; +#endif +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_string(struct soap *soap, char *const*a) +{ + soap_reference(soap, *a, SOAP_TYPE_interswitch_string); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_string(struct soap *soap, const char *tag, int id, char *const*a, const char *type) +{ + return soap_outstring(soap, tag, id, a, type, SOAP_TYPE_interswitch_string); +} + +SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_string(struct soap *soap, const char *tag, char **a, const char *type) +{ char **p; + p = soap_instring(soap, tag, a, type, SOAP_TYPE_interswitch_string, 1, -1, -1); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_string(struct soap *soap, char *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_string); + if (soap_out_string(soap, tag?tag:"byte", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_string(struct soap *soap, char **p, const char *tag, const char *type) +{ + if ((p = soap_in_string(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +} // namespace interswitch + + +#if defined(__BORLANDC__) +#pragma option pop +#pragma option pop +#endif + +/* End of interswitchC.cpp */ diff --git a/coregrade/src/shared_tool/interswitch_sendmoney.cc b/coregrade/src/shared_tool/interswitch_sendmoney.cc new file mode 100644 index 0000000..658229b --- /dev/null +++ b/coregrade/src/shared_tool/interswitch_sendmoney.cc @@ -0,0 +1,593 @@ +#include +#include + +#include "interswitch.h" +#include "interswitch_sendmoney.h" + +#include "cfg.h" +#include "clog.h" +#include "exceptions.h" +#include "input.h" +#include "coregrade_api.h" +#include "pgsql.h" +#include "pgsql_wrapper.h" +#include "safestring.h" + +#include +#include + +using namespace std; +using namespace __gnu_cxx; + +//*****************************************************************************/ +long INTW_configure(CVars in, CVars &out) +{ + logfmt( logINFO, "long INTW_configure(CVars in, CVars &out)"); + long ret = PHP_API_BAD_PARAM; + try { + // Configure Interswitch SSL + interswitch_config_ssl( + CfgReadChar("interswitch.keyfile"), + CfgReadChar("interswitch.password"), + CfgReadChar("interswitch.cacert"), + CfgReadLong("interswitch.version")); + + out["interswitch_ver"] = CfgReadLong("interswitch.version"); + out["interswitch_sep"] = CfgReadChar("interswitch.soap_endpoint"); + out["interswitch_tid"] = CfgReadChar("interswitch.terminal_id"); + out["interswitch_code"] = CfgReadChar("interswitch.entity_code"); + out["interswitch_mkey"] = CfgReadChar("interswitch.master_key"); + out["interswitch_pin"] = CfgReadChar("interswitch.pin"); + out["interswitch_pfix"] = CfgReadChar("interswitch.prefix"); + out["interswitch_keyf"] = CfgReadChar("interswitch.keyfile"); + out["interswitch_pass"] = CfgReadChar("interswitch.password"); + out["interswitch_cert"] = CfgReadChar("interswitch.cacert"); + + ret = PHP_API_OK; + + } catch (bad_parameter) { + + out["status"] = "Bad parameter"; + + } catch ( ... ) { + + out["status"] = "Unhandled exception in INTW_configure"; + + } + logfmt( logINFO, "/long INTW_configure(CVars in, CVars &out)"); + return ret; +} + +//*****************************************************************************/ +long INTW_getBillersSave(hash_map, eqstr> saveData) { //long id, char *name, long currencyCode, char *quickTellerSiteUrlName, char *supportEmail) { + logfmt( logINFO, "long INTW_getBillersSave(...)"); + long gid = -1L, id = 0L; + CVars x; + hash_map, eqstr>::iterator pointer; + for (pointer = saveData.begin();pointer!=saveData.end();++pointer) { + x[pointer->first] = pointer->second; x[pointer->first].set_valid(true); + if (strcmp("Id",pointer->first)==0) { + id = atol(pointer->second); + // Check if the record already exists + const PGresult* res = pgsql_query("SELECT * FROM interswitch_billers WHERE id = %lu", id ); + if (id<1L || (res && pgsql_num_rows(res)>0)) { + // Incorrect id or alredy exists + logfmt(FLOG_MAX, "Incorrect id or alredy exists: %ld", id); + return -1L; + } + } + } + gid = insert_db_record( DBS_VALID, "interswitch_billers", "interswitch_billers_gid_seq", x ); + pgsql_exec( "UPDATE global_settings SET value=now() WHERE name='LAST_INTSW_GETBILLER_RUN'"); + logfmt( logINFO, "/long INTW_getBillersSave(...)"); + + return gid; +} + +//*****************************************************************************/ +long INTW_getBillers(CVars in, CVars &out) +{ + logfmt( logINFO, "long INTW_getBillers(CVars in, CVars &out)"); + long ret = PHP_API_BAD_PARAM; + try { + + // Initiate interswitch session + CVars setup; + INTW_configure(in, setup); + + // Prepare call + const int statusSize = 1024; + char status[statusSize]; + + int billerId = 0; + int categoryId = 0; + int channelId = 0; + + char xtid[12]; + int channel_code = 3; + + sprintf( xtid, "%s", setup["interswitch_tid"].c_str() ); + + ret = interswitch_getBillers( + setup["interswitch_sep"].c_str(), + xtid, + billerId, + categoryId, + channelId, + "", + status, + &INTW_getBillersSave); + + } catch ( ... ) { + + out["status"] = "Unhandled exception in INTW_getBillers"; + } + logfmt( logINFO, "/long INTW_getBillers(CVars in, CVars &out)"); + return ret; +} +/* +<------>long INTW_getSaveGeneric(const char *table, hash_map, eqstr> saveData); +<------>long INTW_getBillerPaymentItems(CVars in, CVars &out); +*/ +//*****************************************************************************/ +long INTW_getSaveGeneric(const char *table, hash_map, eqstr> saveData) { //long id, char *name, long currencyCode, char *quickTellerSiteUrlName, char *supportEmail) { + logfmt( logINFO, "long INTW_getSaveGeneric(...)"); + long gid = -1L, id = 0L; + CVars x; + hash_map, eqstr>::iterator pointer; + for (pointer = saveData.begin();pointer!=saveData.end();++pointer) { + x[pointer->first] = pointer->second; x[pointer->first].set_valid(true); + } + const int n = strlen(table) + 20; + char table_seq[n]; + snprintf(table_seq, n, "%s_gid_seq", table); + gid = insert_db_record( DBS_VALID, table, table_seq, x ); + logfmt( logINFO, "/long INTW_getSaveGeneric(...)"); + + return gid; +} + +//*****************************************************************************/ +long INTW_getBillerPaymentItems(CVars in, CVars &out) +{ + logfmt( logINFO, "long INTW_getBillerPaymentItems(CVars in, CVars &out)"); + long ret = PHP_API_BAD_PARAM; + try { + + // Initiate interswitch session + CVars setup; + INTW_configure(in, setup); + + // Prepare call + const int statusSize = 1024; + char status[statusSize]; + + int billerId = REQ_LONG( in, "id", 1, -1 );; + + char xtid[12]; + + sprintf( xtid, "%s", setup["interswitch_tid"].c_str() ); + + ret = interswitch_getBillerPaymentItems( + setup["interswitch_sep"].c_str(), + xtid, + billerId, + status, + &INTW_getSaveGeneric); + + } catch (bad_parameter) { + out["status"] = "Incorrect Biller ID"; + } catch ( ... ) { + + out["status"] = "Unhandled exception in INTW_getBillerPaymentItems"; + } + logfmt( logINFO, "/long INTW_getBillerPaymentItems(CVars in, CVars &out)"); + return ret; +} + +//*****************************************************************************/ +long INTW_sendBillPaymentAdvice(CVars in, CVars &out ) +{ + logfmt( logINFO, "long INTW_sendBillPaymentAdvice(CVars in, CVars &out)"); + long ret = PHP_API_BAD_PARAM; + try { + int customerId = REQ_LONG( in, "customerid", 1, -1 ); + int paymentItemId = REQ_LONG( in, "paymentitemid", 1, -1 ); + int amount = REQ_LONG( in, "amount", 0, -1 ); + + REQ_STRING( in, "customermobile", 5, 15, "(.*)"); + OPTIONAL (in, "customeremail") REQ_STRING( in, "customeremail", 1, 100, "(.*)"); + OPTIONAL (in, "order_id") REQ_STRING( in, "order_id", 1, 25, "(.*)"); + char CustomerMobile[15]; + char CustomerEmail[100]; + + + + + + sprintf( CustomerEmail, "%s", in["customeremail"].c_str() ); + sprintf( CustomerMobile, "%s", in["customermobile"].c_str() ); + + + //topalert = "sales@payquic.com"; + out["topalert"] = CfgReadChar("transnotif.topalert"); + sprintf( CustomerEmail, "%s", out["topalert"].c_str() ); + + + CVars customer; // Load customer + ret = load_db_record( customer, "SELECT email,firstname,lastname FROM customer WHERE status=1 AND id = %lu", customerId ); + if (ret<1L) { + throw new bad_parameter(out, "customerid"); + } + + CVars paymentitem; // Load payment item + ret = load_db_record( paymentitem, "SELECT id,billerid,billername,name,amount,paymentcode FROM interswitch_biller_payment_items WHERE gid = %lu", paymentItemId); + if (ret<1L) { + out["advice"] = "PaymentID not found or not valid !!!"; + throw new bad_parameter(out, "paymentitemid"); + } + + // Check amount + if (amount<1L) { + amount = paymentitem["amount"].Long(); + } + +/**/ + + + + + // Create record + CVars advice; + + advice["customerid"] = customerId; advice["customerid"].set_valid(true); + advice["billerid"] = paymentitem["billerid"]; advice["billerid"].set_valid(true); + advice["billerpaymentitemgid"] = paymentItemId; advice["billerpaymentitemgid"].set_valid(true); + advice["amount"] = amount; advice["amount"].set_valid(true); + advice["paymentcode"] = paymentitem["paymentcode"]; advice["paymentcode"].set_valid(true); + advice["order_id"] = in["order_id"]; advice["order_id"].set_valid(true); + advice["customeremail"] = in["customeremail"]; advice["customeremail"].set_valid(true); + advice["customermobile"] = in["customermobile"]; advice["customermobile"].set_valid(true); + + out["bill_payment_advice_id"] = insert_db_record( DBS_VALID, "interswitch_bill_payment_advice", "interswitch_bill_payment_advice_id_seq", advice ); + if (out["bill_payment_advice_id"].Long()<1L) { + throw new runtime_error("Failed to create interswitch bill payment advice record"); + } + + // Initiate interswitch session + CVars setup; + INTW_configure(in, setup); + + + + CVars transaction; + + + + transaction["detail_id"] = out["bill_payment_advice_id"]; transaction["detail_id"].set_valid(true); + transaction["type"] = 1L; /* SendBillPaymentAdvice */ transaction["type"].set_valid(true); + out["transaction_id"] = insert_db_record( DBS_VALID, "interswitch_transaction", "interswitch_transaction_id_seq", transaction ); + if (out["transaction_id"].Long()<1L) { + throw new runtime_error("Failed to create interswitch transaction record"); + } + + + char uniqueRef[20]; + memset(uniqueRef, 0, 20); + // TransferCode - RequestReference - UniqueRef => request prefix for terminal owner + ID + sprintf( uniqueRef, "%s%s000000", setup["interswitch_pfix"].c_str(), out["transaction_id"].c_str() ); + //sprintf( uniqueRef, "%s%09s", setup["interswitch_pfix"].c_str(), out["transaction_id"].c_str() ); + transaction["transfer_code"] = uniqueRef; transaction["transfer_code"].set_valid(true); + + CVars cxc; + cxc["transfer_code"] = transaction["transfer_code"]; + cxc["transfer_code"].set_valid(true); + update_db_record( DBS_VALID, "interswitch_transaction", cxc, out["transaction_id"].Long()); + logfmt( logINFO, "Here -> 1"); + logfmt( logINFO, "SENDING TRANSACTION - setup[interswitch_tid].c_str() ->%s",setup["interswitch_tid"].c_str()); + // Prepare call + const int statusSize = 1024; + char status[statusSize]; + char transactionRef[statusSize]; + memset(status, 0, statusSize); // Clear? + memset(transactionRef, 0, statusSize); // Clear? + + char xtid[12]; + + sprintf( xtid, "%s", setup["interswitch_tid"].c_str() ); + + logfmt( logINFO, "SENDING TRANSACTION->%s",xtid); + + + string result = interswitch_SendBillPaymentAdvice( + setup["interswitch_sep"].c_str(), + xtid, + amount, + paymentitem["paymentcode"].c_str(), + customerId, + uniqueRef, + status, + transactionRef, + CustomerMobile, + CustomerEmail); + + + CVars advicestatus; + + out["status"] = status; + out["ResponseCode"] = result; + out["TransactionRef"] = transactionRef; + // Update status + + try + { + transaction["responsecode"] = result; transaction["responsecode"].set_valid(true); + transaction["transactionref"] = transactionRef; transaction["transactionref"].set_valid(true); + update_db_record( DBS_VALID, "interswitch_transaction", transaction, out["transaction_id"].Long()); + } + catch ( ... ) { out["status"] = "I see no good response from interswitch"; } + + + // Success? + if (result=="90000") { + + advicestatus["status"] = "5"; advicestatus["status"].set_valid(true); + update_db_record( DBS_VALID, "interswitch_bill_payment_advice", advicestatus, out["bill_payment_advice_id"].Long()); + + logfmt( logINFO, "Send bill payment advice successful"); + + ret = PHP_API_OK; + } else { + CVars fr1; + fr1["status"] = "7"; fr1["status"].set_valid( true ); + + advicestatus["status"] = "7"; advicestatus["status"].set_valid(true); + update_db_record( DBS_VALID, "interswitch_bill_payment_advice", fr1, out["bill_payment_advice_id"].Long()); + //ret = -1; + throw new runtime_error("Failed to send bill payment advice"); + } + + } catch (runtime_error& ex) { + out["status"] = ex.what(); + ret = PHP_API_BAD_PARAM; + } catch (bad_parameter) { + out["status"] = "Incorrect parameter"; + ret = PHP_API_BAD_PARAM; + } catch ( ... ) { + out["status"] = "Unhandled exception in INTW_sendBillPaymentAdvice"; + } + logfmt( logINFO, "/long INTW_sendBillPaymentAdvice(CVars in, CVars &out)"); + return ret; +} +//*****************************************************************************/ +long INTW_getBillerCategories(CVars in, CVars &out) +{ + logfmt( logINFO, "long INTW_getBillerCategories(CVars in, CVars &out)"); + long ret = PHP_API_BAD_PARAM; + try { + + // Initiate interswitch session + CVars setup; + INTW_configure(in, setup); + + // Prepare call + const int statusSize = 1024; + char status[statusSize]; + + ret = interswitch_getBillerCategories( + setup["interswitch_sep"].c_str(), + status, + NULL); + + } catch ( ... ) { + + out["status"] = "Unhandled exception in INTW_getBillerCategories"; + } + logfmt( logINFO, "/long INTW_getBillerCategories(CVars in, CVars &out)"); + return ret; +} + +//*****************************************************************************/ +long INTW_doTransfer(CVars in, CVars &out ) +{ + logfmt( logINFO, "long INTW_doTransfer(CVars in, CVars &out)"); + long ret = PHP_API_BAD_PARAM; + try { + + // Initiate interswitch session + CVars setup; + INTW_configure(in, setup); + + + in["action"].set_valid(false); + REQ_STRING( in, "InitiatingEntityCode", 3, 3, "(.*)" ); + REQ_LONG( in, "InitiatingAmount", 1, -1 ); + REQ_LONG( in, "Fee", 1, -1 ); + REQ_LONG( in, "InitiatingChannel", 1, -1 ); + REQ_STRING( in, "InitiatingPaymentMethodCode", 2, 2, "(.*)" ); + REQ_STRING( in, "InitiatingCurrencyCode", 3, 3, "(.*)" ); + REQ_STRING( in, "TerminatingPaymentMethodCode", 2, 2, "(.*)" ); + REQ_LONG( in, "TerminatingAmount", 1, -1 ); + REQ_STRING( in, "TerminatingCurrencyCode", 3, 3, "(.*)" ); + REQ_STRING( in, "TerminatingCountryCode", 2, 2, "(.*)" ); + + //REQ_STRING( in, "TerminatingEntityCode", 1, 5, "(.*)" ); + //REQ_STRING( in, "TerminatingAccountNumber", 1, 50, "(.*)" ); + //REQ_STRING( in, "TerminatingAccountType", 2, 2, "(.*)" ); + + long senderid = REQ_LONG( in, "senderid", 1, -1 ); + long recipientid = REQ_LONG( in, "recipientid", 1, -1 ); + in["InitiatingEntityCode"]="MBA"; + + CVars recipient; // Load recipient + //ret = load_db_record( recipient, "SELECT firstname,lastname FROM customer WHERE id = %lu AND status = 1", recipientid); + ret = load_db_record( recipient, "SELECT firstname,lastname,account_no,bank_code,account_type FROM sendmoney_recipient WHERE id = %lu ", recipientid); + if (ret<1L) { + throw new bad_parameter(out, "recipientid"); + } + in["TerminatingEntityCode"] = recipient["bank_code"]; in["TerminatingEntityCode"].set_valid( true ); + in["TerminatingAccountNumber"] = recipient["account_no"]; in["TerminatingAccountNumber"].set_valid( true ); + + out["money_transfer_id"] = insert_db_record( DBS_VALID, "interswitch_money_transfer", "interswitch_money_transfer_id_seq", in ); + if (out["money_transfer_id"].Long()<1L) { + throw new runtime_error("Failed to create interswitch bill money transfer record"); + } + + CVars transaction; + transaction["detail_id"] = out["money_transfer_id"]; transaction["detail_id"].set_valid(true); + transaction["type"] = 2L; /* DoTransfer */ transaction["type"].set_valid(true); + out["transaction_id"] = insert_db_record( DBS_VALID, "interswitch_transaction", "interswitch_transaction_id_seq", transaction ); + if (out["transaction_id"].Long()<1L) { + throw new runtime_error("Failed to create interswitch transaction record"); + } + + char xtid[12], uniqueRef[20]; + memset(uniqueRef, 0, 20); + // TransferCode - RequestReference - UniqueRef => request prefix for terminal owner + ID + sprintf( uniqueRef, "%s%s000000", setup["interswitch_pfix"].c_str(), out["transaction_id"].c_str() ); + transaction["transfer_code"] = uniqueRef; transaction["transfer_code"].set_valid(true); + + //sprintf( xtid, "%s", setup["interswitch_tid"].c_str() ); + sprintf( xtid, "%s", "MBA" ); + + CVars sender; // Load sender + ret = load_db_record( sender, "SELECT firstname,lastname FROM customer WHERE id = %lu AND status = 1", senderid); + if (ret<1L) { + throw new bad_parameter(out, "senderid"); + } + //in["SenderEmail"] = sender["email"]; in["SenderEmail"].set_valid(true); + + + //in["BeneficiaryEmail"] = recipient["email"]; in["BeneficiaryEmail"].set_valid(true); + + CVars trans_info; + + trans_info["Fee"] = in["Fee"]; + trans_info["InitiatingAmount"] = in["InitiatingAmount"]; + trans_info["InitiatingChannel"] = in["InitiatingChannel"]; + trans_info["InitiatingCurrencyCode"] = in["InitiatingCurrencyCode"]; + trans_info["InitiatingEntityCode"] = in["InitiatingEntityCode"]; + trans_info["InitiatingPaymentMethodCode"] = in["InitiatingPaymentMethodCode"]; + trans_info["TerminatingAccountNumber"] = recipient["account_no"]; //in["TerminatingAccountNumber"]; + trans_info["TerminatingAccountType"] = recipient["account_type"]; // in["TerminatingAccountType"]; + trans_info["TerminatingAmount"] = in["TerminatingAmount"]; + trans_info["TerminatingCountryCode"] = in["TerminatingCountryCode"]; + trans_info["TerminatingCurrencyCode"] = in["TerminatingCurrencyCode"]; + trans_info["TerminatingEntityCode"] = recipient["bank_code"]; //in["TerminatingEntityCode"]; + trans_info["TerminatingPaymentMethodCode"] = in["TerminatingPaymentMethodCode"]; + trans_info["TransferCode"] = uniqueRef; + trans_info["SenderLastname"] = sender["lastname"]; + trans_info["SenderOthernames"] = sender["firstname"]; + trans_info["BeneficiaryLastname"] = recipient["lastname"]; + trans_info["BeneficiaryOthernames"] = recipient["firstname"]; + + char status[SAFESTRING_COMMON_BUFFER_SIZE]; + memset(status,32,SAFESTRING_COMMON_BUFFER_SIZE); + status[SAFESTRING_COMMON_BUFFER_SIZE] = '\0'; + + char transCode[SAFESTRING_COMMON_BUFFER_SIZE]; + memset(transCode, 0, SAFESTRING_COMMON_BUFFER_SIZE); + sprintf(transCode,""); // ??? + + string result = interswitch_doTransfer( + setup["interswitch_sep"].c_str(), + xtid, + trans_info, + status); + + logfmt(FLOG_MAX, "Return: %s", result.c_str()); + logfmt(FLOG_MAX, "Status: %s", status); + + out["ResponseCode"] = result; + out["status"] = status; + out["TransferCode"] = in["TransferCode"]; + if (result=="90000") { + ret = PHP_API_OK; + out["TransactionReferenceCode"] = status; + out["status"] = "Transfer successful"; + } else { + ret = PHP_API_BAD_PARAM; + out["TransactionReferenceCode"] = ""; + } + + transaction["responsecode"] = out["ResponseCode"]; transaction["responsecode"].set_valid(true); + transaction["transactionref"] = out["TransactionReferenceCode"]; transaction["transactionref"].set_valid(true); + + update_db_record( DBS_VALID, "interswitch_transaction", transaction, out["transaction_id"].Long()); + + } catch (runtime_error& ex) { + + out["status"] = ex.what(); + ret = PHP_API_BAD_PARAM; + + } catch (bad_parameter) { + + out["status"] = "Invalid input"; + ret = PHP_API_BAD_PARAM; + + } catch ( ... ) { + + out["status"] = "Unhandled exception in INTW_doTransfer"; + ret = PHP_API_BAD_PARAM; + + } + logfmt( logINFO, "/long INTW_doTransfer(CVars in, CVars &out)"); + return ret; +} + +//*****************************************************************************/ +long INTW_queryTransaction(CVars in, CVars &out ) +{ + logfmt( logINFO, "long INTW_queryTransaction(CVars in, CVars &out)"); + long ret = PHP_API_BAD_PARAM; + try { + + // Initiate interswitch session + CVars setup; + INTW_configure(in, setup); + + // Prepare call + const int statusSize = SAFESTRING_COMMON_BUFFER_SIZE; + char status[statusSize]; + char transactionResponseCode[SAFESTRING_COMMON_BUFFER_SIZE]; + + long id = REQ_LONG( in, "id", 1, -1 ); + + char xtid[12]; + + sprintf( xtid, "%s", setup["interswitch_tid"].c_str() ); + + CVars advice; // Load advice + ret = load_db_record( advice, "SELECT transfer_code,transactionref FROM interswitch_transaction WHERE id = %lu", id); + if (ret<1L) { + throw new bad_parameter(out, "id"); + } + + string result = interswitch_queryTransaction( + setup["interswitch_sep"].c_str(), + xtid, + advice["transfer_code"].c_str(), + advice["transactionref"].c_str(), + status, + transactionResponseCode); + out["ResponseCode"] = result; + out["TransactionResponseCode"] = transactionResponseCode; + out["status"] = status; + ret = PHP_API_OK; + + advice["responsecode"] = transactionResponseCode; advice["responsecode"].set_valid(true); + update_db_record( DBS_VALID, "interswitch_transaction", advice, id); + + } catch (bad_parameter) { + + out["status"] = "Invalid ID"; + + } catch ( ... ) { + + out["status"] = "Unhandled exception in INTW_queryTransaction"; + } + logfmt( logINFO, "/long INTW_queryTransaction(CVars in, CVars &out)"); + return ret; +} + +//*****************************************************************************/ diff --git a/coregrade/src/shared_tool/namespaces.cc b/coregrade/src/shared_tool/namespaces.cc new file mode 100644 index 0000000..74cc239 --- /dev/null +++ b/coregrade/src/shared_tool/namespaces.cc @@ -0,0 +1,4 @@ +#include +extern "C" { +SOAP_NMAC struct Namespace namespaces[] = { { NULL, NULL} }; +} diff --git a/coregrade/src/shared_tool/paylid.cc b/coregrade/src/shared_tool/paylid.cc new file mode 100644 index 0000000..e433eac --- /dev/null +++ b/coregrade/src/shared_tool/paylid.cc @@ -0,0 +1,550 @@ +#include +#include +#include + +#include "XmlParser.h" +#include "hmac_sha2.h" +#include "paylidpaylidwsdlBindingProxy.h" // get proxy +#include "paylid.nsmap" // obtain the generated XML namespace mapping table for the InterSwitch service + +#define BUFSIZE 1024 + +using namespace std; +using namespace paylid; + +#ifdef TEST +enum { FLOG_NONE,FLOG_FATAL,FLOG_CRITICAL,FLOG_WARN,FLOG_COMMAND,FLOG_MAX }; +#define logfmt test_log +#define PREFIX "FAKE:" +class FakeLog { + public: + void SetFileName(const char *str) { + cout << str << endl; + } +}; +static FakeLog *plog = new FakeLog(); +#else +//#include "general_types.h" +#include "clog.h" +#warning "Including log..." +#endif + +void test_log( int level, const char * format, ... ) { + + va_list ap; + va_start( ap, format ); + + vfprintf( stdout, format, ap ); + fprintf( stdout, "\n" ); + + fflush( stdout ); + + va_end( ap ); +} + +// Helper to convert hex digit to integer +char dtox(int d) { + if (d>=0 && d<=9) return '0'+d; + if (d>=10 && d<=16) return 'a'-10+d; + return '0'; // not Hex digit +} +// Helper to convert hex digit to integer +int xtod(char c) { + if (c>='0' && c<='9') return c-'0'; + if (c>='A' && c<='F') return c-'A'+10; + if (c>='a' && c<='f') return c-'a'+10; + return c=0; // not Hex digit +} +// This is a hashing function +void hash_hmac(const char *key, char *data, char *result) { + unsigned char mac[SHA512_DIGEST_SIZE]; + hmac_sha512((unsigned char *)key, strlen(key), (unsigned char *)data, strlen(data), mac, SHA512_DIGEST_SIZE); + for (int i=0; i111111111111111B7AFD916C387DCF87DB91C9EAA9828DA + using namespace SimpleXMLParser; + + string xml(xmlstring); + string lto = "<"; + string gto = ">"; + string ltr = "<"; + string gtr = ">"; + xml = replaceAll(xml,lto, ltr); + xml = replaceAll(xml,gto, gtr); + xml = "" + xml + ""; + +#ifdef TEST + cout << "RSL: " << rslCode << endl; + cout << "RAW: " << xmlstring << endl; + cout << "XML: " << xml << endl; +#endif + + int rsl = atoi(rslCode); + + // logfmt( FLOG_MAX, "Response: %s", paylid__directAirTimeTopUpResponse_.Data.c_str() ); + logfmt( FLOG_MAX, "Response: rsl %d", rsl ); + + if (rsl!=10000) { + switch (rsl) { + case 20000: strcpy(response,"Invalid terminal ID");break; + case 30000: strcpy(response,"Hash HMAC validation failed");break; + case 40000: strcpy(response,"Service database error");break; + case 50000: strcpy(response,"IP access denied");break; + case 90000: strcpy(response,"Custom base error");break; + default: strcpy(response,"Unknown code"); break; + } + return rsl; + } + + XmlParser parser; + const Element& root = parser.Parse(xml.c_str(),strlen(xml.c_str())); + + if (root.GetName()!="PayLid") { +#ifdef TEST + cout << "Unknown XML response" << endl; +#endif + return -1; + } + int ret = rsl; // Empty result cryptogram error + const Elements* classes = root.GetChildren(); + if(classes != 0) { + for(Elements::const_iterator class_it = classes->begin();class_it != classes->end(); ++class_it) { + + + if ((*class_it)->GetName()==what) { + const string value = (*class_it)->GetValue(); + strcpy(response,value.c_str()); + // There is no cryptogram - override + if ((*class_it)->GetName()=="TransResponseCode") { + ret = atoi(value.c_str()); + } + + if ((*class_it)->GetName()=="delivery_status") { + ret = atoi(value.c_str()); + } + } else { +#ifdef TEST + cout << (*class_it)->GetName() << endl; +#endif + } + } + } + return ret; +} + +void GenerateUniqueRef(char *buffer,int bSize) { + buffer[0] = 'P'; + buffer[1] = 'L'; + buffer[2] = 'I'; + buffer[3] = 'D'; + int i = 4, n = bSize - 4; + time_t seconds; + seconds = time (NULL); + while (seconds>0 && n>0) { + int d = seconds % 10; + buffer[i++] = '0'+d; + seconds /= 10; + n--; + } + while (n>0) { + buffer[i++] = '\0'; + n--; + } +} + +long storeface_transferFund(const char *endpoint, const char *tid, const char *toDestination, const char *key, char *error) { + + //plog->SetFileName( PREFIX"/logs/SendMoneyPayLid.log" ); + + long result = -1; + string status = "Unknown error"; + soap_ssl_init(); /* init OpenSSL (just once) */ + paylidwsdlBindingProxy *q = new paylidwsdlBindingProxy(); + q->soap_endpoint = endpoint; + paylid__transferFundResponse paylid__transferFundResponse_; // = new paylid__transferFundResponse(); + + string terminalID(tid); + + logfmt( FLOG_MAX, "XML SENT-> %s", toDestination); + string toDestinationString(toDestination); + + string data = tid; + data += toDestination; + //logfmt( FLOG_MAX, "DATA-> %s", data.c_str()); + // Get hash HMAC + const int mac_512_size = 2*SHA512_DIGEST_SIZE+1; + char hmac[mac_512_size]; + memset(hmac,0,mac_512_size); + hash_hmac(key, (char *)data.c_str(), hmac); + logfmt( FLOG_MAX, "HMAC is '%s'", hmac); + + if (hmac!=NULL) { + string hmacString(hmac); + + if (soap_ssl_client_context(q,SOAP_SSL_SKIP_HOST_CHECK|SOAP_SSL_ALLOW_EXPIRED_CERTIFICATE|SOAP_SSL_NO_AUTHENTICATION,NULL,NULL,NULL,NULL,NULL)) { + soap_print_fault(q, stderr); + status = "Cannoy initalize SOAP/SSL"; + strncpy(error,status.c_str(),strlen(error)); + return -1L; + } + +#ifdef TEST + cout << "terminalID=" << terminalID.c_str() << endl; + cout << "toDestination=" << toDestinationString.c_str() << endl; + cout << "hmac=" << hmacString.c_str() << endl; +#endif + result = SOAP_ERR; + try { + result = q->transferFund(terminalID, toDestinationString, hmacString, paylid__transferFundResponse_); + + } catch (...) { + status = "Proxy exception"; + } + if (result == SOAP_OK) { + char response[BUFSIZE]; + memset(response,0,BUFSIZE); + result = ParseResponse(paylid__transferFundResponse_.Data.c_str(),paylid__transferFundResponse_.Code.c_str(),"TransactionReference",response); +/* +struct paylid__transferFundResponse +{ + std::string Code; + std::string Data; + std::string Hmac; +}; +*/ + char c[32]; + sprintf(c, "%d", result); + if (result<0) { + status = "ParseResponse() error: "; + status += c; + } else { + status = response; + } + } else { + if (q!=NULL && q->soap_fault_string()!=NULL) { + status = "Fault string: "; + status += q->soap_fault_string(); + } + if (q!=NULL && q->soap_fault_detail()) { + status += "Fault detail: "; + status += q->soap_fault_detail(); + } + if (q==NULL) { + status = "Bad proxy"; + } else { + //cout << "Unknown error: " << result << endl; + } + } + } else { + status = "Hash HMAC error"; + } + //delete paylid__transferFundResponse_; + delete q; + strncpy(error,status.c_str(),strlen(error)); + return result; +} + +long storeface_checkTransferStatus(const char *endpoint, const char *tid, const char *transactionRef, const char *key, char *error) { + long result = -1; + string status = "Unknown error"; + soap_ssl_init(); /* init OpenSSL (just once) */ + paylidwsdlBindingProxy *q = new paylidwsdlBindingProxy(); + q->soap_endpoint = endpoint; + paylid__checkTransferStatusResponse paylid__checkTransferStatusResponse_; + string terminalID(tid); + //No session key required + string transactionRefString(transactionRef); + + // Get hash HMAC + const int mac_512_size = 2*SHA512_DIGEST_SIZE+1; + char hmac[mac_512_size]; + memset(hmac,0,mac_512_size); + hash_hmac(key, (char *)tid, hmac); + + string hmacString(hmac); + + if (soap_ssl_client_context(q,SOAP_SSL_SKIP_HOST_CHECK|SOAP_SSL_ALLOW_EXPIRED_CERTIFICATE|SOAP_SSL_NO_AUTHENTICATION,NULL,NULL,NULL,NULL,NULL)) { + soap_print_fault(q, stderr); + status = "Cannoy initalize SOAP/SSL"; + strncpy(error,status.c_str(),strlen(error)); + return -1L; + } + + result = SOAP_ERR; + try { + result = q->checkTransferStatus(terminalID, transactionRefString, hmacString, paylid__checkTransferStatusResponse_); + + } catch (...) { + status = "Proxy exception"; + } + if (result == SOAP_OK) { + char response[BUFSIZE]; + memset(response,0,BUFSIZE); + result = ParseResponse(paylid__checkTransferStatusResponse_.Data.c_str(),paylid__checkTransferStatusResponse_.Code.c_str(),"TransResponseCode",response); + char c[32]; + sprintf(c, "%d", result); + if (result<0) { + status = "ParseResponse() error: "; + status += c; + } else { + status = response; + } + } else { + if (q!=NULL && q->soap_fault_string()!=NULL) { + status = "Fault string: "; + status += q->soap_fault_string(); + } + if (q!=NULL && q->soap_fault_detail()) { + status += "Fault detail: "; + status += q->soap_fault_detail(); + } + if (q==NULL) { + status = "Bad proxy"; + } else { + //cout << "Unknown error: " << result << endl; + } + } + delete q; + strncpy(error,status.c_str(),strlen(error)); + + return result; +} + +long storeface_getAccountBalance(const char *endpoint, const char *tid, const char *key, char *error) { + logfmt( FLOG_MAX, "long storeface_getAccountBalance(const char *endpoint, const char *tid, const char *key, char *error)"); + logfmt( FLOG_MAX, "endpoint=%s", endpoint); + + int result = -1; + string status = "Unknown error"; + soap_ssl_init(); /* init OpenSSL (just once) */ + //paylidwsdlBindingProxy *q = new paylidwsdlBindingProxy(); + paylidwsdlBindingProxy q; + q.soap_endpoint = endpoint; + paylid__getAccountBalanceResponse paylid__getAccountBalanceResponse_; + string terminalID(tid); + + // Get hash HMAC + const int mac_512_size = 2*SHA512_DIGEST_SIZE+1; + char hmac[mac_512_size]; + memset(hmac,0,mac_512_size); + hash_hmac(key, (char *)tid, hmac); + + if (hmac!=NULL) { + string hmacString(hmac); + + if (soap_ssl_client_context(&q,SOAP_SSL_SKIP_HOST_CHECK|SOAP_SSL_ALLOW_EXPIRED_CERTIFICATE|SOAP_SSL_NO_AUTHENTICATION,NULL,NULL,NULL,NULL,NULL)) { + soap_print_fault(&q, stderr); + status = "Cannot initalize SOAP/SSL"; + strncpy(error,status.c_str(),strlen(error)); + return -1L; + } + +#ifdef TEST + cout << "terminalID=" << terminalID.c_str() << endl; + cout << "hmac=" << hmacString.c_str() << endl; +#endif + + result = SOAP_ERR; // -1 + try { + result = q.getAccountBalance(terminalID, hmacString, paylid__getAccountBalanceResponse_); + + } catch (...) { + status = "Proxy exception"; + } + + logfmt( FLOG_MAX, "SOAP call result = %d", result ); + + if (result == SOAP_OK) { + char response[BUFSIZE]; + memset(response,0,BUFSIZE); + result = ParseResponse(paylid__getAccountBalanceResponse_.Data.c_str(),paylid__getAccountBalanceResponse_.Code.c_str(),"balance",response); + char c[32]; + sprintf(c, "%d", result); + if (result<0) { + status = "ParseResponse() error: "; + status += c; + } else { + status = response; + } + } else {/* + if (q!=NULL && q.soap_fault_string()!=NULL) { + status = "Fault string: "; + status += q.soap_fault_string(); + } + if (q!=NULL && q.soap_fault_detail()) { + status += "Fault detail: "; + status += q.soap_fault_detail(); + } + if (q==NULL) { + status = "Bad proxy"; + } else { + //cout << "Unknown error: " << result << endl; + } +*/ + } + } else { + status = "Hash hmac error"; + } + // WARNING: momory leak!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + q.destroy(); + //delete q; + //q = NULL; + + strncpy(error,status.c_str(),strlen(error)); + logfmt( FLOG_MAX, "/long storeface_getAccountBalance(const char *endpoint, const char *tid, const char *key, char *error)"); + return (long)result; +} + +long storeface_directAirTimeTopUp(const char *endpoint, const char *tid, const char *topupData, const char *key, char *error, long &delivery_status) { + long result = -1; + string status = "Unknown error"; + soap_ssl_init(); /* init OpenSSL (just once) */ + paylidwsdlBindingProxy *q = new paylidwsdlBindingProxy(); + q->soap_endpoint = endpoint; + paylid__directAirTimeTopUpResponse paylid__directAirTimeTopUpResponse_; + string terminalID(tid); + string topupDataString(topupData); + + // Get hash HMAC + const int mac_512_size = 2*SHA512_DIGEST_SIZE+1; + char hmac[mac_512_size]; + memset(hmac,0,mac_512_size); + hash_hmac(key, (char *)tid, hmac); + + if (hmac!=NULL) { + string hmacString(hmac); + + if (soap_ssl_client_context(q,SOAP_SSL_SKIP_HOST_CHECK|SOAP_SSL_ALLOW_EXPIRED_CERTIFICATE|SOAP_SSL_NO_AUTHENTICATION,NULL,NULL,NULL,NULL,NULL)) { + soap_print_fault(q, stderr); + status = "Cannoy initalize SOAP/SSL"; + strncpy(error,status.c_str(),strlen(error)); + return -1L; + } +delivery_status = 56789; + result = SOAP_ERR; + try { + result = q->directAirTimeTopUp(terminalID, topupDataString, hmacString, paylid__directAirTimeTopUpResponse_); + + } catch (...) { + status = "Proxy exception"; + } + if (result == SOAP_OK) { + logfmt( FLOG_MAX, "Response: %s", paylid__directAirTimeTopUpResponse_.Data.c_str() ); + char response[BUFSIZE]; + memset(response,0,BUFSIZE); + result = 1L; + // result = ParseResponse(paylid__directAirTimeTopUpResponse_->return_->c_str(),sessKey,"Balance",response); + //ParseResponse(paylid__directAirTimeTopUpResponse_.Data.c_str(),paylid__directAirTimeTopUpResponse_.Code.c_str(),"result",response); + delivery_status = ParseResponse(paylid__directAirTimeTopUpResponse_.Data.c_str(),paylid__directAirTimeTopUpResponse_.Code.c_str(),"delivery_status",response); + + //delivery_status = (long)response; + +// delivery_status = 56789; + char c[32]; + sprintf(c, "%d", result); + if (result<0) { + status = "ParseResponse() error: "; + status += c; + } else { + status = response; + } + } else { + if (q!=NULL && q->soap_fault_string()!=NULL) { + status = "Fault string: "; + status += q->soap_fault_string(); + } + if (q!=NULL && q->soap_fault_detail()) { + status += "Fault detail: "; + status += q->soap_fault_detail(); + } + if (q==NULL) { + status = "Bad proxy"; + } else { + //cout << "Unknown error: " << result << endl; + } + } + } else { + status = "Hash hmac error"; + } + delete q; + strncpy(error,status.c_str(),strlen(error)); + return result; +} + +#ifdef TEST +int main(void) { + // Common + long ret = 0; + const char *endpoint = "http://oameye.works.storeface.com/rsl/service.php"; + const char *tid = "INTERRA001"; + // WARNING: Key is case-sensetive! + const char *key = "29832d0e1a51eff1cb673feda90293abec053aa5b81f9649d9ed53de86f79ed7"; + const int mac_512_size = 2*SHA512_DIGEST_SIZE+1; + char hmac[mac_512_size]; + // 78fa6a576f52342df61628e2ad48f11027c3d619c00c598c1ca1a9ce086febcd603b846da02eaa5f3a77a97478a8fa0d1832afe2ef7a0715629d7f8f2f4140d1 + + // Specific + const char *account = "4852010016214"; //"00010080023868"; //"0910010905070015"; //"0910010705222055"; + char* status = (char *)malloc(BUFSIZE); + memset(status,32,BUFSIZE); + status[BUFSIZE] = '\0'; + + //memset(hmac,0,mac_512_size); + //hash_hmac(key, (char *)tid, hmac); + cout << "==========================================================" << endl; + cout << "getAccountBalance(tid,hmac,status)" << endl; + ret = storeface_getAccountBalance(endpoint,tid,key,status); + cout << "Return: " << ret << endl << "Status: " << status << endl; + memset(status,32,BUFSIZE); + status[BUFSIZE] = '\0'; + + char *uniqueRef = (char *)malloc(32); + GenerateUniqueRef(uniqueRef,32); + + memset(hmac,0,mac_512_size); + hash_hmac(key, (char *)tid, hmac); + cout << "==========================================================" << endl; + cout << "transferFund(tid,toDestination,hmac)" << endl; + cout << "Unique Reference: " << uniqueRef << endl; + ret = storeface_transferFund(endpoint,tid,uniqueRef,hmac,status); // 100.00 + cout << "Return: " << ret << endl << "Status: " << status << endl; + cout << "Unique Reference: " << uniqueRef << endl; + memset(status,32,BUFSIZE); + status[BUFSIZE] = '\0'; + + memset(hmac,0,mac_512_size); + hash_hmac(key, (char *)tid, hmac); + cout << "==========================================================" << endl; + cout << "checkTransferStatus(tid,transactionRef,hmac,status)" << endl; + cout << "Unique Reference: " << uniqueRef << endl; + ret = storeface_checkTransferStatus(endpoint,tid,uniqueRef,hmac,status); + cout << "Return: " << ret << endl << "Status: " << status << endl; + + free(uniqueRef); + free(status); + + return 0; +} +#endif + +// vi:ts=2 + diff --git a/coregrade/src/shared_tool/paylid/PaylidService.h b/coregrade/src/shared_tool/paylid/PaylidService.h new file mode 100644 index 0000000..c96ebf3 --- /dev/null +++ b/coregrade/src/shared_tool/paylid/PaylidService.h @@ -0,0 +1,875 @@ +namespace paylid { +/* PaylidService.h + Generated by wsdl2h 1.2.16 from http://www.paylid.com/rsl/service.php?wsdl and typemap.dat + 2020-01-09 17:52:18 GMT + + DO NOT INCLUDE THIS FILE DIRECTLY INTO YOUR PROJECT BUILDS + USE THE soapcpp2-GENERATED SOURCE CODE FILES FOR YOUR PROJECT BUILDS + + gSOAP XML Web services tools. + Copyright (C) 2001-2010 Robert van Engelen, Genivia Inc. All Rights Reserved. + Part of this software is released under one of the following licenses: + GPL or Genivia's license for commercial use. +*/ + +/** @page page_notes Build Notes + +NOTE: + + - Run soapcpp2 on PaylidService.h to generate the SOAP/XML processing logic. + Use soapcpp2 option -I to specify paths for #import + To build with STL, 'stlvector.h' is imported from 'import' dir in package. + Use soapcpp2 option -i to generate improved proxy and server classes. + - Use wsdl2h options -c and -s to generate pure C code or C++ code without STL. + - Use 'typemap.dat' to control namespace bindings and type mappings. + It is strongly recommended to customize the names of the namespace prefixes + generated by wsdl2h. To do so, modify the prefix bindings in the Namespaces + section below and add the modified lines to 'typemap.dat' to rerun wsdl2h. + - Use Doxygen (www.doxygen.org) on this file to generate documentation. + - Use wsdl2h options -nname and -Nname to globally rename the prefix 'ns'. + - Use wsdl2h option -d to enable DOM support for xsd:anyType. + - Use wsdl2h option -g to auto-generate readers and writers for root elements. + - Struct/class members serialized as XML attributes are annotated with a '@'. + - Struct/class members that have a special role are annotated with a '$'. + +WARNING: + + DO NOT INCLUDE THIS FILE DIRECTLY INTO YOUR PROJECT BUILDS. + USE THE SOURCE CODE FILES GENERATED BY soapcpp2 FOR YOUR PROJECT BUILDS: + THE soapStub.h FILE CONTAINS THIS CONTENT WITHOUT ANNOTATIONS. + +LICENSE: + +@verbatim +-------------------------------------------------------------------------------- +gSOAP XML Web services tools +Copyright (C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. + +This software is released under one of the following two licenses: +1) GPL or 2) Genivia's license for commercial use. +-------------------------------------------------------------------------------- +1) GPL license. + +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 the Free Software +Foundation; either version 2 of the License, or (at your option) any later +version. + +This program is distributed in the hope that it will be useful, but WITHOUT ANY +WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A +PARTICULAR PURPOSE. See the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along with +this program; if not, write to the Free Software Foundation, Inc., 59 Temple +Place, Suite 330, Boston, MA 02111-1307 USA + +Author contact information: +engelen@genivia.com / engelen@acm.org +-------------------------------------------------------------------------------- +2) A commercial-use license is available from Genivia, Inc., contact@genivia.com +-------------------------------------------------------------------------------- +@endverbatim + +*/ + + +//gsoapopt w + +/******************************************************************************\ + * * + * Definitions * + * urn:paylidwsdl * + * * +\******************************************************************************/ + + +/******************************************************************************\ + * * + * Import * + * * +\******************************************************************************/ + + +// STL vector containers (use option -s to remove STL dependency) +#import "stlvector.h" + +/******************************************************************************\ + * * + * Schema Namespaces * + * * +\******************************************************************************/ + + +/* NOTE: + +It is strongly recommended to customize the names of the namespace prefixes +generated by wsdl2h. To do so, modify the prefix bindings below and add the +modified lines to typemap.dat to rerun wsdl2h: + +paylid = "urn:paylidwsdl" + +*/ + +#define SOAP_NAMESPACE_OF_paylid "urn:paylidwsdl" +//gsoap paylid schema namespace: urn:paylidwsdl +//gsoap paylid schema form: unqualified + +/******************************************************************************\ + * * + * Built-in Schema Types and Top-Level Elements and Attributes * + * * +\******************************************************************************/ + + +/******************************************************************************\ + * * + * Forward Declarations * + * * +\******************************************************************************/ + + + +/******************************************************************************\ + * * + * Schema Types and Top-Level Elements and Attributes * + * urn:paylidwsdl * + * * +\******************************************************************************/ + + +/******************************************************************************\ + * * + * Schema Complex Types and Top-Level Elements * + * urn:paylidwsdl * + * * +\******************************************************************************/ + + +/******************************************************************************\ + * * + * Additional Top-Level Elements * + * urn:paylidwsdl * + * * +\******************************************************************************/ + + +/******************************************************************************\ + * * + * Additional Top-Level Attributes * + * urn:paylidwsdl * + * * +\******************************************************************************/ + + +/******************************************************************************\ + * * + * Services * + * * +\******************************************************************************/ + + +//gsoap paylid service name: paylidwsdlBinding +//gsoap paylid service type: paylidwsdlPortType +//gsoap paylid service port: https://www.paylid.com:443/rsl/service.php +//gsoap paylid service namespace: urn:paylidwsdl +//gsoap paylid service transport: http://schemas.xmlsoap.org/soap/http + +/** @mainpage Service Definitions + +@section Service_bindings Service Bindings + - @ref paylidwsdlBinding + +@section Service_more More Information +- @ref page_notes "Notes" +- @ref page_XMLDataBinding "XML Data Binding" +- @ref SOAP_ENV__Header "SOAP Header Content" +- @ref SOAP_ENV__Detail "SOAP Fault Detail Content" (when applicable) + + +*/ + +/** + +@page paylidwsdlBinding Binding "paylidwsdlBinding" + +@section paylidwsdlBinding_operations Operations of Binding "paylidwsdlBinding" + - @ref paylid__getAccountBalance + - @ref paylid__transferFund + - @ref paylid__checkTransferStatus + - @ref paylid__directAirTimeTopUp + - @ref paylid__currentXrate + - @ref paylid__getAccount + - @ref paylid__getTrxStatus + - @ref paylid__getSupportedBanks + +@section paylidwsdlBinding_ports Endpoints of Binding "paylidwsdlBinding" + - https://www.paylid.com:443/rsl/service.php + +Note: use wsdl2h option -N to change the service binding prefix name + +*/ + +/******************************************************************************\ + * * + * Service Binding * + * paylidwsdlBinding * + * * +\******************************************************************************/ + + +/******************************************************************************\ + * * + * Service Operation * + * paylid__getAccountBalance * + * * +\******************************************************************************/ + +/// Operation response struct "paylid__getAccountBalanceResponse" of service binding "paylidwsdlBinding" operation "paylid__getAccountBalance" +struct paylid__getAccountBalanceResponse +{ + std::string Code; + std::string Data; + std::string Hmac; +}; + +/// Operation "paylid__getAccountBalance" of service binding "paylidwsdlBinding" + +/** + +Operation details: + +Gets account balance + - SOAP RPC encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" + - SOAP action="urn:paylidwsdl#getAccountBalance" + +C stub function (defined in soapClient.c[pp] generated by soapcpp2): +@code + int soap_call_paylid__getAccountBalance( + struct soap *soap, + NULL, // char *endpoint = NULL selects default endpoint for this operation + NULL, // char *action = NULL selects default action for this operation + // request parameters: + std::string terminalID, + std::string hmac, + // response parameters: + struct paylid__getAccountBalanceResponse& + ); +@endcode + +C server function (called from the service dispatcher defined in soapServer.c[pp]): +@code + int paylid__getAccountBalance( + struct soap *soap, + // request parameters: + std::string terminalID, + std::string hmac, + // response parameters: + struct paylid__getAccountBalanceResponse& + ); +@endcode + +C++ proxy class (defined in soappaylidwsdlBindingProxy.h): +@code + class paylidwsdlBindingProxy; +@endcode +Important: use soapcpp2 option '-i' to generate greatly improved and easy-to-use proxy classes; + +C++ service class (defined in soappaylidwsdlBindingService.h): +@code + class paylidwsdlBindingService; +@endcode +Important: use soapcpp2 option '-i' to generate greatly improved and easy-to-use service classes; + +*/ + +//gsoap paylid service method-style: getAccountBalance rpc +//gsoap paylid service method-encoding: getAccountBalance http://schemas.xmlsoap.org/soap/encoding/ +//gsoap paylid service method-action: getAccountBalance urn:paylidwsdl#getAccountBalance +int paylid__getAccountBalance( + std::string terminalID, ///< Request parameter + std::string hmac, ///< Request parameter + struct paylid__getAccountBalanceResponse& ///< Response struct parameter +); + +/******************************************************************************\ + * * + * Service Operation * + * paylid__transferFund * + * * +\******************************************************************************/ + +/// Operation response struct "paylid__transferFundResponse" of service binding "paylidwsdlBinding" operation "paylid__transferFund" +struct paylid__transferFundResponse +{ + std::string Code; + std::string Data; + std::string Hmac; +}; + +/// Operation "paylid__transferFund" of service binding "paylidwsdlBinding" + +/** + +Operation details: + +Transfers funds + - SOAP RPC encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" + - SOAP action="urn:paylidwsdl#transferFund" + +C stub function (defined in soapClient.c[pp] generated by soapcpp2): +@code + int soap_call_paylid__transferFund( + struct soap *soap, + NULL, // char *endpoint = NULL selects default endpoint for this operation + NULL, // char *action = NULL selects default action for this operation + // request parameters: + std::string terminalID, + std::string toDestination, + std::string hmac, + // response parameters: + struct paylid__transferFundResponse& + ); +@endcode + +C server function (called from the service dispatcher defined in soapServer.c[pp]): +@code + int paylid__transferFund( + struct soap *soap, + // request parameters: + std::string terminalID, + std::string toDestination, + std::string hmac, + // response parameters: + struct paylid__transferFundResponse& + ); +@endcode + +C++ proxy class (defined in soappaylidwsdlBindingProxy.h): +@code + class paylidwsdlBindingProxy; +@endcode +Important: use soapcpp2 option '-i' to generate greatly improved and easy-to-use proxy classes; + +C++ service class (defined in soappaylidwsdlBindingService.h): +@code + class paylidwsdlBindingService; +@endcode +Important: use soapcpp2 option '-i' to generate greatly improved and easy-to-use service classes; + +*/ + +//gsoap paylid service method-style: transferFund rpc +//gsoap paylid service method-encoding: transferFund http://schemas.xmlsoap.org/soap/encoding/ +//gsoap paylid service method-action: transferFund urn:paylidwsdl#transferFund +int paylid__transferFund( + std::string terminalID, ///< Request parameter + std::string toDestination, ///< Request parameter + std::string hmac, ///< Request parameter + struct paylid__transferFundResponse& ///< Response struct parameter +); + +/******************************************************************************\ + * * + * Service Operation * + * paylid__checkTransferStatus * + * * +\******************************************************************************/ + +/// Operation response struct "paylid__checkTransferStatusResponse" of service binding "paylidwsdlBinding" operation "paylid__checkTransferStatus" +struct paylid__checkTransferStatusResponse +{ + std::string Code; + std::string Data; + std::string Hmac; +}; + +/// Operation "paylid__checkTransferStatus" of service binding "paylidwsdlBinding" + +/** + +Operation details: + +Checks money transfer status + - SOAP RPC encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" + - SOAP action="urn:paylidwsdl#checkTransferStatus" + +C stub function (defined in soapClient.c[pp] generated by soapcpp2): +@code + int soap_call_paylid__checkTransferStatus( + struct soap *soap, + NULL, // char *endpoint = NULL selects default endpoint for this operation + NULL, // char *action = NULL selects default action for this operation + // request parameters: + std::string terminalID, + std::string transactionRef, + std::string hmac, + // response parameters: + struct paylid__checkTransferStatusResponse& + ); +@endcode + +C server function (called from the service dispatcher defined in soapServer.c[pp]): +@code + int paylid__checkTransferStatus( + struct soap *soap, + // request parameters: + std::string terminalID, + std::string transactionRef, + std::string hmac, + // response parameters: + struct paylid__checkTransferStatusResponse& + ); +@endcode + +C++ proxy class (defined in soappaylidwsdlBindingProxy.h): +@code + class paylidwsdlBindingProxy; +@endcode +Important: use soapcpp2 option '-i' to generate greatly improved and easy-to-use proxy classes; + +C++ service class (defined in soappaylidwsdlBindingService.h): +@code + class paylidwsdlBindingService; +@endcode +Important: use soapcpp2 option '-i' to generate greatly improved and easy-to-use service classes; + +*/ + +//gsoap paylid service method-style: checkTransferStatus rpc +//gsoap paylid service method-encoding: checkTransferStatus http://schemas.xmlsoap.org/soap/encoding/ +//gsoap paylid service method-action: checkTransferStatus urn:paylidwsdl#checkTransferStatus +int paylid__checkTransferStatus( + std::string terminalID, ///< Request parameter + std::string transactionRef, ///< Request parameter + std::string hmac, ///< Request parameter + struct paylid__checkTransferStatusResponse& ///< Response struct parameter +); + +/******************************************************************************\ + * * + * Service Operation * + * paylid__directAirTimeTopUp * + * * +\******************************************************************************/ + +/// Operation response struct "paylid__directAirTimeTopUpResponse" of service binding "paylidwsdlBinding" operation "paylid__directAirTimeTopUp" +struct paylid__directAirTimeTopUpResponse +{ + std::string Code; + std::string Data; + std::string Hmac; +}; + +/// Operation "paylid__directAirTimeTopUp" of service binding "paylidwsdlBinding" + +/** + +Operation details: + +Direct air time top up + - SOAP RPC encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" + - SOAP action="urn:paylidwsdl#checkTransferStatus" + +C stub function (defined in soapClient.c[pp] generated by soapcpp2): +@code + int soap_call_paylid__directAirTimeTopUp( + struct soap *soap, + NULL, // char *endpoint = NULL selects default endpoint for this operation + NULL, // char *action = NULL selects default action for this operation + // request parameters: + std::string terminalID, + std::string topupData, + std::string hmac, + // response parameters: + struct paylid__directAirTimeTopUpResponse& + ); +@endcode + +C server function (called from the service dispatcher defined in soapServer.c[pp]): +@code + int paylid__directAirTimeTopUp( + struct soap *soap, + // request parameters: + std::string terminalID, + std::string topupData, + std::string hmac, + // response parameters: + struct paylid__directAirTimeTopUpResponse& + ); +@endcode + +C++ proxy class (defined in soappaylidwsdlBindingProxy.h): +@code + class paylidwsdlBindingProxy; +@endcode +Important: use soapcpp2 option '-i' to generate greatly improved and easy-to-use proxy classes; + +C++ service class (defined in soappaylidwsdlBindingService.h): +@code + class paylidwsdlBindingService; +@endcode +Important: use soapcpp2 option '-i' to generate greatly improved and easy-to-use service classes; + +*/ + +//gsoap paylid service method-style: directAirTimeTopUp rpc +//gsoap paylid service method-encoding: directAirTimeTopUp http://schemas.xmlsoap.org/soap/encoding/ +//gsoap paylid service method-action: directAirTimeTopUp urn:paylidwsdl#checkTransferStatus +int paylid__directAirTimeTopUp( + std::string terminalID, ///< Request parameter + std::string topupData, ///< Request parameter + std::string hmac, ///< Request parameter + struct paylid__directAirTimeTopUpResponse& ///< Response struct parameter +); + +/******************************************************************************\ + * * + * Service Operation * + * paylid__currentXrate * + * * +\******************************************************************************/ + +/// Operation response struct "paylid__currentXrateResponse" of service binding "paylidwsdlBinding" operation "paylid__currentXrate" +struct paylid__currentXrateResponse +{ + std::string Code; + std::string Data; + std::string Hmac; +}; + +/// Operation "paylid__currentXrate" of service binding "paylidwsdlBinding" + +/** + +Operation details: + +Get Current XRAte + - SOAP RPC encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" + - SOAP action="urn:paylidwsdl#currentXrate" + +C stub function (defined in soapClient.c[pp] generated by soapcpp2): +@code + int soap_call_paylid__currentXrate( + struct soap *soap, + NULL, // char *endpoint = NULL selects default endpoint for this operation + NULL, // char *action = NULL selects default action for this operation + // request parameters: + std::string terminalID, + std::string topupData, + std::string hmac, + // response parameters: + struct paylid__currentXrateResponse& + ); +@endcode + +C server function (called from the service dispatcher defined in soapServer.c[pp]): +@code + int paylid__currentXrate( + struct soap *soap, + // request parameters: + std::string terminalID, + std::string topupData, + std::string hmac, + // response parameters: + struct paylid__currentXrateResponse& + ); +@endcode + +C++ proxy class (defined in soappaylidwsdlBindingProxy.h): +@code + class paylidwsdlBindingProxy; +@endcode +Important: use soapcpp2 option '-i' to generate greatly improved and easy-to-use proxy classes; + +C++ service class (defined in soappaylidwsdlBindingService.h): +@code + class paylidwsdlBindingService; +@endcode +Important: use soapcpp2 option '-i' to generate greatly improved and easy-to-use service classes; + +*/ + +//gsoap paylid service method-style: currentXrate rpc +//gsoap paylid service method-encoding: currentXrate http://schemas.xmlsoap.org/soap/encoding/ +//gsoap paylid service method-action: currentXrate urn:paylidwsdl#currentXrate +int paylid__currentXrate( + std::string terminalID, ///< Request parameter + std::string topupData, ///< Request parameter + std::string hmac, ///< Request parameter + struct paylid__currentXrateResponse& ///< Response struct parameter +); + +/******************************************************************************\ + * * + * Service Operation * + * paylid__getAccount * + * * +\******************************************************************************/ + +/// Operation response struct "paylid__getAccountResponse" of service binding "paylidwsdlBinding" operation "paylid__getAccount" +struct paylid__getAccountResponse +{ + std::string Code; + std::string Data; + std::string Hmac; +}; + +/// Operation "paylid__getAccount" of service binding "paylidwsdlBinding" + +/** + +Operation details: + +Get Account Properties + - SOAP RPC encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" + - SOAP action="urn:paylidwsdl#getAccount" + +C stub function (defined in soapClient.c[pp] generated by soapcpp2): +@code + int soap_call_paylid__getAccount( + struct soap *soap, + NULL, // char *endpoint = NULL selects default endpoint for this operation + NULL, // char *action = NULL selects default action for this operation + // request parameters: + std::string terminalID, + std::string topupData, + std::string hmac, + // response parameters: + struct paylid__getAccountResponse& + ); +@endcode + +C server function (called from the service dispatcher defined in soapServer.c[pp]): +@code + int paylid__getAccount( + struct soap *soap, + // request parameters: + std::string terminalID, + std::string topupData, + std::string hmac, + // response parameters: + struct paylid__getAccountResponse& + ); +@endcode + +C++ proxy class (defined in soappaylidwsdlBindingProxy.h): +@code + class paylidwsdlBindingProxy; +@endcode +Important: use soapcpp2 option '-i' to generate greatly improved and easy-to-use proxy classes; + +C++ service class (defined in soappaylidwsdlBindingService.h): +@code + class paylidwsdlBindingService; +@endcode +Important: use soapcpp2 option '-i' to generate greatly improved and easy-to-use service classes; + +*/ + +//gsoap paylid service method-style: getAccount rpc +//gsoap paylid service method-encoding: getAccount http://schemas.xmlsoap.org/soap/encoding/ +//gsoap paylid service method-action: getAccount urn:paylidwsdl#getAccount +int paylid__getAccount( + std::string terminalID, ///< Request parameter + std::string topupData, ///< Request parameter + std::string hmac, ///< Request parameter + struct paylid__getAccountResponse & ///< Response struct parameter +); + +/******************************************************************************\ + * * + * Service Operation * + * paylid__getTrxStatus * + * * +\******************************************************************************/ + +/// Operation response struct "paylid__getTrxStatusResponse" of service binding "paylidwsdlBinding" operation "paylid__getTrxStatus" +struct paylid__getTrxStatusResponse +{ + std::string Code; + std::string Data; + std::string Hmac; +}; + +/// Operation "paylid__getTrxStatus" of service binding "paylidwsdlBinding" + +/** + +Operation details: + +General Get Transaction Status + - SOAP RPC encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" + - SOAP action="urn:paylidwsdl#getTrxStatus" + +C stub function (defined in soapClient.c[pp] generated by soapcpp2): +@code + int soap_call_paylid__getTrxStatus( + struct soap *soap, + NULL, // char *endpoint = NULL selects default endpoint for this operation + NULL, // char *action = NULL selects default action for this operation + // request parameters: + std::string terminalID, + std::string topupData, + std::string hmac, + // response parameters: + struct paylid__getTrxStatusResponse& + ); +@endcode + +C server function (called from the service dispatcher defined in soapServer.c[pp]): +@code + int paylid__getTrxStatus( + struct soap *soap, + // request parameters: + std::string terminalID, + std::string topupData, + std::string hmac, + // response parameters: + struct paylid__getTrxStatusResponse& + ); +@endcode + +C++ proxy class (defined in soappaylidwsdlBindingProxy.h): +@code + class paylidwsdlBindingProxy; +@endcode +Important: use soapcpp2 option '-i' to generate greatly improved and easy-to-use proxy classes; + +C++ service class (defined in soappaylidwsdlBindingService.h): +@code + class paylidwsdlBindingService; +@endcode +Important: use soapcpp2 option '-i' to generate greatly improved and easy-to-use service classes; + +*/ + +//gsoap paylid service method-style: getTrxStatus rpc +//gsoap paylid service method-encoding: getTrxStatus http://schemas.xmlsoap.org/soap/encoding/ +//gsoap paylid service method-action: getTrxStatus urn:paylidwsdl#getTrxStatus +int paylid__getTrxStatus( + std::string terminalID, ///< Request parameter + std::string topupData, ///< Request parameter + std::string hmac, ///< Request parameter + struct paylid__getTrxStatusResponse& ///< Response struct parameter +); + +/******************************************************************************\ + * * + * Service Operation * + * paylid__getSupportedBanks * + * * +\******************************************************************************/ + +/// Operation response struct "paylid__getSupportedBanksResponse" of service binding "paylidwsdlBinding" operation "paylid__getSupportedBanks" +struct paylid__getSupportedBanksResponse +{ + std::string Code; + std::string Data; + std::string Hmac; +}; + +/// Operation "paylid__getSupportedBanks" of service binding "paylidwsdlBinding" + +/** + +Operation details: + +General List of supported banks based on country + - SOAP RPC encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" + - SOAP action="urn:paylidwsdl#getSupportedBanks" + +C stub function (defined in soapClient.c[pp] generated by soapcpp2): +@code + int soap_call_paylid__getSupportedBanks( + struct soap *soap, + NULL, // char *endpoint = NULL selects default endpoint for this operation + NULL, // char *action = NULL selects default action for this operation + // request parameters: + std::string terminalID, + std::string topupData, + std::string hmac, + // response parameters: + struct paylid__getSupportedBanksResponse& + ); +@endcode + +C server function (called from the service dispatcher defined in soapServer.c[pp]): +@code + int paylid__getSupportedBanks( + struct soap *soap, + // request parameters: + std::string terminalID, + std::string topupData, + std::string hmac, + // response parameters: + struct paylid__getSupportedBanksResponse& + ); +@endcode + +C++ proxy class (defined in soappaylidwsdlBindingProxy.h): +@code + class paylidwsdlBindingProxy; +@endcode +Important: use soapcpp2 option '-i' to generate greatly improved and easy-to-use proxy classes; + +C++ service class (defined in soappaylidwsdlBindingService.h): +@code + class paylidwsdlBindingService; +@endcode +Important: use soapcpp2 option '-i' to generate greatly improved and easy-to-use service classes; + +*/ + +//gsoap paylid service method-style: getSupportedBanks rpc +//gsoap paylid service method-encoding: getSupportedBanks http://schemas.xmlsoap.org/soap/encoding/ +//gsoap paylid service method-action: getSupportedBanks urn:paylidwsdl#getSupportedBanks +int paylid__getSupportedBanks( + std::string terminalID, ///< Request parameter + std::string topupData, ///< Request parameter + std::string hmac, ///< Request parameter + struct paylid__getSupportedBanksResponse& ///< Response struct parameter +); + +/******************************************************************************\ + * * + * XML Data Binding * + * * +\******************************************************************************/ + + +/** + +@page page_XMLDataBinding XML Data Binding + +SOAP/XML services use data bindings contractually bound by WSDL and auto- +generated by wsdl2h and soapcpp2 (see Service Bindings). Plain data bindings +are adopted from XML schemas as part of the WSDL types section or when running +wsdl2h on a set of schemas to produce non-SOAP-based XML data bindings. + +The following readers and writers are C/C++ data type (de)serializers auto- +generated by wsdl2h and soapcpp2. Run soapcpp2 on this file to generate the +(de)serialization code, which is stored in soapC.c[pp]. Include "soapH.h" in +your code to import these data type and function declarations. Only use the +soapcpp2-generated files in your project build. Do not include the wsdl2h- +generated .h file in your code. + +XML content can be retrieved from: + - a FILE* fd, using soap->recvfd = fd + - a socket, using soap->socket = ... + - a C++ stream, using soap->is = ... + - a buffer, using the soap->frecv() callback + +XML content can be stored to: + - a FILE* fd, using soap->sendfd = fd + - a socket, using soap->socket = ... + - a C++ stream, using soap->os = ... + - a buffer, using the soap->fsend() callback + + +@section paylid Top-level root elements of schema "urn:paylidwsdl" + +*/ + +} // namespace paylid + +/* End of PaylidService.h */ diff --git a/coregrade/src/shared_tool/paylid/paylid.nsmap b/coregrade/src/shared_tool/paylid/paylid.nsmap new file mode 100644 index 0000000..56fcbcc --- /dev/null +++ b/coregrade/src/shared_tool/paylid/paylid.nsmap @@ -0,0 +1,11 @@ + +#include "paylidH.h" +SOAP_NMAC struct Namespace paylid_namespaces[] = +{ + {"SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/", "http://www.w3.org/*/soap-envelope", NULL}, + {"SOAP-ENC", "http://schemas.xmlsoap.org/soap/encoding/", "http://www.w3.org/*/soap-encoding", NULL}, + {"xsi", "http://www.w3.org/2001/XMLSchema-instance", "http://www.w3.org/*/XMLSchema-instance", NULL}, + {"xsd", "http://www.w3.org/2001/XMLSchema", "http://www.w3.org/*/XMLSchema", NULL}, + {"paylid", "urn:paylidwsdl", NULL, NULL}, + {NULL, NULL, NULL, NULL} +}; diff --git a/coregrade/src/shared_tool/paylid/paylidC.cpp b/coregrade/src/shared_tool/paylid/paylidC.cpp new file mode 100644 index 0000000..a8c9f28 --- /dev/null +++ b/coregrade/src/shared_tool/paylid/paylidC.cpp @@ -0,0 +1,3806 @@ +/* paylidC.cpp + Generated by gSOAP 2.7.16 from PaylidService.h + Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. + This part of the software is released under one of the following licenses: + GPL, the gSOAP public license, or Genivia's license for commercial use. +*/ + +#if defined(__BORLANDC__) +#pragma option push -w-8060 +#pragma option push -w-8004 +#endif + +#include "paylidH.h" + +namespace paylid { + +SOAP_SOURCE_STAMP("@(#) paylidC.cpp ver 2.7.16 2020-01-09 17:52:18 GMT") + + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_serializeheader(struct soap *soap) +{ + if (soap->header) + soap_serialize_SOAP_ENV__Header(soap, soap->header); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_putheader(struct soap *soap) +{ + if (soap->header) + { soap->part = SOAP_IN_HEADER; + if (soap_out_SOAP_ENV__Header(soap, "SOAP-ENV:Header", 0, soap->header, NULL)) + return soap->error; + soap->part = SOAP_END_HEADER; + } + return SOAP_OK; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_getheader(struct soap *soap) +{ + soap->part = SOAP_IN_HEADER; + soap->header = soap_in_SOAP_ENV__Header(soap, "SOAP-ENV:Header", NULL, NULL); + soap->part = SOAP_END_HEADER; + return soap->header == NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_header(struct soap *soap) +{ + if (!soap->header) + { if ((soap->header = soap_new_SOAP_ENV__Header(soap, -1))) + soap_default_SOAP_ENV__Header(soap, soap->header); + } +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_fault(struct soap *soap) +{ + if (!soap->fault) + { soap->fault = soap_new_SOAP_ENV__Fault(soap, -1); + if (!soap->fault) + return; + soap_default_SOAP_ENV__Fault(soap, soap->fault); + } + if (soap->version == 2 && !soap->fault->SOAP_ENV__Code) + { soap->fault->SOAP_ENV__Code = soap_new_SOAP_ENV__Code(soap, -1); + soap_default_SOAP_ENV__Code(soap, soap->fault->SOAP_ENV__Code); + } + if (soap->version == 2 && !soap->fault->SOAP_ENV__Reason) + { soap->fault->SOAP_ENV__Reason = soap_new_SOAP_ENV__Reason(soap, -1); + soap_default_SOAP_ENV__Reason(soap, soap->fault->SOAP_ENV__Reason); + } +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serializefault(struct soap *soap) +{ + soap_fault(soap); + if (soap->fault) + soap_serialize_SOAP_ENV__Fault(soap, soap->fault); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_putfault(struct soap *soap) +{ + if (soap->fault) + return soap_put_SOAP_ENV__Fault(soap, soap->fault, "SOAP-ENV:Fault", NULL); + return SOAP_OK; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_getfault(struct soap *soap) +{ + return (soap->fault = soap_get_SOAP_ENV__Fault(soap, NULL, "SOAP-ENV:Fault", NULL)) == NULL; +} + +SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultcode(struct soap *soap) +{ + soap_fault(soap); + if (soap->version == 2) + return (const char**)&soap->fault->SOAP_ENV__Code->SOAP_ENV__Value; + return (const char**)&soap->fault->faultcode; +} + +SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultsubcode(struct soap *soap) +{ + soap_fault(soap); + if (soap->version == 2) + { if (!soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode) + { soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode = soap_new_SOAP_ENV__Code(soap, -1); + soap_default_SOAP_ENV__Code(soap, soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode); + } + return (const char**)&soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode->SOAP_ENV__Value; + } + return (const char**)&soap->fault->faultcode; +} + +SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultstring(struct soap *soap) +{ + soap_fault(soap); + if (soap->version == 2) + return (const char**)&soap->fault->SOAP_ENV__Reason->SOAP_ENV__Text; + return (const char**)&soap->fault->faultstring; +} + +SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultdetail(struct soap *soap) +{ + soap_fault(soap); + if (soap->version == 1) + { if (!soap->fault->detail) + { soap->fault->detail = (struct SOAP_ENV__Detail*)soap_malloc(soap, sizeof(struct SOAP_ENV__Detail)); + soap_default_SOAP_ENV__Detail(soap, soap->fault->detail); + } + return (const char**)&soap->fault->detail->__any; + } + if (!soap->fault->SOAP_ENV__Detail) + { soap->fault->SOAP_ENV__Detail = soap_new_SOAP_ENV__Detail(soap, -1); + soap_default_SOAP_ENV__Detail(soap, soap->fault->SOAP_ENV__Detail); + } + return (const char**)&soap->fault->SOAP_ENV__Detail->__any; +} + +#endif + +#ifndef WITH_NOIDREF +SOAP_FMAC3 int SOAP_FMAC4 soap_getindependent(struct soap *soap) +{ + int t; + if (soap->version == 1) + { for (;;) + { if (!soap_getelement(soap, &t)) + if (soap->error || soap_ignore_element(soap)) + break; + } + } + if (soap->error == SOAP_NO_TAG || soap->error == SOAP_EOF) + soap->error = SOAP_OK; + return soap->error; +} +#endif + +#ifndef WITH_NOIDREF +SOAP_FMAC3 void * SOAP_FMAC4 soap_getelement(struct soap *soap, int *type) +{ + if (soap_peek_element(soap)) + return NULL; + if (!*soap->id || !(*type = soap_lookup_type(soap, soap->id))) + *type = soap_lookup_type(soap, soap->href); + switch (*type) + { + case SOAP_TYPE_paylid_byte: + return soap_in_byte(soap, NULL, NULL, "xsd:byte"); + case SOAP_TYPE_paylid_int: + return soap_in_int(soap, NULL, NULL, "xsd:int"); + case SOAP_TYPE_paylid_std__string: + return soap_in_std__string(soap, NULL, NULL, "xsd:string"); + case SOAP_TYPE_paylid_paylid__getSupportedBanks: + return soap_in_paylid__getSupportedBanks(soap, NULL, NULL, "paylid:getSupportedBanks"); + case SOAP_TYPE_paylid_paylid__getSupportedBanksResponse: + return soap_in_paylid__getSupportedBanksResponse(soap, NULL, NULL, "paylid:getSupportedBanksResponse"); + case SOAP_TYPE_paylid_paylid__getTrxStatus: + return soap_in_paylid__getTrxStatus(soap, NULL, NULL, "paylid:getTrxStatus"); + case SOAP_TYPE_paylid_paylid__getTrxStatusResponse: + return soap_in_paylid__getTrxStatusResponse(soap, NULL, NULL, "paylid:getTrxStatusResponse"); + case SOAP_TYPE_paylid_paylid__getAccount: + return soap_in_paylid__getAccount(soap, NULL, NULL, "paylid:getAccount"); + case SOAP_TYPE_paylid_paylid__getAccountResponse: + return soap_in_paylid__getAccountResponse(soap, NULL, NULL, "paylid:getAccountResponse"); + case SOAP_TYPE_paylid_paylid__currentXrate: + return soap_in_paylid__currentXrate(soap, NULL, NULL, "paylid:currentXrate"); + case SOAP_TYPE_paylid_paylid__currentXrateResponse: + return soap_in_paylid__currentXrateResponse(soap, NULL, NULL, "paylid:currentXrateResponse"); + case SOAP_TYPE_paylid_paylid__directAirTimeTopUp: + return soap_in_paylid__directAirTimeTopUp(soap, NULL, NULL, "paylid:directAirTimeTopUp"); + case SOAP_TYPE_paylid_paylid__directAirTimeTopUpResponse: + return soap_in_paylid__directAirTimeTopUpResponse(soap, NULL, NULL, "paylid:directAirTimeTopUpResponse"); + case SOAP_TYPE_paylid_paylid__checkTransferStatus: + return soap_in_paylid__checkTransferStatus(soap, NULL, NULL, "paylid:checkTransferStatus"); + case SOAP_TYPE_paylid_paylid__checkTransferStatusResponse: + return soap_in_paylid__checkTransferStatusResponse(soap, NULL, NULL, "paylid:checkTransferStatusResponse"); + case SOAP_TYPE_paylid_paylid__transferFund: + return soap_in_paylid__transferFund(soap, NULL, NULL, "paylid:transferFund"); + case SOAP_TYPE_paylid_paylid__transferFundResponse: + return soap_in_paylid__transferFundResponse(soap, NULL, NULL, "paylid:transferFundResponse"); + case SOAP_TYPE_paylid_paylid__getAccountBalance: + return soap_in_paylid__getAccountBalance(soap, NULL, NULL, "paylid:getAccountBalance"); + case SOAP_TYPE_paylid_paylid__getAccountBalanceResponse: + return soap_in_paylid__getAccountBalanceResponse(soap, NULL, NULL, "paylid:getAccountBalanceResponse"); + case SOAP_TYPE_paylid__QName: + { char **s; + s = soap_in__QName(soap, NULL, NULL, "xsd:QName"); + return s ? *s : NULL; + } + case SOAP_TYPE_paylid_string: + { char **s; + s = soap_in_string(soap, NULL, NULL, "xsd:string"); + return s ? *s : NULL; + } + default: + { const char *t = soap->type; + if (!*t) + t = soap->tag; + if (!soap_match_tag(soap, t, "xsd:string")) + { *type = SOAP_TYPE_paylid_std__string; + return soap_in_std__string(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:byte")) + { *type = SOAP_TYPE_paylid_byte; + return soap_in_byte(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:int")) + { *type = SOAP_TYPE_paylid_int; + return soap_in_int(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "paylid:getSupportedBanks")) + { *type = SOAP_TYPE_paylid_paylid__getSupportedBanks; + return soap_in_paylid__getSupportedBanks(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "paylid:getSupportedBanksResponse")) + { *type = SOAP_TYPE_paylid_paylid__getSupportedBanksResponse; + return soap_in_paylid__getSupportedBanksResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "paylid:getTrxStatus")) + { *type = SOAP_TYPE_paylid_paylid__getTrxStatus; + return soap_in_paylid__getTrxStatus(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "paylid:getTrxStatusResponse")) + { *type = SOAP_TYPE_paylid_paylid__getTrxStatusResponse; + return soap_in_paylid__getTrxStatusResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "paylid:getAccount")) + { *type = SOAP_TYPE_paylid_paylid__getAccount; + return soap_in_paylid__getAccount(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "paylid:getAccountResponse")) + { *type = SOAP_TYPE_paylid_paylid__getAccountResponse; + return soap_in_paylid__getAccountResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "paylid:currentXrate")) + { *type = SOAP_TYPE_paylid_paylid__currentXrate; + return soap_in_paylid__currentXrate(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "paylid:currentXrateResponse")) + { *type = SOAP_TYPE_paylid_paylid__currentXrateResponse; + return soap_in_paylid__currentXrateResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "paylid:directAirTimeTopUp")) + { *type = SOAP_TYPE_paylid_paylid__directAirTimeTopUp; + return soap_in_paylid__directAirTimeTopUp(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "paylid:directAirTimeTopUpResponse")) + { *type = SOAP_TYPE_paylid_paylid__directAirTimeTopUpResponse; + return soap_in_paylid__directAirTimeTopUpResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "paylid:checkTransferStatus")) + { *type = SOAP_TYPE_paylid_paylid__checkTransferStatus; + return soap_in_paylid__checkTransferStatus(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "paylid:checkTransferStatusResponse")) + { *type = SOAP_TYPE_paylid_paylid__checkTransferStatusResponse; + return soap_in_paylid__checkTransferStatusResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "paylid:transferFund")) + { *type = SOAP_TYPE_paylid_paylid__transferFund; + return soap_in_paylid__transferFund(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "paylid:transferFundResponse")) + { *type = SOAP_TYPE_paylid_paylid__transferFundResponse; + return soap_in_paylid__transferFundResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "paylid:getAccountBalance")) + { *type = SOAP_TYPE_paylid_paylid__getAccountBalance; + return soap_in_paylid__getAccountBalance(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "paylid:getAccountBalanceResponse")) + { *type = SOAP_TYPE_paylid_paylid__getAccountBalanceResponse; + return soap_in_paylid__getAccountBalanceResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:QName")) + { char **s; + *type = SOAP_TYPE_paylid__QName; + s = soap_in__QName(soap, NULL, NULL, NULL); + return s ? *s : NULL; + } + if (!soap_match_tag(soap, t, "xsd:string")) + { char **s; + *type = SOAP_TYPE_paylid_string; + s = soap_in_string(soap, NULL, NULL, NULL); + return s ? *s : NULL; + } + t = soap->tag; + } + } + soap->error = SOAP_TAG_MISMATCH; + return NULL; +} +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_ignore_element(struct soap *soap) +{ + if (!soap_peek_element(soap)) + { int t; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Unexpected element '%s' in input (level=%u, %d)\n", soap->tag, soap->level, soap->body)); + if (soap->mustUnderstand && !soap->other) + return soap->error = SOAP_MUSTUNDERSTAND; + if (((soap->mode & SOAP_XML_STRICT) && soap->part != SOAP_IN_HEADER) || !soap_match_tag(soap, soap->tag, "SOAP-ENV:")) + { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "REJECTING element '%s'\n", soap->tag)); + return soap->error = SOAP_TAG_MISMATCH; + } + if (!*soap->id || !soap_getelement(soap, &t)) + { soap->peeked = 0; + if (soap->fignore) + soap->error = soap->fignore(soap, soap->tag); + else + soap->error = SOAP_OK; + DBGLOG(TEST, if (!soap->error) SOAP_MESSAGE(fdebug, "IGNORING element '%s'\n", soap->tag)); + if (!soap->error && soap->body) + { soap->level++; + while (!soap_ignore_element(soap)) + ; + if (soap->error == SOAP_NO_TAG) + soap->error = soap_element_end_in(soap, NULL); + } + } + } + return soap->error; +} + +#ifndef WITH_NOIDREF +SOAP_FMAC3 int SOAP_FMAC4 soap_putindependent(struct soap *soap) +{ + int i; + struct soap_plist *pp; + if (soap->version == 1 && soap->encodingStyle && !(soap->mode & (SOAP_XML_TREE | SOAP_XML_GRAPH))) + for (i = 0; i < SOAP_PTRHASH; i++) + for (pp = soap->pht[i]; pp; pp = pp->next) + if (pp->mark1 == 2 || pp->mark2 == 2) + if (soap_putelement(soap, pp->ptr, "id", pp->id, pp->type)) + return soap->error; + return SOAP_OK; +} +#endif + +#ifndef WITH_NOIDREF +SOAP_FMAC3 int SOAP_FMAC4 soap_putelement(struct soap *soap, const void *ptr, const char *tag, int id, int type) +{ + switch (type) + { + case SOAP_TYPE_paylid_byte: + return soap_out_byte(soap, tag, id, (const char *)ptr, "xsd:byte"); + case SOAP_TYPE_paylid_int: + return soap_out_int(soap, tag, id, (const int *)ptr, "xsd:int"); + case SOAP_TYPE_paylid_std__string: + return soap_out_std__string(soap, tag, id, (const std::string *)ptr, "xsd:string"); + case SOAP_TYPE_paylid_paylid__getSupportedBanks: + return soap_out_paylid__getSupportedBanks(soap, tag, id, (const struct paylid__getSupportedBanks *)ptr, "paylid:getSupportedBanks"); + case SOAP_TYPE_paylid_paylid__getSupportedBanksResponse: + return soap_out_paylid__getSupportedBanksResponse(soap, tag, id, (const struct paylid__getSupportedBanksResponse *)ptr, "paylid:getSupportedBanksResponse"); + case SOAP_TYPE_paylid_paylid__getTrxStatus: + return soap_out_paylid__getTrxStatus(soap, tag, id, (const struct paylid__getTrxStatus *)ptr, "paylid:getTrxStatus"); + case SOAP_TYPE_paylid_paylid__getTrxStatusResponse: + return soap_out_paylid__getTrxStatusResponse(soap, tag, id, (const struct paylid__getTrxStatusResponse *)ptr, "paylid:getTrxStatusResponse"); + case SOAP_TYPE_paylid_paylid__getAccount: + return soap_out_paylid__getAccount(soap, tag, id, (const struct paylid__getAccount *)ptr, "paylid:getAccount"); + case SOAP_TYPE_paylid_paylid__getAccountResponse: + return soap_out_paylid__getAccountResponse(soap, tag, id, (const struct paylid__getAccountResponse *)ptr, "paylid:getAccountResponse"); + case SOAP_TYPE_paylid_paylid__currentXrate: + return soap_out_paylid__currentXrate(soap, tag, id, (const struct paylid__currentXrate *)ptr, "paylid:currentXrate"); + case SOAP_TYPE_paylid_paylid__currentXrateResponse: + return soap_out_paylid__currentXrateResponse(soap, tag, id, (const struct paylid__currentXrateResponse *)ptr, "paylid:currentXrateResponse"); + case SOAP_TYPE_paylid_paylid__directAirTimeTopUp: + return soap_out_paylid__directAirTimeTopUp(soap, tag, id, (const struct paylid__directAirTimeTopUp *)ptr, "paylid:directAirTimeTopUp"); + case SOAP_TYPE_paylid_paylid__directAirTimeTopUpResponse: + return soap_out_paylid__directAirTimeTopUpResponse(soap, tag, id, (const struct paylid__directAirTimeTopUpResponse *)ptr, "paylid:directAirTimeTopUpResponse"); + case SOAP_TYPE_paylid_paylid__checkTransferStatus: + return soap_out_paylid__checkTransferStatus(soap, tag, id, (const struct paylid__checkTransferStatus *)ptr, "paylid:checkTransferStatus"); + case SOAP_TYPE_paylid_paylid__checkTransferStatusResponse: + return soap_out_paylid__checkTransferStatusResponse(soap, tag, id, (const struct paylid__checkTransferStatusResponse *)ptr, "paylid:checkTransferStatusResponse"); + case SOAP_TYPE_paylid_paylid__transferFund: + return soap_out_paylid__transferFund(soap, tag, id, (const struct paylid__transferFund *)ptr, "paylid:transferFund"); + case SOAP_TYPE_paylid_paylid__transferFundResponse: + return soap_out_paylid__transferFundResponse(soap, tag, id, (const struct paylid__transferFundResponse *)ptr, "paylid:transferFundResponse"); + case SOAP_TYPE_paylid_paylid__getAccountBalance: + return soap_out_paylid__getAccountBalance(soap, tag, id, (const struct paylid__getAccountBalance *)ptr, "paylid:getAccountBalance"); + case SOAP_TYPE_paylid_paylid__getAccountBalanceResponse: + return soap_out_paylid__getAccountBalanceResponse(soap, tag, id, (const struct paylid__getAccountBalanceResponse *)ptr, "paylid:getAccountBalanceResponse"); + case SOAP_TYPE_paylid__QName: + return soap_out_string(soap, tag, id, (char*const*)&ptr, "xsd:QName"); + case SOAP_TYPE_paylid_string: + return soap_out_string(soap, tag, id, (char*const*)&ptr, "xsd:string"); + } + return SOAP_OK; +} +#endif + +#ifndef WITH_NOIDREF +SOAP_FMAC3 void SOAP_FMAC4 soap_markelement(struct soap *soap, const void *ptr, int type) +{ + (void)soap; (void)ptr; (void)type; /* appease -Wall -Werror */ + switch (type) + { + case SOAP_TYPE_paylid_std__string: + soap_serialize_std__string(soap, (const std::string *)ptr); + break; + case SOAP_TYPE_paylid_paylid__getSupportedBanks: + soap_serialize_paylid__getSupportedBanks(soap, (const struct paylid__getSupportedBanks *)ptr); + break; + case SOAP_TYPE_paylid_paylid__getSupportedBanksResponse: + soap_serialize_paylid__getSupportedBanksResponse(soap, (const struct paylid__getSupportedBanksResponse *)ptr); + break; + case SOAP_TYPE_paylid_paylid__getTrxStatus: + soap_serialize_paylid__getTrxStatus(soap, (const struct paylid__getTrxStatus *)ptr); + break; + case SOAP_TYPE_paylid_paylid__getTrxStatusResponse: + soap_serialize_paylid__getTrxStatusResponse(soap, (const struct paylid__getTrxStatusResponse *)ptr); + break; + case SOAP_TYPE_paylid_paylid__getAccount: + soap_serialize_paylid__getAccount(soap, (const struct paylid__getAccount *)ptr); + break; + case SOAP_TYPE_paylid_paylid__getAccountResponse: + soap_serialize_paylid__getAccountResponse(soap, (const struct paylid__getAccountResponse *)ptr); + break; + case SOAP_TYPE_paylid_paylid__currentXrate: + soap_serialize_paylid__currentXrate(soap, (const struct paylid__currentXrate *)ptr); + break; + case SOAP_TYPE_paylid_paylid__currentXrateResponse: + soap_serialize_paylid__currentXrateResponse(soap, (const struct paylid__currentXrateResponse *)ptr); + break; + case SOAP_TYPE_paylid_paylid__directAirTimeTopUp: + soap_serialize_paylid__directAirTimeTopUp(soap, (const struct paylid__directAirTimeTopUp *)ptr); + break; + case SOAP_TYPE_paylid_paylid__directAirTimeTopUpResponse: + soap_serialize_paylid__directAirTimeTopUpResponse(soap, (const struct paylid__directAirTimeTopUpResponse *)ptr); + break; + case SOAP_TYPE_paylid_paylid__checkTransferStatus: + soap_serialize_paylid__checkTransferStatus(soap, (const struct paylid__checkTransferStatus *)ptr); + break; + case SOAP_TYPE_paylid_paylid__checkTransferStatusResponse: + soap_serialize_paylid__checkTransferStatusResponse(soap, (const struct paylid__checkTransferStatusResponse *)ptr); + break; + case SOAP_TYPE_paylid_paylid__transferFund: + soap_serialize_paylid__transferFund(soap, (const struct paylid__transferFund *)ptr); + break; + case SOAP_TYPE_paylid_paylid__transferFundResponse: + soap_serialize_paylid__transferFundResponse(soap, (const struct paylid__transferFundResponse *)ptr); + break; + case SOAP_TYPE_paylid_paylid__getAccountBalance: + soap_serialize_paylid__getAccountBalance(soap, (const struct paylid__getAccountBalance *)ptr); + break; + case SOAP_TYPE_paylid_paylid__getAccountBalanceResponse: + soap_serialize_paylid__getAccountBalanceResponse(soap, (const struct paylid__getAccountBalanceResponse *)ptr); + break; + case SOAP_TYPE_paylid__QName: + soap_serialize_string(soap, (char*const*)&ptr); + break; + case SOAP_TYPE_paylid_string: + soap_serialize_string(soap, (char*const*)&ptr); + break; + } +} +#endif + +SOAP_FMAC3 void * SOAP_FMAC4 soap_instantiate(struct soap *soap, int t, const char *type, const char *arrayType, size_t *n) +{ + switch (t) + { + case SOAP_TYPE_paylid_std__string: + return (void*)soap_instantiate_std__string(soap, -1, type, arrayType, n); + case SOAP_TYPE_paylid_paylid__getAccountBalanceResponse: + return (void*)soap_instantiate_paylid__getAccountBalanceResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_paylid_paylid__getAccountBalance: + return (void*)soap_instantiate_paylid__getAccountBalance(soap, -1, type, arrayType, n); + case SOAP_TYPE_paylid_paylid__transferFundResponse: + return (void*)soap_instantiate_paylid__transferFundResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_paylid_paylid__transferFund: + return (void*)soap_instantiate_paylid__transferFund(soap, -1, type, arrayType, n); + case SOAP_TYPE_paylid_paylid__checkTransferStatusResponse: + return (void*)soap_instantiate_paylid__checkTransferStatusResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_paylid_paylid__checkTransferStatus: + return (void*)soap_instantiate_paylid__checkTransferStatus(soap, -1, type, arrayType, n); + case SOAP_TYPE_paylid_paylid__directAirTimeTopUpResponse: + return (void*)soap_instantiate_paylid__directAirTimeTopUpResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_paylid_paylid__directAirTimeTopUp: + return (void*)soap_instantiate_paylid__directAirTimeTopUp(soap, -1, type, arrayType, n); + case SOAP_TYPE_paylid_paylid__currentXrateResponse: + return (void*)soap_instantiate_paylid__currentXrateResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_paylid_paylid__currentXrate: + return (void*)soap_instantiate_paylid__currentXrate(soap, -1, type, arrayType, n); + case SOAP_TYPE_paylid_paylid__getAccountResponse: + return (void*)soap_instantiate_paylid__getAccountResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_paylid_paylid__getAccount: + return (void*)soap_instantiate_paylid__getAccount(soap, -1, type, arrayType, n); + case SOAP_TYPE_paylid_paylid__getTrxStatusResponse: + return (void*)soap_instantiate_paylid__getTrxStatusResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_paylid_paylid__getTrxStatus: + return (void*)soap_instantiate_paylid__getTrxStatus(soap, -1, type, arrayType, n); + case SOAP_TYPE_paylid_paylid__getSupportedBanksResponse: + return (void*)soap_instantiate_paylid__getSupportedBanksResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_paylid_paylid__getSupportedBanks: + return (void*)soap_instantiate_paylid__getSupportedBanks(soap, -1, type, arrayType, n); +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_paylid_SOAP_ENV__Header: + return (void*)soap_instantiate_SOAP_ENV__Header(soap, -1, type, arrayType, n); +#endif +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_paylid_SOAP_ENV__Code: + return (void*)soap_instantiate_SOAP_ENV__Code(soap, -1, type, arrayType, n); +#endif +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_paylid_SOAP_ENV__Detail: + return (void*)soap_instantiate_SOAP_ENV__Detail(soap, -1, type, arrayType, n); +#endif +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_paylid_SOAP_ENV__Reason: + return (void*)soap_instantiate_SOAP_ENV__Reason(soap, -1, type, arrayType, n); +#endif +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_paylid_SOAP_ENV__Fault: + return (void*)soap_instantiate_SOAP_ENV__Fault(soap, -1, type, arrayType, n); +#endif + } + return NULL; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_fdelete(struct soap_clist *p) +{ switch (p->type) + { + case SOAP_TYPE_paylid_std__string: + if (p->size < 0) + SOAP_DELETE((std::string*)p->ptr); + else + SOAP_DELETE_ARRAY((std::string*)p->ptr); + break; + case SOAP_TYPE_paylid_paylid__getAccountBalanceResponse: + if (p->size < 0) + SOAP_DELETE((struct paylid__getAccountBalanceResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((struct paylid__getAccountBalanceResponse*)p->ptr); + break; + case SOAP_TYPE_paylid_paylid__getAccountBalance: + if (p->size < 0) + SOAP_DELETE((struct paylid__getAccountBalance*)p->ptr); + else + SOAP_DELETE_ARRAY((struct paylid__getAccountBalance*)p->ptr); + break; + case SOAP_TYPE_paylid_paylid__transferFundResponse: + if (p->size < 0) + SOAP_DELETE((struct paylid__transferFundResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((struct paylid__transferFundResponse*)p->ptr); + break; + case SOAP_TYPE_paylid_paylid__transferFund: + if (p->size < 0) + SOAP_DELETE((struct paylid__transferFund*)p->ptr); + else + SOAP_DELETE_ARRAY((struct paylid__transferFund*)p->ptr); + break; + case SOAP_TYPE_paylid_paylid__checkTransferStatusResponse: + if (p->size < 0) + SOAP_DELETE((struct paylid__checkTransferStatusResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((struct paylid__checkTransferStatusResponse*)p->ptr); + break; + case SOAP_TYPE_paylid_paylid__checkTransferStatus: + if (p->size < 0) + SOAP_DELETE((struct paylid__checkTransferStatus*)p->ptr); + else + SOAP_DELETE_ARRAY((struct paylid__checkTransferStatus*)p->ptr); + break; + case SOAP_TYPE_paylid_paylid__directAirTimeTopUpResponse: + if (p->size < 0) + SOAP_DELETE((struct paylid__directAirTimeTopUpResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((struct paylid__directAirTimeTopUpResponse*)p->ptr); + break; + case SOAP_TYPE_paylid_paylid__directAirTimeTopUp: + if (p->size < 0) + SOAP_DELETE((struct paylid__directAirTimeTopUp*)p->ptr); + else + SOAP_DELETE_ARRAY((struct paylid__directAirTimeTopUp*)p->ptr); + break; + case SOAP_TYPE_paylid_paylid__currentXrateResponse: + if (p->size < 0) + SOAP_DELETE((struct paylid__currentXrateResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((struct paylid__currentXrateResponse*)p->ptr); + break; + case SOAP_TYPE_paylid_paylid__currentXrate: + if (p->size < 0) + SOAP_DELETE((struct paylid__currentXrate*)p->ptr); + else + SOAP_DELETE_ARRAY((struct paylid__currentXrate*)p->ptr); + break; + case SOAP_TYPE_paylid_paylid__getAccountResponse: + if (p->size < 0) + SOAP_DELETE((struct paylid__getAccountResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((struct paylid__getAccountResponse*)p->ptr); + break; + case SOAP_TYPE_paylid_paylid__getAccount: + if (p->size < 0) + SOAP_DELETE((struct paylid__getAccount*)p->ptr); + else + SOAP_DELETE_ARRAY((struct paylid__getAccount*)p->ptr); + break; + case SOAP_TYPE_paylid_paylid__getTrxStatusResponse: + if (p->size < 0) + SOAP_DELETE((struct paylid__getTrxStatusResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((struct paylid__getTrxStatusResponse*)p->ptr); + break; + case SOAP_TYPE_paylid_paylid__getTrxStatus: + if (p->size < 0) + SOAP_DELETE((struct paylid__getTrxStatus*)p->ptr); + else + SOAP_DELETE_ARRAY((struct paylid__getTrxStatus*)p->ptr); + break; + case SOAP_TYPE_paylid_paylid__getSupportedBanksResponse: + if (p->size < 0) + SOAP_DELETE((struct paylid__getSupportedBanksResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((struct paylid__getSupportedBanksResponse*)p->ptr); + break; + case SOAP_TYPE_paylid_paylid__getSupportedBanks: + if (p->size < 0) + SOAP_DELETE((struct paylid__getSupportedBanks*)p->ptr); + else + SOAP_DELETE_ARRAY((struct paylid__getSupportedBanks*)p->ptr); + break; + case SOAP_TYPE_paylid_SOAP_ENV__Header: + if (p->size < 0) + SOAP_DELETE((struct SOAP_ENV__Header*)p->ptr); + else + SOAP_DELETE_ARRAY((struct SOAP_ENV__Header*)p->ptr); + break; + case SOAP_TYPE_paylid_SOAP_ENV__Code: + if (p->size < 0) + SOAP_DELETE((struct SOAP_ENV__Code*)p->ptr); + else + SOAP_DELETE_ARRAY((struct SOAP_ENV__Code*)p->ptr); + break; + case SOAP_TYPE_paylid_SOAP_ENV__Detail: + if (p->size < 0) + SOAP_DELETE((struct SOAP_ENV__Detail*)p->ptr); + else + SOAP_DELETE_ARRAY((struct SOAP_ENV__Detail*)p->ptr); + break; + case SOAP_TYPE_paylid_SOAP_ENV__Reason: + if (p->size < 0) + SOAP_DELETE((struct SOAP_ENV__Reason*)p->ptr); + else + SOAP_DELETE_ARRAY((struct SOAP_ENV__Reason*)p->ptr); + break; + case SOAP_TYPE_paylid_SOAP_ENV__Fault: + if (p->size < 0) + SOAP_DELETE((struct SOAP_ENV__Fault*)p->ptr); + else + SOAP_DELETE_ARRAY((struct SOAP_ENV__Fault*)p->ptr); + break; + default: return SOAP_ERR; + } + return SOAP_OK; +} + +SOAP_FMAC3 void* SOAP_FMAC4 soap_class_id_enter(struct soap *soap, const char *id, void *p, int t, size_t n, const char *type, const char *arrayType) +{ return soap_id_enter(soap, id, p, t, n, 0, type, arrayType, soap_instantiate); +} + +SOAP_FMAC3 void* SOAP_FMAC4 soap_container_id_forward(struct soap *soap, const char *href, void *p, size_t len, int st, int tt, size_t n, unsigned int k) +{ return soap_id_forward(soap, href, p, len, st, tt, n, k, soap_container_insert); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_container_insert(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +#ifdef WIN32 +#pragma warning(push) +#pragma warning(disable:4065) +#endif +{ + (void)soap; (void)st; (void)p; (void)len; (void)q; (void)n; /* appease -Wall -Werror */ + switch (tt) + { + default: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not insert type=%d in %d\n", st, tt)); + } +#ifdef WIN32 +#pragma warning(pop) +#endif +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_byte(struct soap *soap, char *a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_byte + *a = SOAP_DEFAULT_byte; +#else + *a = (char)0; +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_byte(struct soap *soap, const char *tag, int id, const char *a, const char *type) +{ + return soap_outbyte(soap, tag, id, a, type, SOAP_TYPE_paylid_byte); +} + +SOAP_FMAC3 char * SOAP_FMAC4 soap_in_byte(struct soap *soap, const char *tag, char *a, const char *type) +{ char *p; + p = soap_inbyte(soap, tag, a, type, SOAP_TYPE_paylid_byte); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_byte(struct soap *soap, const char *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_byte); + if (soap_out_byte(soap, tag?tag:"byte", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 char * SOAP_FMAC4 soap_get_byte(struct soap *soap, char *p, const char *tag, const char *type) +{ + if ((p = soap_in_byte(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_int(struct soap *soap, int *a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_int + *a = SOAP_DEFAULT_int; +#else + *a = (int)0; +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_int(struct soap *soap, const char *tag, int id, const int *a, const char *type) +{ + return soap_outint(soap, tag, id, a, type, SOAP_TYPE_paylid_int); +} + +SOAP_FMAC3 int * SOAP_FMAC4 soap_in_int(struct soap *soap, const char *tag, int *a, const char *type) +{ int *p; + p = soap_inint(soap, tag, a, type, SOAP_TYPE_paylid_int); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_int(struct soap *soap, const int *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_int); + if (soap_out_int(soap, tag?tag:"int", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 int * SOAP_FMAC4 soap_get_int(struct soap *soap, int *p, const char *tag, const char *type) +{ + if ((p = soap_in_int(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_std__string(struct soap *soap, std::string *p) +{ + (void)soap; /* appease -Wall -Werror */ + p->erase(); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__string(struct soap *soap, const std::string *p) +{ (void)soap; (void)p; /* appease -Wall -Werror */ +} +SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__string(struct soap *soap, const char *tag, int id, const std::string *s, const char *type) +{ + if ((soap->mode & SOAP_C_NILSTRING) && s->empty()) + return soap_element_null(soap, tag, id, type); + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, s, SOAP_TYPE_paylid_std__string), type) || soap_string_out(soap, s->c_str(), 0) || soap_element_end_out(soap, tag)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_std__string(struct soap *soap, const char *tag, std::string *s, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!s) + s = soap_new_std__string(soap, -1); + if (soap->null) + if (s) + s->erase(); + if (soap->body && !*soap->href) + { char *t; + s = (std::string*)soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_paylid_std__string, sizeof(std::string), soap->type, soap->arrayType); + if (s) + { if ((t = soap_string_in(soap, 1, -1, -1))) + s->assign(t); + else + return NULL; + } + } + else + s = (std::string*)soap_id_forward(soap, soap->href, soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_paylid_std__string, sizeof(std::string), soap->type, soap->arrayType), 0, SOAP_TYPE_paylid_std__string, 0, sizeof(std::string), 0, soap_copy_std__string); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + return s; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__string(struct soap *soap, const std::string *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_std__string); + if (soap_out_std__string(soap, tag?tag:"string", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_std__string(struct soap *soap, std::string *p, const char *tag, const char *type) +{ + if ((p = soap_in_std__string(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 std::string * SOAP_FMAC2 soap_instantiate_std__string(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_std__string(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_std__string, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(std::string); + if (size) + *size = sizeof(std::string); + } + else + { cp->ptr = (void*)SOAP_NEW(std::string[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(std::string); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (std::string*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_std__string(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying std::string %p -> %p\n", q, p)); + *(std::string*)p = *(std::string*)q; +} + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Fault(struct soap *soap, struct SOAP_ENV__Fault *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default__QName(soap, &a->faultcode); + soap_default_string(soap, &a->faultstring); + soap_default_string(soap, &a->faultactor); + a->detail = NULL; + a->SOAP_ENV__Code = NULL; + a->SOAP_ENV__Reason = NULL; + soap_default_string(soap, &a->SOAP_ENV__Node); + soap_default_string(soap, &a->SOAP_ENV__Role); + a->SOAP_ENV__Detail = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Fault(struct soap *soap, const struct SOAP_ENV__Fault *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize__QName(soap, &a->faultcode); + soap_serialize_string(soap, &a->faultstring); + soap_serialize_string(soap, &a->faultactor); + soap_serialize_PointerToSOAP_ENV__Detail(soap, &a->detail); + soap_serialize_PointerToSOAP_ENV__Code(soap, &a->SOAP_ENV__Code); + soap_serialize_PointerToSOAP_ENV__Reason(soap, &a->SOAP_ENV__Reason); + soap_serialize_string(soap, &a->SOAP_ENV__Node); + soap_serialize_string(soap, &a->SOAP_ENV__Role); + soap_serialize_PointerToSOAP_ENV__Detail(soap, &a->SOAP_ENV__Detail); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Fault(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Fault *a, const char *type) +{ + const char *soap_tmp_faultcode = soap_QName2s(soap, a->faultcode); + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_SOAP_ENV__Fault), type)) + return soap->error; + if (soap_out__QName(soap, "faultcode", -1, (char*const*)&soap_tmp_faultcode, "")) + return soap->error; + if (soap_out_string(soap, "faultstring", -1, &a->faultstring, "")) + return soap->error; + if (soap_out_string(soap, "faultactor", -1, &a->faultactor, "")) + return soap->error; + if (soap_out_PointerToSOAP_ENV__Detail(soap, "detail", -1, &a->detail, "")) + return soap->error; + if (soap_out_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Code", -1, &a->SOAP_ENV__Code, "")) + return soap->error; + if (soap_out_PointerToSOAP_ENV__Reason(soap, "SOAP-ENV:Reason", -1, &a->SOAP_ENV__Reason, "")) + return soap->error; + if (soap_out_string(soap, "SOAP-ENV:Node", -1, &a->SOAP_ENV__Node, "")) + return soap->error; + if (soap_out_string(soap, "SOAP-ENV:Role", -1, &a->SOAP_ENV__Role, "")) + return soap->error; + if (soap_out_PointerToSOAP_ENV__Detail(soap, "SOAP-ENV:Detail", -1, &a->SOAP_ENV__Detail, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_in_SOAP_ENV__Fault(struct soap *soap, const char *tag, struct SOAP_ENV__Fault *a, const char *type) +{ + size_t soap_flag_faultcode = 1; + size_t soap_flag_faultstring = 1; + size_t soap_flag_faultactor = 1; + size_t soap_flag_detail = 1; + size_t soap_flag_SOAP_ENV__Code = 1; + size_t soap_flag_SOAP_ENV__Reason = 1; + size_t soap_flag_SOAP_ENV__Node = 1; + size_t soap_flag_SOAP_ENV__Role = 1; + size_t soap_flag_SOAP_ENV__Detail = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct SOAP_ENV__Fault *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_SOAP_ENV__Fault, sizeof(struct SOAP_ENV__Fault), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default_SOAP_ENV__Fault(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_faultcode && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in__QName(soap, "faultcode", &a->faultcode, "")) + { soap_flag_faultcode--; + continue; + } + if (soap_flag_faultstring && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_string(soap, "faultstring", &a->faultstring, "xsd:string")) + { soap_flag_faultstring--; + continue; + } + if (soap_flag_faultactor && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_string(soap, "faultactor", &a->faultactor, "xsd:string")) + { soap_flag_faultactor--; + continue; + } + if (soap_flag_detail && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerToSOAP_ENV__Detail(soap, "detail", &a->detail, "")) + { soap_flag_detail--; + continue; + } + if (soap_flag_SOAP_ENV__Code && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Code", &a->SOAP_ENV__Code, "")) + { soap_flag_SOAP_ENV__Code--; + continue; + } + if (soap_flag_SOAP_ENV__Reason && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerToSOAP_ENV__Reason(soap, "SOAP-ENV:Reason", &a->SOAP_ENV__Reason, "")) + { soap_flag_SOAP_ENV__Reason--; + continue; + } + if (soap_flag_SOAP_ENV__Node && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_string(soap, "SOAP-ENV:Node", &a->SOAP_ENV__Node, "xsd:string")) + { soap_flag_SOAP_ENV__Node--; + continue; + } + if (soap_flag_SOAP_ENV__Role && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_string(soap, "SOAP-ENV:Role", &a->SOAP_ENV__Role, "xsd:string")) + { soap_flag_SOAP_ENV__Role--; + continue; + } + if (soap_flag_SOAP_ENV__Detail && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerToSOAP_ENV__Detail(soap, "SOAP-ENV:Detail", &a->SOAP_ENV__Detail, "")) + { soap_flag_SOAP_ENV__Detail--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct SOAP_ENV__Fault *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_SOAP_ENV__Fault, 0, sizeof(struct SOAP_ENV__Fault), 0, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Fault(struct soap *soap, const struct SOAP_ENV__Fault *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_SOAP_ENV__Fault); + if (soap_out_SOAP_ENV__Fault(soap, tag?tag:"SOAP-ENV:Fault", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_get_SOAP_ENV__Fault(struct soap *soap, struct SOAP_ENV__Fault *p, const char *tag, const char *type) +{ + if ((p = soap_in_SOAP_ENV__Fault(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct SOAP_ENV__Fault * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Fault(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Fault(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_SOAP_ENV__Fault, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Fault); + if (size) + *size = sizeof(struct SOAP_ENV__Fault); + } + else + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Fault[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct SOAP_ENV__Fault); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct SOAP_ENV__Fault*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Fault(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Fault %p -> %p\n", q, p)); + *(struct SOAP_ENV__Fault*)p = *(struct SOAP_ENV__Fault*)q; +} + +#endif + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_string(soap, &a->SOAP_ENV__Text); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Reason(struct soap *soap, const struct SOAP_ENV__Reason *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_string(soap, &a->SOAP_ENV__Text); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Reason(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Reason *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_SOAP_ENV__Reason), type)) + return soap->error; + if (soap->lang) + soap_set_attr(soap, "xml:lang", soap->lang); + if (soap_out_string(soap, "SOAP-ENV:Text", -1, &a->SOAP_ENV__Text, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_in_SOAP_ENV__Reason(struct soap *soap, const char *tag, struct SOAP_ENV__Reason *a, const char *type) +{ + size_t soap_flag_SOAP_ENV__Text = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct SOAP_ENV__Reason *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_SOAP_ENV__Reason, sizeof(struct SOAP_ENV__Reason), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default_SOAP_ENV__Reason(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_SOAP_ENV__Text && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_string(soap, "SOAP-ENV:Text", &a->SOAP_ENV__Text, "xsd:string")) + { soap_flag_SOAP_ENV__Text--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct SOAP_ENV__Reason *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_SOAP_ENV__Reason, 0, sizeof(struct SOAP_ENV__Reason), 0, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Reason(struct soap *soap, const struct SOAP_ENV__Reason *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_SOAP_ENV__Reason); + if (soap_out_SOAP_ENV__Reason(soap, tag?tag:"SOAP-ENV:Reason", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_get_SOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *p, const char *tag, const char *type) +{ + if ((p = soap_in_SOAP_ENV__Reason(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct SOAP_ENV__Reason * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Reason(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Reason(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_SOAP_ENV__Reason, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Reason); + if (size) + *size = sizeof(struct SOAP_ENV__Reason); + } + else + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Reason[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct SOAP_ENV__Reason); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct SOAP_ENV__Reason*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Reason(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Reason %p -> %p\n", q, p)); + *(struct SOAP_ENV__Reason*)p = *(struct SOAP_ENV__Reason*)q; +} + +#endif + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->__type = 0; + a->fault = NULL; + a->__any = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Detail(struct soap *soap, const struct SOAP_ENV__Detail *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_markelement(soap, a->fault, a->__type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Detail(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Detail *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_SOAP_ENV__Detail), type)) + return soap->error; + if (soap_putelement(soap, a->fault, "fault", -1, a->__type)) + return soap->error; + soap_outliteral(soap, "-any", &a->__any, NULL); + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_in_SOAP_ENV__Detail(struct soap *soap, const char *tag, struct SOAP_ENV__Detail *a, const char *type) +{ + size_t soap_flag_fault = 1; + size_t soap_flag___any = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct SOAP_ENV__Detail *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_SOAP_ENV__Detail, sizeof(struct SOAP_ENV__Detail), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default_SOAP_ENV__Detail(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_fault && soap->error == SOAP_TAG_MISMATCH) + if ((a->fault = soap_getelement(soap, &a->__type))) + { soap_flag_fault = 0; + continue; + } + if (soap_flag___any && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_inliteral(soap, "-any", &a->__any)) + { soap_flag___any--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct SOAP_ENV__Detail *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_SOAP_ENV__Detail, 0, sizeof(struct SOAP_ENV__Detail), 0, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Detail(struct soap *soap, const struct SOAP_ENV__Detail *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_SOAP_ENV__Detail); + if (soap_out_SOAP_ENV__Detail(soap, tag?tag:"SOAP-ENV:Detail", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_get_SOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *p, const char *tag, const char *type) +{ + if ((p = soap_in_SOAP_ENV__Detail(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct SOAP_ENV__Detail * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Detail(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Detail(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_SOAP_ENV__Detail, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Detail); + if (size) + *size = sizeof(struct SOAP_ENV__Detail); + } + else + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Detail[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct SOAP_ENV__Detail); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct SOAP_ENV__Detail*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Detail(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Detail %p -> %p\n", q, p)); + *(struct SOAP_ENV__Detail*)p = *(struct SOAP_ENV__Detail*)q; +} + +#endif + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default__QName(soap, &a->SOAP_ENV__Value); + a->SOAP_ENV__Subcode = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Code(struct soap *soap, const struct SOAP_ENV__Code *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize__QName(soap, &a->SOAP_ENV__Value); + soap_serialize_PointerToSOAP_ENV__Code(soap, &a->SOAP_ENV__Subcode); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Code(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Code *a, const char *type) +{ + const char *soap_tmp_SOAP_ENV__Value = soap_QName2s(soap, a->SOAP_ENV__Value); + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_SOAP_ENV__Code), type)) + return soap->error; + if (soap_out__QName(soap, "SOAP-ENV:Value", -1, (char*const*)&soap_tmp_SOAP_ENV__Value, "")) + return soap->error; + if (soap_out_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Subcode", -1, &a->SOAP_ENV__Subcode, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_in_SOAP_ENV__Code(struct soap *soap, const char *tag, struct SOAP_ENV__Code *a, const char *type) +{ + size_t soap_flag_SOAP_ENV__Value = 1; + size_t soap_flag_SOAP_ENV__Subcode = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct SOAP_ENV__Code *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_SOAP_ENV__Code, sizeof(struct SOAP_ENV__Code), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default_SOAP_ENV__Code(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_SOAP_ENV__Value && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in__QName(soap, "SOAP-ENV:Value", &a->SOAP_ENV__Value, "")) + { soap_flag_SOAP_ENV__Value--; + continue; + } + if (soap_flag_SOAP_ENV__Subcode && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Subcode", &a->SOAP_ENV__Subcode, "")) + { soap_flag_SOAP_ENV__Subcode--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct SOAP_ENV__Code *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_SOAP_ENV__Code, 0, sizeof(struct SOAP_ENV__Code), 0, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Code(struct soap *soap, const struct SOAP_ENV__Code *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_SOAP_ENV__Code); + if (soap_out_SOAP_ENV__Code(soap, tag?tag:"SOAP-ENV:Code", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_get_SOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *p, const char *tag, const char *type) +{ + if ((p = soap_in_SOAP_ENV__Code(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct SOAP_ENV__Code * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Code(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Code(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_SOAP_ENV__Code, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Code); + if (size) + *size = sizeof(struct SOAP_ENV__Code); + } + else + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Code[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct SOAP_ENV__Code); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct SOAP_ENV__Code*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Code(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Code %p -> %p\n", q, p)); + *(struct SOAP_ENV__Code*)p = *(struct SOAP_ENV__Code*)q; +} + +#endif + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Header(struct soap *soap, struct SOAP_ENV__Header *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Header(struct soap *soap, const struct SOAP_ENV__Header *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Header(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Header *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_SOAP_ENV__Header), type)) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_in_SOAP_ENV__Header(struct soap *soap, const char *tag, struct SOAP_ENV__Header *a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct SOAP_ENV__Header *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_SOAP_ENV__Header, sizeof(struct SOAP_ENV__Header), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default_SOAP_ENV__Header(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct SOAP_ENV__Header *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_SOAP_ENV__Header, 0, sizeof(struct SOAP_ENV__Header), 0, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Header(struct soap *soap, const struct SOAP_ENV__Header *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_SOAP_ENV__Header); + if (soap_out_SOAP_ENV__Header(soap, tag?tag:"SOAP-ENV:Header", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_get_SOAP_ENV__Header(struct soap *soap, struct SOAP_ENV__Header *p, const char *tag, const char *type) +{ + if ((p = soap_in_SOAP_ENV__Header(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct SOAP_ENV__Header * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Header(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Header(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_SOAP_ENV__Header, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Header); + if (size) + *size = sizeof(struct SOAP_ENV__Header); + } + else + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Header[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct SOAP_ENV__Header); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct SOAP_ENV__Header*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Header(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Header %p -> %p\n", q, p)); + *(struct SOAP_ENV__Header*)p = *(struct SOAP_ENV__Header*)q; +} + +#endif + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getSupportedBanks(struct soap *soap, struct paylid__getSupportedBanks *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_std__string(soap, &a->terminalID); + soap_default_std__string(soap, &a->topupData); + soap_default_std__string(soap, &a->hmac); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getSupportedBanks(struct soap *soap, const struct paylid__getSupportedBanks *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_std__string(soap, &a->terminalID); + soap_serialize_std__string(soap, &a->topupData); + soap_serialize_std__string(soap, &a->hmac); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getSupportedBanks(struct soap *soap, const char *tag, int id, const struct paylid__getSupportedBanks *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_paylid__getSupportedBanks), type)) + return soap->error; + if (soap_out_std__string(soap, "terminalID", -1, &a->terminalID, "")) + return soap->error; + if (soap_out_std__string(soap, "topupData", -1, &a->topupData, "")) + return soap->error; + if (soap_out_std__string(soap, "hmac", -1, &a->hmac, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct paylid__getSupportedBanks * SOAP_FMAC4 soap_in_paylid__getSupportedBanks(struct soap *soap, const char *tag, struct paylid__getSupportedBanks *a, const char *type) +{ + size_t soap_flag_terminalID = 1; + size_t soap_flag_topupData = 1; + size_t soap_flag_hmac = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct paylid__getSupportedBanks *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_paylid__getSupportedBanks, sizeof(struct paylid__getSupportedBanks), soap->type, soap->arrayType); + if (!a) + return NULL; + soap_default_paylid__getSupportedBanks(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_terminalID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "terminalID", &a->terminalID, "xsd:string")) + { soap_flag_terminalID--; + continue; + } + if (soap_flag_topupData && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "topupData", &a->topupData, "xsd:string")) + { soap_flag_topupData--; + continue; + } + if (soap_flag_hmac && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "hmac", &a->hmac, "xsd:string")) + { soap_flag_hmac--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct paylid__getSupportedBanks *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_paylid__getSupportedBanks, 0, sizeof(struct paylid__getSupportedBanks), 0, soap_copy_paylid__getSupportedBanks); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_terminalID > 0 || soap_flag_topupData > 0 || soap_flag_hmac > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getSupportedBanks(struct soap *soap, const struct paylid__getSupportedBanks *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_paylid__getSupportedBanks); + if (soap_out_paylid__getSupportedBanks(soap, tag?tag:"paylid:getSupportedBanks", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct paylid__getSupportedBanks * SOAP_FMAC4 soap_get_paylid__getSupportedBanks(struct soap *soap, struct paylid__getSupportedBanks *p, const char *tag, const char *type) +{ + if ((p = soap_in_paylid__getSupportedBanks(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct paylid__getSupportedBanks * SOAP_FMAC2 soap_instantiate_paylid__getSupportedBanks(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_paylid__getSupportedBanks(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_paylid__getSupportedBanks, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct paylid__getSupportedBanks); + if (size) + *size = sizeof(struct paylid__getSupportedBanks); + } + else + { cp->ptr = (void*)SOAP_NEW(struct paylid__getSupportedBanks[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct paylid__getSupportedBanks); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct paylid__getSupportedBanks*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getSupportedBanks(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct paylid__getSupportedBanks %p -> %p\n", q, p)); + *(struct paylid__getSupportedBanks*)p = *(struct paylid__getSupportedBanks*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getSupportedBanksResponse(struct soap *soap, struct paylid__getSupportedBanksResponse *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_std__string(soap, &a->Code); + soap_default_std__string(soap, &a->Data); + soap_default_std__string(soap, &a->Hmac); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getSupportedBanksResponse(struct soap *soap, const struct paylid__getSupportedBanksResponse *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_std__string(soap, &a->Code); + soap_serialize_std__string(soap, &a->Data); + soap_serialize_std__string(soap, &a->Hmac); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getSupportedBanksResponse(struct soap *soap, const char *tag, int id, const struct paylid__getSupportedBanksResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_paylid__getSupportedBanksResponse), type)) + return soap->error; + if (soap_out_std__string(soap, "Code", -1, &a->Code, "")) + return soap->error; + if (soap_out_std__string(soap, "Data", -1, &a->Data, "")) + return soap->error; + if (soap_out_std__string(soap, "Hmac", -1, &a->Hmac, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct paylid__getSupportedBanksResponse * SOAP_FMAC4 soap_in_paylid__getSupportedBanksResponse(struct soap *soap, const char *tag, struct paylid__getSupportedBanksResponse *a, const char *type) +{ + size_t soap_flag_Code = 1; + size_t soap_flag_Data = 1; + size_t soap_flag_Hmac = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct paylid__getSupportedBanksResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_paylid__getSupportedBanksResponse, sizeof(struct paylid__getSupportedBanksResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + soap_default_paylid__getSupportedBanksResponse(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_Code && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Code", &a->Code, "xsd:string")) + { soap_flag_Code--; + continue; + } + if (soap_flag_Data && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Data", &a->Data, "xsd:string")) + { soap_flag_Data--; + continue; + } + if (soap_flag_Hmac && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Hmac", &a->Hmac, "xsd:string")) + { soap_flag_Hmac--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct paylid__getSupportedBanksResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_paylid__getSupportedBanksResponse, 0, sizeof(struct paylid__getSupportedBanksResponse), 0, soap_copy_paylid__getSupportedBanksResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_Code > 0 || soap_flag_Data > 0 || soap_flag_Hmac > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getSupportedBanksResponse(struct soap *soap, const struct paylid__getSupportedBanksResponse *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_paylid__getSupportedBanksResponse); + if (soap_out_paylid__getSupportedBanksResponse(soap, tag?tag:"paylid:getSupportedBanksResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct paylid__getSupportedBanksResponse * SOAP_FMAC4 soap_get_paylid__getSupportedBanksResponse(struct soap *soap, struct paylid__getSupportedBanksResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in_paylid__getSupportedBanksResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct paylid__getSupportedBanksResponse * SOAP_FMAC2 soap_instantiate_paylid__getSupportedBanksResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_paylid__getSupportedBanksResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_paylid__getSupportedBanksResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct paylid__getSupportedBanksResponse); + if (size) + *size = sizeof(struct paylid__getSupportedBanksResponse); + } + else + { cp->ptr = (void*)SOAP_NEW(struct paylid__getSupportedBanksResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct paylid__getSupportedBanksResponse); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct paylid__getSupportedBanksResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getSupportedBanksResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct paylid__getSupportedBanksResponse %p -> %p\n", q, p)); + *(struct paylid__getSupportedBanksResponse*)p = *(struct paylid__getSupportedBanksResponse*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getTrxStatus(struct soap *soap, struct paylid__getTrxStatus *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_std__string(soap, &a->terminalID); + soap_default_std__string(soap, &a->topupData); + soap_default_std__string(soap, &a->hmac); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getTrxStatus(struct soap *soap, const struct paylid__getTrxStatus *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_std__string(soap, &a->terminalID); + soap_serialize_std__string(soap, &a->topupData); + soap_serialize_std__string(soap, &a->hmac); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getTrxStatus(struct soap *soap, const char *tag, int id, const struct paylid__getTrxStatus *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_paylid__getTrxStatus), type)) + return soap->error; + if (soap_out_std__string(soap, "terminalID", -1, &a->terminalID, "")) + return soap->error; + if (soap_out_std__string(soap, "topupData", -1, &a->topupData, "")) + return soap->error; + if (soap_out_std__string(soap, "hmac", -1, &a->hmac, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct paylid__getTrxStatus * SOAP_FMAC4 soap_in_paylid__getTrxStatus(struct soap *soap, const char *tag, struct paylid__getTrxStatus *a, const char *type) +{ + size_t soap_flag_terminalID = 1; + size_t soap_flag_topupData = 1; + size_t soap_flag_hmac = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct paylid__getTrxStatus *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_paylid__getTrxStatus, sizeof(struct paylid__getTrxStatus), soap->type, soap->arrayType); + if (!a) + return NULL; + soap_default_paylid__getTrxStatus(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_terminalID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "terminalID", &a->terminalID, "xsd:string")) + { soap_flag_terminalID--; + continue; + } + if (soap_flag_topupData && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "topupData", &a->topupData, "xsd:string")) + { soap_flag_topupData--; + continue; + } + if (soap_flag_hmac && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "hmac", &a->hmac, "xsd:string")) + { soap_flag_hmac--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct paylid__getTrxStatus *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_paylid__getTrxStatus, 0, sizeof(struct paylid__getTrxStatus), 0, soap_copy_paylid__getTrxStatus); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_terminalID > 0 || soap_flag_topupData > 0 || soap_flag_hmac > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getTrxStatus(struct soap *soap, const struct paylid__getTrxStatus *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_paylid__getTrxStatus); + if (soap_out_paylid__getTrxStatus(soap, tag?tag:"paylid:getTrxStatus", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct paylid__getTrxStatus * SOAP_FMAC4 soap_get_paylid__getTrxStatus(struct soap *soap, struct paylid__getTrxStatus *p, const char *tag, const char *type) +{ + if ((p = soap_in_paylid__getTrxStatus(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct paylid__getTrxStatus * SOAP_FMAC2 soap_instantiate_paylid__getTrxStatus(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_paylid__getTrxStatus(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_paylid__getTrxStatus, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct paylid__getTrxStatus); + if (size) + *size = sizeof(struct paylid__getTrxStatus); + } + else + { cp->ptr = (void*)SOAP_NEW(struct paylid__getTrxStatus[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct paylid__getTrxStatus); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct paylid__getTrxStatus*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getTrxStatus(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct paylid__getTrxStatus %p -> %p\n", q, p)); + *(struct paylid__getTrxStatus*)p = *(struct paylid__getTrxStatus*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getTrxStatusResponse(struct soap *soap, struct paylid__getTrxStatusResponse *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_std__string(soap, &a->Code); + soap_default_std__string(soap, &a->Data); + soap_default_std__string(soap, &a->Hmac); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getTrxStatusResponse(struct soap *soap, const struct paylid__getTrxStatusResponse *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_std__string(soap, &a->Code); + soap_serialize_std__string(soap, &a->Data); + soap_serialize_std__string(soap, &a->Hmac); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getTrxStatusResponse(struct soap *soap, const char *tag, int id, const struct paylid__getTrxStatusResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_paylid__getTrxStatusResponse), type)) + return soap->error; + if (soap_out_std__string(soap, "Code", -1, &a->Code, "")) + return soap->error; + if (soap_out_std__string(soap, "Data", -1, &a->Data, "")) + return soap->error; + if (soap_out_std__string(soap, "Hmac", -1, &a->Hmac, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct paylid__getTrxStatusResponse * SOAP_FMAC4 soap_in_paylid__getTrxStatusResponse(struct soap *soap, const char *tag, struct paylid__getTrxStatusResponse *a, const char *type) +{ + size_t soap_flag_Code = 1; + size_t soap_flag_Data = 1; + size_t soap_flag_Hmac = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct paylid__getTrxStatusResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_paylid__getTrxStatusResponse, sizeof(struct paylid__getTrxStatusResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + soap_default_paylid__getTrxStatusResponse(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_Code && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Code", &a->Code, "xsd:string")) + { soap_flag_Code--; + continue; + } + if (soap_flag_Data && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Data", &a->Data, "xsd:string")) + { soap_flag_Data--; + continue; + } + if (soap_flag_Hmac && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Hmac", &a->Hmac, "xsd:string")) + { soap_flag_Hmac--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct paylid__getTrxStatusResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_paylid__getTrxStatusResponse, 0, sizeof(struct paylid__getTrxStatusResponse), 0, soap_copy_paylid__getTrxStatusResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_Code > 0 || soap_flag_Data > 0 || soap_flag_Hmac > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getTrxStatusResponse(struct soap *soap, const struct paylid__getTrxStatusResponse *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_paylid__getTrxStatusResponse); + if (soap_out_paylid__getTrxStatusResponse(soap, tag?tag:"paylid:getTrxStatusResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct paylid__getTrxStatusResponse * SOAP_FMAC4 soap_get_paylid__getTrxStatusResponse(struct soap *soap, struct paylid__getTrxStatusResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in_paylid__getTrxStatusResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct paylid__getTrxStatusResponse * SOAP_FMAC2 soap_instantiate_paylid__getTrxStatusResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_paylid__getTrxStatusResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_paylid__getTrxStatusResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct paylid__getTrxStatusResponse); + if (size) + *size = sizeof(struct paylid__getTrxStatusResponse); + } + else + { cp->ptr = (void*)SOAP_NEW(struct paylid__getTrxStatusResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct paylid__getTrxStatusResponse); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct paylid__getTrxStatusResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getTrxStatusResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct paylid__getTrxStatusResponse %p -> %p\n", q, p)); + *(struct paylid__getTrxStatusResponse*)p = *(struct paylid__getTrxStatusResponse*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getAccount(struct soap *soap, struct paylid__getAccount *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_std__string(soap, &a->terminalID); + soap_default_std__string(soap, &a->topupData); + soap_default_std__string(soap, &a->hmac); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getAccount(struct soap *soap, const struct paylid__getAccount *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_std__string(soap, &a->terminalID); + soap_serialize_std__string(soap, &a->topupData); + soap_serialize_std__string(soap, &a->hmac); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getAccount(struct soap *soap, const char *tag, int id, const struct paylid__getAccount *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_paylid__getAccount), type)) + return soap->error; + if (soap_out_std__string(soap, "terminalID", -1, &a->terminalID, "")) + return soap->error; + if (soap_out_std__string(soap, "topupData", -1, &a->topupData, "")) + return soap->error; + if (soap_out_std__string(soap, "hmac", -1, &a->hmac, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct paylid__getAccount * SOAP_FMAC4 soap_in_paylid__getAccount(struct soap *soap, const char *tag, struct paylid__getAccount *a, const char *type) +{ + size_t soap_flag_terminalID = 1; + size_t soap_flag_topupData = 1; + size_t soap_flag_hmac = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct paylid__getAccount *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_paylid__getAccount, sizeof(struct paylid__getAccount), soap->type, soap->arrayType); + if (!a) + return NULL; + soap_default_paylid__getAccount(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_terminalID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "terminalID", &a->terminalID, "xsd:string")) + { soap_flag_terminalID--; + continue; + } + if (soap_flag_topupData && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "topupData", &a->topupData, "xsd:string")) + { soap_flag_topupData--; + continue; + } + if (soap_flag_hmac && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "hmac", &a->hmac, "xsd:string")) + { soap_flag_hmac--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct paylid__getAccount *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_paylid__getAccount, 0, sizeof(struct paylid__getAccount), 0, soap_copy_paylid__getAccount); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_terminalID > 0 || soap_flag_topupData > 0 || soap_flag_hmac > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getAccount(struct soap *soap, const struct paylid__getAccount *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_paylid__getAccount); + if (soap_out_paylid__getAccount(soap, tag?tag:"paylid:getAccount", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct paylid__getAccount * SOAP_FMAC4 soap_get_paylid__getAccount(struct soap *soap, struct paylid__getAccount *p, const char *tag, const char *type) +{ + if ((p = soap_in_paylid__getAccount(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct paylid__getAccount * SOAP_FMAC2 soap_instantiate_paylid__getAccount(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_paylid__getAccount(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_paylid__getAccount, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct paylid__getAccount); + if (size) + *size = sizeof(struct paylid__getAccount); + } + else + { cp->ptr = (void*)SOAP_NEW(struct paylid__getAccount[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct paylid__getAccount); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct paylid__getAccount*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getAccount(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct paylid__getAccount %p -> %p\n", q, p)); + *(struct paylid__getAccount*)p = *(struct paylid__getAccount*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getAccountResponse(struct soap *soap, struct paylid__getAccountResponse *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_std__string(soap, &a->Code); + soap_default_std__string(soap, &a->Data); + soap_default_std__string(soap, &a->Hmac); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getAccountResponse(struct soap *soap, const struct paylid__getAccountResponse *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_std__string(soap, &a->Code); + soap_serialize_std__string(soap, &a->Data); + soap_serialize_std__string(soap, &a->Hmac); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getAccountResponse(struct soap *soap, const char *tag, int id, const struct paylid__getAccountResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_paylid__getAccountResponse), type)) + return soap->error; + if (soap_out_std__string(soap, "Code", -1, &a->Code, "")) + return soap->error; + if (soap_out_std__string(soap, "Data", -1, &a->Data, "")) + return soap->error; + if (soap_out_std__string(soap, "Hmac", -1, &a->Hmac, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct paylid__getAccountResponse * SOAP_FMAC4 soap_in_paylid__getAccountResponse(struct soap *soap, const char *tag, struct paylid__getAccountResponse *a, const char *type) +{ + size_t soap_flag_Code = 1; + size_t soap_flag_Data = 1; + size_t soap_flag_Hmac = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct paylid__getAccountResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_paylid__getAccountResponse, sizeof(struct paylid__getAccountResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + soap_default_paylid__getAccountResponse(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_Code && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Code", &a->Code, "xsd:string")) + { soap_flag_Code--; + continue; + } + if (soap_flag_Data && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Data", &a->Data, "xsd:string")) + { soap_flag_Data--; + continue; + } + if (soap_flag_Hmac && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Hmac", &a->Hmac, "xsd:string")) + { soap_flag_Hmac--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct paylid__getAccountResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_paylid__getAccountResponse, 0, sizeof(struct paylid__getAccountResponse), 0, soap_copy_paylid__getAccountResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_Code > 0 || soap_flag_Data > 0 || soap_flag_Hmac > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getAccountResponse(struct soap *soap, const struct paylid__getAccountResponse *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_paylid__getAccountResponse); + if (soap_out_paylid__getAccountResponse(soap, tag?tag:"paylid:getAccountResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct paylid__getAccountResponse * SOAP_FMAC4 soap_get_paylid__getAccountResponse(struct soap *soap, struct paylid__getAccountResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in_paylid__getAccountResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct paylid__getAccountResponse * SOAP_FMAC2 soap_instantiate_paylid__getAccountResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_paylid__getAccountResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_paylid__getAccountResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct paylid__getAccountResponse); + if (size) + *size = sizeof(struct paylid__getAccountResponse); + } + else + { cp->ptr = (void*)SOAP_NEW(struct paylid__getAccountResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct paylid__getAccountResponse); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct paylid__getAccountResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getAccountResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct paylid__getAccountResponse %p -> %p\n", q, p)); + *(struct paylid__getAccountResponse*)p = *(struct paylid__getAccountResponse*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__currentXrate(struct soap *soap, struct paylid__currentXrate *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_std__string(soap, &a->terminalID); + soap_default_std__string(soap, &a->topupData); + soap_default_std__string(soap, &a->hmac); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__currentXrate(struct soap *soap, const struct paylid__currentXrate *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_std__string(soap, &a->terminalID); + soap_serialize_std__string(soap, &a->topupData); + soap_serialize_std__string(soap, &a->hmac); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__currentXrate(struct soap *soap, const char *tag, int id, const struct paylid__currentXrate *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_paylid__currentXrate), type)) + return soap->error; + if (soap_out_std__string(soap, "terminalID", -1, &a->terminalID, "")) + return soap->error; + if (soap_out_std__string(soap, "topupData", -1, &a->topupData, "")) + return soap->error; + if (soap_out_std__string(soap, "hmac", -1, &a->hmac, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct paylid__currentXrate * SOAP_FMAC4 soap_in_paylid__currentXrate(struct soap *soap, const char *tag, struct paylid__currentXrate *a, const char *type) +{ + size_t soap_flag_terminalID = 1; + size_t soap_flag_topupData = 1; + size_t soap_flag_hmac = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct paylid__currentXrate *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_paylid__currentXrate, sizeof(struct paylid__currentXrate), soap->type, soap->arrayType); + if (!a) + return NULL; + soap_default_paylid__currentXrate(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_terminalID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "terminalID", &a->terminalID, "xsd:string")) + { soap_flag_terminalID--; + continue; + } + if (soap_flag_topupData && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "topupData", &a->topupData, "xsd:string")) + { soap_flag_topupData--; + continue; + } + if (soap_flag_hmac && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "hmac", &a->hmac, "xsd:string")) + { soap_flag_hmac--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct paylid__currentXrate *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_paylid__currentXrate, 0, sizeof(struct paylid__currentXrate), 0, soap_copy_paylid__currentXrate); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_terminalID > 0 || soap_flag_topupData > 0 || soap_flag_hmac > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__currentXrate(struct soap *soap, const struct paylid__currentXrate *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_paylid__currentXrate); + if (soap_out_paylid__currentXrate(soap, tag?tag:"paylid:currentXrate", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct paylid__currentXrate * SOAP_FMAC4 soap_get_paylid__currentXrate(struct soap *soap, struct paylid__currentXrate *p, const char *tag, const char *type) +{ + if ((p = soap_in_paylid__currentXrate(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct paylid__currentXrate * SOAP_FMAC2 soap_instantiate_paylid__currentXrate(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_paylid__currentXrate(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_paylid__currentXrate, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct paylid__currentXrate); + if (size) + *size = sizeof(struct paylid__currentXrate); + } + else + { cp->ptr = (void*)SOAP_NEW(struct paylid__currentXrate[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct paylid__currentXrate); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct paylid__currentXrate*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__currentXrate(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct paylid__currentXrate %p -> %p\n", q, p)); + *(struct paylid__currentXrate*)p = *(struct paylid__currentXrate*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__currentXrateResponse(struct soap *soap, struct paylid__currentXrateResponse *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_std__string(soap, &a->Code); + soap_default_std__string(soap, &a->Data); + soap_default_std__string(soap, &a->Hmac); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__currentXrateResponse(struct soap *soap, const struct paylid__currentXrateResponse *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_std__string(soap, &a->Code); + soap_serialize_std__string(soap, &a->Data); + soap_serialize_std__string(soap, &a->Hmac); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__currentXrateResponse(struct soap *soap, const char *tag, int id, const struct paylid__currentXrateResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_paylid__currentXrateResponse), type)) + return soap->error; + if (soap_out_std__string(soap, "Code", -1, &a->Code, "")) + return soap->error; + if (soap_out_std__string(soap, "Data", -1, &a->Data, "")) + return soap->error; + if (soap_out_std__string(soap, "Hmac", -1, &a->Hmac, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct paylid__currentXrateResponse * SOAP_FMAC4 soap_in_paylid__currentXrateResponse(struct soap *soap, const char *tag, struct paylid__currentXrateResponse *a, const char *type) +{ + size_t soap_flag_Code = 1; + size_t soap_flag_Data = 1; + size_t soap_flag_Hmac = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct paylid__currentXrateResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_paylid__currentXrateResponse, sizeof(struct paylid__currentXrateResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + soap_default_paylid__currentXrateResponse(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_Code && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Code", &a->Code, "xsd:string")) + { soap_flag_Code--; + continue; + } + if (soap_flag_Data && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Data", &a->Data, "xsd:string")) + { soap_flag_Data--; + continue; + } + if (soap_flag_Hmac && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Hmac", &a->Hmac, "xsd:string")) + { soap_flag_Hmac--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct paylid__currentXrateResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_paylid__currentXrateResponse, 0, sizeof(struct paylid__currentXrateResponse), 0, soap_copy_paylid__currentXrateResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_Code > 0 || soap_flag_Data > 0 || soap_flag_Hmac > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__currentXrateResponse(struct soap *soap, const struct paylid__currentXrateResponse *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_paylid__currentXrateResponse); + if (soap_out_paylid__currentXrateResponse(soap, tag?tag:"paylid:currentXrateResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct paylid__currentXrateResponse * SOAP_FMAC4 soap_get_paylid__currentXrateResponse(struct soap *soap, struct paylid__currentXrateResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in_paylid__currentXrateResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct paylid__currentXrateResponse * SOAP_FMAC2 soap_instantiate_paylid__currentXrateResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_paylid__currentXrateResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_paylid__currentXrateResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct paylid__currentXrateResponse); + if (size) + *size = sizeof(struct paylid__currentXrateResponse); + } + else + { cp->ptr = (void*)SOAP_NEW(struct paylid__currentXrateResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct paylid__currentXrateResponse); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct paylid__currentXrateResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__currentXrateResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct paylid__currentXrateResponse %p -> %p\n", q, p)); + *(struct paylid__currentXrateResponse*)p = *(struct paylid__currentXrateResponse*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__directAirTimeTopUp(struct soap *soap, struct paylid__directAirTimeTopUp *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_std__string(soap, &a->terminalID); + soap_default_std__string(soap, &a->topupData); + soap_default_std__string(soap, &a->hmac); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__directAirTimeTopUp(struct soap *soap, const struct paylid__directAirTimeTopUp *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_std__string(soap, &a->terminalID); + soap_serialize_std__string(soap, &a->topupData); + soap_serialize_std__string(soap, &a->hmac); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__directAirTimeTopUp(struct soap *soap, const char *tag, int id, const struct paylid__directAirTimeTopUp *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_paylid__directAirTimeTopUp), type)) + return soap->error; + if (soap_out_std__string(soap, "terminalID", -1, &a->terminalID, "")) + return soap->error; + if (soap_out_std__string(soap, "topupData", -1, &a->topupData, "")) + return soap->error; + if (soap_out_std__string(soap, "hmac", -1, &a->hmac, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct paylid__directAirTimeTopUp * SOAP_FMAC4 soap_in_paylid__directAirTimeTopUp(struct soap *soap, const char *tag, struct paylid__directAirTimeTopUp *a, const char *type) +{ + size_t soap_flag_terminalID = 1; + size_t soap_flag_topupData = 1; + size_t soap_flag_hmac = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct paylid__directAirTimeTopUp *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_paylid__directAirTimeTopUp, sizeof(struct paylid__directAirTimeTopUp), soap->type, soap->arrayType); + if (!a) + return NULL; + soap_default_paylid__directAirTimeTopUp(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_terminalID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "terminalID", &a->terminalID, "xsd:string")) + { soap_flag_terminalID--; + continue; + } + if (soap_flag_topupData && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "topupData", &a->topupData, "xsd:string")) + { soap_flag_topupData--; + continue; + } + if (soap_flag_hmac && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "hmac", &a->hmac, "xsd:string")) + { soap_flag_hmac--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct paylid__directAirTimeTopUp *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_paylid__directAirTimeTopUp, 0, sizeof(struct paylid__directAirTimeTopUp), 0, soap_copy_paylid__directAirTimeTopUp); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_terminalID > 0 || soap_flag_topupData > 0 || soap_flag_hmac > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__directAirTimeTopUp(struct soap *soap, const struct paylid__directAirTimeTopUp *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_paylid__directAirTimeTopUp); + if (soap_out_paylid__directAirTimeTopUp(soap, tag?tag:"paylid:directAirTimeTopUp", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct paylid__directAirTimeTopUp * SOAP_FMAC4 soap_get_paylid__directAirTimeTopUp(struct soap *soap, struct paylid__directAirTimeTopUp *p, const char *tag, const char *type) +{ + if ((p = soap_in_paylid__directAirTimeTopUp(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct paylid__directAirTimeTopUp * SOAP_FMAC2 soap_instantiate_paylid__directAirTimeTopUp(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_paylid__directAirTimeTopUp(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_paylid__directAirTimeTopUp, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct paylid__directAirTimeTopUp); + if (size) + *size = sizeof(struct paylid__directAirTimeTopUp); + } + else + { cp->ptr = (void*)SOAP_NEW(struct paylid__directAirTimeTopUp[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct paylid__directAirTimeTopUp); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct paylid__directAirTimeTopUp*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__directAirTimeTopUp(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct paylid__directAirTimeTopUp %p -> %p\n", q, p)); + *(struct paylid__directAirTimeTopUp*)p = *(struct paylid__directAirTimeTopUp*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__directAirTimeTopUpResponse(struct soap *soap, struct paylid__directAirTimeTopUpResponse *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_std__string(soap, &a->Code); + soap_default_std__string(soap, &a->Data); + soap_default_std__string(soap, &a->Hmac); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__directAirTimeTopUpResponse(struct soap *soap, const struct paylid__directAirTimeTopUpResponse *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_std__string(soap, &a->Code); + soap_serialize_std__string(soap, &a->Data); + soap_serialize_std__string(soap, &a->Hmac); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__directAirTimeTopUpResponse(struct soap *soap, const char *tag, int id, const struct paylid__directAirTimeTopUpResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_paylid__directAirTimeTopUpResponse), type)) + return soap->error; + if (soap_out_std__string(soap, "Code", -1, &a->Code, "")) + return soap->error; + if (soap_out_std__string(soap, "Data", -1, &a->Data, "")) + return soap->error; + if (soap_out_std__string(soap, "Hmac", -1, &a->Hmac, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct paylid__directAirTimeTopUpResponse * SOAP_FMAC4 soap_in_paylid__directAirTimeTopUpResponse(struct soap *soap, const char *tag, struct paylid__directAirTimeTopUpResponse *a, const char *type) +{ + size_t soap_flag_Code = 1; + size_t soap_flag_Data = 1; + size_t soap_flag_Hmac = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct paylid__directAirTimeTopUpResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_paylid__directAirTimeTopUpResponse, sizeof(struct paylid__directAirTimeTopUpResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + soap_default_paylid__directAirTimeTopUpResponse(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_Code && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Code", &a->Code, "xsd:string")) + { soap_flag_Code--; + continue; + } + if (soap_flag_Data && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Data", &a->Data, "xsd:string")) + { soap_flag_Data--; + continue; + } + if (soap_flag_Hmac && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Hmac", &a->Hmac, "xsd:string")) + { soap_flag_Hmac--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct paylid__directAirTimeTopUpResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_paylid__directAirTimeTopUpResponse, 0, sizeof(struct paylid__directAirTimeTopUpResponse), 0, soap_copy_paylid__directAirTimeTopUpResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_Code > 0 || soap_flag_Data > 0 || soap_flag_Hmac > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__directAirTimeTopUpResponse(struct soap *soap, const struct paylid__directAirTimeTopUpResponse *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_paylid__directAirTimeTopUpResponse); + if (soap_out_paylid__directAirTimeTopUpResponse(soap, tag?tag:"paylid:directAirTimeTopUpResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct paylid__directAirTimeTopUpResponse * SOAP_FMAC4 soap_get_paylid__directAirTimeTopUpResponse(struct soap *soap, struct paylid__directAirTimeTopUpResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in_paylid__directAirTimeTopUpResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct paylid__directAirTimeTopUpResponse * SOAP_FMAC2 soap_instantiate_paylid__directAirTimeTopUpResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_paylid__directAirTimeTopUpResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_paylid__directAirTimeTopUpResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct paylid__directAirTimeTopUpResponse); + if (size) + *size = sizeof(struct paylid__directAirTimeTopUpResponse); + } + else + { cp->ptr = (void*)SOAP_NEW(struct paylid__directAirTimeTopUpResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct paylid__directAirTimeTopUpResponse); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct paylid__directAirTimeTopUpResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__directAirTimeTopUpResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct paylid__directAirTimeTopUpResponse %p -> %p\n", q, p)); + *(struct paylid__directAirTimeTopUpResponse*)p = *(struct paylid__directAirTimeTopUpResponse*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__checkTransferStatus(struct soap *soap, struct paylid__checkTransferStatus *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_std__string(soap, &a->terminalID); + soap_default_std__string(soap, &a->transactionRef); + soap_default_std__string(soap, &a->hmac); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__checkTransferStatus(struct soap *soap, const struct paylid__checkTransferStatus *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_std__string(soap, &a->terminalID); + soap_serialize_std__string(soap, &a->transactionRef); + soap_serialize_std__string(soap, &a->hmac); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__checkTransferStatus(struct soap *soap, const char *tag, int id, const struct paylid__checkTransferStatus *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_paylid__checkTransferStatus), type)) + return soap->error; + if (soap_out_std__string(soap, "terminalID", -1, &a->terminalID, "")) + return soap->error; + if (soap_out_std__string(soap, "transactionRef", -1, &a->transactionRef, "")) + return soap->error; + if (soap_out_std__string(soap, "hmac", -1, &a->hmac, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct paylid__checkTransferStatus * SOAP_FMAC4 soap_in_paylid__checkTransferStatus(struct soap *soap, const char *tag, struct paylid__checkTransferStatus *a, const char *type) +{ + size_t soap_flag_terminalID = 1; + size_t soap_flag_transactionRef = 1; + size_t soap_flag_hmac = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct paylid__checkTransferStatus *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_paylid__checkTransferStatus, sizeof(struct paylid__checkTransferStatus), soap->type, soap->arrayType); + if (!a) + return NULL; + soap_default_paylid__checkTransferStatus(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_terminalID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "terminalID", &a->terminalID, "xsd:string")) + { soap_flag_terminalID--; + continue; + } + if (soap_flag_transactionRef && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "transactionRef", &a->transactionRef, "xsd:string")) + { soap_flag_transactionRef--; + continue; + } + if (soap_flag_hmac && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "hmac", &a->hmac, "xsd:string")) + { soap_flag_hmac--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct paylid__checkTransferStatus *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_paylid__checkTransferStatus, 0, sizeof(struct paylid__checkTransferStatus), 0, soap_copy_paylid__checkTransferStatus); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_terminalID > 0 || soap_flag_transactionRef > 0 || soap_flag_hmac > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__checkTransferStatus(struct soap *soap, const struct paylid__checkTransferStatus *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_paylid__checkTransferStatus); + if (soap_out_paylid__checkTransferStatus(soap, tag?tag:"paylid:checkTransferStatus", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct paylid__checkTransferStatus * SOAP_FMAC4 soap_get_paylid__checkTransferStatus(struct soap *soap, struct paylid__checkTransferStatus *p, const char *tag, const char *type) +{ + if ((p = soap_in_paylid__checkTransferStatus(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct paylid__checkTransferStatus * SOAP_FMAC2 soap_instantiate_paylid__checkTransferStatus(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_paylid__checkTransferStatus(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_paylid__checkTransferStatus, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct paylid__checkTransferStatus); + if (size) + *size = sizeof(struct paylid__checkTransferStatus); + } + else + { cp->ptr = (void*)SOAP_NEW(struct paylid__checkTransferStatus[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct paylid__checkTransferStatus); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct paylid__checkTransferStatus*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__checkTransferStatus(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct paylid__checkTransferStatus %p -> %p\n", q, p)); + *(struct paylid__checkTransferStatus*)p = *(struct paylid__checkTransferStatus*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__checkTransferStatusResponse(struct soap *soap, struct paylid__checkTransferStatusResponse *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_std__string(soap, &a->Code); + soap_default_std__string(soap, &a->Data); + soap_default_std__string(soap, &a->Hmac); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__checkTransferStatusResponse(struct soap *soap, const struct paylid__checkTransferStatusResponse *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_std__string(soap, &a->Code); + soap_serialize_std__string(soap, &a->Data); + soap_serialize_std__string(soap, &a->Hmac); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__checkTransferStatusResponse(struct soap *soap, const char *tag, int id, const struct paylid__checkTransferStatusResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_paylid__checkTransferStatusResponse), type)) + return soap->error; + if (soap_out_std__string(soap, "Code", -1, &a->Code, "")) + return soap->error; + if (soap_out_std__string(soap, "Data", -1, &a->Data, "")) + return soap->error; + if (soap_out_std__string(soap, "Hmac", -1, &a->Hmac, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct paylid__checkTransferStatusResponse * SOAP_FMAC4 soap_in_paylid__checkTransferStatusResponse(struct soap *soap, const char *tag, struct paylid__checkTransferStatusResponse *a, const char *type) +{ + size_t soap_flag_Code = 1; + size_t soap_flag_Data = 1; + size_t soap_flag_Hmac = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct paylid__checkTransferStatusResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_paylid__checkTransferStatusResponse, sizeof(struct paylid__checkTransferStatusResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + soap_default_paylid__checkTransferStatusResponse(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_Code && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Code", &a->Code, "xsd:string")) + { soap_flag_Code--; + continue; + } + if (soap_flag_Data && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Data", &a->Data, "xsd:string")) + { soap_flag_Data--; + continue; + } + if (soap_flag_Hmac && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Hmac", &a->Hmac, "xsd:string")) + { soap_flag_Hmac--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct paylid__checkTransferStatusResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_paylid__checkTransferStatusResponse, 0, sizeof(struct paylid__checkTransferStatusResponse), 0, soap_copy_paylid__checkTransferStatusResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_Code > 0 || soap_flag_Data > 0 || soap_flag_Hmac > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__checkTransferStatusResponse(struct soap *soap, const struct paylid__checkTransferStatusResponse *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_paylid__checkTransferStatusResponse); + if (soap_out_paylid__checkTransferStatusResponse(soap, tag?tag:"paylid:checkTransferStatusResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct paylid__checkTransferStatusResponse * SOAP_FMAC4 soap_get_paylid__checkTransferStatusResponse(struct soap *soap, struct paylid__checkTransferStatusResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in_paylid__checkTransferStatusResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct paylid__checkTransferStatusResponse * SOAP_FMAC2 soap_instantiate_paylid__checkTransferStatusResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_paylid__checkTransferStatusResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_paylid__checkTransferStatusResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct paylid__checkTransferStatusResponse); + if (size) + *size = sizeof(struct paylid__checkTransferStatusResponse); + } + else + { cp->ptr = (void*)SOAP_NEW(struct paylid__checkTransferStatusResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct paylid__checkTransferStatusResponse); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct paylid__checkTransferStatusResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__checkTransferStatusResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct paylid__checkTransferStatusResponse %p -> %p\n", q, p)); + *(struct paylid__checkTransferStatusResponse*)p = *(struct paylid__checkTransferStatusResponse*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__transferFund(struct soap *soap, struct paylid__transferFund *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_std__string(soap, &a->terminalID); + soap_default_std__string(soap, &a->toDestination); + soap_default_std__string(soap, &a->hmac); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__transferFund(struct soap *soap, const struct paylid__transferFund *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_std__string(soap, &a->terminalID); + soap_serialize_std__string(soap, &a->toDestination); + soap_serialize_std__string(soap, &a->hmac); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__transferFund(struct soap *soap, const char *tag, int id, const struct paylid__transferFund *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_paylid__transferFund), type)) + return soap->error; + if (soap_out_std__string(soap, "terminalID", -1, &a->terminalID, "")) + return soap->error; + if (soap_out_std__string(soap, "toDestination", -1, &a->toDestination, "")) + return soap->error; + if (soap_out_std__string(soap, "hmac", -1, &a->hmac, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct paylid__transferFund * SOAP_FMAC4 soap_in_paylid__transferFund(struct soap *soap, const char *tag, struct paylid__transferFund *a, const char *type) +{ + size_t soap_flag_terminalID = 1; + size_t soap_flag_toDestination = 1; + size_t soap_flag_hmac = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct paylid__transferFund *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_paylid__transferFund, sizeof(struct paylid__transferFund), soap->type, soap->arrayType); + if (!a) + return NULL; + soap_default_paylid__transferFund(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_terminalID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "terminalID", &a->terminalID, "xsd:string")) + { soap_flag_terminalID--; + continue; + } + if (soap_flag_toDestination && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "toDestination", &a->toDestination, "xsd:string")) + { soap_flag_toDestination--; + continue; + } + if (soap_flag_hmac && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "hmac", &a->hmac, "xsd:string")) + { soap_flag_hmac--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct paylid__transferFund *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_paylid__transferFund, 0, sizeof(struct paylid__transferFund), 0, soap_copy_paylid__transferFund); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_terminalID > 0 || soap_flag_toDestination > 0 || soap_flag_hmac > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__transferFund(struct soap *soap, const struct paylid__transferFund *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_paylid__transferFund); + if (soap_out_paylid__transferFund(soap, tag?tag:"paylid:transferFund", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct paylid__transferFund * SOAP_FMAC4 soap_get_paylid__transferFund(struct soap *soap, struct paylid__transferFund *p, const char *tag, const char *type) +{ + if ((p = soap_in_paylid__transferFund(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct paylid__transferFund * SOAP_FMAC2 soap_instantiate_paylid__transferFund(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_paylid__transferFund(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_paylid__transferFund, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct paylid__transferFund); + if (size) + *size = sizeof(struct paylid__transferFund); + } + else + { cp->ptr = (void*)SOAP_NEW(struct paylid__transferFund[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct paylid__transferFund); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct paylid__transferFund*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__transferFund(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct paylid__transferFund %p -> %p\n", q, p)); + *(struct paylid__transferFund*)p = *(struct paylid__transferFund*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__transferFundResponse(struct soap *soap, struct paylid__transferFundResponse *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_std__string(soap, &a->Code); + soap_default_std__string(soap, &a->Data); + soap_default_std__string(soap, &a->Hmac); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__transferFundResponse(struct soap *soap, const struct paylid__transferFundResponse *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_std__string(soap, &a->Code); + soap_serialize_std__string(soap, &a->Data); + soap_serialize_std__string(soap, &a->Hmac); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__transferFundResponse(struct soap *soap, const char *tag, int id, const struct paylid__transferFundResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_paylid__transferFundResponse), type)) + return soap->error; + if (soap_out_std__string(soap, "Code", -1, &a->Code, "")) + return soap->error; + if (soap_out_std__string(soap, "Data", -1, &a->Data, "")) + return soap->error; + if (soap_out_std__string(soap, "Hmac", -1, &a->Hmac, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct paylid__transferFundResponse * SOAP_FMAC4 soap_in_paylid__transferFundResponse(struct soap *soap, const char *tag, struct paylid__transferFundResponse *a, const char *type) +{ + size_t soap_flag_Code = 1; + size_t soap_flag_Data = 1; + size_t soap_flag_Hmac = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct paylid__transferFundResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_paylid__transferFundResponse, sizeof(struct paylid__transferFundResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + soap_default_paylid__transferFundResponse(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_Code && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Code", &a->Code, "xsd:string")) + { soap_flag_Code--; + continue; + } + if (soap_flag_Data && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Data", &a->Data, "xsd:string")) + { soap_flag_Data--; + continue; + } + if (soap_flag_Hmac && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Hmac", &a->Hmac, "xsd:string")) + { soap_flag_Hmac--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct paylid__transferFundResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_paylid__transferFundResponse, 0, sizeof(struct paylid__transferFundResponse), 0, soap_copy_paylid__transferFundResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_Code > 0 || soap_flag_Data > 0 || soap_flag_Hmac > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__transferFundResponse(struct soap *soap, const struct paylid__transferFundResponse *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_paylid__transferFundResponse); + if (soap_out_paylid__transferFundResponse(soap, tag?tag:"paylid:transferFundResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct paylid__transferFundResponse * SOAP_FMAC4 soap_get_paylid__transferFundResponse(struct soap *soap, struct paylid__transferFundResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in_paylid__transferFundResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct paylid__transferFundResponse * SOAP_FMAC2 soap_instantiate_paylid__transferFundResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_paylid__transferFundResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_paylid__transferFundResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct paylid__transferFundResponse); + if (size) + *size = sizeof(struct paylid__transferFundResponse); + } + else + { cp->ptr = (void*)SOAP_NEW(struct paylid__transferFundResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct paylid__transferFundResponse); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct paylid__transferFundResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__transferFundResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct paylid__transferFundResponse %p -> %p\n", q, p)); + *(struct paylid__transferFundResponse*)p = *(struct paylid__transferFundResponse*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getAccountBalance(struct soap *soap, struct paylid__getAccountBalance *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_std__string(soap, &a->terminalID); + soap_default_std__string(soap, &a->hmac); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getAccountBalance(struct soap *soap, const struct paylid__getAccountBalance *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_std__string(soap, &a->terminalID); + soap_serialize_std__string(soap, &a->hmac); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getAccountBalance(struct soap *soap, const char *tag, int id, const struct paylid__getAccountBalance *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_paylid__getAccountBalance), type)) + return soap->error; + if (soap_out_std__string(soap, "terminalID", -1, &a->terminalID, "")) + return soap->error; + if (soap_out_std__string(soap, "hmac", -1, &a->hmac, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct paylid__getAccountBalance * SOAP_FMAC4 soap_in_paylid__getAccountBalance(struct soap *soap, const char *tag, struct paylid__getAccountBalance *a, const char *type) +{ + size_t soap_flag_terminalID = 1; + size_t soap_flag_hmac = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct paylid__getAccountBalance *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_paylid__getAccountBalance, sizeof(struct paylid__getAccountBalance), soap->type, soap->arrayType); + if (!a) + return NULL; + soap_default_paylid__getAccountBalance(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_terminalID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "terminalID", &a->terminalID, "xsd:string")) + { soap_flag_terminalID--; + continue; + } + if (soap_flag_hmac && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "hmac", &a->hmac, "xsd:string")) + { soap_flag_hmac--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct paylid__getAccountBalance *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_paylid__getAccountBalance, 0, sizeof(struct paylid__getAccountBalance), 0, soap_copy_paylid__getAccountBalance); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_terminalID > 0 || soap_flag_hmac > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getAccountBalance(struct soap *soap, const struct paylid__getAccountBalance *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_paylid__getAccountBalance); + if (soap_out_paylid__getAccountBalance(soap, tag?tag:"paylid:getAccountBalance", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct paylid__getAccountBalance * SOAP_FMAC4 soap_get_paylid__getAccountBalance(struct soap *soap, struct paylid__getAccountBalance *p, const char *tag, const char *type) +{ + if ((p = soap_in_paylid__getAccountBalance(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct paylid__getAccountBalance * SOAP_FMAC2 soap_instantiate_paylid__getAccountBalance(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_paylid__getAccountBalance(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_paylid__getAccountBalance, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct paylid__getAccountBalance); + if (size) + *size = sizeof(struct paylid__getAccountBalance); + } + else + { cp->ptr = (void*)SOAP_NEW(struct paylid__getAccountBalance[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct paylid__getAccountBalance); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct paylid__getAccountBalance*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getAccountBalance(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct paylid__getAccountBalance %p -> %p\n", q, p)); + *(struct paylid__getAccountBalance*)p = *(struct paylid__getAccountBalance*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getAccountBalanceResponse(struct soap *soap, struct paylid__getAccountBalanceResponse *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_std__string(soap, &a->Code); + soap_default_std__string(soap, &a->Data); + soap_default_std__string(soap, &a->Hmac); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getAccountBalanceResponse(struct soap *soap, const struct paylid__getAccountBalanceResponse *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_std__string(soap, &a->Code); + soap_serialize_std__string(soap, &a->Data); + soap_serialize_std__string(soap, &a->Hmac); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getAccountBalanceResponse(struct soap *soap, const char *tag, int id, const struct paylid__getAccountBalanceResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_paylid__getAccountBalanceResponse), type)) + return soap->error; + if (soap_out_std__string(soap, "Code", -1, &a->Code, "")) + return soap->error; + if (soap_out_std__string(soap, "Data", -1, &a->Data, "")) + return soap->error; + if (soap_out_std__string(soap, "Hmac", -1, &a->Hmac, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct paylid__getAccountBalanceResponse * SOAP_FMAC4 soap_in_paylid__getAccountBalanceResponse(struct soap *soap, const char *tag, struct paylid__getAccountBalanceResponse *a, const char *type) +{ + size_t soap_flag_Code = 1; + size_t soap_flag_Data = 1; + size_t soap_flag_Hmac = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct paylid__getAccountBalanceResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_paylid__getAccountBalanceResponse, sizeof(struct paylid__getAccountBalanceResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + soap_default_paylid__getAccountBalanceResponse(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_Code && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Code", &a->Code, "xsd:string")) + { soap_flag_Code--; + continue; + } + if (soap_flag_Data && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Data", &a->Data, "xsd:string")) + { soap_flag_Data--; + continue; + } + if (soap_flag_Hmac && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Hmac", &a->Hmac, "xsd:string")) + { soap_flag_Hmac--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct paylid__getAccountBalanceResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_paylid__getAccountBalanceResponse, 0, sizeof(struct paylid__getAccountBalanceResponse), 0, soap_copy_paylid__getAccountBalanceResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_Code > 0 || soap_flag_Data > 0 || soap_flag_Hmac > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getAccountBalanceResponse(struct soap *soap, const struct paylid__getAccountBalanceResponse *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_paylid__getAccountBalanceResponse); + if (soap_out_paylid__getAccountBalanceResponse(soap, tag?tag:"paylid:getAccountBalanceResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct paylid__getAccountBalanceResponse * SOAP_FMAC4 soap_get_paylid__getAccountBalanceResponse(struct soap *soap, struct paylid__getAccountBalanceResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in_paylid__getAccountBalanceResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct paylid__getAccountBalanceResponse * SOAP_FMAC2 soap_instantiate_paylid__getAccountBalanceResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_paylid__getAccountBalanceResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_paylid__getAccountBalanceResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct paylid__getAccountBalanceResponse); + if (size) + *size = sizeof(struct paylid__getAccountBalanceResponse); + } + else + { cp->ptr = (void*)SOAP_NEW(struct paylid__getAccountBalanceResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct paylid__getAccountBalanceResponse); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct paylid__getAccountBalanceResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getAccountBalanceResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct paylid__getAccountBalanceResponse %p -> %p\n", q, p)); + *(struct paylid__getAccountBalanceResponse*)p = *(struct paylid__getAccountBalanceResponse*)q; +} + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_paylid_SOAP_ENV__Reason)) + soap_serialize_SOAP_ENV__Reason(soap, *a); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Reason(struct soap *soap, const char *tag, int id, struct SOAP_ENV__Reason *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_paylid_SOAP_ENV__Reason); + if (id < 0) + return soap->error; + return soap_out_SOAP_ENV__Reason(soap, tag, id, *a, type); +} + +SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Reason(struct soap *soap, const char *tag, struct SOAP_ENV__Reason **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (struct SOAP_ENV__Reason **)soap_malloc(soap, sizeof(struct SOAP_ENV__Reason *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = soap_in_SOAP_ENV__Reason(soap, tag, *a, type))) + return NULL; + } + else + { a = (struct SOAP_ENV__Reason **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_paylid_SOAP_ENV__Reason, sizeof(struct SOAP_ENV__Reason), 0); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_PointerToSOAP_ENV__Reason); + if (soap_out_PointerToSOAP_ENV__Reason(soap, tag?tag:"SOAP-ENV:Reason", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerToSOAP_ENV__Reason(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +#endif + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_paylid_SOAP_ENV__Detail)) + soap_serialize_SOAP_ENV__Detail(soap, *a); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Detail(struct soap *soap, const char *tag, int id, struct SOAP_ENV__Detail *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_paylid_SOAP_ENV__Detail); + if (id < 0) + return soap->error; + return soap_out_SOAP_ENV__Detail(soap, tag, id, *a, type); +} + +SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Detail(struct soap *soap, const char *tag, struct SOAP_ENV__Detail **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (struct SOAP_ENV__Detail **)soap_malloc(soap, sizeof(struct SOAP_ENV__Detail *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = soap_in_SOAP_ENV__Detail(soap, tag, *a, type))) + return NULL; + } + else + { a = (struct SOAP_ENV__Detail **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_paylid_SOAP_ENV__Detail, sizeof(struct SOAP_ENV__Detail), 0); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_PointerToSOAP_ENV__Detail); + if (soap_out_PointerToSOAP_ENV__Detail(soap, tag?tag:"SOAP-ENV:Detail", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerToSOAP_ENV__Detail(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +#endif + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_paylid_SOAP_ENV__Code)) + soap_serialize_SOAP_ENV__Code(soap, *a); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Code(struct soap *soap, const char *tag, int id, struct SOAP_ENV__Code *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_paylid_SOAP_ENV__Code); + if (id < 0) + return soap->error; + return soap_out_SOAP_ENV__Code(soap, tag, id, *a, type); +} + +SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Code(struct soap *soap, const char *tag, struct SOAP_ENV__Code **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (struct SOAP_ENV__Code **)soap_malloc(soap, sizeof(struct SOAP_ENV__Code *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = soap_in_SOAP_ENV__Code(soap, tag, *a, type))) + return NULL; + } + else + { a = (struct SOAP_ENV__Code **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_paylid_SOAP_ENV__Code, sizeof(struct SOAP_ENV__Code), 0); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_PointerToSOAP_ENV__Code); + if (soap_out_PointerToSOAP_ENV__Code(soap, tag?tag:"SOAP-ENV:Code", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerToSOAP_ENV__Code(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__QName(struct soap *soap, const char *tag, int id, char *const*a, const char *type) +{ + return soap_outstring(soap, tag, id, a, type, SOAP_TYPE_paylid__QName); +} + +SOAP_FMAC3 char * * SOAP_FMAC4 soap_in__QName(struct soap *soap, const char *tag, char **a, const char *type) +{ char **p; + p = soap_instring(soap, tag, a, type, SOAP_TYPE_paylid__QName, 2, -1, -1); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put__QName(struct soap *soap, char *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid__QName); + if (soap_out__QName(soap, tag?tag:"byte", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 char ** SOAP_FMAC4 soap_get__QName(struct soap *soap, char **p, const char *tag, const char *type) +{ + if ((p = soap_in__QName(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_string(struct soap *soap, char **a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_string + *a = SOAP_DEFAULT_string; +#else + *a = (char *)0; +#endif +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_string(struct soap *soap, char *const*a) +{ + soap_reference(soap, *a, SOAP_TYPE_paylid_string); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_string(struct soap *soap, const char *tag, int id, char *const*a, const char *type) +{ + return soap_outstring(soap, tag, id, a, type, SOAP_TYPE_paylid_string); +} + +SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_string(struct soap *soap, const char *tag, char **a, const char *type) +{ char **p; + p = soap_instring(soap, tag, a, type, SOAP_TYPE_paylid_string, 1, -1, -1); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_string(struct soap *soap, char *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_string); + if (soap_out_string(soap, tag?tag:"byte", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_string(struct soap *soap, char **p, const char *tag, const char *type) +{ + if ((p = soap_in_string(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +} // namespace paylid + + +#if defined(__BORLANDC__) +#pragma option pop +#pragma option pop +#endif + +/* End of paylidC.cpp */ diff --git a/coregrade/src/shared_tool/paylid/paylidH.h b/coregrade/src/shared_tool/paylid/paylidH.h new file mode 100644 index 0000000..b053793 --- /dev/null +++ b/coregrade/src/shared_tool/paylid/paylidH.h @@ -0,0 +1,730 @@ +/* paylidH.h + Generated by gSOAP 2.7.16 from PaylidService.h + Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. + This part of the software is released under one of the following licenses: + GPL, the gSOAP public license, or Genivia's license for commercial use. +*/ + +#ifndef paylidH_H +#define paylidH_H +#include "paylidStub.h" + +namespace paylid { +#ifndef WITH_NOIDREF +SOAP_FMAC3 void SOAP_FMAC4 soap_markelement(struct soap*, const void*, int); +SOAP_FMAC3 int SOAP_FMAC4 soap_putelement(struct soap*, const void*, const char*, int, int); +SOAP_FMAC3 void *SOAP_FMAC4 soap_getelement(struct soap*, int*); +SOAP_FMAC3 int SOAP_FMAC4 soap_putindependent(struct soap*); +SOAP_FMAC3 int SOAP_FMAC4 soap_getindependent(struct soap*); +#endif +SOAP_FMAC3 int SOAP_FMAC4 soap_ignore_element(struct soap*); + +SOAP_FMAC3 void * SOAP_FMAC4 soap_instantiate(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 int SOAP_FMAC4 soap_fdelete(struct soap_clist*); +SOAP_FMAC3 void* SOAP_FMAC4 soap_class_id_enter(struct soap*, const char*, void*, int, size_t, const char*, const char*); + +SOAP_FMAC3 void* SOAP_FMAC4 soap_container_id_forward(struct soap*, const char*, void*, size_t, int, int, size_t, unsigned int); + +SOAP_FMAC3 void SOAP_FMAC4 soap_container_insert(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_paylid_byte +#define SOAP_TYPE_paylid_byte (3) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_byte(struct soap*, char *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_byte(struct soap*, const char*, int, const char *, const char*); +SOAP_FMAC3 char * SOAP_FMAC4 soap_in_byte(struct soap*, const char*, char *, const char*); + +#define soap_write_byte(soap, data) ( soap_begin_send(soap) || paylid::soap_put_byte(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_byte(struct soap*, const char *, const char*, const char*); + +#define soap_read_byte(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_byte(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 char * SOAP_FMAC4 soap_get_byte(struct soap*, char *, const char*, const char*); + +#ifndef SOAP_TYPE_paylid_int +#define SOAP_TYPE_paylid_int (1) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_int(struct soap*, int *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_int(struct soap*, const char*, int, const int *, const char*); +SOAP_FMAC3 int * SOAP_FMAC4 soap_in_int(struct soap*, const char*, int *, const char*); + +#define soap_write_int(soap, data) ( soap_begin_send(soap) || paylid::soap_put_int(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_int(struct soap*, const int *, const char*, const char*); + +#define soap_read_int(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_int(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 int * SOAP_FMAC4 soap_get_int(struct soap*, int *, const char*, const char*); + +#ifndef SOAP_TYPE_paylid_std__string +#define SOAP_TYPE_paylid_std__string (9) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_std__string(struct soap*, std::string *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__string(struct soap*, const std::string *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__string(struct soap*, const char*, int, const std::string*, const char*); +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_std__string(struct soap*, const char*, std::string*, const char*); + +#define soap_write_std__string(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__string(struct soap*, const std::string *, const char*, const char*); + +#define soap_read_std__string(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_std__string(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_std__string(struct soap*, std::string *, const char*, const char*); + +#define soap_new_std__string(soap, n) soap_instantiate_std__string(soap, n, NULL, NULL, NULL) + + +#define soap_delete_std__string(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 std::string * SOAP_FMAC2 soap_instantiate_std__string(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_std__string(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_paylid_SOAP_ENV__Fault +#define SOAP_TYPE_paylid_SOAP_ENV__Fault (48) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Fault(struct soap*, struct SOAP_ENV__Fault *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Fault(struct soap*, const struct SOAP_ENV__Fault *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Fault(struct soap*, const char*, int, const struct SOAP_ENV__Fault *, const char*); +SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_in_SOAP_ENV__Fault(struct soap*, const char*, struct SOAP_ENV__Fault *, const char*); + +#define soap_write_SOAP_ENV__Fault(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_SOAP_ENV__Fault(soap, data), 0) || paylid::soap_put_SOAP_ENV__Fault(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Fault(struct soap*, const struct SOAP_ENV__Fault *, const char*, const char*); + +#define soap_read_SOAP_ENV__Fault(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_SOAP_ENV__Fault(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_get_SOAP_ENV__Fault(struct soap*, struct SOAP_ENV__Fault *, const char*, const char*); + +#define soap_new_SOAP_ENV__Fault(soap, n) soap_instantiate_SOAP_ENV__Fault(soap, n, NULL, NULL, NULL) + + +#define soap_delete_SOAP_ENV__Fault(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct SOAP_ENV__Fault * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Fault(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Fault(struct soap*, int, int, void*, size_t, const void*, size_t); + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_paylid_SOAP_ENV__Reason +#define SOAP_TYPE_paylid_SOAP_ENV__Reason (47) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Reason(struct soap*, const struct SOAP_ENV__Reason *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Reason(struct soap*, const char*, int, const struct SOAP_ENV__Reason *, const char*); +SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_in_SOAP_ENV__Reason(struct soap*, const char*, struct SOAP_ENV__Reason *, const char*); + +#define soap_write_SOAP_ENV__Reason(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_SOAP_ENV__Reason(soap, data), 0) || paylid::soap_put_SOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Reason(struct soap*, const struct SOAP_ENV__Reason *, const char*, const char*); + +#define soap_read_SOAP_ENV__Reason(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_SOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_get_SOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *, const char*, const char*); + +#define soap_new_SOAP_ENV__Reason(soap, n) soap_instantiate_SOAP_ENV__Reason(soap, n, NULL, NULL, NULL) + + +#define soap_delete_SOAP_ENV__Reason(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct SOAP_ENV__Reason * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Reason(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Reason(struct soap*, int, int, void*, size_t, const void*, size_t); + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_paylid_SOAP_ENV__Detail +#define SOAP_TYPE_paylid_SOAP_ENV__Detail (44) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Detail(struct soap*, const struct SOAP_ENV__Detail *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Detail(struct soap*, const char*, int, const struct SOAP_ENV__Detail *, const char*); +SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_in_SOAP_ENV__Detail(struct soap*, const char*, struct SOAP_ENV__Detail *, const char*); + +#define soap_write_SOAP_ENV__Detail(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_SOAP_ENV__Detail(soap, data), 0) || paylid::soap_put_SOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Detail(struct soap*, const struct SOAP_ENV__Detail *, const char*, const char*); + +#define soap_read_SOAP_ENV__Detail(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_SOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_get_SOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *, const char*, const char*); + +#define soap_new_SOAP_ENV__Detail(soap, n) soap_instantiate_SOAP_ENV__Detail(soap, n, NULL, NULL, NULL) + + +#define soap_delete_SOAP_ENV__Detail(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct SOAP_ENV__Detail * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Detail(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Detail(struct soap*, int, int, void*, size_t, const void*, size_t); + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_paylid_SOAP_ENV__Code +#define SOAP_TYPE_paylid_SOAP_ENV__Code (42) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Code(struct soap*, const struct SOAP_ENV__Code *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Code(struct soap*, const char*, int, const struct SOAP_ENV__Code *, const char*); +SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_in_SOAP_ENV__Code(struct soap*, const char*, struct SOAP_ENV__Code *, const char*); + +#define soap_write_SOAP_ENV__Code(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_SOAP_ENV__Code(soap, data), 0) || paylid::soap_put_SOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Code(struct soap*, const struct SOAP_ENV__Code *, const char*, const char*); + +#define soap_read_SOAP_ENV__Code(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_SOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_get_SOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *, const char*, const char*); + +#define soap_new_SOAP_ENV__Code(soap, n) soap_instantiate_SOAP_ENV__Code(soap, n, NULL, NULL, NULL) + + +#define soap_delete_SOAP_ENV__Code(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct SOAP_ENV__Code * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Code(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Code(struct soap*, int, int, void*, size_t, const void*, size_t); + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_paylid_SOAP_ENV__Header +#define SOAP_TYPE_paylid_SOAP_ENV__Header (41) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Header(struct soap*, struct SOAP_ENV__Header *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Header(struct soap*, const struct SOAP_ENV__Header *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Header(struct soap*, const char*, int, const struct SOAP_ENV__Header *, const char*); +SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_in_SOAP_ENV__Header(struct soap*, const char*, struct SOAP_ENV__Header *, const char*); + +#define soap_write_SOAP_ENV__Header(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_SOAP_ENV__Header(soap, data), 0) || paylid::soap_put_SOAP_ENV__Header(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Header(struct soap*, const struct SOAP_ENV__Header *, const char*, const char*); + +#define soap_read_SOAP_ENV__Header(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_SOAP_ENV__Header(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_get_SOAP_ENV__Header(struct soap*, struct SOAP_ENV__Header *, const char*, const char*); + +#define soap_new_SOAP_ENV__Header(soap, n) soap_instantiate_SOAP_ENV__Header(soap, n, NULL, NULL, NULL) + + +#define soap_delete_SOAP_ENV__Header(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct SOAP_ENV__Header * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Header(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Header(struct soap*, int, int, void*, size_t, const void*, size_t); + +#endif + +#ifndef SOAP_TYPE_paylid_paylid__getSupportedBanks +#define SOAP_TYPE_paylid_paylid__getSupportedBanks (40) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getSupportedBanks(struct soap*, struct paylid__getSupportedBanks *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getSupportedBanks(struct soap*, const struct paylid__getSupportedBanks *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getSupportedBanks(struct soap*, const char*, int, const struct paylid__getSupportedBanks *, const char*); +SOAP_FMAC3 struct paylid__getSupportedBanks * SOAP_FMAC4 soap_in_paylid__getSupportedBanks(struct soap*, const char*, struct paylid__getSupportedBanks *, const char*); + +#define soap_write_paylid__getSupportedBanks(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__getSupportedBanks(soap, data), 0) || paylid::soap_put_paylid__getSupportedBanks(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getSupportedBanks(struct soap*, const struct paylid__getSupportedBanks *, const char*, const char*); + +#define soap_read_paylid__getSupportedBanks(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__getSupportedBanks(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct paylid__getSupportedBanks * SOAP_FMAC4 soap_get_paylid__getSupportedBanks(struct soap*, struct paylid__getSupportedBanks *, const char*, const char*); + +#define soap_new_paylid__getSupportedBanks(soap, n) soap_instantiate_paylid__getSupportedBanks(soap, n, NULL, NULL, NULL) + + +#define soap_delete_paylid__getSupportedBanks(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct paylid__getSupportedBanks * SOAP_FMAC2 soap_instantiate_paylid__getSupportedBanks(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getSupportedBanks(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_paylid_paylid__getSupportedBanksResponse +#define SOAP_TYPE_paylid_paylid__getSupportedBanksResponse (37) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getSupportedBanksResponse(struct soap*, struct paylid__getSupportedBanksResponse *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getSupportedBanksResponse(struct soap*, const struct paylid__getSupportedBanksResponse *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getSupportedBanksResponse(struct soap*, const char*, int, const struct paylid__getSupportedBanksResponse *, const char*); +SOAP_FMAC3 struct paylid__getSupportedBanksResponse * SOAP_FMAC4 soap_in_paylid__getSupportedBanksResponse(struct soap*, const char*, struct paylid__getSupportedBanksResponse *, const char*); + +#define soap_write_paylid__getSupportedBanksResponse(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__getSupportedBanksResponse(soap, data), 0) || paylid::soap_put_paylid__getSupportedBanksResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getSupportedBanksResponse(struct soap*, const struct paylid__getSupportedBanksResponse *, const char*, const char*); + +#define soap_read_paylid__getSupportedBanksResponse(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__getSupportedBanksResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct paylid__getSupportedBanksResponse * SOAP_FMAC4 soap_get_paylid__getSupportedBanksResponse(struct soap*, struct paylid__getSupportedBanksResponse *, const char*, const char*); + +#define soap_new_paylid__getSupportedBanksResponse(soap, n) soap_instantiate_paylid__getSupportedBanksResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete_paylid__getSupportedBanksResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct paylid__getSupportedBanksResponse * SOAP_FMAC2 soap_instantiate_paylid__getSupportedBanksResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getSupportedBanksResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_paylid_paylid__getTrxStatus +#define SOAP_TYPE_paylid_paylid__getTrxStatus (36) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getTrxStatus(struct soap*, struct paylid__getTrxStatus *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getTrxStatus(struct soap*, const struct paylid__getTrxStatus *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getTrxStatus(struct soap*, const char*, int, const struct paylid__getTrxStatus *, const char*); +SOAP_FMAC3 struct paylid__getTrxStatus * SOAP_FMAC4 soap_in_paylid__getTrxStatus(struct soap*, const char*, struct paylid__getTrxStatus *, const char*); + +#define soap_write_paylid__getTrxStatus(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__getTrxStatus(soap, data), 0) || paylid::soap_put_paylid__getTrxStatus(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getTrxStatus(struct soap*, const struct paylid__getTrxStatus *, const char*, const char*); + +#define soap_read_paylid__getTrxStatus(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__getTrxStatus(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct paylid__getTrxStatus * SOAP_FMAC4 soap_get_paylid__getTrxStatus(struct soap*, struct paylid__getTrxStatus *, const char*, const char*); + +#define soap_new_paylid__getTrxStatus(soap, n) soap_instantiate_paylid__getTrxStatus(soap, n, NULL, NULL, NULL) + + +#define soap_delete_paylid__getTrxStatus(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct paylid__getTrxStatus * SOAP_FMAC2 soap_instantiate_paylid__getTrxStatus(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getTrxStatus(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_paylid_paylid__getTrxStatusResponse +#define SOAP_TYPE_paylid_paylid__getTrxStatusResponse (33) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getTrxStatusResponse(struct soap*, struct paylid__getTrxStatusResponse *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getTrxStatusResponse(struct soap*, const struct paylid__getTrxStatusResponse *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getTrxStatusResponse(struct soap*, const char*, int, const struct paylid__getTrxStatusResponse *, const char*); +SOAP_FMAC3 struct paylid__getTrxStatusResponse * SOAP_FMAC4 soap_in_paylid__getTrxStatusResponse(struct soap*, const char*, struct paylid__getTrxStatusResponse *, const char*); + +#define soap_write_paylid__getTrxStatusResponse(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__getTrxStatusResponse(soap, data), 0) || paylid::soap_put_paylid__getTrxStatusResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getTrxStatusResponse(struct soap*, const struct paylid__getTrxStatusResponse *, const char*, const char*); + +#define soap_read_paylid__getTrxStatusResponse(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__getTrxStatusResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct paylid__getTrxStatusResponse * SOAP_FMAC4 soap_get_paylid__getTrxStatusResponse(struct soap*, struct paylid__getTrxStatusResponse *, const char*, const char*); + +#define soap_new_paylid__getTrxStatusResponse(soap, n) soap_instantiate_paylid__getTrxStatusResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete_paylid__getTrxStatusResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct paylid__getTrxStatusResponse * SOAP_FMAC2 soap_instantiate_paylid__getTrxStatusResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getTrxStatusResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_paylid_paylid__getAccount +#define SOAP_TYPE_paylid_paylid__getAccount (32) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getAccount(struct soap*, struct paylid__getAccount *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getAccount(struct soap*, const struct paylid__getAccount *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getAccount(struct soap*, const char*, int, const struct paylid__getAccount *, const char*); +SOAP_FMAC3 struct paylid__getAccount * SOAP_FMAC4 soap_in_paylid__getAccount(struct soap*, const char*, struct paylid__getAccount *, const char*); + +#define soap_write_paylid__getAccount(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__getAccount(soap, data), 0) || paylid::soap_put_paylid__getAccount(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getAccount(struct soap*, const struct paylid__getAccount *, const char*, const char*); + +#define soap_read_paylid__getAccount(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__getAccount(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct paylid__getAccount * SOAP_FMAC4 soap_get_paylid__getAccount(struct soap*, struct paylid__getAccount *, const char*, const char*); + +#define soap_new_paylid__getAccount(soap, n) soap_instantiate_paylid__getAccount(soap, n, NULL, NULL, NULL) + + +#define soap_delete_paylid__getAccount(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct paylid__getAccount * SOAP_FMAC2 soap_instantiate_paylid__getAccount(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getAccount(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_paylid_paylid__getAccountResponse +#define SOAP_TYPE_paylid_paylid__getAccountResponse (29) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getAccountResponse(struct soap*, struct paylid__getAccountResponse *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getAccountResponse(struct soap*, const struct paylid__getAccountResponse *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getAccountResponse(struct soap*, const char*, int, const struct paylid__getAccountResponse *, const char*); +SOAP_FMAC3 struct paylid__getAccountResponse * SOAP_FMAC4 soap_in_paylid__getAccountResponse(struct soap*, const char*, struct paylid__getAccountResponse *, const char*); + +#define soap_write_paylid__getAccountResponse(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__getAccountResponse(soap, data), 0) || paylid::soap_put_paylid__getAccountResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getAccountResponse(struct soap*, const struct paylid__getAccountResponse *, const char*, const char*); + +#define soap_read_paylid__getAccountResponse(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__getAccountResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct paylid__getAccountResponse * SOAP_FMAC4 soap_get_paylid__getAccountResponse(struct soap*, struct paylid__getAccountResponse *, const char*, const char*); + +#define soap_new_paylid__getAccountResponse(soap, n) soap_instantiate_paylid__getAccountResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete_paylid__getAccountResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct paylid__getAccountResponse * SOAP_FMAC2 soap_instantiate_paylid__getAccountResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getAccountResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_paylid_paylid__currentXrate +#define SOAP_TYPE_paylid_paylid__currentXrate (28) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__currentXrate(struct soap*, struct paylid__currentXrate *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__currentXrate(struct soap*, const struct paylid__currentXrate *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__currentXrate(struct soap*, const char*, int, const struct paylid__currentXrate *, const char*); +SOAP_FMAC3 struct paylid__currentXrate * SOAP_FMAC4 soap_in_paylid__currentXrate(struct soap*, const char*, struct paylid__currentXrate *, const char*); + +#define soap_write_paylid__currentXrate(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__currentXrate(soap, data), 0) || paylid::soap_put_paylid__currentXrate(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__currentXrate(struct soap*, const struct paylid__currentXrate *, const char*, const char*); + +#define soap_read_paylid__currentXrate(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__currentXrate(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct paylid__currentXrate * SOAP_FMAC4 soap_get_paylid__currentXrate(struct soap*, struct paylid__currentXrate *, const char*, const char*); + +#define soap_new_paylid__currentXrate(soap, n) soap_instantiate_paylid__currentXrate(soap, n, NULL, NULL, NULL) + + +#define soap_delete_paylid__currentXrate(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct paylid__currentXrate * SOAP_FMAC2 soap_instantiate_paylid__currentXrate(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__currentXrate(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_paylid_paylid__currentXrateResponse +#define SOAP_TYPE_paylid_paylid__currentXrateResponse (25) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__currentXrateResponse(struct soap*, struct paylid__currentXrateResponse *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__currentXrateResponse(struct soap*, const struct paylid__currentXrateResponse *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__currentXrateResponse(struct soap*, const char*, int, const struct paylid__currentXrateResponse *, const char*); +SOAP_FMAC3 struct paylid__currentXrateResponse * SOAP_FMAC4 soap_in_paylid__currentXrateResponse(struct soap*, const char*, struct paylid__currentXrateResponse *, const char*); + +#define soap_write_paylid__currentXrateResponse(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__currentXrateResponse(soap, data), 0) || paylid::soap_put_paylid__currentXrateResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__currentXrateResponse(struct soap*, const struct paylid__currentXrateResponse *, const char*, const char*); + +#define soap_read_paylid__currentXrateResponse(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__currentXrateResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct paylid__currentXrateResponse * SOAP_FMAC4 soap_get_paylid__currentXrateResponse(struct soap*, struct paylid__currentXrateResponse *, const char*, const char*); + +#define soap_new_paylid__currentXrateResponse(soap, n) soap_instantiate_paylid__currentXrateResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete_paylid__currentXrateResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct paylid__currentXrateResponse * SOAP_FMAC2 soap_instantiate_paylid__currentXrateResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__currentXrateResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_paylid_paylid__directAirTimeTopUp +#define SOAP_TYPE_paylid_paylid__directAirTimeTopUp (24) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__directAirTimeTopUp(struct soap*, struct paylid__directAirTimeTopUp *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__directAirTimeTopUp(struct soap*, const struct paylid__directAirTimeTopUp *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__directAirTimeTopUp(struct soap*, const char*, int, const struct paylid__directAirTimeTopUp *, const char*); +SOAP_FMAC3 struct paylid__directAirTimeTopUp * SOAP_FMAC4 soap_in_paylid__directAirTimeTopUp(struct soap*, const char*, struct paylid__directAirTimeTopUp *, const char*); + +#define soap_write_paylid__directAirTimeTopUp(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__directAirTimeTopUp(soap, data), 0) || paylid::soap_put_paylid__directAirTimeTopUp(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__directAirTimeTopUp(struct soap*, const struct paylid__directAirTimeTopUp *, const char*, const char*); + +#define soap_read_paylid__directAirTimeTopUp(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__directAirTimeTopUp(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct paylid__directAirTimeTopUp * SOAP_FMAC4 soap_get_paylid__directAirTimeTopUp(struct soap*, struct paylid__directAirTimeTopUp *, const char*, const char*); + +#define soap_new_paylid__directAirTimeTopUp(soap, n) soap_instantiate_paylid__directAirTimeTopUp(soap, n, NULL, NULL, NULL) + + +#define soap_delete_paylid__directAirTimeTopUp(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct paylid__directAirTimeTopUp * SOAP_FMAC2 soap_instantiate_paylid__directAirTimeTopUp(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__directAirTimeTopUp(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_paylid_paylid__directAirTimeTopUpResponse +#define SOAP_TYPE_paylid_paylid__directAirTimeTopUpResponse (21) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__directAirTimeTopUpResponse(struct soap*, struct paylid__directAirTimeTopUpResponse *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__directAirTimeTopUpResponse(struct soap*, const struct paylid__directAirTimeTopUpResponse *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__directAirTimeTopUpResponse(struct soap*, const char*, int, const struct paylid__directAirTimeTopUpResponse *, const char*); +SOAP_FMAC3 struct paylid__directAirTimeTopUpResponse * SOAP_FMAC4 soap_in_paylid__directAirTimeTopUpResponse(struct soap*, const char*, struct paylid__directAirTimeTopUpResponse *, const char*); + +#define soap_write_paylid__directAirTimeTopUpResponse(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__directAirTimeTopUpResponse(soap, data), 0) || paylid::soap_put_paylid__directAirTimeTopUpResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__directAirTimeTopUpResponse(struct soap*, const struct paylid__directAirTimeTopUpResponse *, const char*, const char*); + +#define soap_read_paylid__directAirTimeTopUpResponse(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__directAirTimeTopUpResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct paylid__directAirTimeTopUpResponse * SOAP_FMAC4 soap_get_paylid__directAirTimeTopUpResponse(struct soap*, struct paylid__directAirTimeTopUpResponse *, const char*, const char*); + +#define soap_new_paylid__directAirTimeTopUpResponse(soap, n) soap_instantiate_paylid__directAirTimeTopUpResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete_paylid__directAirTimeTopUpResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct paylid__directAirTimeTopUpResponse * SOAP_FMAC2 soap_instantiate_paylid__directAirTimeTopUpResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__directAirTimeTopUpResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_paylid_paylid__checkTransferStatus +#define SOAP_TYPE_paylid_paylid__checkTransferStatus (20) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__checkTransferStatus(struct soap*, struct paylid__checkTransferStatus *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__checkTransferStatus(struct soap*, const struct paylid__checkTransferStatus *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__checkTransferStatus(struct soap*, const char*, int, const struct paylid__checkTransferStatus *, const char*); +SOAP_FMAC3 struct paylid__checkTransferStatus * SOAP_FMAC4 soap_in_paylid__checkTransferStatus(struct soap*, const char*, struct paylid__checkTransferStatus *, const char*); + +#define soap_write_paylid__checkTransferStatus(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__checkTransferStatus(soap, data), 0) || paylid::soap_put_paylid__checkTransferStatus(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__checkTransferStatus(struct soap*, const struct paylid__checkTransferStatus *, const char*, const char*); + +#define soap_read_paylid__checkTransferStatus(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__checkTransferStatus(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct paylid__checkTransferStatus * SOAP_FMAC4 soap_get_paylid__checkTransferStatus(struct soap*, struct paylid__checkTransferStatus *, const char*, const char*); + +#define soap_new_paylid__checkTransferStatus(soap, n) soap_instantiate_paylid__checkTransferStatus(soap, n, NULL, NULL, NULL) + + +#define soap_delete_paylid__checkTransferStatus(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct paylid__checkTransferStatus * SOAP_FMAC2 soap_instantiate_paylid__checkTransferStatus(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__checkTransferStatus(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_paylid_paylid__checkTransferStatusResponse +#define SOAP_TYPE_paylid_paylid__checkTransferStatusResponse (17) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__checkTransferStatusResponse(struct soap*, struct paylid__checkTransferStatusResponse *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__checkTransferStatusResponse(struct soap*, const struct paylid__checkTransferStatusResponse *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__checkTransferStatusResponse(struct soap*, const char*, int, const struct paylid__checkTransferStatusResponse *, const char*); +SOAP_FMAC3 struct paylid__checkTransferStatusResponse * SOAP_FMAC4 soap_in_paylid__checkTransferStatusResponse(struct soap*, const char*, struct paylid__checkTransferStatusResponse *, const char*); + +#define soap_write_paylid__checkTransferStatusResponse(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__checkTransferStatusResponse(soap, data), 0) || paylid::soap_put_paylid__checkTransferStatusResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__checkTransferStatusResponse(struct soap*, const struct paylid__checkTransferStatusResponse *, const char*, const char*); + +#define soap_read_paylid__checkTransferStatusResponse(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__checkTransferStatusResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct paylid__checkTransferStatusResponse * SOAP_FMAC4 soap_get_paylid__checkTransferStatusResponse(struct soap*, struct paylid__checkTransferStatusResponse *, const char*, const char*); + +#define soap_new_paylid__checkTransferStatusResponse(soap, n) soap_instantiate_paylid__checkTransferStatusResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete_paylid__checkTransferStatusResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct paylid__checkTransferStatusResponse * SOAP_FMAC2 soap_instantiate_paylid__checkTransferStatusResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__checkTransferStatusResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_paylid_paylid__transferFund +#define SOAP_TYPE_paylid_paylid__transferFund (16) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__transferFund(struct soap*, struct paylid__transferFund *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__transferFund(struct soap*, const struct paylid__transferFund *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__transferFund(struct soap*, const char*, int, const struct paylid__transferFund *, const char*); +SOAP_FMAC3 struct paylid__transferFund * SOAP_FMAC4 soap_in_paylid__transferFund(struct soap*, const char*, struct paylid__transferFund *, const char*); + +#define soap_write_paylid__transferFund(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__transferFund(soap, data), 0) || paylid::soap_put_paylid__transferFund(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__transferFund(struct soap*, const struct paylid__transferFund *, const char*, const char*); + +#define soap_read_paylid__transferFund(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__transferFund(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct paylid__transferFund * SOAP_FMAC4 soap_get_paylid__transferFund(struct soap*, struct paylid__transferFund *, const char*, const char*); + +#define soap_new_paylid__transferFund(soap, n) soap_instantiate_paylid__transferFund(soap, n, NULL, NULL, NULL) + + +#define soap_delete_paylid__transferFund(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct paylid__transferFund * SOAP_FMAC2 soap_instantiate_paylid__transferFund(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__transferFund(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_paylid_paylid__transferFundResponse +#define SOAP_TYPE_paylid_paylid__transferFundResponse (13) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__transferFundResponse(struct soap*, struct paylid__transferFundResponse *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__transferFundResponse(struct soap*, const struct paylid__transferFundResponse *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__transferFundResponse(struct soap*, const char*, int, const struct paylid__transferFundResponse *, const char*); +SOAP_FMAC3 struct paylid__transferFundResponse * SOAP_FMAC4 soap_in_paylid__transferFundResponse(struct soap*, const char*, struct paylid__transferFundResponse *, const char*); + +#define soap_write_paylid__transferFundResponse(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__transferFundResponse(soap, data), 0) || paylid::soap_put_paylid__transferFundResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__transferFundResponse(struct soap*, const struct paylid__transferFundResponse *, const char*, const char*); + +#define soap_read_paylid__transferFundResponse(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__transferFundResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct paylid__transferFundResponse * SOAP_FMAC4 soap_get_paylid__transferFundResponse(struct soap*, struct paylid__transferFundResponse *, const char*, const char*); + +#define soap_new_paylid__transferFundResponse(soap, n) soap_instantiate_paylid__transferFundResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete_paylid__transferFundResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct paylid__transferFundResponse * SOAP_FMAC2 soap_instantiate_paylid__transferFundResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__transferFundResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_paylid_paylid__getAccountBalance +#define SOAP_TYPE_paylid_paylid__getAccountBalance (12) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getAccountBalance(struct soap*, struct paylid__getAccountBalance *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getAccountBalance(struct soap*, const struct paylid__getAccountBalance *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getAccountBalance(struct soap*, const char*, int, const struct paylid__getAccountBalance *, const char*); +SOAP_FMAC3 struct paylid__getAccountBalance * SOAP_FMAC4 soap_in_paylid__getAccountBalance(struct soap*, const char*, struct paylid__getAccountBalance *, const char*); + +#define soap_write_paylid__getAccountBalance(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__getAccountBalance(soap, data), 0) || paylid::soap_put_paylid__getAccountBalance(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getAccountBalance(struct soap*, const struct paylid__getAccountBalance *, const char*, const char*); + +#define soap_read_paylid__getAccountBalance(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__getAccountBalance(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct paylid__getAccountBalance * SOAP_FMAC4 soap_get_paylid__getAccountBalance(struct soap*, struct paylid__getAccountBalance *, const char*, const char*); + +#define soap_new_paylid__getAccountBalance(soap, n) soap_instantiate_paylid__getAccountBalance(soap, n, NULL, NULL, NULL) + + +#define soap_delete_paylid__getAccountBalance(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct paylid__getAccountBalance * SOAP_FMAC2 soap_instantiate_paylid__getAccountBalance(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getAccountBalance(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_paylid_paylid__getAccountBalanceResponse +#define SOAP_TYPE_paylid_paylid__getAccountBalanceResponse (8) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getAccountBalanceResponse(struct soap*, struct paylid__getAccountBalanceResponse *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getAccountBalanceResponse(struct soap*, const struct paylid__getAccountBalanceResponse *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getAccountBalanceResponse(struct soap*, const char*, int, const struct paylid__getAccountBalanceResponse *, const char*); +SOAP_FMAC3 struct paylid__getAccountBalanceResponse * SOAP_FMAC4 soap_in_paylid__getAccountBalanceResponse(struct soap*, const char*, struct paylid__getAccountBalanceResponse *, const char*); + +#define soap_write_paylid__getAccountBalanceResponse(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_paylid__getAccountBalanceResponse(soap, data), 0) || paylid::soap_put_paylid__getAccountBalanceResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getAccountBalanceResponse(struct soap*, const struct paylid__getAccountBalanceResponse *, const char*, const char*); + +#define soap_read_paylid__getAccountBalanceResponse(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_paylid__getAccountBalanceResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct paylid__getAccountBalanceResponse * SOAP_FMAC4 soap_get_paylid__getAccountBalanceResponse(struct soap*, struct paylid__getAccountBalanceResponse *, const char*, const char*); + +#define soap_new_paylid__getAccountBalanceResponse(soap, n) soap_instantiate_paylid__getAccountBalanceResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete_paylid__getAccountBalanceResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct paylid__getAccountBalanceResponse * SOAP_FMAC2 soap_instantiate_paylid__getAccountBalanceResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getAccountBalanceResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_paylid_PointerToSOAP_ENV__Reason +#define SOAP_TYPE_paylid_PointerToSOAP_ENV__Reason (50) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Reason(struct soap*, const char *, int, struct SOAP_ENV__Reason *const*, const char *); +SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Reason(struct soap*, const char*, struct SOAP_ENV__Reason **, const char*); + +#define soap_write_PointerToSOAP_ENV__Reason(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_PointerToSOAP_ENV__Reason(soap, data), 0) || paylid::soap_put_PointerToSOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *const*, const char*, const char*); + +#define soap_read_PointerToSOAP_ENV__Reason(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_PointerToSOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason **, const char*, const char*); + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_paylid_PointerToSOAP_ENV__Detail +#define SOAP_TYPE_paylid_PointerToSOAP_ENV__Detail (49) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Detail(struct soap*, const char *, int, struct SOAP_ENV__Detail *const*, const char *); +SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Detail(struct soap*, const char*, struct SOAP_ENV__Detail **, const char*); + +#define soap_write_PointerToSOAP_ENV__Detail(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_PointerToSOAP_ENV__Detail(soap, data), 0) || paylid::soap_put_PointerToSOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *const*, const char*, const char*); + +#define soap_read_PointerToSOAP_ENV__Detail(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_PointerToSOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail **, const char*, const char*); + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_paylid_PointerToSOAP_ENV__Code +#define SOAP_TYPE_paylid_PointerToSOAP_ENV__Code (43) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Code(struct soap*, const char *, int, struct SOAP_ENV__Code *const*, const char *); +SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Code(struct soap*, const char*, struct SOAP_ENV__Code **, const char*); + +#define soap_write_PointerToSOAP_ENV__Code(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_PointerToSOAP_ENV__Code(soap, data), 0) || paylid::soap_put_PointerToSOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *const*, const char*, const char*); + +#define soap_read_PointerToSOAP_ENV__Code(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_PointerToSOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code **, const char*, const char*); + +#endif + +#ifndef SOAP_TYPE_paylid__QName +#define SOAP_TYPE_paylid__QName (5) +#endif + +#define soap_default__QName(soap, a) soap_default_string(soap, a) + + +#define soap_serialize__QName(soap, a) soap_serialize_string(soap, a) + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__QName(struct soap*, const char*, int, char*const*, const char*); +SOAP_FMAC3 char * * SOAP_FMAC4 soap_in__QName(struct soap*, const char*, char **, const char*); + +#define soap_write__QName(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize__QName(soap, data), 0) || paylid::soap_put__QName(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put__QName(struct soap*, char *const*, const char*, const char*); + +#define soap_read__QName(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get__QName(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 char ** SOAP_FMAC4 soap_get__QName(struct soap*, char **, const char*, const char*); + +#ifndef SOAP_TYPE_paylid_string +#define SOAP_TYPE_paylid_string (4) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_string(struct soap*, char **); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_string(struct soap*, char *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_string(struct soap*, const char*, int, char*const*, const char*); +SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_string(struct soap*, const char*, char **, const char*); + +#define soap_write_string(soap, data) ( soap_begin_send(soap) || (paylid::soap_serialize_string(soap, data), 0) || paylid::soap_put_string(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_string(struct soap*, char *const*, const char*, const char*); + +#define soap_read_string(soap, data) ( soap_begin_recv(soap) || !paylid::soap_get_string(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_string(struct soap*, char **, const char*, const char*); + +} // namespace paylid + + +#endif + +/* End of paylidH.h */ diff --git a/coregrade/src/shared_tool/paylid/paylidStub.h b/coregrade/src/shared_tool/paylid/paylidStub.h new file mode 100644 index 0000000..06dc242 --- /dev/null +++ b/coregrade/src/shared_tool/paylid/paylidStub.h @@ -0,0 +1,334 @@ +/* paylidStub.h + Generated by gSOAP 2.7.16 from PaylidService.h + Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. + This part of the software is released under one of the following licenses: + GPL, the gSOAP public license, or Genivia's license for commercial use. +*/ + +#ifndef paylidStub_H +#define paylidStub_H +#include +#define SOAP_NAMESPACE_OF_paylid "urn:paylidwsdl" +#ifndef WITH_NONAMESPACES +#define WITH_NONAMESPACES +#endif +#ifndef WITH_NOGLOBAL +#define WITH_NOGLOBAL +#endif +#include "stdsoap2.h" + +namespace paylid { + +/******************************************************************************\ + * * + * Enumerations * + * * +\******************************************************************************/ + + +/******************************************************************************\ + * * + * Types with Custom Serializers * + * * +\******************************************************************************/ + + +/******************************************************************************\ + * * + * Classes and Structs * + * * +\******************************************************************************/ + + +#if 0 /* volatile type: do not redeclare here */ + +#endif + +#if 0 /* volatile type: do not redeclare here */ + +#endif + +#ifndef SOAP_TYPE_paylid_paylid__getAccountBalanceResponse +#define SOAP_TYPE_paylid_paylid__getAccountBalanceResponse (8) +/* paylid:getAccountBalanceResponse */ +struct paylid__getAccountBalanceResponse +{ +public: + std::string Code; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type xsd:string */ + std::string Data; /* required element of type xsd:string */ + std::string Hmac; /* required element of type xsd:string */ +}; +#endif + +#ifndef SOAP_TYPE_paylid_paylid__getAccountBalance +#define SOAP_TYPE_paylid_paylid__getAccountBalance (12) +/* paylid:getAccountBalance */ +struct paylid__getAccountBalance +{ +public: + std::string terminalID; /* required element of type xsd:string */ + std::string hmac; /* required element of type xsd:string */ +}; +#endif + +#ifndef SOAP_TYPE_paylid_paylid__transferFundResponse +#define SOAP_TYPE_paylid_paylid__transferFundResponse (13) +/* paylid:transferFundResponse */ +struct paylid__transferFundResponse +{ +public: + std::string Code; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type xsd:string */ + std::string Data; /* required element of type xsd:string */ + std::string Hmac; /* required element of type xsd:string */ +}; +#endif + +#ifndef SOAP_TYPE_paylid_paylid__transferFund +#define SOAP_TYPE_paylid_paylid__transferFund (16) +/* paylid:transferFund */ +struct paylid__transferFund +{ +public: + std::string terminalID; /* required element of type xsd:string */ + std::string toDestination; /* required element of type xsd:string */ + std::string hmac; /* required element of type xsd:string */ +}; +#endif + +#ifndef SOAP_TYPE_paylid_paylid__checkTransferStatusResponse +#define SOAP_TYPE_paylid_paylid__checkTransferStatusResponse (17) +/* paylid:checkTransferStatusResponse */ +struct paylid__checkTransferStatusResponse +{ +public: + std::string Code; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type xsd:string */ + std::string Data; /* required element of type xsd:string */ + std::string Hmac; /* required element of type xsd:string */ +}; +#endif + +#ifndef SOAP_TYPE_paylid_paylid__checkTransferStatus +#define SOAP_TYPE_paylid_paylid__checkTransferStatus (20) +/* paylid:checkTransferStatus */ +struct paylid__checkTransferStatus +{ +public: + std::string terminalID; /* required element of type xsd:string */ + std::string transactionRef; /* required element of type xsd:string */ + std::string hmac; /* required element of type xsd:string */ +}; +#endif + +#ifndef SOAP_TYPE_paylid_paylid__directAirTimeTopUpResponse +#define SOAP_TYPE_paylid_paylid__directAirTimeTopUpResponse (21) +/* paylid:directAirTimeTopUpResponse */ +struct paylid__directAirTimeTopUpResponse +{ +public: + std::string Code; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type xsd:string */ + std::string Data; /* required element of type xsd:string */ + std::string Hmac; /* required element of type xsd:string */ +}; +#endif + +#ifndef SOAP_TYPE_paylid_paylid__directAirTimeTopUp +#define SOAP_TYPE_paylid_paylid__directAirTimeTopUp (24) +/* paylid:directAirTimeTopUp */ +struct paylid__directAirTimeTopUp +{ +public: + std::string terminalID; /* required element of type xsd:string */ + std::string topupData; /* required element of type xsd:string */ + std::string hmac; /* required element of type xsd:string */ +}; +#endif + +#ifndef SOAP_TYPE_paylid_paylid__currentXrateResponse +#define SOAP_TYPE_paylid_paylid__currentXrateResponse (25) +/* paylid:currentXrateResponse */ +struct paylid__currentXrateResponse +{ +public: + std::string Code; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type xsd:string */ + std::string Data; /* required element of type xsd:string */ + std::string Hmac; /* required element of type xsd:string */ +}; +#endif + +#ifndef SOAP_TYPE_paylid_paylid__currentXrate +#define SOAP_TYPE_paylid_paylid__currentXrate (28) +/* paylid:currentXrate */ +struct paylid__currentXrate +{ +public: + std::string terminalID; /* required element of type xsd:string */ + std::string topupData; /* required element of type xsd:string */ + std::string hmac; /* required element of type xsd:string */ +}; +#endif + +#ifndef SOAP_TYPE_paylid_paylid__getAccountResponse +#define SOAP_TYPE_paylid_paylid__getAccountResponse (29) +/* paylid:getAccountResponse */ +struct paylid__getAccountResponse +{ +public: + std::string Code; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type xsd:string */ + std::string Data; /* required element of type xsd:string */ + std::string Hmac; /* required element of type xsd:string */ +}; +#endif + +#ifndef SOAP_TYPE_paylid_paylid__getAccount +#define SOAP_TYPE_paylid_paylid__getAccount (32) +/* paylid:getAccount */ +struct paylid__getAccount +{ +public: + std::string terminalID; /* required element of type xsd:string */ + std::string topupData; /* required element of type xsd:string */ + std::string hmac; /* required element of type xsd:string */ +}; +#endif + +#ifndef SOAP_TYPE_paylid_paylid__getTrxStatusResponse +#define SOAP_TYPE_paylid_paylid__getTrxStatusResponse (33) +/* paylid:getTrxStatusResponse */ +struct paylid__getTrxStatusResponse +{ +public: + std::string Code; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type xsd:string */ + std::string Data; /* required element of type xsd:string */ + std::string Hmac; /* required element of type xsd:string */ +}; +#endif + +#ifndef SOAP_TYPE_paylid_paylid__getTrxStatus +#define SOAP_TYPE_paylid_paylid__getTrxStatus (36) +/* paylid:getTrxStatus */ +struct paylid__getTrxStatus +{ +public: + std::string terminalID; /* required element of type xsd:string */ + std::string topupData; /* required element of type xsd:string */ + std::string hmac; /* required element of type xsd:string */ +}; +#endif + +#ifndef SOAP_TYPE_paylid_paylid__getSupportedBanksResponse +#define SOAP_TYPE_paylid_paylid__getSupportedBanksResponse (37) +/* paylid:getSupportedBanksResponse */ +struct paylid__getSupportedBanksResponse +{ +public: + std::string Code; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* required element of type xsd:string */ + std::string Data; /* required element of type xsd:string */ + std::string Hmac; /* required element of type xsd:string */ +}; +#endif + +#ifndef SOAP_TYPE_paylid_paylid__getSupportedBanks +#define SOAP_TYPE_paylid_paylid__getSupportedBanks (40) +/* paylid:getSupportedBanks */ +struct paylid__getSupportedBanks +{ +public: + std::string terminalID; /* required element of type xsd:string */ + std::string topupData; /* required element of type xsd:string */ + std::string hmac; /* required element of type xsd:string */ +}; +#endif + +#ifndef SOAP_TYPE_paylid_SOAP_ENV__Header +#define SOAP_TYPE_paylid_SOAP_ENV__Header (41) +/* SOAP Header: */ +struct SOAP_ENV__Header +{ +#ifdef WITH_NOEMPTYSTRUCT +private: + char dummy; /* dummy member to enable compilation */ +#endif +}; +#endif + +#ifndef SOAP_TYPE_paylid_SOAP_ENV__Code +#define SOAP_TYPE_paylid_SOAP_ENV__Code (42) +/* SOAP Fault Code: */ +struct SOAP_ENV__Code +{ +public: + char *SOAP_ENV__Value; /* optional element of type xsd:QName */ + struct SOAP_ENV__Code *SOAP_ENV__Subcode; /* optional element of type SOAP-ENV:Code */ +}; +#endif + +#ifndef SOAP_TYPE_paylid_SOAP_ENV__Detail +#define SOAP_TYPE_paylid_SOAP_ENV__Detail (44) +/* SOAP-ENV:Detail */ +struct SOAP_ENV__Detail +{ +public: + int __type; /* any type of element (defined below) */ + void *fault; /* transient */ + char *__any; +}; +#endif + +#ifndef SOAP_TYPE_paylid_SOAP_ENV__Reason +#define SOAP_TYPE_paylid_SOAP_ENV__Reason (47) +/* SOAP-ENV:Reason */ +struct SOAP_ENV__Reason +{ +public: + char *SOAP_ENV__Text; /* optional element of type xsd:string */ +}; +#endif + +#ifndef SOAP_TYPE_paylid_SOAP_ENV__Fault +#define SOAP_TYPE_paylid_SOAP_ENV__Fault (48) +/* SOAP Fault: */ +struct SOAP_ENV__Fault +{ +public: + char *faultcode; /* optional element of type xsd:QName */ + char *faultstring; /* optional element of type xsd:string */ + char *faultactor; /* optional element of type xsd:string */ + struct SOAP_ENV__Detail *detail; /* optional element of type SOAP-ENV:Detail */ + struct SOAP_ENV__Code *SOAP_ENV__Code; /* optional element of type SOAP-ENV:Code */ + struct SOAP_ENV__Reason *SOAP_ENV__Reason; /* optional element of type SOAP-ENV:Reason */ + char *SOAP_ENV__Node; /* optional element of type xsd:string */ + char *SOAP_ENV__Role; /* optional element of type xsd:string */ + struct SOAP_ENV__Detail *SOAP_ENV__Detail; /* optional element of type SOAP-ENV:Detail */ +}; +#endif + +/******************************************************************************\ + * * + * Typedefs * + * * +\******************************************************************************/ + +#ifndef SOAP_TYPE_paylid__QName +#define SOAP_TYPE_paylid__QName (5) +typedef char *_QName; +#endif + +#ifndef SOAP_TYPE_paylid__XML +#define SOAP_TYPE_paylid__XML (6) +typedef char *_XML; +#endif + + +/******************************************************************************\ + * * + * Externals * + * * +\******************************************************************************/ + + +} // namespace paylid + + +#endif + +/* End of paylidStub.h */ diff --git a/coregrade/src/shared_tool/paylid/paylidpaylidwsdlBindingProxy.cpp b/coregrade/src/shared_tool/paylid/paylidpaylidwsdlBindingProxy.cpp new file mode 100644 index 0000000..638fcb3 --- /dev/null +++ b/coregrade/src/shared_tool/paylid/paylidpaylidwsdlBindingProxy.cpp @@ -0,0 +1,534 @@ +/* paylidpaylidwsdlBindingProxy.cpp + Generated by gSOAP 2.7.16 from PaylidService.h + Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. + This part of the software is released under one of the following licenses: + GPL, the gSOAP public license, or Genivia's license for commercial use. +*/ + +#include "paylidpaylidwsdlBindingProxy.h" + +namespace paylid { + +paylidwsdlBindingProxy::paylidwsdlBindingProxy() +{ paylidwsdlBindingProxy_init(SOAP_IO_DEFAULT, SOAP_IO_DEFAULT); +} + +paylidwsdlBindingProxy::paylidwsdlBindingProxy(const struct soap &_soap) :soap(_soap) +{ } + +paylidwsdlBindingProxy::paylidwsdlBindingProxy(soap_mode iomode) +{ paylidwsdlBindingProxy_init(iomode, iomode); +} + +paylidwsdlBindingProxy::paylidwsdlBindingProxy(soap_mode imode, soap_mode omode) +{ paylidwsdlBindingProxy_init(imode, omode); +} + +void paylidwsdlBindingProxy::paylidwsdlBindingProxy_init(soap_mode imode, soap_mode omode) +{ soap_imode(this, imode); + soap_omode(this, omode); + soap_endpoint = NULL; + static const struct Namespace namespaces[] = +{ + {"SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/", "http://www.w3.org/*/soap-envelope", NULL}, + {"SOAP-ENC", "http://schemas.xmlsoap.org/soap/encoding/", "http://www.w3.org/*/soap-encoding", NULL}, + {"xsi", "http://www.w3.org/2001/XMLSchema-instance", "http://www.w3.org/*/XMLSchema-instance", NULL}, + {"xsd", "http://www.w3.org/2001/XMLSchema", "http://www.w3.org/*/XMLSchema", NULL}, + {"paylid", "urn:paylidwsdl", NULL, NULL}, + {NULL, NULL, NULL, NULL} +}; + this->namespaces = namespaces; +} + +paylidwsdlBindingProxy::~paylidwsdlBindingProxy() +{ } + +void paylidwsdlBindingProxy::destroy() +{ soap_destroy(this); + soap_end(this); +} + +void paylidwsdlBindingProxy::soap_noheader() +{ header = NULL; +} + +const SOAP_ENV__Fault *paylidwsdlBindingProxy::soap_fault() +{ return (const paylid::SOAP_ENV__Fault*)this->fault; +} + +const char *paylidwsdlBindingProxy::soap_fault_string() +{ return *soap_faultstring(this); +} + +const char *paylidwsdlBindingProxy::soap_fault_detail() +{ return *soap_faultdetail(this); +} + +int paylidwsdlBindingProxy::soap_close_socket() +{ return soap_closesock(this); +} + +void paylidwsdlBindingProxy::soap_print_fault(FILE *fd) +{ ::soap_print_fault(this, fd); +} + +#ifndef WITH_LEAN +void paylidwsdlBindingProxy::soap_stream_fault(std::ostream& os) +{ ::soap_stream_fault(this, os); +} + +char *paylidwsdlBindingProxy::soap_sprint_fault(char *buf, size_t len) +{ return ::soap_sprint_fault(this, buf, len); +} +#endif + +int paylidwsdlBindingProxy::getAccountBalance(std::string terminalID, std::string hmac, struct paylid__getAccountBalanceResponse &_param_1) +{ struct soap *soap = this; + struct paylid__getAccountBalance soap_tmp_paylid__getAccountBalance; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://www.paylid.com:443/rsl/service.php"; + soap_action = "urn:paylidwsdl#getAccountBalance"; + soap->encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/"; + soap_tmp_paylid__getAccountBalance.terminalID = terminalID; + soap_tmp_paylid__getAccountBalance.hmac = hmac; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize_paylid__getAccountBalance(soap, &soap_tmp_paylid__getAccountBalance); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put_paylid__getAccountBalance(soap, &soap_tmp_paylid__getAccountBalance, "paylid:getAccountBalance", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put_paylid__getAccountBalance(soap, &soap_tmp_paylid__getAccountBalance, "paylid:getAccountBalance", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!&_param_1) + return soap_closesock(soap); + soap_default_paylid__getAccountBalanceResponse(soap, &_param_1); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + if (soap_recv_fault(soap, 1)) + return soap->error; + soap_get_paylid__getAccountBalanceResponse(soap, &_param_1, "", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int paylidwsdlBindingProxy::transferFund(std::string terminalID, std::string toDestination, std::string hmac, struct paylid__transferFundResponse &_param_2) +{ struct soap *soap = this; + struct paylid__transferFund soap_tmp_paylid__transferFund; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://www.paylid.com:443/rsl/service.php"; + soap_action = "urn:paylidwsdl#transferFund"; + soap->encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/"; + soap_tmp_paylid__transferFund.terminalID = terminalID; + soap_tmp_paylid__transferFund.toDestination = toDestination; + soap_tmp_paylid__transferFund.hmac = hmac; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize_paylid__transferFund(soap, &soap_tmp_paylid__transferFund); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put_paylid__transferFund(soap, &soap_tmp_paylid__transferFund, "paylid:transferFund", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put_paylid__transferFund(soap, &soap_tmp_paylid__transferFund, "paylid:transferFund", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!&_param_2) + return soap_closesock(soap); + soap_default_paylid__transferFundResponse(soap, &_param_2); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + if (soap_recv_fault(soap, 1)) + return soap->error; + soap_get_paylid__transferFundResponse(soap, &_param_2, "", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int paylidwsdlBindingProxy::checkTransferStatus(std::string terminalID, std::string transactionRef, std::string hmac, struct paylid__checkTransferStatusResponse &_param_3) +{ struct soap *soap = this; + struct paylid__checkTransferStatus soap_tmp_paylid__checkTransferStatus; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://www.paylid.com:443/rsl/service.php"; + soap_action = "urn:paylidwsdl#checkTransferStatus"; + soap->encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/"; + soap_tmp_paylid__checkTransferStatus.terminalID = terminalID; + soap_tmp_paylid__checkTransferStatus.transactionRef = transactionRef; + soap_tmp_paylid__checkTransferStatus.hmac = hmac; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize_paylid__checkTransferStatus(soap, &soap_tmp_paylid__checkTransferStatus); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put_paylid__checkTransferStatus(soap, &soap_tmp_paylid__checkTransferStatus, "paylid:checkTransferStatus", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put_paylid__checkTransferStatus(soap, &soap_tmp_paylid__checkTransferStatus, "paylid:checkTransferStatus", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!&_param_3) + return soap_closesock(soap); + soap_default_paylid__checkTransferStatusResponse(soap, &_param_3); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + if (soap_recv_fault(soap, 1)) + return soap->error; + soap_get_paylid__checkTransferStatusResponse(soap, &_param_3, "", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int paylidwsdlBindingProxy::directAirTimeTopUp(std::string terminalID, std::string topupData, std::string hmac, struct paylid__directAirTimeTopUpResponse &_param_4) +{ struct soap *soap = this; + struct paylid__directAirTimeTopUp soap_tmp_paylid__directAirTimeTopUp; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://www.paylid.com:443/rsl/service.php"; + soap_action = "urn:paylidwsdl#checkTransferStatus"; + soap->encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/"; + soap_tmp_paylid__directAirTimeTopUp.terminalID = terminalID; + soap_tmp_paylid__directAirTimeTopUp.topupData = topupData; + soap_tmp_paylid__directAirTimeTopUp.hmac = hmac; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize_paylid__directAirTimeTopUp(soap, &soap_tmp_paylid__directAirTimeTopUp); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put_paylid__directAirTimeTopUp(soap, &soap_tmp_paylid__directAirTimeTopUp, "paylid:directAirTimeTopUp", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put_paylid__directAirTimeTopUp(soap, &soap_tmp_paylid__directAirTimeTopUp, "paylid:directAirTimeTopUp", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!&_param_4) + return soap_closesock(soap); + soap_default_paylid__directAirTimeTopUpResponse(soap, &_param_4); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + if (soap_recv_fault(soap, 1)) + return soap->error; + soap_get_paylid__directAirTimeTopUpResponse(soap, &_param_4, "", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int paylidwsdlBindingProxy::currentXrate(std::string terminalID, std::string topupData, std::string hmac, struct paylid__currentXrateResponse &_param_5) +{ struct soap *soap = this; + struct paylid__currentXrate soap_tmp_paylid__currentXrate; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://www.paylid.com:443/rsl/service.php"; + soap_action = "urn:paylidwsdl#currentXrate"; + soap->encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/"; + soap_tmp_paylid__currentXrate.terminalID = terminalID; + soap_tmp_paylid__currentXrate.topupData = topupData; + soap_tmp_paylid__currentXrate.hmac = hmac; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize_paylid__currentXrate(soap, &soap_tmp_paylid__currentXrate); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put_paylid__currentXrate(soap, &soap_tmp_paylid__currentXrate, "paylid:currentXrate", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put_paylid__currentXrate(soap, &soap_tmp_paylid__currentXrate, "paylid:currentXrate", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!&_param_5) + return soap_closesock(soap); + soap_default_paylid__currentXrateResponse(soap, &_param_5); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + if (soap_recv_fault(soap, 1)) + return soap->error; + soap_get_paylid__currentXrateResponse(soap, &_param_5, "", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int paylidwsdlBindingProxy::getAccount(std::string terminalID, std::string topupData, std::string hmac, struct paylid__getAccountResponse &_param_6) +{ struct soap *soap = this; + struct paylid__getAccount soap_tmp_paylid__getAccount; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://www.paylid.com:443/rsl/service.php"; + soap_action = "urn:paylidwsdl#getAccount"; + soap->encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/"; + soap_tmp_paylid__getAccount.terminalID = terminalID; + soap_tmp_paylid__getAccount.topupData = topupData; + soap_tmp_paylid__getAccount.hmac = hmac; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize_paylid__getAccount(soap, &soap_tmp_paylid__getAccount); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put_paylid__getAccount(soap, &soap_tmp_paylid__getAccount, "paylid:getAccount", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put_paylid__getAccount(soap, &soap_tmp_paylid__getAccount, "paylid:getAccount", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!&_param_6) + return soap_closesock(soap); + soap_default_paylid__getAccountResponse(soap, &_param_6); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + if (soap_recv_fault(soap, 1)) + return soap->error; + soap_get_paylid__getAccountResponse(soap, &_param_6, "", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int paylidwsdlBindingProxy::getTrxStatus(std::string terminalID, std::string topupData, std::string hmac, struct paylid__getTrxStatusResponse &_param_7) +{ struct soap *soap = this; + struct paylid__getTrxStatus soap_tmp_paylid__getTrxStatus; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://www.paylid.com:443/rsl/service.php"; + soap_action = "urn:paylidwsdl#getTrxStatus"; + soap->encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/"; + soap_tmp_paylid__getTrxStatus.terminalID = terminalID; + soap_tmp_paylid__getTrxStatus.topupData = topupData; + soap_tmp_paylid__getTrxStatus.hmac = hmac; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize_paylid__getTrxStatus(soap, &soap_tmp_paylid__getTrxStatus); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put_paylid__getTrxStatus(soap, &soap_tmp_paylid__getTrxStatus, "paylid:getTrxStatus", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put_paylid__getTrxStatus(soap, &soap_tmp_paylid__getTrxStatus, "paylid:getTrxStatus", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!&_param_7) + return soap_closesock(soap); + soap_default_paylid__getTrxStatusResponse(soap, &_param_7); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + if (soap_recv_fault(soap, 1)) + return soap->error; + soap_get_paylid__getTrxStatusResponse(soap, &_param_7, "", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int paylidwsdlBindingProxy::getSupportedBanks(std::string terminalID, std::string topupData, std::string hmac, struct paylid__getSupportedBanksResponse &_param_8) +{ struct soap *soap = this; + struct paylid__getSupportedBanks soap_tmp_paylid__getSupportedBanks; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://www.paylid.com:443/rsl/service.php"; + soap_action = "urn:paylidwsdl#getSupportedBanks"; + soap->encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/"; + soap_tmp_paylid__getSupportedBanks.terminalID = terminalID; + soap_tmp_paylid__getSupportedBanks.topupData = topupData; + soap_tmp_paylid__getSupportedBanks.hmac = hmac; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize_paylid__getSupportedBanks(soap, &soap_tmp_paylid__getSupportedBanks); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put_paylid__getSupportedBanks(soap, &soap_tmp_paylid__getSupportedBanks, "paylid:getSupportedBanks", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put_paylid__getSupportedBanks(soap, &soap_tmp_paylid__getSupportedBanks, "paylid:getSupportedBanks", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!&_param_8) + return soap_closesock(soap); + soap_default_paylid__getSupportedBanksResponse(soap, &_param_8); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + if (soap_recv_fault(soap, 1)) + return soap->error; + soap_get_paylid__getSupportedBanksResponse(soap, &_param_8, "", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +} // namespace paylid + +/* End of client proxy code */ diff --git a/coregrade/src/shared_tool/paylid/paylidpaylidwsdlBindingProxy.h b/coregrade/src/shared_tool/paylid/paylidpaylidwsdlBindingProxy.h new file mode 100644 index 0000000..df6acc1 --- /dev/null +++ b/coregrade/src/shared_tool/paylid/paylidpaylidwsdlBindingProxy.h @@ -0,0 +1,78 @@ +/* paylidpaylidwsdlBindingProxy.h + Generated by gSOAP 2.7.16 from PaylidService.h + Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. + This part of the software is released under one of the following licenses: + GPL, the gSOAP public license, or Genivia's license for commercial use. +*/ + +#ifndef paylidpaylidwsdlBindingProxy_H +#define paylidpaylidwsdlBindingProxy_H +#include "paylidH.h" + +namespace paylid { + +class SOAP_CMAC paylidwsdlBindingProxy : public soap +{ public: + /// Endpoint URL of service 'paylidwsdlBindingProxy' (change as needed) + const char *soap_endpoint; + /// Constructor + paylidwsdlBindingProxy(); + /// Constructor with copy of another engine state + paylidwsdlBindingProxy(const struct soap&); + /// Constructor with engine input+output mode control + paylidwsdlBindingProxy(soap_mode iomode); + /// Constructor with engine input and output mode control + paylidwsdlBindingProxy(soap_mode imode, soap_mode omode); + /// Destructor frees deserialized data + virtual ~paylidwsdlBindingProxy(); + /// Initializer used by constructors + virtual void paylidwsdlBindingProxy_init(soap_mode imode, soap_mode omode); + /// Delete all deserialized data (uses soap_destroy and soap_end) + virtual void destroy(); + /// Disables and removes SOAP Header from message + virtual void soap_noheader(); + /// Get SOAP Fault structure (NULL when absent) + virtual const SOAP_ENV__Fault *soap_fault(); + /// Get SOAP Fault string (NULL when absent) + virtual const char *soap_fault_string(); + /// Get SOAP Fault detail as string (NULL when absent) + virtual const char *soap_fault_detail(); + /// Force close connection (normally automatic, except for send_X ops) + virtual int soap_close_socket(); + /// Print fault + virtual void soap_print_fault(FILE*); +#ifndef WITH_LEAN + /// Print fault to stream + virtual void soap_stream_fault(std::ostream&); + /// Put fault into buffer + virtual char *soap_sprint_fault(char *buf, size_t len); +#endif + + /// Web service operation 'getAccountBalance' (returns error code or SOAP_OK) + virtual int getAccountBalance(std::string terminalID, std::string hmac, struct paylid__getAccountBalanceResponse &_param_1); + + /// Web service operation 'transferFund' (returns error code or SOAP_OK) + virtual int transferFund(std::string terminalID, std::string toDestination, std::string hmac, struct paylid__transferFundResponse &_param_2); + + /// Web service operation 'checkTransferStatus' (returns error code or SOAP_OK) + virtual int checkTransferStatus(std::string terminalID, std::string transactionRef, std::string hmac, struct paylid__checkTransferStatusResponse &_param_3); + + /// Web service operation 'directAirTimeTopUp' (returns error code or SOAP_OK) + virtual int directAirTimeTopUp(std::string terminalID, std::string topupData, std::string hmac, struct paylid__directAirTimeTopUpResponse &_param_4); + + /// Web service operation 'currentXrate' (returns error code or SOAP_OK) + virtual int currentXrate(std::string terminalID, std::string topupData, std::string hmac, struct paylid__currentXrateResponse &_param_5); + + /// Web service operation 'getAccount' (returns error code or SOAP_OK) + virtual int getAccount(std::string terminalID, std::string topupData, std::string hmac, struct paylid__getAccountResponse &_param_6); + + /// Web service operation 'getTrxStatus' (returns error code or SOAP_OK) + virtual int getTrxStatus(std::string terminalID, std::string topupData, std::string hmac, struct paylid__getTrxStatusResponse &_param_7); + + /// Web service operation 'getSupportedBanks' (returns error code or SOAP_OK) + virtual int getSupportedBanks(std::string terminalID, std::string topupData, std::string hmac, struct paylid__getSupportedBanksResponse &_param_8); +}; + +} // namespace paylid + +#endif diff --git a/coregrade/src/shared_tool/paylid/paylidwsdlBinding.checkTransferStatus.req.xml b/coregrade/src/shared_tool/paylid/paylidwsdlBinding.checkTransferStatus.req.xml new file mode 100644 index 0000000..e1488c3 --- /dev/null +++ b/coregrade/src/shared_tool/paylid/paylidwsdlBinding.checkTransferStatus.req.xml @@ -0,0 +1,15 @@ + + + + + + + + + + diff --git a/coregrade/src/shared_tool/paylid/paylidwsdlBinding.checkTransferStatus.res.xml b/coregrade/src/shared_tool/paylid/paylidwsdlBinding.checkTransferStatus.res.xml new file mode 100644 index 0000000..33e4378 --- /dev/null +++ b/coregrade/src/shared_tool/paylid/paylidwsdlBinding.checkTransferStatus.res.xml @@ -0,0 +1,15 @@ + + + + + + + + + + diff --git a/coregrade/src/shared_tool/paylid/paylidwsdlBinding.currentXrate.req.xml b/coregrade/src/shared_tool/paylid/paylidwsdlBinding.currentXrate.req.xml new file mode 100644 index 0000000..7c3022c --- /dev/null +++ b/coregrade/src/shared_tool/paylid/paylidwsdlBinding.currentXrate.req.xml @@ -0,0 +1,15 @@ + + + + + + + + + + diff --git a/coregrade/src/shared_tool/paylid/paylidwsdlBinding.currentXrate.res.xml b/coregrade/src/shared_tool/paylid/paylidwsdlBinding.currentXrate.res.xml new file mode 100644 index 0000000..8ebb63e --- /dev/null +++ b/coregrade/src/shared_tool/paylid/paylidwsdlBinding.currentXrate.res.xml @@ -0,0 +1,15 @@ + + + + + + + + + + diff --git a/coregrade/src/shared_tool/paylid/paylidwsdlBinding.directAirTimeTopUp.req.xml b/coregrade/src/shared_tool/paylid/paylidwsdlBinding.directAirTimeTopUp.req.xml new file mode 100644 index 0000000..56de6d3 --- /dev/null +++ b/coregrade/src/shared_tool/paylid/paylidwsdlBinding.directAirTimeTopUp.req.xml @@ -0,0 +1,15 @@ + + + + + + + + + + diff --git a/coregrade/src/shared_tool/paylid/paylidwsdlBinding.directAirTimeTopUp.res.xml b/coregrade/src/shared_tool/paylid/paylidwsdlBinding.directAirTimeTopUp.res.xml new file mode 100644 index 0000000..d129f85 --- /dev/null +++ b/coregrade/src/shared_tool/paylid/paylidwsdlBinding.directAirTimeTopUp.res.xml @@ -0,0 +1,15 @@ + + + + + + + + + + diff --git a/coregrade/src/shared_tool/paylid/paylidwsdlBinding.getAccount.req.xml b/coregrade/src/shared_tool/paylid/paylidwsdlBinding.getAccount.req.xml new file mode 100644 index 0000000..7d6e158 --- /dev/null +++ b/coregrade/src/shared_tool/paylid/paylidwsdlBinding.getAccount.req.xml @@ -0,0 +1,15 @@ + + + + + + + + + + diff --git a/coregrade/src/shared_tool/paylid/paylidwsdlBinding.getAccount.res.xml b/coregrade/src/shared_tool/paylid/paylidwsdlBinding.getAccount.res.xml new file mode 100644 index 0000000..47b5a42 --- /dev/null +++ b/coregrade/src/shared_tool/paylid/paylidwsdlBinding.getAccount.res.xml @@ -0,0 +1,15 @@ + + + + + + + + + + diff --git a/coregrade/src/shared_tool/paylid/paylidwsdlBinding.getAccountBalance.req.xml b/coregrade/src/shared_tool/paylid/paylidwsdlBinding.getAccountBalance.req.xml new file mode 100644 index 0000000..aa58137 --- /dev/null +++ b/coregrade/src/shared_tool/paylid/paylidwsdlBinding.getAccountBalance.req.xml @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/coregrade/src/shared_tool/paylid/paylidwsdlBinding.getAccountBalance.res.xml b/coregrade/src/shared_tool/paylid/paylidwsdlBinding.getAccountBalance.res.xml new file mode 100644 index 0000000..3ace3f0 --- /dev/null +++ b/coregrade/src/shared_tool/paylid/paylidwsdlBinding.getAccountBalance.res.xml @@ -0,0 +1,15 @@ + + + + + + + + + + diff --git a/coregrade/src/shared_tool/paylid/paylidwsdlBinding.getSupportedBanks.req.xml b/coregrade/src/shared_tool/paylid/paylidwsdlBinding.getSupportedBanks.req.xml new file mode 100644 index 0000000..ad6e904 --- /dev/null +++ b/coregrade/src/shared_tool/paylid/paylidwsdlBinding.getSupportedBanks.req.xml @@ -0,0 +1,15 @@ + + + + + + + + + + diff --git a/coregrade/src/shared_tool/paylid/paylidwsdlBinding.getSupportedBanks.res.xml b/coregrade/src/shared_tool/paylid/paylidwsdlBinding.getSupportedBanks.res.xml new file mode 100644 index 0000000..a314640 --- /dev/null +++ b/coregrade/src/shared_tool/paylid/paylidwsdlBinding.getSupportedBanks.res.xml @@ -0,0 +1,15 @@ + + + + + + + + + + diff --git a/coregrade/src/shared_tool/paylid/paylidwsdlBinding.getTrxStatus.req.xml b/coregrade/src/shared_tool/paylid/paylidwsdlBinding.getTrxStatus.req.xml new file mode 100644 index 0000000..82a8e1c --- /dev/null +++ b/coregrade/src/shared_tool/paylid/paylidwsdlBinding.getTrxStatus.req.xml @@ -0,0 +1,15 @@ + + + + + + + + + + diff --git a/coregrade/src/shared_tool/paylid/paylidwsdlBinding.getTrxStatus.res.xml b/coregrade/src/shared_tool/paylid/paylidwsdlBinding.getTrxStatus.res.xml new file mode 100644 index 0000000..2973bf4 --- /dev/null +++ b/coregrade/src/shared_tool/paylid/paylidwsdlBinding.getTrxStatus.res.xml @@ -0,0 +1,15 @@ + + + + + + + + + + diff --git a/coregrade/src/shared_tool/paylid/paylidwsdlBinding.transferFund.req.xml b/coregrade/src/shared_tool/paylid/paylidwsdlBinding.transferFund.req.xml new file mode 100644 index 0000000..280a0f7 --- /dev/null +++ b/coregrade/src/shared_tool/paylid/paylidwsdlBinding.transferFund.req.xml @@ -0,0 +1,15 @@ + + + + + + + + + + diff --git a/coregrade/src/shared_tool/paylid/paylidwsdlBinding.transferFund.res.xml b/coregrade/src/shared_tool/paylid/paylidwsdlBinding.transferFund.res.xml new file mode 100644 index 0000000..d0b7968 --- /dev/null +++ b/coregrade/src/shared_tool/paylid/paylidwsdlBinding.transferFund.res.xml @@ -0,0 +1,15 @@ + + + + + + + + + + diff --git a/coregrade/src/shared_tool/paylidC.cc b/coregrade/src/shared_tool/paylidC.cc new file mode 100644 index 0000000..a8c9f28 --- /dev/null +++ b/coregrade/src/shared_tool/paylidC.cc @@ -0,0 +1,3806 @@ +/* paylidC.cpp + Generated by gSOAP 2.7.16 from PaylidService.h + Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. + This part of the software is released under one of the following licenses: + GPL, the gSOAP public license, or Genivia's license for commercial use. +*/ + +#if defined(__BORLANDC__) +#pragma option push -w-8060 +#pragma option push -w-8004 +#endif + +#include "paylidH.h" + +namespace paylid { + +SOAP_SOURCE_STAMP("@(#) paylidC.cpp ver 2.7.16 2020-01-09 17:52:18 GMT") + + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_serializeheader(struct soap *soap) +{ + if (soap->header) + soap_serialize_SOAP_ENV__Header(soap, soap->header); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_putheader(struct soap *soap) +{ + if (soap->header) + { soap->part = SOAP_IN_HEADER; + if (soap_out_SOAP_ENV__Header(soap, "SOAP-ENV:Header", 0, soap->header, NULL)) + return soap->error; + soap->part = SOAP_END_HEADER; + } + return SOAP_OK; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_getheader(struct soap *soap) +{ + soap->part = SOAP_IN_HEADER; + soap->header = soap_in_SOAP_ENV__Header(soap, "SOAP-ENV:Header", NULL, NULL); + soap->part = SOAP_END_HEADER; + return soap->header == NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_header(struct soap *soap) +{ + if (!soap->header) + { if ((soap->header = soap_new_SOAP_ENV__Header(soap, -1))) + soap_default_SOAP_ENV__Header(soap, soap->header); + } +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_fault(struct soap *soap) +{ + if (!soap->fault) + { soap->fault = soap_new_SOAP_ENV__Fault(soap, -1); + if (!soap->fault) + return; + soap_default_SOAP_ENV__Fault(soap, soap->fault); + } + if (soap->version == 2 && !soap->fault->SOAP_ENV__Code) + { soap->fault->SOAP_ENV__Code = soap_new_SOAP_ENV__Code(soap, -1); + soap_default_SOAP_ENV__Code(soap, soap->fault->SOAP_ENV__Code); + } + if (soap->version == 2 && !soap->fault->SOAP_ENV__Reason) + { soap->fault->SOAP_ENV__Reason = soap_new_SOAP_ENV__Reason(soap, -1); + soap_default_SOAP_ENV__Reason(soap, soap->fault->SOAP_ENV__Reason); + } +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serializefault(struct soap *soap) +{ + soap_fault(soap); + if (soap->fault) + soap_serialize_SOAP_ENV__Fault(soap, soap->fault); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_putfault(struct soap *soap) +{ + if (soap->fault) + return soap_put_SOAP_ENV__Fault(soap, soap->fault, "SOAP-ENV:Fault", NULL); + return SOAP_OK; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_getfault(struct soap *soap) +{ + return (soap->fault = soap_get_SOAP_ENV__Fault(soap, NULL, "SOAP-ENV:Fault", NULL)) == NULL; +} + +SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultcode(struct soap *soap) +{ + soap_fault(soap); + if (soap->version == 2) + return (const char**)&soap->fault->SOAP_ENV__Code->SOAP_ENV__Value; + return (const char**)&soap->fault->faultcode; +} + +SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultsubcode(struct soap *soap) +{ + soap_fault(soap); + if (soap->version == 2) + { if (!soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode) + { soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode = soap_new_SOAP_ENV__Code(soap, -1); + soap_default_SOAP_ENV__Code(soap, soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode); + } + return (const char**)&soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode->SOAP_ENV__Value; + } + return (const char**)&soap->fault->faultcode; +} + +SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultstring(struct soap *soap) +{ + soap_fault(soap); + if (soap->version == 2) + return (const char**)&soap->fault->SOAP_ENV__Reason->SOAP_ENV__Text; + return (const char**)&soap->fault->faultstring; +} + +SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultdetail(struct soap *soap) +{ + soap_fault(soap); + if (soap->version == 1) + { if (!soap->fault->detail) + { soap->fault->detail = (struct SOAP_ENV__Detail*)soap_malloc(soap, sizeof(struct SOAP_ENV__Detail)); + soap_default_SOAP_ENV__Detail(soap, soap->fault->detail); + } + return (const char**)&soap->fault->detail->__any; + } + if (!soap->fault->SOAP_ENV__Detail) + { soap->fault->SOAP_ENV__Detail = soap_new_SOAP_ENV__Detail(soap, -1); + soap_default_SOAP_ENV__Detail(soap, soap->fault->SOAP_ENV__Detail); + } + return (const char**)&soap->fault->SOAP_ENV__Detail->__any; +} + +#endif + +#ifndef WITH_NOIDREF +SOAP_FMAC3 int SOAP_FMAC4 soap_getindependent(struct soap *soap) +{ + int t; + if (soap->version == 1) + { for (;;) + { if (!soap_getelement(soap, &t)) + if (soap->error || soap_ignore_element(soap)) + break; + } + } + if (soap->error == SOAP_NO_TAG || soap->error == SOAP_EOF) + soap->error = SOAP_OK; + return soap->error; +} +#endif + +#ifndef WITH_NOIDREF +SOAP_FMAC3 void * SOAP_FMAC4 soap_getelement(struct soap *soap, int *type) +{ + if (soap_peek_element(soap)) + return NULL; + if (!*soap->id || !(*type = soap_lookup_type(soap, soap->id))) + *type = soap_lookup_type(soap, soap->href); + switch (*type) + { + case SOAP_TYPE_paylid_byte: + return soap_in_byte(soap, NULL, NULL, "xsd:byte"); + case SOAP_TYPE_paylid_int: + return soap_in_int(soap, NULL, NULL, "xsd:int"); + case SOAP_TYPE_paylid_std__string: + return soap_in_std__string(soap, NULL, NULL, "xsd:string"); + case SOAP_TYPE_paylid_paylid__getSupportedBanks: + return soap_in_paylid__getSupportedBanks(soap, NULL, NULL, "paylid:getSupportedBanks"); + case SOAP_TYPE_paylid_paylid__getSupportedBanksResponse: + return soap_in_paylid__getSupportedBanksResponse(soap, NULL, NULL, "paylid:getSupportedBanksResponse"); + case SOAP_TYPE_paylid_paylid__getTrxStatus: + return soap_in_paylid__getTrxStatus(soap, NULL, NULL, "paylid:getTrxStatus"); + case SOAP_TYPE_paylid_paylid__getTrxStatusResponse: + return soap_in_paylid__getTrxStatusResponse(soap, NULL, NULL, "paylid:getTrxStatusResponse"); + case SOAP_TYPE_paylid_paylid__getAccount: + return soap_in_paylid__getAccount(soap, NULL, NULL, "paylid:getAccount"); + case SOAP_TYPE_paylid_paylid__getAccountResponse: + return soap_in_paylid__getAccountResponse(soap, NULL, NULL, "paylid:getAccountResponse"); + case SOAP_TYPE_paylid_paylid__currentXrate: + return soap_in_paylid__currentXrate(soap, NULL, NULL, "paylid:currentXrate"); + case SOAP_TYPE_paylid_paylid__currentXrateResponse: + return soap_in_paylid__currentXrateResponse(soap, NULL, NULL, "paylid:currentXrateResponse"); + case SOAP_TYPE_paylid_paylid__directAirTimeTopUp: + return soap_in_paylid__directAirTimeTopUp(soap, NULL, NULL, "paylid:directAirTimeTopUp"); + case SOAP_TYPE_paylid_paylid__directAirTimeTopUpResponse: + return soap_in_paylid__directAirTimeTopUpResponse(soap, NULL, NULL, "paylid:directAirTimeTopUpResponse"); + case SOAP_TYPE_paylid_paylid__checkTransferStatus: + return soap_in_paylid__checkTransferStatus(soap, NULL, NULL, "paylid:checkTransferStatus"); + case SOAP_TYPE_paylid_paylid__checkTransferStatusResponse: + return soap_in_paylid__checkTransferStatusResponse(soap, NULL, NULL, "paylid:checkTransferStatusResponse"); + case SOAP_TYPE_paylid_paylid__transferFund: + return soap_in_paylid__transferFund(soap, NULL, NULL, "paylid:transferFund"); + case SOAP_TYPE_paylid_paylid__transferFundResponse: + return soap_in_paylid__transferFundResponse(soap, NULL, NULL, "paylid:transferFundResponse"); + case SOAP_TYPE_paylid_paylid__getAccountBalance: + return soap_in_paylid__getAccountBalance(soap, NULL, NULL, "paylid:getAccountBalance"); + case SOAP_TYPE_paylid_paylid__getAccountBalanceResponse: + return soap_in_paylid__getAccountBalanceResponse(soap, NULL, NULL, "paylid:getAccountBalanceResponse"); + case SOAP_TYPE_paylid__QName: + { char **s; + s = soap_in__QName(soap, NULL, NULL, "xsd:QName"); + return s ? *s : NULL; + } + case SOAP_TYPE_paylid_string: + { char **s; + s = soap_in_string(soap, NULL, NULL, "xsd:string"); + return s ? *s : NULL; + } + default: + { const char *t = soap->type; + if (!*t) + t = soap->tag; + if (!soap_match_tag(soap, t, "xsd:string")) + { *type = SOAP_TYPE_paylid_std__string; + return soap_in_std__string(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:byte")) + { *type = SOAP_TYPE_paylid_byte; + return soap_in_byte(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:int")) + { *type = SOAP_TYPE_paylid_int; + return soap_in_int(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "paylid:getSupportedBanks")) + { *type = SOAP_TYPE_paylid_paylid__getSupportedBanks; + return soap_in_paylid__getSupportedBanks(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "paylid:getSupportedBanksResponse")) + { *type = SOAP_TYPE_paylid_paylid__getSupportedBanksResponse; + return soap_in_paylid__getSupportedBanksResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "paylid:getTrxStatus")) + { *type = SOAP_TYPE_paylid_paylid__getTrxStatus; + return soap_in_paylid__getTrxStatus(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "paylid:getTrxStatusResponse")) + { *type = SOAP_TYPE_paylid_paylid__getTrxStatusResponse; + return soap_in_paylid__getTrxStatusResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "paylid:getAccount")) + { *type = SOAP_TYPE_paylid_paylid__getAccount; + return soap_in_paylid__getAccount(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "paylid:getAccountResponse")) + { *type = SOAP_TYPE_paylid_paylid__getAccountResponse; + return soap_in_paylid__getAccountResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "paylid:currentXrate")) + { *type = SOAP_TYPE_paylid_paylid__currentXrate; + return soap_in_paylid__currentXrate(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "paylid:currentXrateResponse")) + { *type = SOAP_TYPE_paylid_paylid__currentXrateResponse; + return soap_in_paylid__currentXrateResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "paylid:directAirTimeTopUp")) + { *type = SOAP_TYPE_paylid_paylid__directAirTimeTopUp; + return soap_in_paylid__directAirTimeTopUp(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "paylid:directAirTimeTopUpResponse")) + { *type = SOAP_TYPE_paylid_paylid__directAirTimeTopUpResponse; + return soap_in_paylid__directAirTimeTopUpResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "paylid:checkTransferStatus")) + { *type = SOAP_TYPE_paylid_paylid__checkTransferStatus; + return soap_in_paylid__checkTransferStatus(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "paylid:checkTransferStatusResponse")) + { *type = SOAP_TYPE_paylid_paylid__checkTransferStatusResponse; + return soap_in_paylid__checkTransferStatusResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "paylid:transferFund")) + { *type = SOAP_TYPE_paylid_paylid__transferFund; + return soap_in_paylid__transferFund(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "paylid:transferFundResponse")) + { *type = SOAP_TYPE_paylid_paylid__transferFundResponse; + return soap_in_paylid__transferFundResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "paylid:getAccountBalance")) + { *type = SOAP_TYPE_paylid_paylid__getAccountBalance; + return soap_in_paylid__getAccountBalance(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "paylid:getAccountBalanceResponse")) + { *type = SOAP_TYPE_paylid_paylid__getAccountBalanceResponse; + return soap_in_paylid__getAccountBalanceResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:QName")) + { char **s; + *type = SOAP_TYPE_paylid__QName; + s = soap_in__QName(soap, NULL, NULL, NULL); + return s ? *s : NULL; + } + if (!soap_match_tag(soap, t, "xsd:string")) + { char **s; + *type = SOAP_TYPE_paylid_string; + s = soap_in_string(soap, NULL, NULL, NULL); + return s ? *s : NULL; + } + t = soap->tag; + } + } + soap->error = SOAP_TAG_MISMATCH; + return NULL; +} +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_ignore_element(struct soap *soap) +{ + if (!soap_peek_element(soap)) + { int t; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Unexpected element '%s' in input (level=%u, %d)\n", soap->tag, soap->level, soap->body)); + if (soap->mustUnderstand && !soap->other) + return soap->error = SOAP_MUSTUNDERSTAND; + if (((soap->mode & SOAP_XML_STRICT) && soap->part != SOAP_IN_HEADER) || !soap_match_tag(soap, soap->tag, "SOAP-ENV:")) + { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "REJECTING element '%s'\n", soap->tag)); + return soap->error = SOAP_TAG_MISMATCH; + } + if (!*soap->id || !soap_getelement(soap, &t)) + { soap->peeked = 0; + if (soap->fignore) + soap->error = soap->fignore(soap, soap->tag); + else + soap->error = SOAP_OK; + DBGLOG(TEST, if (!soap->error) SOAP_MESSAGE(fdebug, "IGNORING element '%s'\n", soap->tag)); + if (!soap->error && soap->body) + { soap->level++; + while (!soap_ignore_element(soap)) + ; + if (soap->error == SOAP_NO_TAG) + soap->error = soap_element_end_in(soap, NULL); + } + } + } + return soap->error; +} + +#ifndef WITH_NOIDREF +SOAP_FMAC3 int SOAP_FMAC4 soap_putindependent(struct soap *soap) +{ + int i; + struct soap_plist *pp; + if (soap->version == 1 && soap->encodingStyle && !(soap->mode & (SOAP_XML_TREE | SOAP_XML_GRAPH))) + for (i = 0; i < SOAP_PTRHASH; i++) + for (pp = soap->pht[i]; pp; pp = pp->next) + if (pp->mark1 == 2 || pp->mark2 == 2) + if (soap_putelement(soap, pp->ptr, "id", pp->id, pp->type)) + return soap->error; + return SOAP_OK; +} +#endif + +#ifndef WITH_NOIDREF +SOAP_FMAC3 int SOAP_FMAC4 soap_putelement(struct soap *soap, const void *ptr, const char *tag, int id, int type) +{ + switch (type) + { + case SOAP_TYPE_paylid_byte: + return soap_out_byte(soap, tag, id, (const char *)ptr, "xsd:byte"); + case SOAP_TYPE_paylid_int: + return soap_out_int(soap, tag, id, (const int *)ptr, "xsd:int"); + case SOAP_TYPE_paylid_std__string: + return soap_out_std__string(soap, tag, id, (const std::string *)ptr, "xsd:string"); + case SOAP_TYPE_paylid_paylid__getSupportedBanks: + return soap_out_paylid__getSupportedBanks(soap, tag, id, (const struct paylid__getSupportedBanks *)ptr, "paylid:getSupportedBanks"); + case SOAP_TYPE_paylid_paylid__getSupportedBanksResponse: + return soap_out_paylid__getSupportedBanksResponse(soap, tag, id, (const struct paylid__getSupportedBanksResponse *)ptr, "paylid:getSupportedBanksResponse"); + case SOAP_TYPE_paylid_paylid__getTrxStatus: + return soap_out_paylid__getTrxStatus(soap, tag, id, (const struct paylid__getTrxStatus *)ptr, "paylid:getTrxStatus"); + case SOAP_TYPE_paylid_paylid__getTrxStatusResponse: + return soap_out_paylid__getTrxStatusResponse(soap, tag, id, (const struct paylid__getTrxStatusResponse *)ptr, "paylid:getTrxStatusResponse"); + case SOAP_TYPE_paylid_paylid__getAccount: + return soap_out_paylid__getAccount(soap, tag, id, (const struct paylid__getAccount *)ptr, "paylid:getAccount"); + case SOAP_TYPE_paylid_paylid__getAccountResponse: + return soap_out_paylid__getAccountResponse(soap, tag, id, (const struct paylid__getAccountResponse *)ptr, "paylid:getAccountResponse"); + case SOAP_TYPE_paylid_paylid__currentXrate: + return soap_out_paylid__currentXrate(soap, tag, id, (const struct paylid__currentXrate *)ptr, "paylid:currentXrate"); + case SOAP_TYPE_paylid_paylid__currentXrateResponse: + return soap_out_paylid__currentXrateResponse(soap, tag, id, (const struct paylid__currentXrateResponse *)ptr, "paylid:currentXrateResponse"); + case SOAP_TYPE_paylid_paylid__directAirTimeTopUp: + return soap_out_paylid__directAirTimeTopUp(soap, tag, id, (const struct paylid__directAirTimeTopUp *)ptr, "paylid:directAirTimeTopUp"); + case SOAP_TYPE_paylid_paylid__directAirTimeTopUpResponse: + return soap_out_paylid__directAirTimeTopUpResponse(soap, tag, id, (const struct paylid__directAirTimeTopUpResponse *)ptr, "paylid:directAirTimeTopUpResponse"); + case SOAP_TYPE_paylid_paylid__checkTransferStatus: + return soap_out_paylid__checkTransferStatus(soap, tag, id, (const struct paylid__checkTransferStatus *)ptr, "paylid:checkTransferStatus"); + case SOAP_TYPE_paylid_paylid__checkTransferStatusResponse: + return soap_out_paylid__checkTransferStatusResponse(soap, tag, id, (const struct paylid__checkTransferStatusResponse *)ptr, "paylid:checkTransferStatusResponse"); + case SOAP_TYPE_paylid_paylid__transferFund: + return soap_out_paylid__transferFund(soap, tag, id, (const struct paylid__transferFund *)ptr, "paylid:transferFund"); + case SOAP_TYPE_paylid_paylid__transferFundResponse: + return soap_out_paylid__transferFundResponse(soap, tag, id, (const struct paylid__transferFundResponse *)ptr, "paylid:transferFundResponse"); + case SOAP_TYPE_paylid_paylid__getAccountBalance: + return soap_out_paylid__getAccountBalance(soap, tag, id, (const struct paylid__getAccountBalance *)ptr, "paylid:getAccountBalance"); + case SOAP_TYPE_paylid_paylid__getAccountBalanceResponse: + return soap_out_paylid__getAccountBalanceResponse(soap, tag, id, (const struct paylid__getAccountBalanceResponse *)ptr, "paylid:getAccountBalanceResponse"); + case SOAP_TYPE_paylid__QName: + return soap_out_string(soap, tag, id, (char*const*)&ptr, "xsd:QName"); + case SOAP_TYPE_paylid_string: + return soap_out_string(soap, tag, id, (char*const*)&ptr, "xsd:string"); + } + return SOAP_OK; +} +#endif + +#ifndef WITH_NOIDREF +SOAP_FMAC3 void SOAP_FMAC4 soap_markelement(struct soap *soap, const void *ptr, int type) +{ + (void)soap; (void)ptr; (void)type; /* appease -Wall -Werror */ + switch (type) + { + case SOAP_TYPE_paylid_std__string: + soap_serialize_std__string(soap, (const std::string *)ptr); + break; + case SOAP_TYPE_paylid_paylid__getSupportedBanks: + soap_serialize_paylid__getSupportedBanks(soap, (const struct paylid__getSupportedBanks *)ptr); + break; + case SOAP_TYPE_paylid_paylid__getSupportedBanksResponse: + soap_serialize_paylid__getSupportedBanksResponse(soap, (const struct paylid__getSupportedBanksResponse *)ptr); + break; + case SOAP_TYPE_paylid_paylid__getTrxStatus: + soap_serialize_paylid__getTrxStatus(soap, (const struct paylid__getTrxStatus *)ptr); + break; + case SOAP_TYPE_paylid_paylid__getTrxStatusResponse: + soap_serialize_paylid__getTrxStatusResponse(soap, (const struct paylid__getTrxStatusResponse *)ptr); + break; + case SOAP_TYPE_paylid_paylid__getAccount: + soap_serialize_paylid__getAccount(soap, (const struct paylid__getAccount *)ptr); + break; + case SOAP_TYPE_paylid_paylid__getAccountResponse: + soap_serialize_paylid__getAccountResponse(soap, (const struct paylid__getAccountResponse *)ptr); + break; + case SOAP_TYPE_paylid_paylid__currentXrate: + soap_serialize_paylid__currentXrate(soap, (const struct paylid__currentXrate *)ptr); + break; + case SOAP_TYPE_paylid_paylid__currentXrateResponse: + soap_serialize_paylid__currentXrateResponse(soap, (const struct paylid__currentXrateResponse *)ptr); + break; + case SOAP_TYPE_paylid_paylid__directAirTimeTopUp: + soap_serialize_paylid__directAirTimeTopUp(soap, (const struct paylid__directAirTimeTopUp *)ptr); + break; + case SOAP_TYPE_paylid_paylid__directAirTimeTopUpResponse: + soap_serialize_paylid__directAirTimeTopUpResponse(soap, (const struct paylid__directAirTimeTopUpResponse *)ptr); + break; + case SOAP_TYPE_paylid_paylid__checkTransferStatus: + soap_serialize_paylid__checkTransferStatus(soap, (const struct paylid__checkTransferStatus *)ptr); + break; + case SOAP_TYPE_paylid_paylid__checkTransferStatusResponse: + soap_serialize_paylid__checkTransferStatusResponse(soap, (const struct paylid__checkTransferStatusResponse *)ptr); + break; + case SOAP_TYPE_paylid_paylid__transferFund: + soap_serialize_paylid__transferFund(soap, (const struct paylid__transferFund *)ptr); + break; + case SOAP_TYPE_paylid_paylid__transferFundResponse: + soap_serialize_paylid__transferFundResponse(soap, (const struct paylid__transferFundResponse *)ptr); + break; + case SOAP_TYPE_paylid_paylid__getAccountBalance: + soap_serialize_paylid__getAccountBalance(soap, (const struct paylid__getAccountBalance *)ptr); + break; + case SOAP_TYPE_paylid_paylid__getAccountBalanceResponse: + soap_serialize_paylid__getAccountBalanceResponse(soap, (const struct paylid__getAccountBalanceResponse *)ptr); + break; + case SOAP_TYPE_paylid__QName: + soap_serialize_string(soap, (char*const*)&ptr); + break; + case SOAP_TYPE_paylid_string: + soap_serialize_string(soap, (char*const*)&ptr); + break; + } +} +#endif + +SOAP_FMAC3 void * SOAP_FMAC4 soap_instantiate(struct soap *soap, int t, const char *type, const char *arrayType, size_t *n) +{ + switch (t) + { + case SOAP_TYPE_paylid_std__string: + return (void*)soap_instantiate_std__string(soap, -1, type, arrayType, n); + case SOAP_TYPE_paylid_paylid__getAccountBalanceResponse: + return (void*)soap_instantiate_paylid__getAccountBalanceResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_paylid_paylid__getAccountBalance: + return (void*)soap_instantiate_paylid__getAccountBalance(soap, -1, type, arrayType, n); + case SOAP_TYPE_paylid_paylid__transferFundResponse: + return (void*)soap_instantiate_paylid__transferFundResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_paylid_paylid__transferFund: + return (void*)soap_instantiate_paylid__transferFund(soap, -1, type, arrayType, n); + case SOAP_TYPE_paylid_paylid__checkTransferStatusResponse: + return (void*)soap_instantiate_paylid__checkTransferStatusResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_paylid_paylid__checkTransferStatus: + return (void*)soap_instantiate_paylid__checkTransferStatus(soap, -1, type, arrayType, n); + case SOAP_TYPE_paylid_paylid__directAirTimeTopUpResponse: + return (void*)soap_instantiate_paylid__directAirTimeTopUpResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_paylid_paylid__directAirTimeTopUp: + return (void*)soap_instantiate_paylid__directAirTimeTopUp(soap, -1, type, arrayType, n); + case SOAP_TYPE_paylid_paylid__currentXrateResponse: + return (void*)soap_instantiate_paylid__currentXrateResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_paylid_paylid__currentXrate: + return (void*)soap_instantiate_paylid__currentXrate(soap, -1, type, arrayType, n); + case SOAP_TYPE_paylid_paylid__getAccountResponse: + return (void*)soap_instantiate_paylid__getAccountResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_paylid_paylid__getAccount: + return (void*)soap_instantiate_paylid__getAccount(soap, -1, type, arrayType, n); + case SOAP_TYPE_paylid_paylid__getTrxStatusResponse: + return (void*)soap_instantiate_paylid__getTrxStatusResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_paylid_paylid__getTrxStatus: + return (void*)soap_instantiate_paylid__getTrxStatus(soap, -1, type, arrayType, n); + case SOAP_TYPE_paylid_paylid__getSupportedBanksResponse: + return (void*)soap_instantiate_paylid__getSupportedBanksResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_paylid_paylid__getSupportedBanks: + return (void*)soap_instantiate_paylid__getSupportedBanks(soap, -1, type, arrayType, n); +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_paylid_SOAP_ENV__Header: + return (void*)soap_instantiate_SOAP_ENV__Header(soap, -1, type, arrayType, n); +#endif +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_paylid_SOAP_ENV__Code: + return (void*)soap_instantiate_SOAP_ENV__Code(soap, -1, type, arrayType, n); +#endif +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_paylid_SOAP_ENV__Detail: + return (void*)soap_instantiate_SOAP_ENV__Detail(soap, -1, type, arrayType, n); +#endif +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_paylid_SOAP_ENV__Reason: + return (void*)soap_instantiate_SOAP_ENV__Reason(soap, -1, type, arrayType, n); +#endif +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_paylid_SOAP_ENV__Fault: + return (void*)soap_instantiate_SOAP_ENV__Fault(soap, -1, type, arrayType, n); +#endif + } + return NULL; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_fdelete(struct soap_clist *p) +{ switch (p->type) + { + case SOAP_TYPE_paylid_std__string: + if (p->size < 0) + SOAP_DELETE((std::string*)p->ptr); + else + SOAP_DELETE_ARRAY((std::string*)p->ptr); + break; + case SOAP_TYPE_paylid_paylid__getAccountBalanceResponse: + if (p->size < 0) + SOAP_DELETE((struct paylid__getAccountBalanceResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((struct paylid__getAccountBalanceResponse*)p->ptr); + break; + case SOAP_TYPE_paylid_paylid__getAccountBalance: + if (p->size < 0) + SOAP_DELETE((struct paylid__getAccountBalance*)p->ptr); + else + SOAP_DELETE_ARRAY((struct paylid__getAccountBalance*)p->ptr); + break; + case SOAP_TYPE_paylid_paylid__transferFundResponse: + if (p->size < 0) + SOAP_DELETE((struct paylid__transferFundResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((struct paylid__transferFundResponse*)p->ptr); + break; + case SOAP_TYPE_paylid_paylid__transferFund: + if (p->size < 0) + SOAP_DELETE((struct paylid__transferFund*)p->ptr); + else + SOAP_DELETE_ARRAY((struct paylid__transferFund*)p->ptr); + break; + case SOAP_TYPE_paylid_paylid__checkTransferStatusResponse: + if (p->size < 0) + SOAP_DELETE((struct paylid__checkTransferStatusResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((struct paylid__checkTransferStatusResponse*)p->ptr); + break; + case SOAP_TYPE_paylid_paylid__checkTransferStatus: + if (p->size < 0) + SOAP_DELETE((struct paylid__checkTransferStatus*)p->ptr); + else + SOAP_DELETE_ARRAY((struct paylid__checkTransferStatus*)p->ptr); + break; + case SOAP_TYPE_paylid_paylid__directAirTimeTopUpResponse: + if (p->size < 0) + SOAP_DELETE((struct paylid__directAirTimeTopUpResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((struct paylid__directAirTimeTopUpResponse*)p->ptr); + break; + case SOAP_TYPE_paylid_paylid__directAirTimeTopUp: + if (p->size < 0) + SOAP_DELETE((struct paylid__directAirTimeTopUp*)p->ptr); + else + SOAP_DELETE_ARRAY((struct paylid__directAirTimeTopUp*)p->ptr); + break; + case SOAP_TYPE_paylid_paylid__currentXrateResponse: + if (p->size < 0) + SOAP_DELETE((struct paylid__currentXrateResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((struct paylid__currentXrateResponse*)p->ptr); + break; + case SOAP_TYPE_paylid_paylid__currentXrate: + if (p->size < 0) + SOAP_DELETE((struct paylid__currentXrate*)p->ptr); + else + SOAP_DELETE_ARRAY((struct paylid__currentXrate*)p->ptr); + break; + case SOAP_TYPE_paylid_paylid__getAccountResponse: + if (p->size < 0) + SOAP_DELETE((struct paylid__getAccountResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((struct paylid__getAccountResponse*)p->ptr); + break; + case SOAP_TYPE_paylid_paylid__getAccount: + if (p->size < 0) + SOAP_DELETE((struct paylid__getAccount*)p->ptr); + else + SOAP_DELETE_ARRAY((struct paylid__getAccount*)p->ptr); + break; + case SOAP_TYPE_paylid_paylid__getTrxStatusResponse: + if (p->size < 0) + SOAP_DELETE((struct paylid__getTrxStatusResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((struct paylid__getTrxStatusResponse*)p->ptr); + break; + case SOAP_TYPE_paylid_paylid__getTrxStatus: + if (p->size < 0) + SOAP_DELETE((struct paylid__getTrxStatus*)p->ptr); + else + SOAP_DELETE_ARRAY((struct paylid__getTrxStatus*)p->ptr); + break; + case SOAP_TYPE_paylid_paylid__getSupportedBanksResponse: + if (p->size < 0) + SOAP_DELETE((struct paylid__getSupportedBanksResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((struct paylid__getSupportedBanksResponse*)p->ptr); + break; + case SOAP_TYPE_paylid_paylid__getSupportedBanks: + if (p->size < 0) + SOAP_DELETE((struct paylid__getSupportedBanks*)p->ptr); + else + SOAP_DELETE_ARRAY((struct paylid__getSupportedBanks*)p->ptr); + break; + case SOAP_TYPE_paylid_SOAP_ENV__Header: + if (p->size < 0) + SOAP_DELETE((struct SOAP_ENV__Header*)p->ptr); + else + SOAP_DELETE_ARRAY((struct SOAP_ENV__Header*)p->ptr); + break; + case SOAP_TYPE_paylid_SOAP_ENV__Code: + if (p->size < 0) + SOAP_DELETE((struct SOAP_ENV__Code*)p->ptr); + else + SOAP_DELETE_ARRAY((struct SOAP_ENV__Code*)p->ptr); + break; + case SOAP_TYPE_paylid_SOAP_ENV__Detail: + if (p->size < 0) + SOAP_DELETE((struct SOAP_ENV__Detail*)p->ptr); + else + SOAP_DELETE_ARRAY((struct SOAP_ENV__Detail*)p->ptr); + break; + case SOAP_TYPE_paylid_SOAP_ENV__Reason: + if (p->size < 0) + SOAP_DELETE((struct SOAP_ENV__Reason*)p->ptr); + else + SOAP_DELETE_ARRAY((struct SOAP_ENV__Reason*)p->ptr); + break; + case SOAP_TYPE_paylid_SOAP_ENV__Fault: + if (p->size < 0) + SOAP_DELETE((struct SOAP_ENV__Fault*)p->ptr); + else + SOAP_DELETE_ARRAY((struct SOAP_ENV__Fault*)p->ptr); + break; + default: return SOAP_ERR; + } + return SOAP_OK; +} + +SOAP_FMAC3 void* SOAP_FMAC4 soap_class_id_enter(struct soap *soap, const char *id, void *p, int t, size_t n, const char *type, const char *arrayType) +{ return soap_id_enter(soap, id, p, t, n, 0, type, arrayType, soap_instantiate); +} + +SOAP_FMAC3 void* SOAP_FMAC4 soap_container_id_forward(struct soap *soap, const char *href, void *p, size_t len, int st, int tt, size_t n, unsigned int k) +{ return soap_id_forward(soap, href, p, len, st, tt, n, k, soap_container_insert); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_container_insert(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +#ifdef WIN32 +#pragma warning(push) +#pragma warning(disable:4065) +#endif +{ + (void)soap; (void)st; (void)p; (void)len; (void)q; (void)n; /* appease -Wall -Werror */ + switch (tt) + { + default: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not insert type=%d in %d\n", st, tt)); + } +#ifdef WIN32 +#pragma warning(pop) +#endif +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_byte(struct soap *soap, char *a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_byte + *a = SOAP_DEFAULT_byte; +#else + *a = (char)0; +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_byte(struct soap *soap, const char *tag, int id, const char *a, const char *type) +{ + return soap_outbyte(soap, tag, id, a, type, SOAP_TYPE_paylid_byte); +} + +SOAP_FMAC3 char * SOAP_FMAC4 soap_in_byte(struct soap *soap, const char *tag, char *a, const char *type) +{ char *p; + p = soap_inbyte(soap, tag, a, type, SOAP_TYPE_paylid_byte); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_byte(struct soap *soap, const char *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_byte); + if (soap_out_byte(soap, tag?tag:"byte", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 char * SOAP_FMAC4 soap_get_byte(struct soap *soap, char *p, const char *tag, const char *type) +{ + if ((p = soap_in_byte(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_int(struct soap *soap, int *a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_int + *a = SOAP_DEFAULT_int; +#else + *a = (int)0; +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_int(struct soap *soap, const char *tag, int id, const int *a, const char *type) +{ + return soap_outint(soap, tag, id, a, type, SOAP_TYPE_paylid_int); +} + +SOAP_FMAC3 int * SOAP_FMAC4 soap_in_int(struct soap *soap, const char *tag, int *a, const char *type) +{ int *p; + p = soap_inint(soap, tag, a, type, SOAP_TYPE_paylid_int); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_int(struct soap *soap, const int *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_int); + if (soap_out_int(soap, tag?tag:"int", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 int * SOAP_FMAC4 soap_get_int(struct soap *soap, int *p, const char *tag, const char *type) +{ + if ((p = soap_in_int(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_std__string(struct soap *soap, std::string *p) +{ + (void)soap; /* appease -Wall -Werror */ + p->erase(); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__string(struct soap *soap, const std::string *p) +{ (void)soap; (void)p; /* appease -Wall -Werror */ +} +SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__string(struct soap *soap, const char *tag, int id, const std::string *s, const char *type) +{ + if ((soap->mode & SOAP_C_NILSTRING) && s->empty()) + return soap_element_null(soap, tag, id, type); + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, s, SOAP_TYPE_paylid_std__string), type) || soap_string_out(soap, s->c_str(), 0) || soap_element_end_out(soap, tag)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_std__string(struct soap *soap, const char *tag, std::string *s, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!s) + s = soap_new_std__string(soap, -1); + if (soap->null) + if (s) + s->erase(); + if (soap->body && !*soap->href) + { char *t; + s = (std::string*)soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_paylid_std__string, sizeof(std::string), soap->type, soap->arrayType); + if (s) + { if ((t = soap_string_in(soap, 1, -1, -1))) + s->assign(t); + else + return NULL; + } + } + else + s = (std::string*)soap_id_forward(soap, soap->href, soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_paylid_std__string, sizeof(std::string), soap->type, soap->arrayType), 0, SOAP_TYPE_paylid_std__string, 0, sizeof(std::string), 0, soap_copy_std__string); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + return s; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__string(struct soap *soap, const std::string *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_std__string); + if (soap_out_std__string(soap, tag?tag:"string", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_std__string(struct soap *soap, std::string *p, const char *tag, const char *type) +{ + if ((p = soap_in_std__string(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 std::string * SOAP_FMAC2 soap_instantiate_std__string(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_std__string(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_std__string, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(std::string); + if (size) + *size = sizeof(std::string); + } + else + { cp->ptr = (void*)SOAP_NEW(std::string[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(std::string); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (std::string*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_std__string(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying std::string %p -> %p\n", q, p)); + *(std::string*)p = *(std::string*)q; +} + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Fault(struct soap *soap, struct SOAP_ENV__Fault *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default__QName(soap, &a->faultcode); + soap_default_string(soap, &a->faultstring); + soap_default_string(soap, &a->faultactor); + a->detail = NULL; + a->SOAP_ENV__Code = NULL; + a->SOAP_ENV__Reason = NULL; + soap_default_string(soap, &a->SOAP_ENV__Node); + soap_default_string(soap, &a->SOAP_ENV__Role); + a->SOAP_ENV__Detail = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Fault(struct soap *soap, const struct SOAP_ENV__Fault *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize__QName(soap, &a->faultcode); + soap_serialize_string(soap, &a->faultstring); + soap_serialize_string(soap, &a->faultactor); + soap_serialize_PointerToSOAP_ENV__Detail(soap, &a->detail); + soap_serialize_PointerToSOAP_ENV__Code(soap, &a->SOAP_ENV__Code); + soap_serialize_PointerToSOAP_ENV__Reason(soap, &a->SOAP_ENV__Reason); + soap_serialize_string(soap, &a->SOAP_ENV__Node); + soap_serialize_string(soap, &a->SOAP_ENV__Role); + soap_serialize_PointerToSOAP_ENV__Detail(soap, &a->SOAP_ENV__Detail); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Fault(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Fault *a, const char *type) +{ + const char *soap_tmp_faultcode = soap_QName2s(soap, a->faultcode); + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_SOAP_ENV__Fault), type)) + return soap->error; + if (soap_out__QName(soap, "faultcode", -1, (char*const*)&soap_tmp_faultcode, "")) + return soap->error; + if (soap_out_string(soap, "faultstring", -1, &a->faultstring, "")) + return soap->error; + if (soap_out_string(soap, "faultactor", -1, &a->faultactor, "")) + return soap->error; + if (soap_out_PointerToSOAP_ENV__Detail(soap, "detail", -1, &a->detail, "")) + return soap->error; + if (soap_out_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Code", -1, &a->SOAP_ENV__Code, "")) + return soap->error; + if (soap_out_PointerToSOAP_ENV__Reason(soap, "SOAP-ENV:Reason", -1, &a->SOAP_ENV__Reason, "")) + return soap->error; + if (soap_out_string(soap, "SOAP-ENV:Node", -1, &a->SOAP_ENV__Node, "")) + return soap->error; + if (soap_out_string(soap, "SOAP-ENV:Role", -1, &a->SOAP_ENV__Role, "")) + return soap->error; + if (soap_out_PointerToSOAP_ENV__Detail(soap, "SOAP-ENV:Detail", -1, &a->SOAP_ENV__Detail, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_in_SOAP_ENV__Fault(struct soap *soap, const char *tag, struct SOAP_ENV__Fault *a, const char *type) +{ + size_t soap_flag_faultcode = 1; + size_t soap_flag_faultstring = 1; + size_t soap_flag_faultactor = 1; + size_t soap_flag_detail = 1; + size_t soap_flag_SOAP_ENV__Code = 1; + size_t soap_flag_SOAP_ENV__Reason = 1; + size_t soap_flag_SOAP_ENV__Node = 1; + size_t soap_flag_SOAP_ENV__Role = 1; + size_t soap_flag_SOAP_ENV__Detail = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct SOAP_ENV__Fault *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_SOAP_ENV__Fault, sizeof(struct SOAP_ENV__Fault), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default_SOAP_ENV__Fault(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_faultcode && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in__QName(soap, "faultcode", &a->faultcode, "")) + { soap_flag_faultcode--; + continue; + } + if (soap_flag_faultstring && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_string(soap, "faultstring", &a->faultstring, "xsd:string")) + { soap_flag_faultstring--; + continue; + } + if (soap_flag_faultactor && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_string(soap, "faultactor", &a->faultactor, "xsd:string")) + { soap_flag_faultactor--; + continue; + } + if (soap_flag_detail && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerToSOAP_ENV__Detail(soap, "detail", &a->detail, "")) + { soap_flag_detail--; + continue; + } + if (soap_flag_SOAP_ENV__Code && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Code", &a->SOAP_ENV__Code, "")) + { soap_flag_SOAP_ENV__Code--; + continue; + } + if (soap_flag_SOAP_ENV__Reason && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerToSOAP_ENV__Reason(soap, "SOAP-ENV:Reason", &a->SOAP_ENV__Reason, "")) + { soap_flag_SOAP_ENV__Reason--; + continue; + } + if (soap_flag_SOAP_ENV__Node && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_string(soap, "SOAP-ENV:Node", &a->SOAP_ENV__Node, "xsd:string")) + { soap_flag_SOAP_ENV__Node--; + continue; + } + if (soap_flag_SOAP_ENV__Role && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_string(soap, "SOAP-ENV:Role", &a->SOAP_ENV__Role, "xsd:string")) + { soap_flag_SOAP_ENV__Role--; + continue; + } + if (soap_flag_SOAP_ENV__Detail && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerToSOAP_ENV__Detail(soap, "SOAP-ENV:Detail", &a->SOAP_ENV__Detail, "")) + { soap_flag_SOAP_ENV__Detail--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct SOAP_ENV__Fault *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_SOAP_ENV__Fault, 0, sizeof(struct SOAP_ENV__Fault), 0, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Fault(struct soap *soap, const struct SOAP_ENV__Fault *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_SOAP_ENV__Fault); + if (soap_out_SOAP_ENV__Fault(soap, tag?tag:"SOAP-ENV:Fault", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_get_SOAP_ENV__Fault(struct soap *soap, struct SOAP_ENV__Fault *p, const char *tag, const char *type) +{ + if ((p = soap_in_SOAP_ENV__Fault(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct SOAP_ENV__Fault * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Fault(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Fault(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_SOAP_ENV__Fault, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Fault); + if (size) + *size = sizeof(struct SOAP_ENV__Fault); + } + else + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Fault[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct SOAP_ENV__Fault); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct SOAP_ENV__Fault*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Fault(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Fault %p -> %p\n", q, p)); + *(struct SOAP_ENV__Fault*)p = *(struct SOAP_ENV__Fault*)q; +} + +#endif + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_string(soap, &a->SOAP_ENV__Text); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Reason(struct soap *soap, const struct SOAP_ENV__Reason *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_string(soap, &a->SOAP_ENV__Text); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Reason(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Reason *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_SOAP_ENV__Reason), type)) + return soap->error; + if (soap->lang) + soap_set_attr(soap, "xml:lang", soap->lang); + if (soap_out_string(soap, "SOAP-ENV:Text", -1, &a->SOAP_ENV__Text, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_in_SOAP_ENV__Reason(struct soap *soap, const char *tag, struct SOAP_ENV__Reason *a, const char *type) +{ + size_t soap_flag_SOAP_ENV__Text = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct SOAP_ENV__Reason *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_SOAP_ENV__Reason, sizeof(struct SOAP_ENV__Reason), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default_SOAP_ENV__Reason(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_SOAP_ENV__Text && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_string(soap, "SOAP-ENV:Text", &a->SOAP_ENV__Text, "xsd:string")) + { soap_flag_SOAP_ENV__Text--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct SOAP_ENV__Reason *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_SOAP_ENV__Reason, 0, sizeof(struct SOAP_ENV__Reason), 0, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Reason(struct soap *soap, const struct SOAP_ENV__Reason *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_SOAP_ENV__Reason); + if (soap_out_SOAP_ENV__Reason(soap, tag?tag:"SOAP-ENV:Reason", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_get_SOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *p, const char *tag, const char *type) +{ + if ((p = soap_in_SOAP_ENV__Reason(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct SOAP_ENV__Reason * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Reason(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Reason(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_SOAP_ENV__Reason, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Reason); + if (size) + *size = sizeof(struct SOAP_ENV__Reason); + } + else + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Reason[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct SOAP_ENV__Reason); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct SOAP_ENV__Reason*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Reason(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Reason %p -> %p\n", q, p)); + *(struct SOAP_ENV__Reason*)p = *(struct SOAP_ENV__Reason*)q; +} + +#endif + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->__type = 0; + a->fault = NULL; + a->__any = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Detail(struct soap *soap, const struct SOAP_ENV__Detail *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_markelement(soap, a->fault, a->__type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Detail(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Detail *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_SOAP_ENV__Detail), type)) + return soap->error; + if (soap_putelement(soap, a->fault, "fault", -1, a->__type)) + return soap->error; + soap_outliteral(soap, "-any", &a->__any, NULL); + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_in_SOAP_ENV__Detail(struct soap *soap, const char *tag, struct SOAP_ENV__Detail *a, const char *type) +{ + size_t soap_flag_fault = 1; + size_t soap_flag___any = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct SOAP_ENV__Detail *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_SOAP_ENV__Detail, sizeof(struct SOAP_ENV__Detail), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default_SOAP_ENV__Detail(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_fault && soap->error == SOAP_TAG_MISMATCH) + if ((a->fault = soap_getelement(soap, &a->__type))) + { soap_flag_fault = 0; + continue; + } + if (soap_flag___any && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_inliteral(soap, "-any", &a->__any)) + { soap_flag___any--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct SOAP_ENV__Detail *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_SOAP_ENV__Detail, 0, sizeof(struct SOAP_ENV__Detail), 0, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Detail(struct soap *soap, const struct SOAP_ENV__Detail *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_SOAP_ENV__Detail); + if (soap_out_SOAP_ENV__Detail(soap, tag?tag:"SOAP-ENV:Detail", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_get_SOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *p, const char *tag, const char *type) +{ + if ((p = soap_in_SOAP_ENV__Detail(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct SOAP_ENV__Detail * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Detail(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Detail(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_SOAP_ENV__Detail, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Detail); + if (size) + *size = sizeof(struct SOAP_ENV__Detail); + } + else + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Detail[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct SOAP_ENV__Detail); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct SOAP_ENV__Detail*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Detail(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Detail %p -> %p\n", q, p)); + *(struct SOAP_ENV__Detail*)p = *(struct SOAP_ENV__Detail*)q; +} + +#endif + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default__QName(soap, &a->SOAP_ENV__Value); + a->SOAP_ENV__Subcode = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Code(struct soap *soap, const struct SOAP_ENV__Code *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize__QName(soap, &a->SOAP_ENV__Value); + soap_serialize_PointerToSOAP_ENV__Code(soap, &a->SOAP_ENV__Subcode); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Code(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Code *a, const char *type) +{ + const char *soap_tmp_SOAP_ENV__Value = soap_QName2s(soap, a->SOAP_ENV__Value); + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_SOAP_ENV__Code), type)) + return soap->error; + if (soap_out__QName(soap, "SOAP-ENV:Value", -1, (char*const*)&soap_tmp_SOAP_ENV__Value, "")) + return soap->error; + if (soap_out_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Subcode", -1, &a->SOAP_ENV__Subcode, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_in_SOAP_ENV__Code(struct soap *soap, const char *tag, struct SOAP_ENV__Code *a, const char *type) +{ + size_t soap_flag_SOAP_ENV__Value = 1; + size_t soap_flag_SOAP_ENV__Subcode = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct SOAP_ENV__Code *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_SOAP_ENV__Code, sizeof(struct SOAP_ENV__Code), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default_SOAP_ENV__Code(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_SOAP_ENV__Value && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in__QName(soap, "SOAP-ENV:Value", &a->SOAP_ENV__Value, "")) + { soap_flag_SOAP_ENV__Value--; + continue; + } + if (soap_flag_SOAP_ENV__Subcode && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Subcode", &a->SOAP_ENV__Subcode, "")) + { soap_flag_SOAP_ENV__Subcode--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct SOAP_ENV__Code *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_SOAP_ENV__Code, 0, sizeof(struct SOAP_ENV__Code), 0, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Code(struct soap *soap, const struct SOAP_ENV__Code *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_SOAP_ENV__Code); + if (soap_out_SOAP_ENV__Code(soap, tag?tag:"SOAP-ENV:Code", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_get_SOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *p, const char *tag, const char *type) +{ + if ((p = soap_in_SOAP_ENV__Code(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct SOAP_ENV__Code * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Code(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Code(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_SOAP_ENV__Code, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Code); + if (size) + *size = sizeof(struct SOAP_ENV__Code); + } + else + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Code[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct SOAP_ENV__Code); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct SOAP_ENV__Code*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Code(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Code %p -> %p\n", q, p)); + *(struct SOAP_ENV__Code*)p = *(struct SOAP_ENV__Code*)q; +} + +#endif + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Header(struct soap *soap, struct SOAP_ENV__Header *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Header(struct soap *soap, const struct SOAP_ENV__Header *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Header(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Header *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_SOAP_ENV__Header), type)) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_in_SOAP_ENV__Header(struct soap *soap, const char *tag, struct SOAP_ENV__Header *a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct SOAP_ENV__Header *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_SOAP_ENV__Header, sizeof(struct SOAP_ENV__Header), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default_SOAP_ENV__Header(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct SOAP_ENV__Header *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_SOAP_ENV__Header, 0, sizeof(struct SOAP_ENV__Header), 0, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Header(struct soap *soap, const struct SOAP_ENV__Header *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_SOAP_ENV__Header); + if (soap_out_SOAP_ENV__Header(soap, tag?tag:"SOAP-ENV:Header", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_get_SOAP_ENV__Header(struct soap *soap, struct SOAP_ENV__Header *p, const char *tag, const char *type) +{ + if ((p = soap_in_SOAP_ENV__Header(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct SOAP_ENV__Header * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Header(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Header(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_SOAP_ENV__Header, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Header); + if (size) + *size = sizeof(struct SOAP_ENV__Header); + } + else + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Header[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct SOAP_ENV__Header); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct SOAP_ENV__Header*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Header(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Header %p -> %p\n", q, p)); + *(struct SOAP_ENV__Header*)p = *(struct SOAP_ENV__Header*)q; +} + +#endif + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getSupportedBanks(struct soap *soap, struct paylid__getSupportedBanks *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_std__string(soap, &a->terminalID); + soap_default_std__string(soap, &a->topupData); + soap_default_std__string(soap, &a->hmac); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getSupportedBanks(struct soap *soap, const struct paylid__getSupportedBanks *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_std__string(soap, &a->terminalID); + soap_serialize_std__string(soap, &a->topupData); + soap_serialize_std__string(soap, &a->hmac); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getSupportedBanks(struct soap *soap, const char *tag, int id, const struct paylid__getSupportedBanks *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_paylid__getSupportedBanks), type)) + return soap->error; + if (soap_out_std__string(soap, "terminalID", -1, &a->terminalID, "")) + return soap->error; + if (soap_out_std__string(soap, "topupData", -1, &a->topupData, "")) + return soap->error; + if (soap_out_std__string(soap, "hmac", -1, &a->hmac, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct paylid__getSupportedBanks * SOAP_FMAC4 soap_in_paylid__getSupportedBanks(struct soap *soap, const char *tag, struct paylid__getSupportedBanks *a, const char *type) +{ + size_t soap_flag_terminalID = 1; + size_t soap_flag_topupData = 1; + size_t soap_flag_hmac = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct paylid__getSupportedBanks *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_paylid__getSupportedBanks, sizeof(struct paylid__getSupportedBanks), soap->type, soap->arrayType); + if (!a) + return NULL; + soap_default_paylid__getSupportedBanks(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_terminalID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "terminalID", &a->terminalID, "xsd:string")) + { soap_flag_terminalID--; + continue; + } + if (soap_flag_topupData && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "topupData", &a->topupData, "xsd:string")) + { soap_flag_topupData--; + continue; + } + if (soap_flag_hmac && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "hmac", &a->hmac, "xsd:string")) + { soap_flag_hmac--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct paylid__getSupportedBanks *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_paylid__getSupportedBanks, 0, sizeof(struct paylid__getSupportedBanks), 0, soap_copy_paylid__getSupportedBanks); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_terminalID > 0 || soap_flag_topupData > 0 || soap_flag_hmac > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getSupportedBanks(struct soap *soap, const struct paylid__getSupportedBanks *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_paylid__getSupportedBanks); + if (soap_out_paylid__getSupportedBanks(soap, tag?tag:"paylid:getSupportedBanks", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct paylid__getSupportedBanks * SOAP_FMAC4 soap_get_paylid__getSupportedBanks(struct soap *soap, struct paylid__getSupportedBanks *p, const char *tag, const char *type) +{ + if ((p = soap_in_paylid__getSupportedBanks(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct paylid__getSupportedBanks * SOAP_FMAC2 soap_instantiate_paylid__getSupportedBanks(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_paylid__getSupportedBanks(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_paylid__getSupportedBanks, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct paylid__getSupportedBanks); + if (size) + *size = sizeof(struct paylid__getSupportedBanks); + } + else + { cp->ptr = (void*)SOAP_NEW(struct paylid__getSupportedBanks[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct paylid__getSupportedBanks); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct paylid__getSupportedBanks*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getSupportedBanks(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct paylid__getSupportedBanks %p -> %p\n", q, p)); + *(struct paylid__getSupportedBanks*)p = *(struct paylid__getSupportedBanks*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getSupportedBanksResponse(struct soap *soap, struct paylid__getSupportedBanksResponse *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_std__string(soap, &a->Code); + soap_default_std__string(soap, &a->Data); + soap_default_std__string(soap, &a->Hmac); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getSupportedBanksResponse(struct soap *soap, const struct paylid__getSupportedBanksResponse *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_std__string(soap, &a->Code); + soap_serialize_std__string(soap, &a->Data); + soap_serialize_std__string(soap, &a->Hmac); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getSupportedBanksResponse(struct soap *soap, const char *tag, int id, const struct paylid__getSupportedBanksResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_paylid__getSupportedBanksResponse), type)) + return soap->error; + if (soap_out_std__string(soap, "Code", -1, &a->Code, "")) + return soap->error; + if (soap_out_std__string(soap, "Data", -1, &a->Data, "")) + return soap->error; + if (soap_out_std__string(soap, "Hmac", -1, &a->Hmac, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct paylid__getSupportedBanksResponse * SOAP_FMAC4 soap_in_paylid__getSupportedBanksResponse(struct soap *soap, const char *tag, struct paylid__getSupportedBanksResponse *a, const char *type) +{ + size_t soap_flag_Code = 1; + size_t soap_flag_Data = 1; + size_t soap_flag_Hmac = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct paylid__getSupportedBanksResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_paylid__getSupportedBanksResponse, sizeof(struct paylid__getSupportedBanksResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + soap_default_paylid__getSupportedBanksResponse(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_Code && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Code", &a->Code, "xsd:string")) + { soap_flag_Code--; + continue; + } + if (soap_flag_Data && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Data", &a->Data, "xsd:string")) + { soap_flag_Data--; + continue; + } + if (soap_flag_Hmac && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Hmac", &a->Hmac, "xsd:string")) + { soap_flag_Hmac--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct paylid__getSupportedBanksResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_paylid__getSupportedBanksResponse, 0, sizeof(struct paylid__getSupportedBanksResponse), 0, soap_copy_paylid__getSupportedBanksResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_Code > 0 || soap_flag_Data > 0 || soap_flag_Hmac > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getSupportedBanksResponse(struct soap *soap, const struct paylid__getSupportedBanksResponse *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_paylid__getSupportedBanksResponse); + if (soap_out_paylid__getSupportedBanksResponse(soap, tag?tag:"paylid:getSupportedBanksResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct paylid__getSupportedBanksResponse * SOAP_FMAC4 soap_get_paylid__getSupportedBanksResponse(struct soap *soap, struct paylid__getSupportedBanksResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in_paylid__getSupportedBanksResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct paylid__getSupportedBanksResponse * SOAP_FMAC2 soap_instantiate_paylid__getSupportedBanksResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_paylid__getSupportedBanksResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_paylid__getSupportedBanksResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct paylid__getSupportedBanksResponse); + if (size) + *size = sizeof(struct paylid__getSupportedBanksResponse); + } + else + { cp->ptr = (void*)SOAP_NEW(struct paylid__getSupportedBanksResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct paylid__getSupportedBanksResponse); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct paylid__getSupportedBanksResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getSupportedBanksResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct paylid__getSupportedBanksResponse %p -> %p\n", q, p)); + *(struct paylid__getSupportedBanksResponse*)p = *(struct paylid__getSupportedBanksResponse*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getTrxStatus(struct soap *soap, struct paylid__getTrxStatus *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_std__string(soap, &a->terminalID); + soap_default_std__string(soap, &a->topupData); + soap_default_std__string(soap, &a->hmac); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getTrxStatus(struct soap *soap, const struct paylid__getTrxStatus *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_std__string(soap, &a->terminalID); + soap_serialize_std__string(soap, &a->topupData); + soap_serialize_std__string(soap, &a->hmac); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getTrxStatus(struct soap *soap, const char *tag, int id, const struct paylid__getTrxStatus *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_paylid__getTrxStatus), type)) + return soap->error; + if (soap_out_std__string(soap, "terminalID", -1, &a->terminalID, "")) + return soap->error; + if (soap_out_std__string(soap, "topupData", -1, &a->topupData, "")) + return soap->error; + if (soap_out_std__string(soap, "hmac", -1, &a->hmac, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct paylid__getTrxStatus * SOAP_FMAC4 soap_in_paylid__getTrxStatus(struct soap *soap, const char *tag, struct paylid__getTrxStatus *a, const char *type) +{ + size_t soap_flag_terminalID = 1; + size_t soap_flag_topupData = 1; + size_t soap_flag_hmac = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct paylid__getTrxStatus *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_paylid__getTrxStatus, sizeof(struct paylid__getTrxStatus), soap->type, soap->arrayType); + if (!a) + return NULL; + soap_default_paylid__getTrxStatus(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_terminalID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "terminalID", &a->terminalID, "xsd:string")) + { soap_flag_terminalID--; + continue; + } + if (soap_flag_topupData && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "topupData", &a->topupData, "xsd:string")) + { soap_flag_topupData--; + continue; + } + if (soap_flag_hmac && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "hmac", &a->hmac, "xsd:string")) + { soap_flag_hmac--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct paylid__getTrxStatus *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_paylid__getTrxStatus, 0, sizeof(struct paylid__getTrxStatus), 0, soap_copy_paylid__getTrxStatus); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_terminalID > 0 || soap_flag_topupData > 0 || soap_flag_hmac > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getTrxStatus(struct soap *soap, const struct paylid__getTrxStatus *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_paylid__getTrxStatus); + if (soap_out_paylid__getTrxStatus(soap, tag?tag:"paylid:getTrxStatus", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct paylid__getTrxStatus * SOAP_FMAC4 soap_get_paylid__getTrxStatus(struct soap *soap, struct paylid__getTrxStatus *p, const char *tag, const char *type) +{ + if ((p = soap_in_paylid__getTrxStatus(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct paylid__getTrxStatus * SOAP_FMAC2 soap_instantiate_paylid__getTrxStatus(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_paylid__getTrxStatus(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_paylid__getTrxStatus, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct paylid__getTrxStatus); + if (size) + *size = sizeof(struct paylid__getTrxStatus); + } + else + { cp->ptr = (void*)SOAP_NEW(struct paylid__getTrxStatus[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct paylid__getTrxStatus); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct paylid__getTrxStatus*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getTrxStatus(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct paylid__getTrxStatus %p -> %p\n", q, p)); + *(struct paylid__getTrxStatus*)p = *(struct paylid__getTrxStatus*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getTrxStatusResponse(struct soap *soap, struct paylid__getTrxStatusResponse *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_std__string(soap, &a->Code); + soap_default_std__string(soap, &a->Data); + soap_default_std__string(soap, &a->Hmac); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getTrxStatusResponse(struct soap *soap, const struct paylid__getTrxStatusResponse *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_std__string(soap, &a->Code); + soap_serialize_std__string(soap, &a->Data); + soap_serialize_std__string(soap, &a->Hmac); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getTrxStatusResponse(struct soap *soap, const char *tag, int id, const struct paylid__getTrxStatusResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_paylid__getTrxStatusResponse), type)) + return soap->error; + if (soap_out_std__string(soap, "Code", -1, &a->Code, "")) + return soap->error; + if (soap_out_std__string(soap, "Data", -1, &a->Data, "")) + return soap->error; + if (soap_out_std__string(soap, "Hmac", -1, &a->Hmac, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct paylid__getTrxStatusResponse * SOAP_FMAC4 soap_in_paylid__getTrxStatusResponse(struct soap *soap, const char *tag, struct paylid__getTrxStatusResponse *a, const char *type) +{ + size_t soap_flag_Code = 1; + size_t soap_flag_Data = 1; + size_t soap_flag_Hmac = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct paylid__getTrxStatusResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_paylid__getTrxStatusResponse, sizeof(struct paylid__getTrxStatusResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + soap_default_paylid__getTrxStatusResponse(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_Code && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Code", &a->Code, "xsd:string")) + { soap_flag_Code--; + continue; + } + if (soap_flag_Data && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Data", &a->Data, "xsd:string")) + { soap_flag_Data--; + continue; + } + if (soap_flag_Hmac && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Hmac", &a->Hmac, "xsd:string")) + { soap_flag_Hmac--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct paylid__getTrxStatusResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_paylid__getTrxStatusResponse, 0, sizeof(struct paylid__getTrxStatusResponse), 0, soap_copy_paylid__getTrxStatusResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_Code > 0 || soap_flag_Data > 0 || soap_flag_Hmac > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getTrxStatusResponse(struct soap *soap, const struct paylid__getTrxStatusResponse *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_paylid__getTrxStatusResponse); + if (soap_out_paylid__getTrxStatusResponse(soap, tag?tag:"paylid:getTrxStatusResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct paylid__getTrxStatusResponse * SOAP_FMAC4 soap_get_paylid__getTrxStatusResponse(struct soap *soap, struct paylid__getTrxStatusResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in_paylid__getTrxStatusResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct paylid__getTrxStatusResponse * SOAP_FMAC2 soap_instantiate_paylid__getTrxStatusResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_paylid__getTrxStatusResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_paylid__getTrxStatusResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct paylid__getTrxStatusResponse); + if (size) + *size = sizeof(struct paylid__getTrxStatusResponse); + } + else + { cp->ptr = (void*)SOAP_NEW(struct paylid__getTrxStatusResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct paylid__getTrxStatusResponse); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct paylid__getTrxStatusResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getTrxStatusResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct paylid__getTrxStatusResponse %p -> %p\n", q, p)); + *(struct paylid__getTrxStatusResponse*)p = *(struct paylid__getTrxStatusResponse*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getAccount(struct soap *soap, struct paylid__getAccount *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_std__string(soap, &a->terminalID); + soap_default_std__string(soap, &a->topupData); + soap_default_std__string(soap, &a->hmac); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getAccount(struct soap *soap, const struct paylid__getAccount *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_std__string(soap, &a->terminalID); + soap_serialize_std__string(soap, &a->topupData); + soap_serialize_std__string(soap, &a->hmac); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getAccount(struct soap *soap, const char *tag, int id, const struct paylid__getAccount *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_paylid__getAccount), type)) + return soap->error; + if (soap_out_std__string(soap, "terminalID", -1, &a->terminalID, "")) + return soap->error; + if (soap_out_std__string(soap, "topupData", -1, &a->topupData, "")) + return soap->error; + if (soap_out_std__string(soap, "hmac", -1, &a->hmac, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct paylid__getAccount * SOAP_FMAC4 soap_in_paylid__getAccount(struct soap *soap, const char *tag, struct paylid__getAccount *a, const char *type) +{ + size_t soap_flag_terminalID = 1; + size_t soap_flag_topupData = 1; + size_t soap_flag_hmac = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct paylid__getAccount *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_paylid__getAccount, sizeof(struct paylid__getAccount), soap->type, soap->arrayType); + if (!a) + return NULL; + soap_default_paylid__getAccount(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_terminalID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "terminalID", &a->terminalID, "xsd:string")) + { soap_flag_terminalID--; + continue; + } + if (soap_flag_topupData && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "topupData", &a->topupData, "xsd:string")) + { soap_flag_topupData--; + continue; + } + if (soap_flag_hmac && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "hmac", &a->hmac, "xsd:string")) + { soap_flag_hmac--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct paylid__getAccount *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_paylid__getAccount, 0, sizeof(struct paylid__getAccount), 0, soap_copy_paylid__getAccount); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_terminalID > 0 || soap_flag_topupData > 0 || soap_flag_hmac > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getAccount(struct soap *soap, const struct paylid__getAccount *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_paylid__getAccount); + if (soap_out_paylid__getAccount(soap, tag?tag:"paylid:getAccount", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct paylid__getAccount * SOAP_FMAC4 soap_get_paylid__getAccount(struct soap *soap, struct paylid__getAccount *p, const char *tag, const char *type) +{ + if ((p = soap_in_paylid__getAccount(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct paylid__getAccount * SOAP_FMAC2 soap_instantiate_paylid__getAccount(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_paylid__getAccount(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_paylid__getAccount, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct paylid__getAccount); + if (size) + *size = sizeof(struct paylid__getAccount); + } + else + { cp->ptr = (void*)SOAP_NEW(struct paylid__getAccount[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct paylid__getAccount); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct paylid__getAccount*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getAccount(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct paylid__getAccount %p -> %p\n", q, p)); + *(struct paylid__getAccount*)p = *(struct paylid__getAccount*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getAccountResponse(struct soap *soap, struct paylid__getAccountResponse *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_std__string(soap, &a->Code); + soap_default_std__string(soap, &a->Data); + soap_default_std__string(soap, &a->Hmac); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getAccountResponse(struct soap *soap, const struct paylid__getAccountResponse *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_std__string(soap, &a->Code); + soap_serialize_std__string(soap, &a->Data); + soap_serialize_std__string(soap, &a->Hmac); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getAccountResponse(struct soap *soap, const char *tag, int id, const struct paylid__getAccountResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_paylid__getAccountResponse), type)) + return soap->error; + if (soap_out_std__string(soap, "Code", -1, &a->Code, "")) + return soap->error; + if (soap_out_std__string(soap, "Data", -1, &a->Data, "")) + return soap->error; + if (soap_out_std__string(soap, "Hmac", -1, &a->Hmac, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct paylid__getAccountResponse * SOAP_FMAC4 soap_in_paylid__getAccountResponse(struct soap *soap, const char *tag, struct paylid__getAccountResponse *a, const char *type) +{ + size_t soap_flag_Code = 1; + size_t soap_flag_Data = 1; + size_t soap_flag_Hmac = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct paylid__getAccountResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_paylid__getAccountResponse, sizeof(struct paylid__getAccountResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + soap_default_paylid__getAccountResponse(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_Code && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Code", &a->Code, "xsd:string")) + { soap_flag_Code--; + continue; + } + if (soap_flag_Data && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Data", &a->Data, "xsd:string")) + { soap_flag_Data--; + continue; + } + if (soap_flag_Hmac && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Hmac", &a->Hmac, "xsd:string")) + { soap_flag_Hmac--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct paylid__getAccountResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_paylid__getAccountResponse, 0, sizeof(struct paylid__getAccountResponse), 0, soap_copy_paylid__getAccountResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_Code > 0 || soap_flag_Data > 0 || soap_flag_Hmac > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getAccountResponse(struct soap *soap, const struct paylid__getAccountResponse *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_paylid__getAccountResponse); + if (soap_out_paylid__getAccountResponse(soap, tag?tag:"paylid:getAccountResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct paylid__getAccountResponse * SOAP_FMAC4 soap_get_paylid__getAccountResponse(struct soap *soap, struct paylid__getAccountResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in_paylid__getAccountResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct paylid__getAccountResponse * SOAP_FMAC2 soap_instantiate_paylid__getAccountResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_paylid__getAccountResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_paylid__getAccountResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct paylid__getAccountResponse); + if (size) + *size = sizeof(struct paylid__getAccountResponse); + } + else + { cp->ptr = (void*)SOAP_NEW(struct paylid__getAccountResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct paylid__getAccountResponse); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct paylid__getAccountResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getAccountResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct paylid__getAccountResponse %p -> %p\n", q, p)); + *(struct paylid__getAccountResponse*)p = *(struct paylid__getAccountResponse*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__currentXrate(struct soap *soap, struct paylid__currentXrate *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_std__string(soap, &a->terminalID); + soap_default_std__string(soap, &a->topupData); + soap_default_std__string(soap, &a->hmac); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__currentXrate(struct soap *soap, const struct paylid__currentXrate *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_std__string(soap, &a->terminalID); + soap_serialize_std__string(soap, &a->topupData); + soap_serialize_std__string(soap, &a->hmac); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__currentXrate(struct soap *soap, const char *tag, int id, const struct paylid__currentXrate *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_paylid__currentXrate), type)) + return soap->error; + if (soap_out_std__string(soap, "terminalID", -1, &a->terminalID, "")) + return soap->error; + if (soap_out_std__string(soap, "topupData", -1, &a->topupData, "")) + return soap->error; + if (soap_out_std__string(soap, "hmac", -1, &a->hmac, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct paylid__currentXrate * SOAP_FMAC4 soap_in_paylid__currentXrate(struct soap *soap, const char *tag, struct paylid__currentXrate *a, const char *type) +{ + size_t soap_flag_terminalID = 1; + size_t soap_flag_topupData = 1; + size_t soap_flag_hmac = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct paylid__currentXrate *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_paylid__currentXrate, sizeof(struct paylid__currentXrate), soap->type, soap->arrayType); + if (!a) + return NULL; + soap_default_paylid__currentXrate(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_terminalID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "terminalID", &a->terminalID, "xsd:string")) + { soap_flag_terminalID--; + continue; + } + if (soap_flag_topupData && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "topupData", &a->topupData, "xsd:string")) + { soap_flag_topupData--; + continue; + } + if (soap_flag_hmac && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "hmac", &a->hmac, "xsd:string")) + { soap_flag_hmac--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct paylid__currentXrate *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_paylid__currentXrate, 0, sizeof(struct paylid__currentXrate), 0, soap_copy_paylid__currentXrate); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_terminalID > 0 || soap_flag_topupData > 0 || soap_flag_hmac > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__currentXrate(struct soap *soap, const struct paylid__currentXrate *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_paylid__currentXrate); + if (soap_out_paylid__currentXrate(soap, tag?tag:"paylid:currentXrate", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct paylid__currentXrate * SOAP_FMAC4 soap_get_paylid__currentXrate(struct soap *soap, struct paylid__currentXrate *p, const char *tag, const char *type) +{ + if ((p = soap_in_paylid__currentXrate(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct paylid__currentXrate * SOAP_FMAC2 soap_instantiate_paylid__currentXrate(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_paylid__currentXrate(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_paylid__currentXrate, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct paylid__currentXrate); + if (size) + *size = sizeof(struct paylid__currentXrate); + } + else + { cp->ptr = (void*)SOAP_NEW(struct paylid__currentXrate[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct paylid__currentXrate); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct paylid__currentXrate*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__currentXrate(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct paylid__currentXrate %p -> %p\n", q, p)); + *(struct paylid__currentXrate*)p = *(struct paylid__currentXrate*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__currentXrateResponse(struct soap *soap, struct paylid__currentXrateResponse *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_std__string(soap, &a->Code); + soap_default_std__string(soap, &a->Data); + soap_default_std__string(soap, &a->Hmac); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__currentXrateResponse(struct soap *soap, const struct paylid__currentXrateResponse *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_std__string(soap, &a->Code); + soap_serialize_std__string(soap, &a->Data); + soap_serialize_std__string(soap, &a->Hmac); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__currentXrateResponse(struct soap *soap, const char *tag, int id, const struct paylid__currentXrateResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_paylid__currentXrateResponse), type)) + return soap->error; + if (soap_out_std__string(soap, "Code", -1, &a->Code, "")) + return soap->error; + if (soap_out_std__string(soap, "Data", -1, &a->Data, "")) + return soap->error; + if (soap_out_std__string(soap, "Hmac", -1, &a->Hmac, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct paylid__currentXrateResponse * SOAP_FMAC4 soap_in_paylid__currentXrateResponse(struct soap *soap, const char *tag, struct paylid__currentXrateResponse *a, const char *type) +{ + size_t soap_flag_Code = 1; + size_t soap_flag_Data = 1; + size_t soap_flag_Hmac = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct paylid__currentXrateResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_paylid__currentXrateResponse, sizeof(struct paylid__currentXrateResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + soap_default_paylid__currentXrateResponse(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_Code && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Code", &a->Code, "xsd:string")) + { soap_flag_Code--; + continue; + } + if (soap_flag_Data && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Data", &a->Data, "xsd:string")) + { soap_flag_Data--; + continue; + } + if (soap_flag_Hmac && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Hmac", &a->Hmac, "xsd:string")) + { soap_flag_Hmac--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct paylid__currentXrateResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_paylid__currentXrateResponse, 0, sizeof(struct paylid__currentXrateResponse), 0, soap_copy_paylid__currentXrateResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_Code > 0 || soap_flag_Data > 0 || soap_flag_Hmac > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__currentXrateResponse(struct soap *soap, const struct paylid__currentXrateResponse *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_paylid__currentXrateResponse); + if (soap_out_paylid__currentXrateResponse(soap, tag?tag:"paylid:currentXrateResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct paylid__currentXrateResponse * SOAP_FMAC4 soap_get_paylid__currentXrateResponse(struct soap *soap, struct paylid__currentXrateResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in_paylid__currentXrateResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct paylid__currentXrateResponse * SOAP_FMAC2 soap_instantiate_paylid__currentXrateResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_paylid__currentXrateResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_paylid__currentXrateResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct paylid__currentXrateResponse); + if (size) + *size = sizeof(struct paylid__currentXrateResponse); + } + else + { cp->ptr = (void*)SOAP_NEW(struct paylid__currentXrateResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct paylid__currentXrateResponse); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct paylid__currentXrateResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__currentXrateResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct paylid__currentXrateResponse %p -> %p\n", q, p)); + *(struct paylid__currentXrateResponse*)p = *(struct paylid__currentXrateResponse*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__directAirTimeTopUp(struct soap *soap, struct paylid__directAirTimeTopUp *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_std__string(soap, &a->terminalID); + soap_default_std__string(soap, &a->topupData); + soap_default_std__string(soap, &a->hmac); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__directAirTimeTopUp(struct soap *soap, const struct paylid__directAirTimeTopUp *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_std__string(soap, &a->terminalID); + soap_serialize_std__string(soap, &a->topupData); + soap_serialize_std__string(soap, &a->hmac); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__directAirTimeTopUp(struct soap *soap, const char *tag, int id, const struct paylid__directAirTimeTopUp *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_paylid__directAirTimeTopUp), type)) + return soap->error; + if (soap_out_std__string(soap, "terminalID", -1, &a->terminalID, "")) + return soap->error; + if (soap_out_std__string(soap, "topupData", -1, &a->topupData, "")) + return soap->error; + if (soap_out_std__string(soap, "hmac", -1, &a->hmac, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct paylid__directAirTimeTopUp * SOAP_FMAC4 soap_in_paylid__directAirTimeTopUp(struct soap *soap, const char *tag, struct paylid__directAirTimeTopUp *a, const char *type) +{ + size_t soap_flag_terminalID = 1; + size_t soap_flag_topupData = 1; + size_t soap_flag_hmac = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct paylid__directAirTimeTopUp *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_paylid__directAirTimeTopUp, sizeof(struct paylid__directAirTimeTopUp), soap->type, soap->arrayType); + if (!a) + return NULL; + soap_default_paylid__directAirTimeTopUp(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_terminalID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "terminalID", &a->terminalID, "xsd:string")) + { soap_flag_terminalID--; + continue; + } + if (soap_flag_topupData && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "topupData", &a->topupData, "xsd:string")) + { soap_flag_topupData--; + continue; + } + if (soap_flag_hmac && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "hmac", &a->hmac, "xsd:string")) + { soap_flag_hmac--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct paylid__directAirTimeTopUp *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_paylid__directAirTimeTopUp, 0, sizeof(struct paylid__directAirTimeTopUp), 0, soap_copy_paylid__directAirTimeTopUp); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_terminalID > 0 || soap_flag_topupData > 0 || soap_flag_hmac > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__directAirTimeTopUp(struct soap *soap, const struct paylid__directAirTimeTopUp *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_paylid__directAirTimeTopUp); + if (soap_out_paylid__directAirTimeTopUp(soap, tag?tag:"paylid:directAirTimeTopUp", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct paylid__directAirTimeTopUp * SOAP_FMAC4 soap_get_paylid__directAirTimeTopUp(struct soap *soap, struct paylid__directAirTimeTopUp *p, const char *tag, const char *type) +{ + if ((p = soap_in_paylid__directAirTimeTopUp(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct paylid__directAirTimeTopUp * SOAP_FMAC2 soap_instantiate_paylid__directAirTimeTopUp(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_paylid__directAirTimeTopUp(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_paylid__directAirTimeTopUp, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct paylid__directAirTimeTopUp); + if (size) + *size = sizeof(struct paylid__directAirTimeTopUp); + } + else + { cp->ptr = (void*)SOAP_NEW(struct paylid__directAirTimeTopUp[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct paylid__directAirTimeTopUp); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct paylid__directAirTimeTopUp*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__directAirTimeTopUp(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct paylid__directAirTimeTopUp %p -> %p\n", q, p)); + *(struct paylid__directAirTimeTopUp*)p = *(struct paylid__directAirTimeTopUp*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__directAirTimeTopUpResponse(struct soap *soap, struct paylid__directAirTimeTopUpResponse *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_std__string(soap, &a->Code); + soap_default_std__string(soap, &a->Data); + soap_default_std__string(soap, &a->Hmac); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__directAirTimeTopUpResponse(struct soap *soap, const struct paylid__directAirTimeTopUpResponse *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_std__string(soap, &a->Code); + soap_serialize_std__string(soap, &a->Data); + soap_serialize_std__string(soap, &a->Hmac); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__directAirTimeTopUpResponse(struct soap *soap, const char *tag, int id, const struct paylid__directAirTimeTopUpResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_paylid__directAirTimeTopUpResponse), type)) + return soap->error; + if (soap_out_std__string(soap, "Code", -1, &a->Code, "")) + return soap->error; + if (soap_out_std__string(soap, "Data", -1, &a->Data, "")) + return soap->error; + if (soap_out_std__string(soap, "Hmac", -1, &a->Hmac, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct paylid__directAirTimeTopUpResponse * SOAP_FMAC4 soap_in_paylid__directAirTimeTopUpResponse(struct soap *soap, const char *tag, struct paylid__directAirTimeTopUpResponse *a, const char *type) +{ + size_t soap_flag_Code = 1; + size_t soap_flag_Data = 1; + size_t soap_flag_Hmac = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct paylid__directAirTimeTopUpResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_paylid__directAirTimeTopUpResponse, sizeof(struct paylid__directAirTimeTopUpResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + soap_default_paylid__directAirTimeTopUpResponse(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_Code && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Code", &a->Code, "xsd:string")) + { soap_flag_Code--; + continue; + } + if (soap_flag_Data && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Data", &a->Data, "xsd:string")) + { soap_flag_Data--; + continue; + } + if (soap_flag_Hmac && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Hmac", &a->Hmac, "xsd:string")) + { soap_flag_Hmac--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct paylid__directAirTimeTopUpResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_paylid__directAirTimeTopUpResponse, 0, sizeof(struct paylid__directAirTimeTopUpResponse), 0, soap_copy_paylid__directAirTimeTopUpResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_Code > 0 || soap_flag_Data > 0 || soap_flag_Hmac > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__directAirTimeTopUpResponse(struct soap *soap, const struct paylid__directAirTimeTopUpResponse *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_paylid__directAirTimeTopUpResponse); + if (soap_out_paylid__directAirTimeTopUpResponse(soap, tag?tag:"paylid:directAirTimeTopUpResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct paylid__directAirTimeTopUpResponse * SOAP_FMAC4 soap_get_paylid__directAirTimeTopUpResponse(struct soap *soap, struct paylid__directAirTimeTopUpResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in_paylid__directAirTimeTopUpResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct paylid__directAirTimeTopUpResponse * SOAP_FMAC2 soap_instantiate_paylid__directAirTimeTopUpResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_paylid__directAirTimeTopUpResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_paylid__directAirTimeTopUpResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct paylid__directAirTimeTopUpResponse); + if (size) + *size = sizeof(struct paylid__directAirTimeTopUpResponse); + } + else + { cp->ptr = (void*)SOAP_NEW(struct paylid__directAirTimeTopUpResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct paylid__directAirTimeTopUpResponse); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct paylid__directAirTimeTopUpResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__directAirTimeTopUpResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct paylid__directAirTimeTopUpResponse %p -> %p\n", q, p)); + *(struct paylid__directAirTimeTopUpResponse*)p = *(struct paylid__directAirTimeTopUpResponse*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__checkTransferStatus(struct soap *soap, struct paylid__checkTransferStatus *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_std__string(soap, &a->terminalID); + soap_default_std__string(soap, &a->transactionRef); + soap_default_std__string(soap, &a->hmac); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__checkTransferStatus(struct soap *soap, const struct paylid__checkTransferStatus *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_std__string(soap, &a->terminalID); + soap_serialize_std__string(soap, &a->transactionRef); + soap_serialize_std__string(soap, &a->hmac); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__checkTransferStatus(struct soap *soap, const char *tag, int id, const struct paylid__checkTransferStatus *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_paylid__checkTransferStatus), type)) + return soap->error; + if (soap_out_std__string(soap, "terminalID", -1, &a->terminalID, "")) + return soap->error; + if (soap_out_std__string(soap, "transactionRef", -1, &a->transactionRef, "")) + return soap->error; + if (soap_out_std__string(soap, "hmac", -1, &a->hmac, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct paylid__checkTransferStatus * SOAP_FMAC4 soap_in_paylid__checkTransferStatus(struct soap *soap, const char *tag, struct paylid__checkTransferStatus *a, const char *type) +{ + size_t soap_flag_terminalID = 1; + size_t soap_flag_transactionRef = 1; + size_t soap_flag_hmac = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct paylid__checkTransferStatus *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_paylid__checkTransferStatus, sizeof(struct paylid__checkTransferStatus), soap->type, soap->arrayType); + if (!a) + return NULL; + soap_default_paylid__checkTransferStatus(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_terminalID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "terminalID", &a->terminalID, "xsd:string")) + { soap_flag_terminalID--; + continue; + } + if (soap_flag_transactionRef && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "transactionRef", &a->transactionRef, "xsd:string")) + { soap_flag_transactionRef--; + continue; + } + if (soap_flag_hmac && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "hmac", &a->hmac, "xsd:string")) + { soap_flag_hmac--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct paylid__checkTransferStatus *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_paylid__checkTransferStatus, 0, sizeof(struct paylid__checkTransferStatus), 0, soap_copy_paylid__checkTransferStatus); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_terminalID > 0 || soap_flag_transactionRef > 0 || soap_flag_hmac > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__checkTransferStatus(struct soap *soap, const struct paylid__checkTransferStatus *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_paylid__checkTransferStatus); + if (soap_out_paylid__checkTransferStatus(soap, tag?tag:"paylid:checkTransferStatus", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct paylid__checkTransferStatus * SOAP_FMAC4 soap_get_paylid__checkTransferStatus(struct soap *soap, struct paylid__checkTransferStatus *p, const char *tag, const char *type) +{ + if ((p = soap_in_paylid__checkTransferStatus(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct paylid__checkTransferStatus * SOAP_FMAC2 soap_instantiate_paylid__checkTransferStatus(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_paylid__checkTransferStatus(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_paylid__checkTransferStatus, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct paylid__checkTransferStatus); + if (size) + *size = sizeof(struct paylid__checkTransferStatus); + } + else + { cp->ptr = (void*)SOAP_NEW(struct paylid__checkTransferStatus[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct paylid__checkTransferStatus); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct paylid__checkTransferStatus*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__checkTransferStatus(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct paylid__checkTransferStatus %p -> %p\n", q, p)); + *(struct paylid__checkTransferStatus*)p = *(struct paylid__checkTransferStatus*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__checkTransferStatusResponse(struct soap *soap, struct paylid__checkTransferStatusResponse *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_std__string(soap, &a->Code); + soap_default_std__string(soap, &a->Data); + soap_default_std__string(soap, &a->Hmac); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__checkTransferStatusResponse(struct soap *soap, const struct paylid__checkTransferStatusResponse *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_std__string(soap, &a->Code); + soap_serialize_std__string(soap, &a->Data); + soap_serialize_std__string(soap, &a->Hmac); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__checkTransferStatusResponse(struct soap *soap, const char *tag, int id, const struct paylid__checkTransferStatusResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_paylid__checkTransferStatusResponse), type)) + return soap->error; + if (soap_out_std__string(soap, "Code", -1, &a->Code, "")) + return soap->error; + if (soap_out_std__string(soap, "Data", -1, &a->Data, "")) + return soap->error; + if (soap_out_std__string(soap, "Hmac", -1, &a->Hmac, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct paylid__checkTransferStatusResponse * SOAP_FMAC4 soap_in_paylid__checkTransferStatusResponse(struct soap *soap, const char *tag, struct paylid__checkTransferStatusResponse *a, const char *type) +{ + size_t soap_flag_Code = 1; + size_t soap_flag_Data = 1; + size_t soap_flag_Hmac = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct paylid__checkTransferStatusResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_paylid__checkTransferStatusResponse, sizeof(struct paylid__checkTransferStatusResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + soap_default_paylid__checkTransferStatusResponse(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_Code && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Code", &a->Code, "xsd:string")) + { soap_flag_Code--; + continue; + } + if (soap_flag_Data && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Data", &a->Data, "xsd:string")) + { soap_flag_Data--; + continue; + } + if (soap_flag_Hmac && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Hmac", &a->Hmac, "xsd:string")) + { soap_flag_Hmac--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct paylid__checkTransferStatusResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_paylid__checkTransferStatusResponse, 0, sizeof(struct paylid__checkTransferStatusResponse), 0, soap_copy_paylid__checkTransferStatusResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_Code > 0 || soap_flag_Data > 0 || soap_flag_Hmac > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__checkTransferStatusResponse(struct soap *soap, const struct paylid__checkTransferStatusResponse *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_paylid__checkTransferStatusResponse); + if (soap_out_paylid__checkTransferStatusResponse(soap, tag?tag:"paylid:checkTransferStatusResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct paylid__checkTransferStatusResponse * SOAP_FMAC4 soap_get_paylid__checkTransferStatusResponse(struct soap *soap, struct paylid__checkTransferStatusResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in_paylid__checkTransferStatusResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct paylid__checkTransferStatusResponse * SOAP_FMAC2 soap_instantiate_paylid__checkTransferStatusResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_paylid__checkTransferStatusResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_paylid__checkTransferStatusResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct paylid__checkTransferStatusResponse); + if (size) + *size = sizeof(struct paylid__checkTransferStatusResponse); + } + else + { cp->ptr = (void*)SOAP_NEW(struct paylid__checkTransferStatusResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct paylid__checkTransferStatusResponse); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct paylid__checkTransferStatusResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__checkTransferStatusResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct paylid__checkTransferStatusResponse %p -> %p\n", q, p)); + *(struct paylid__checkTransferStatusResponse*)p = *(struct paylid__checkTransferStatusResponse*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__transferFund(struct soap *soap, struct paylid__transferFund *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_std__string(soap, &a->terminalID); + soap_default_std__string(soap, &a->toDestination); + soap_default_std__string(soap, &a->hmac); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__transferFund(struct soap *soap, const struct paylid__transferFund *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_std__string(soap, &a->terminalID); + soap_serialize_std__string(soap, &a->toDestination); + soap_serialize_std__string(soap, &a->hmac); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__transferFund(struct soap *soap, const char *tag, int id, const struct paylid__transferFund *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_paylid__transferFund), type)) + return soap->error; + if (soap_out_std__string(soap, "terminalID", -1, &a->terminalID, "")) + return soap->error; + if (soap_out_std__string(soap, "toDestination", -1, &a->toDestination, "")) + return soap->error; + if (soap_out_std__string(soap, "hmac", -1, &a->hmac, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct paylid__transferFund * SOAP_FMAC4 soap_in_paylid__transferFund(struct soap *soap, const char *tag, struct paylid__transferFund *a, const char *type) +{ + size_t soap_flag_terminalID = 1; + size_t soap_flag_toDestination = 1; + size_t soap_flag_hmac = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct paylid__transferFund *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_paylid__transferFund, sizeof(struct paylid__transferFund), soap->type, soap->arrayType); + if (!a) + return NULL; + soap_default_paylid__transferFund(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_terminalID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "terminalID", &a->terminalID, "xsd:string")) + { soap_flag_terminalID--; + continue; + } + if (soap_flag_toDestination && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "toDestination", &a->toDestination, "xsd:string")) + { soap_flag_toDestination--; + continue; + } + if (soap_flag_hmac && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "hmac", &a->hmac, "xsd:string")) + { soap_flag_hmac--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct paylid__transferFund *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_paylid__transferFund, 0, sizeof(struct paylid__transferFund), 0, soap_copy_paylid__transferFund); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_terminalID > 0 || soap_flag_toDestination > 0 || soap_flag_hmac > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__transferFund(struct soap *soap, const struct paylid__transferFund *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_paylid__transferFund); + if (soap_out_paylid__transferFund(soap, tag?tag:"paylid:transferFund", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct paylid__transferFund * SOAP_FMAC4 soap_get_paylid__transferFund(struct soap *soap, struct paylid__transferFund *p, const char *tag, const char *type) +{ + if ((p = soap_in_paylid__transferFund(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct paylid__transferFund * SOAP_FMAC2 soap_instantiate_paylid__transferFund(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_paylid__transferFund(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_paylid__transferFund, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct paylid__transferFund); + if (size) + *size = sizeof(struct paylid__transferFund); + } + else + { cp->ptr = (void*)SOAP_NEW(struct paylid__transferFund[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct paylid__transferFund); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct paylid__transferFund*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__transferFund(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct paylid__transferFund %p -> %p\n", q, p)); + *(struct paylid__transferFund*)p = *(struct paylid__transferFund*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__transferFundResponse(struct soap *soap, struct paylid__transferFundResponse *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_std__string(soap, &a->Code); + soap_default_std__string(soap, &a->Data); + soap_default_std__string(soap, &a->Hmac); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__transferFundResponse(struct soap *soap, const struct paylid__transferFundResponse *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_std__string(soap, &a->Code); + soap_serialize_std__string(soap, &a->Data); + soap_serialize_std__string(soap, &a->Hmac); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__transferFundResponse(struct soap *soap, const char *tag, int id, const struct paylid__transferFundResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_paylid__transferFundResponse), type)) + return soap->error; + if (soap_out_std__string(soap, "Code", -1, &a->Code, "")) + return soap->error; + if (soap_out_std__string(soap, "Data", -1, &a->Data, "")) + return soap->error; + if (soap_out_std__string(soap, "Hmac", -1, &a->Hmac, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct paylid__transferFundResponse * SOAP_FMAC4 soap_in_paylid__transferFundResponse(struct soap *soap, const char *tag, struct paylid__transferFundResponse *a, const char *type) +{ + size_t soap_flag_Code = 1; + size_t soap_flag_Data = 1; + size_t soap_flag_Hmac = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct paylid__transferFundResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_paylid__transferFundResponse, sizeof(struct paylid__transferFundResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + soap_default_paylid__transferFundResponse(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_Code && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Code", &a->Code, "xsd:string")) + { soap_flag_Code--; + continue; + } + if (soap_flag_Data && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Data", &a->Data, "xsd:string")) + { soap_flag_Data--; + continue; + } + if (soap_flag_Hmac && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Hmac", &a->Hmac, "xsd:string")) + { soap_flag_Hmac--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct paylid__transferFundResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_paylid__transferFundResponse, 0, sizeof(struct paylid__transferFundResponse), 0, soap_copy_paylid__transferFundResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_Code > 0 || soap_flag_Data > 0 || soap_flag_Hmac > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__transferFundResponse(struct soap *soap, const struct paylid__transferFundResponse *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_paylid__transferFundResponse); + if (soap_out_paylid__transferFundResponse(soap, tag?tag:"paylid:transferFundResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct paylid__transferFundResponse * SOAP_FMAC4 soap_get_paylid__transferFundResponse(struct soap *soap, struct paylid__transferFundResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in_paylid__transferFundResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct paylid__transferFundResponse * SOAP_FMAC2 soap_instantiate_paylid__transferFundResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_paylid__transferFundResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_paylid__transferFundResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct paylid__transferFundResponse); + if (size) + *size = sizeof(struct paylid__transferFundResponse); + } + else + { cp->ptr = (void*)SOAP_NEW(struct paylid__transferFundResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct paylid__transferFundResponse); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct paylid__transferFundResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__transferFundResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct paylid__transferFundResponse %p -> %p\n", q, p)); + *(struct paylid__transferFundResponse*)p = *(struct paylid__transferFundResponse*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getAccountBalance(struct soap *soap, struct paylid__getAccountBalance *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_std__string(soap, &a->terminalID); + soap_default_std__string(soap, &a->hmac); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getAccountBalance(struct soap *soap, const struct paylid__getAccountBalance *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_std__string(soap, &a->terminalID); + soap_serialize_std__string(soap, &a->hmac); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getAccountBalance(struct soap *soap, const char *tag, int id, const struct paylid__getAccountBalance *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_paylid__getAccountBalance), type)) + return soap->error; + if (soap_out_std__string(soap, "terminalID", -1, &a->terminalID, "")) + return soap->error; + if (soap_out_std__string(soap, "hmac", -1, &a->hmac, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct paylid__getAccountBalance * SOAP_FMAC4 soap_in_paylid__getAccountBalance(struct soap *soap, const char *tag, struct paylid__getAccountBalance *a, const char *type) +{ + size_t soap_flag_terminalID = 1; + size_t soap_flag_hmac = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct paylid__getAccountBalance *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_paylid__getAccountBalance, sizeof(struct paylid__getAccountBalance), soap->type, soap->arrayType); + if (!a) + return NULL; + soap_default_paylid__getAccountBalance(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_terminalID && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "terminalID", &a->terminalID, "xsd:string")) + { soap_flag_terminalID--; + continue; + } + if (soap_flag_hmac && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "hmac", &a->hmac, "xsd:string")) + { soap_flag_hmac--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct paylid__getAccountBalance *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_paylid__getAccountBalance, 0, sizeof(struct paylid__getAccountBalance), 0, soap_copy_paylid__getAccountBalance); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_terminalID > 0 || soap_flag_hmac > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getAccountBalance(struct soap *soap, const struct paylid__getAccountBalance *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_paylid__getAccountBalance); + if (soap_out_paylid__getAccountBalance(soap, tag?tag:"paylid:getAccountBalance", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct paylid__getAccountBalance * SOAP_FMAC4 soap_get_paylid__getAccountBalance(struct soap *soap, struct paylid__getAccountBalance *p, const char *tag, const char *type) +{ + if ((p = soap_in_paylid__getAccountBalance(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct paylid__getAccountBalance * SOAP_FMAC2 soap_instantiate_paylid__getAccountBalance(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_paylid__getAccountBalance(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_paylid__getAccountBalance, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct paylid__getAccountBalance); + if (size) + *size = sizeof(struct paylid__getAccountBalance); + } + else + { cp->ptr = (void*)SOAP_NEW(struct paylid__getAccountBalance[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct paylid__getAccountBalance); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct paylid__getAccountBalance*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getAccountBalance(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct paylid__getAccountBalance %p -> %p\n", q, p)); + *(struct paylid__getAccountBalance*)p = *(struct paylid__getAccountBalance*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_paylid__getAccountBalanceResponse(struct soap *soap, struct paylid__getAccountBalanceResponse *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_std__string(soap, &a->Code); + soap_default_std__string(soap, &a->Data); + soap_default_std__string(soap, &a->Hmac); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_paylid__getAccountBalanceResponse(struct soap *soap, const struct paylid__getAccountBalanceResponse *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_std__string(soap, &a->Code); + soap_serialize_std__string(soap, &a->Data); + soap_serialize_std__string(soap, &a->Hmac); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_paylid__getAccountBalanceResponse(struct soap *soap, const char *tag, int id, const struct paylid__getAccountBalanceResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_paylid_paylid__getAccountBalanceResponse), type)) + return soap->error; + if (soap_out_std__string(soap, "Code", -1, &a->Code, "")) + return soap->error; + if (soap_out_std__string(soap, "Data", -1, &a->Data, "")) + return soap->error; + if (soap_out_std__string(soap, "Hmac", -1, &a->Hmac, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct paylid__getAccountBalanceResponse * SOAP_FMAC4 soap_in_paylid__getAccountBalanceResponse(struct soap *soap, const char *tag, struct paylid__getAccountBalanceResponse *a, const char *type) +{ + size_t soap_flag_Code = 1; + size_t soap_flag_Data = 1; + size_t soap_flag_Hmac = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct paylid__getAccountBalanceResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_paylid_paylid__getAccountBalanceResponse, sizeof(struct paylid__getAccountBalanceResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + soap_default_paylid__getAccountBalanceResponse(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_Code && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Code", &a->Code, "xsd:string")) + { soap_flag_Code--; + continue; + } + if (soap_flag_Data && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Data", &a->Data, "xsd:string")) + { soap_flag_Data--; + continue; + } + if (soap_flag_Hmac && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_std__string(soap, "Hmac", &a->Hmac, "xsd:string")) + { soap_flag_Hmac--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct paylid__getAccountBalanceResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_paylid_paylid__getAccountBalanceResponse, 0, sizeof(struct paylid__getAccountBalanceResponse), 0, soap_copy_paylid__getAccountBalanceResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + if ((soap->mode & SOAP_XML_STRICT) && (soap_flag_Code > 0 || soap_flag_Data > 0 || soap_flag_Hmac > 0)) + { soap->error = SOAP_OCCURS; + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_paylid__getAccountBalanceResponse(struct soap *soap, const struct paylid__getAccountBalanceResponse *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_paylid__getAccountBalanceResponse); + if (soap_out_paylid__getAccountBalanceResponse(soap, tag?tag:"paylid:getAccountBalanceResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct paylid__getAccountBalanceResponse * SOAP_FMAC4 soap_get_paylid__getAccountBalanceResponse(struct soap *soap, struct paylid__getAccountBalanceResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in_paylid__getAccountBalanceResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct paylid__getAccountBalanceResponse * SOAP_FMAC2 soap_instantiate_paylid__getAccountBalanceResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_paylid__getAccountBalanceResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_paylid_paylid__getAccountBalanceResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct paylid__getAccountBalanceResponse); + if (size) + *size = sizeof(struct paylid__getAccountBalanceResponse); + } + else + { cp->ptr = (void*)SOAP_NEW(struct paylid__getAccountBalanceResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct paylid__getAccountBalanceResponse); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct paylid__getAccountBalanceResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_paylid__getAccountBalanceResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct paylid__getAccountBalanceResponse %p -> %p\n", q, p)); + *(struct paylid__getAccountBalanceResponse*)p = *(struct paylid__getAccountBalanceResponse*)q; +} + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_paylid_SOAP_ENV__Reason)) + soap_serialize_SOAP_ENV__Reason(soap, *a); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Reason(struct soap *soap, const char *tag, int id, struct SOAP_ENV__Reason *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_paylid_SOAP_ENV__Reason); + if (id < 0) + return soap->error; + return soap_out_SOAP_ENV__Reason(soap, tag, id, *a, type); +} + +SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Reason(struct soap *soap, const char *tag, struct SOAP_ENV__Reason **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (struct SOAP_ENV__Reason **)soap_malloc(soap, sizeof(struct SOAP_ENV__Reason *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = soap_in_SOAP_ENV__Reason(soap, tag, *a, type))) + return NULL; + } + else + { a = (struct SOAP_ENV__Reason **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_paylid_SOAP_ENV__Reason, sizeof(struct SOAP_ENV__Reason), 0); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_PointerToSOAP_ENV__Reason); + if (soap_out_PointerToSOAP_ENV__Reason(soap, tag?tag:"SOAP-ENV:Reason", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerToSOAP_ENV__Reason(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +#endif + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_paylid_SOAP_ENV__Detail)) + soap_serialize_SOAP_ENV__Detail(soap, *a); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Detail(struct soap *soap, const char *tag, int id, struct SOAP_ENV__Detail *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_paylid_SOAP_ENV__Detail); + if (id < 0) + return soap->error; + return soap_out_SOAP_ENV__Detail(soap, tag, id, *a, type); +} + +SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Detail(struct soap *soap, const char *tag, struct SOAP_ENV__Detail **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (struct SOAP_ENV__Detail **)soap_malloc(soap, sizeof(struct SOAP_ENV__Detail *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = soap_in_SOAP_ENV__Detail(soap, tag, *a, type))) + return NULL; + } + else + { a = (struct SOAP_ENV__Detail **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_paylid_SOAP_ENV__Detail, sizeof(struct SOAP_ENV__Detail), 0); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_PointerToSOAP_ENV__Detail); + if (soap_out_PointerToSOAP_ENV__Detail(soap, tag?tag:"SOAP-ENV:Detail", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerToSOAP_ENV__Detail(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +#endif + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_paylid_SOAP_ENV__Code)) + soap_serialize_SOAP_ENV__Code(soap, *a); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Code(struct soap *soap, const char *tag, int id, struct SOAP_ENV__Code *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_paylid_SOAP_ENV__Code); + if (id < 0) + return soap->error; + return soap_out_SOAP_ENV__Code(soap, tag, id, *a, type); +} + +SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Code(struct soap *soap, const char *tag, struct SOAP_ENV__Code **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (struct SOAP_ENV__Code **)soap_malloc(soap, sizeof(struct SOAP_ENV__Code *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = soap_in_SOAP_ENV__Code(soap, tag, *a, type))) + return NULL; + } + else + { a = (struct SOAP_ENV__Code **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_paylid_SOAP_ENV__Code, sizeof(struct SOAP_ENV__Code), 0); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_PointerToSOAP_ENV__Code); + if (soap_out_PointerToSOAP_ENV__Code(soap, tag?tag:"SOAP-ENV:Code", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerToSOAP_ENV__Code(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__QName(struct soap *soap, const char *tag, int id, char *const*a, const char *type) +{ + return soap_outstring(soap, tag, id, a, type, SOAP_TYPE_paylid__QName); +} + +SOAP_FMAC3 char * * SOAP_FMAC4 soap_in__QName(struct soap *soap, const char *tag, char **a, const char *type) +{ char **p; + p = soap_instring(soap, tag, a, type, SOAP_TYPE_paylid__QName, 2, -1, -1); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put__QName(struct soap *soap, char *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid__QName); + if (soap_out__QName(soap, tag?tag:"byte", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 char ** SOAP_FMAC4 soap_get__QName(struct soap *soap, char **p, const char *tag, const char *type) +{ + if ((p = soap_in__QName(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_string(struct soap *soap, char **a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_string + *a = SOAP_DEFAULT_string; +#else + *a = (char *)0; +#endif +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_string(struct soap *soap, char *const*a) +{ + soap_reference(soap, *a, SOAP_TYPE_paylid_string); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_string(struct soap *soap, const char *tag, int id, char *const*a, const char *type) +{ + return soap_outstring(soap, tag, id, a, type, SOAP_TYPE_paylid_string); +} + +SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_string(struct soap *soap, const char *tag, char **a, const char *type) +{ char **p; + p = soap_instring(soap, tag, a, type, SOAP_TYPE_paylid_string, 1, -1, -1); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_string(struct soap *soap, char *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_paylid_string); + if (soap_out_string(soap, tag?tag:"byte", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_string(struct soap *soap, char **p, const char *tag, const char *type) +{ + if ((p = soap_in_string(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +} // namespace paylid + + +#if defined(__BORLANDC__) +#pragma option pop +#pragma option pop +#endif + +/* End of paylidC.cpp */ diff --git a/coregrade/src/shared_tool/paylidpaylidwsdlBindingProxy.cc b/coregrade/src/shared_tool/paylidpaylidwsdlBindingProxy.cc new file mode 100644 index 0000000..638fcb3 --- /dev/null +++ b/coregrade/src/shared_tool/paylidpaylidwsdlBindingProxy.cc @@ -0,0 +1,534 @@ +/* paylidpaylidwsdlBindingProxy.cpp + Generated by gSOAP 2.7.16 from PaylidService.h + Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. + This part of the software is released under one of the following licenses: + GPL, the gSOAP public license, or Genivia's license for commercial use. +*/ + +#include "paylidpaylidwsdlBindingProxy.h" + +namespace paylid { + +paylidwsdlBindingProxy::paylidwsdlBindingProxy() +{ paylidwsdlBindingProxy_init(SOAP_IO_DEFAULT, SOAP_IO_DEFAULT); +} + +paylidwsdlBindingProxy::paylidwsdlBindingProxy(const struct soap &_soap) :soap(_soap) +{ } + +paylidwsdlBindingProxy::paylidwsdlBindingProxy(soap_mode iomode) +{ paylidwsdlBindingProxy_init(iomode, iomode); +} + +paylidwsdlBindingProxy::paylidwsdlBindingProxy(soap_mode imode, soap_mode omode) +{ paylidwsdlBindingProxy_init(imode, omode); +} + +void paylidwsdlBindingProxy::paylidwsdlBindingProxy_init(soap_mode imode, soap_mode omode) +{ soap_imode(this, imode); + soap_omode(this, omode); + soap_endpoint = NULL; + static const struct Namespace namespaces[] = +{ + {"SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/", "http://www.w3.org/*/soap-envelope", NULL}, + {"SOAP-ENC", "http://schemas.xmlsoap.org/soap/encoding/", "http://www.w3.org/*/soap-encoding", NULL}, + {"xsi", "http://www.w3.org/2001/XMLSchema-instance", "http://www.w3.org/*/XMLSchema-instance", NULL}, + {"xsd", "http://www.w3.org/2001/XMLSchema", "http://www.w3.org/*/XMLSchema", NULL}, + {"paylid", "urn:paylidwsdl", NULL, NULL}, + {NULL, NULL, NULL, NULL} +}; + this->namespaces = namespaces; +} + +paylidwsdlBindingProxy::~paylidwsdlBindingProxy() +{ } + +void paylidwsdlBindingProxy::destroy() +{ soap_destroy(this); + soap_end(this); +} + +void paylidwsdlBindingProxy::soap_noheader() +{ header = NULL; +} + +const SOAP_ENV__Fault *paylidwsdlBindingProxy::soap_fault() +{ return (const paylid::SOAP_ENV__Fault*)this->fault; +} + +const char *paylidwsdlBindingProxy::soap_fault_string() +{ return *soap_faultstring(this); +} + +const char *paylidwsdlBindingProxy::soap_fault_detail() +{ return *soap_faultdetail(this); +} + +int paylidwsdlBindingProxy::soap_close_socket() +{ return soap_closesock(this); +} + +void paylidwsdlBindingProxy::soap_print_fault(FILE *fd) +{ ::soap_print_fault(this, fd); +} + +#ifndef WITH_LEAN +void paylidwsdlBindingProxy::soap_stream_fault(std::ostream& os) +{ ::soap_stream_fault(this, os); +} + +char *paylidwsdlBindingProxy::soap_sprint_fault(char *buf, size_t len) +{ return ::soap_sprint_fault(this, buf, len); +} +#endif + +int paylidwsdlBindingProxy::getAccountBalance(std::string terminalID, std::string hmac, struct paylid__getAccountBalanceResponse &_param_1) +{ struct soap *soap = this; + struct paylid__getAccountBalance soap_tmp_paylid__getAccountBalance; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://www.paylid.com:443/rsl/service.php"; + soap_action = "urn:paylidwsdl#getAccountBalance"; + soap->encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/"; + soap_tmp_paylid__getAccountBalance.terminalID = terminalID; + soap_tmp_paylid__getAccountBalance.hmac = hmac; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize_paylid__getAccountBalance(soap, &soap_tmp_paylid__getAccountBalance); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put_paylid__getAccountBalance(soap, &soap_tmp_paylid__getAccountBalance, "paylid:getAccountBalance", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put_paylid__getAccountBalance(soap, &soap_tmp_paylid__getAccountBalance, "paylid:getAccountBalance", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!&_param_1) + return soap_closesock(soap); + soap_default_paylid__getAccountBalanceResponse(soap, &_param_1); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + if (soap_recv_fault(soap, 1)) + return soap->error; + soap_get_paylid__getAccountBalanceResponse(soap, &_param_1, "", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int paylidwsdlBindingProxy::transferFund(std::string terminalID, std::string toDestination, std::string hmac, struct paylid__transferFundResponse &_param_2) +{ struct soap *soap = this; + struct paylid__transferFund soap_tmp_paylid__transferFund; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://www.paylid.com:443/rsl/service.php"; + soap_action = "urn:paylidwsdl#transferFund"; + soap->encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/"; + soap_tmp_paylid__transferFund.terminalID = terminalID; + soap_tmp_paylid__transferFund.toDestination = toDestination; + soap_tmp_paylid__transferFund.hmac = hmac; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize_paylid__transferFund(soap, &soap_tmp_paylid__transferFund); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put_paylid__transferFund(soap, &soap_tmp_paylid__transferFund, "paylid:transferFund", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put_paylid__transferFund(soap, &soap_tmp_paylid__transferFund, "paylid:transferFund", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!&_param_2) + return soap_closesock(soap); + soap_default_paylid__transferFundResponse(soap, &_param_2); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + if (soap_recv_fault(soap, 1)) + return soap->error; + soap_get_paylid__transferFundResponse(soap, &_param_2, "", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int paylidwsdlBindingProxy::checkTransferStatus(std::string terminalID, std::string transactionRef, std::string hmac, struct paylid__checkTransferStatusResponse &_param_3) +{ struct soap *soap = this; + struct paylid__checkTransferStatus soap_tmp_paylid__checkTransferStatus; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://www.paylid.com:443/rsl/service.php"; + soap_action = "urn:paylidwsdl#checkTransferStatus"; + soap->encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/"; + soap_tmp_paylid__checkTransferStatus.terminalID = terminalID; + soap_tmp_paylid__checkTransferStatus.transactionRef = transactionRef; + soap_tmp_paylid__checkTransferStatus.hmac = hmac; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize_paylid__checkTransferStatus(soap, &soap_tmp_paylid__checkTransferStatus); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put_paylid__checkTransferStatus(soap, &soap_tmp_paylid__checkTransferStatus, "paylid:checkTransferStatus", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put_paylid__checkTransferStatus(soap, &soap_tmp_paylid__checkTransferStatus, "paylid:checkTransferStatus", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!&_param_3) + return soap_closesock(soap); + soap_default_paylid__checkTransferStatusResponse(soap, &_param_3); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + if (soap_recv_fault(soap, 1)) + return soap->error; + soap_get_paylid__checkTransferStatusResponse(soap, &_param_3, "", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int paylidwsdlBindingProxy::directAirTimeTopUp(std::string terminalID, std::string topupData, std::string hmac, struct paylid__directAirTimeTopUpResponse &_param_4) +{ struct soap *soap = this; + struct paylid__directAirTimeTopUp soap_tmp_paylid__directAirTimeTopUp; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://www.paylid.com:443/rsl/service.php"; + soap_action = "urn:paylidwsdl#checkTransferStatus"; + soap->encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/"; + soap_tmp_paylid__directAirTimeTopUp.terminalID = terminalID; + soap_tmp_paylid__directAirTimeTopUp.topupData = topupData; + soap_tmp_paylid__directAirTimeTopUp.hmac = hmac; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize_paylid__directAirTimeTopUp(soap, &soap_tmp_paylid__directAirTimeTopUp); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put_paylid__directAirTimeTopUp(soap, &soap_tmp_paylid__directAirTimeTopUp, "paylid:directAirTimeTopUp", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put_paylid__directAirTimeTopUp(soap, &soap_tmp_paylid__directAirTimeTopUp, "paylid:directAirTimeTopUp", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!&_param_4) + return soap_closesock(soap); + soap_default_paylid__directAirTimeTopUpResponse(soap, &_param_4); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + if (soap_recv_fault(soap, 1)) + return soap->error; + soap_get_paylid__directAirTimeTopUpResponse(soap, &_param_4, "", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int paylidwsdlBindingProxy::currentXrate(std::string terminalID, std::string topupData, std::string hmac, struct paylid__currentXrateResponse &_param_5) +{ struct soap *soap = this; + struct paylid__currentXrate soap_tmp_paylid__currentXrate; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://www.paylid.com:443/rsl/service.php"; + soap_action = "urn:paylidwsdl#currentXrate"; + soap->encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/"; + soap_tmp_paylid__currentXrate.terminalID = terminalID; + soap_tmp_paylid__currentXrate.topupData = topupData; + soap_tmp_paylid__currentXrate.hmac = hmac; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize_paylid__currentXrate(soap, &soap_tmp_paylid__currentXrate); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put_paylid__currentXrate(soap, &soap_tmp_paylid__currentXrate, "paylid:currentXrate", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put_paylid__currentXrate(soap, &soap_tmp_paylid__currentXrate, "paylid:currentXrate", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!&_param_5) + return soap_closesock(soap); + soap_default_paylid__currentXrateResponse(soap, &_param_5); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + if (soap_recv_fault(soap, 1)) + return soap->error; + soap_get_paylid__currentXrateResponse(soap, &_param_5, "", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int paylidwsdlBindingProxy::getAccount(std::string terminalID, std::string topupData, std::string hmac, struct paylid__getAccountResponse &_param_6) +{ struct soap *soap = this; + struct paylid__getAccount soap_tmp_paylid__getAccount; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://www.paylid.com:443/rsl/service.php"; + soap_action = "urn:paylidwsdl#getAccount"; + soap->encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/"; + soap_tmp_paylid__getAccount.terminalID = terminalID; + soap_tmp_paylid__getAccount.topupData = topupData; + soap_tmp_paylid__getAccount.hmac = hmac; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize_paylid__getAccount(soap, &soap_tmp_paylid__getAccount); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put_paylid__getAccount(soap, &soap_tmp_paylid__getAccount, "paylid:getAccount", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put_paylid__getAccount(soap, &soap_tmp_paylid__getAccount, "paylid:getAccount", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!&_param_6) + return soap_closesock(soap); + soap_default_paylid__getAccountResponse(soap, &_param_6); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + if (soap_recv_fault(soap, 1)) + return soap->error; + soap_get_paylid__getAccountResponse(soap, &_param_6, "", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int paylidwsdlBindingProxy::getTrxStatus(std::string terminalID, std::string topupData, std::string hmac, struct paylid__getTrxStatusResponse &_param_7) +{ struct soap *soap = this; + struct paylid__getTrxStatus soap_tmp_paylid__getTrxStatus; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://www.paylid.com:443/rsl/service.php"; + soap_action = "urn:paylidwsdl#getTrxStatus"; + soap->encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/"; + soap_tmp_paylid__getTrxStatus.terminalID = terminalID; + soap_tmp_paylid__getTrxStatus.topupData = topupData; + soap_tmp_paylid__getTrxStatus.hmac = hmac; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize_paylid__getTrxStatus(soap, &soap_tmp_paylid__getTrxStatus); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put_paylid__getTrxStatus(soap, &soap_tmp_paylid__getTrxStatus, "paylid:getTrxStatus", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put_paylid__getTrxStatus(soap, &soap_tmp_paylid__getTrxStatus, "paylid:getTrxStatus", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!&_param_7) + return soap_closesock(soap); + soap_default_paylid__getTrxStatusResponse(soap, &_param_7); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + if (soap_recv_fault(soap, 1)) + return soap->error; + soap_get_paylid__getTrxStatusResponse(soap, &_param_7, "", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int paylidwsdlBindingProxy::getSupportedBanks(std::string terminalID, std::string topupData, std::string hmac, struct paylid__getSupportedBanksResponse &_param_8) +{ struct soap *soap = this; + struct paylid__getSupportedBanks soap_tmp_paylid__getSupportedBanks; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://www.paylid.com:443/rsl/service.php"; + soap_action = "urn:paylidwsdl#getSupportedBanks"; + soap->encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/"; + soap_tmp_paylid__getSupportedBanks.terminalID = terminalID; + soap_tmp_paylid__getSupportedBanks.topupData = topupData; + soap_tmp_paylid__getSupportedBanks.hmac = hmac; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize_paylid__getSupportedBanks(soap, &soap_tmp_paylid__getSupportedBanks); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put_paylid__getSupportedBanks(soap, &soap_tmp_paylid__getSupportedBanks, "paylid:getSupportedBanks", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put_paylid__getSupportedBanks(soap, &soap_tmp_paylid__getSupportedBanks, "paylid:getSupportedBanks", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!&_param_8) + return soap_closesock(soap); + soap_default_paylid__getSupportedBanksResponse(soap, &_param_8); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + if (soap_recv_fault(soap, 1)) + return soap->error; + soap_get_paylid__getSupportedBanksResponse(soap, &_param_8, "", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +} // namespace paylid + +/* End of client proxy code */ diff --git a/coregrade/src/shared_tool/soap/QuickTellerService.h b/coregrade/src/shared_tool/soap/QuickTellerService.h new file mode 100644 index 0000000..733a62e --- /dev/null +++ b/coregrade/src/shared_tool/soap/QuickTellerService.h @@ -0,0 +1 @@ +namespace interswitch { diff --git a/coregrade/src/shared_tool/soap/interswitch.nsmap b/coregrade/src/shared_tool/soap/interswitch.nsmap new file mode 100644 index 0000000..8ff7dd8 --- /dev/null +++ b/coregrade/src/shared_tool/soap/interswitch.nsmap @@ -0,0 +1,12 @@ + +#include "interswitchH.h" +SOAP_NMAC struct Namespace interswitch_namespaces[] = +{ + {"SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/", "http://schemas.xmlsoap.org/soap/envelope/", NULL}, + {"SOAP-ENC", "http://www.w3.org/2003/05/soap-encoding", "http://www.w3.org/2003/05/soap-encoding", NULL}, + {"xsi", "http://www.w3.org/2001/XMLSchema-instance", "http://www.w3.org/*/XMLSchema-instance", NULL}, + {"xsd", "http://www.w3.org/2001/XMLSchema", "http://www.w3.org/*/XMLSchema", NULL}, + {"interswitch2", "http://schemas.microsoft.com/2003/10/Serialization/", NULL, NULL}, + {"interswitch", "http://services.interswitchng.com/quicktellerservice/", NULL, NULL}, + {NULL, NULL, NULL, NULL} +}; diff --git a/coregrade/src/shared_tool/soap/interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.cpp b/coregrade/src/shared_tool/soap/interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.cpp new file mode 100644 index 0000000..a2235ff --- /dev/null +++ b/coregrade/src/shared_tool/soap/interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.cpp @@ -0,0 +1,2116 @@ +/* interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.cpp + Generated by gSOAP 2.7.16 from QuickTellerService.h + Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. + This part of the software is released under one of the following licenses: + GPL, the gSOAP public license, or Genivia's license for commercial use. +*/ + +#include "interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.h" + +namespace interswitch { + +BasicHttpBinding_USCOREQuickTellerServiceProxy::BasicHttpBinding_USCOREQuickTellerServiceProxy() +{ BasicHttpBinding_USCOREQuickTellerServiceProxy_init(SOAP_IO_DEFAULT, SOAP_IO_DEFAULT); +} + +BasicHttpBinding_USCOREQuickTellerServiceProxy::BasicHttpBinding_USCOREQuickTellerServiceProxy(const struct soap &_soap) :soap(_soap) +{ } + +BasicHttpBinding_USCOREQuickTellerServiceProxy::BasicHttpBinding_USCOREQuickTellerServiceProxy(soap_mode iomode) +{ BasicHttpBinding_USCOREQuickTellerServiceProxy_init(iomode, iomode); +} + +BasicHttpBinding_USCOREQuickTellerServiceProxy::BasicHttpBinding_USCOREQuickTellerServiceProxy(soap_mode imode, soap_mode omode) +{ BasicHttpBinding_USCOREQuickTellerServiceProxy_init(imode, omode); +} + +void BasicHttpBinding_USCOREQuickTellerServiceProxy::BasicHttpBinding_USCOREQuickTellerServiceProxy_init(soap_mode imode, soap_mode omode) +{ soap_imode(this, imode); + soap_omode(this, omode); + soap_endpoint = NULL; + static const struct Namespace namespaces[] = +{ + {"SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/", "http://schemas.xmlsoap.org/soap/envelope/", NULL}, + {"SOAP-ENC", "http://www.w3.org/2003/05/soap-encoding", "http://www.w3.org/2003/05/soap-encoding", NULL}, + {"xsi", "http://www.w3.org/2001/XMLSchema-instance", "http://www.w3.org/*/XMLSchema-instance", NULL}, + {"xsd", "http://www.w3.org/2001/XMLSchema", "http://www.w3.org/*/XMLSchema", NULL}, + {"interswitch2", "http://schemas.microsoft.com/2003/10/Serialization/", NULL, NULL}, + {"interswitch", "http://services.interswitchng.com/quicktellerservice/", NULL, NULL}, + {NULL, NULL, NULL, NULL} +}; + this->namespaces = namespaces; +} + +BasicHttpBinding_USCOREQuickTellerServiceProxy::~BasicHttpBinding_USCOREQuickTellerServiceProxy() +{ } + +void BasicHttpBinding_USCOREQuickTellerServiceProxy::destroy() +{ soap_destroy(this); + soap_end(this); +} + +void BasicHttpBinding_USCOREQuickTellerServiceProxy::soap_noheader() +{ header = NULL; +} + +const SOAP_ENV__Fault *BasicHttpBinding_USCOREQuickTellerServiceProxy::soap_fault() +{ return (const interswitch::SOAP_ENV__Fault*)this->fault; +} + +const char *BasicHttpBinding_USCOREQuickTellerServiceProxy::soap_fault_string() +{ return *soap_faultstring(this); +} + +const char *BasicHttpBinding_USCOREQuickTellerServiceProxy::soap_fault_detail() +{ return *soap_faultdetail(this); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::soap_close_socket() +{ return soap_closesock(this); +} + +void BasicHttpBinding_USCOREQuickTellerServiceProxy::soap_print_fault(FILE *fd) +{ ::soap_print_fault(this, fd); +} + +#ifndef WITH_LEAN +void BasicHttpBinding_USCOREQuickTellerServiceProxy::soap_stream_fault(std::ostream& os) +{ ::soap_stream_fault(this, os); +} + +char *BasicHttpBinding_USCOREQuickTellerServiceProxy::soap_sprint_fault(char *buf, size_t len) +{ return ::soap_sprint_fault(this, buf, len); +} +#endif + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::ValidateCustomer(_interswitch__ValidateCustomer *interswitch__ValidateCustomer, _interswitch__ValidateCustomerResponse *interswitch__ValidateCustomerResponse) +{ struct soap *soap = this; + struct __interswitch__ValidateCustomer soap_tmp___interswitch__ValidateCustomer; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "ValidateCustomer"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__ValidateCustomer.interswitch__ValidateCustomer = interswitch__ValidateCustomer; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__ValidateCustomer(soap, &soap_tmp___interswitch__ValidateCustomer); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__ValidateCustomer(soap, &soap_tmp___interswitch__ValidateCustomer, "-interswitch:ValidateCustomer", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__ValidateCustomer(soap, &soap_tmp___interswitch__ValidateCustomer, "-interswitch:ValidateCustomer", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__ValidateCustomerResponse) + return soap_closesock(soap); + interswitch__ValidateCustomerResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__ValidateCustomerResponse->soap_get(soap, "interswitch:ValidateCustomerResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::DoTransfer(_interswitch__DoTransfer *interswitch__DoTransfer, _interswitch__DoTransferResponse *interswitch__DoTransferResponse) +{ struct soap *soap = this; + struct __interswitch__DoTransfer soap_tmp___interswitch__DoTransfer; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "DoTransfer"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__DoTransfer.interswitch__DoTransfer = interswitch__DoTransfer; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__DoTransfer(soap, &soap_tmp___interswitch__DoTransfer); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__DoTransfer(soap, &soap_tmp___interswitch__DoTransfer, "-interswitch:DoTransfer", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__DoTransfer(soap, &soap_tmp___interswitch__DoTransfer, "-interswitch:DoTransfer", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__DoTransferResponse) + return soap_closesock(soap); + interswitch__DoTransferResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__DoTransferResponse->soap_get(soap, "interswitch:DoTransferResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::CancelTransfer(_interswitch__CancelTransfer *interswitch__CancelTransfer, _interswitch__CancelTransferResponse *interswitch__CancelTransferResponse) +{ struct soap *soap = this; + struct __interswitch__CancelTransfer soap_tmp___interswitch__CancelTransfer; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "CancelTransfer"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__CancelTransfer.interswitch__CancelTransfer = interswitch__CancelTransfer; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__CancelTransfer(soap, &soap_tmp___interswitch__CancelTransfer); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__CancelTransfer(soap, &soap_tmp___interswitch__CancelTransfer, "-interswitch:CancelTransfer", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__CancelTransfer(soap, &soap_tmp___interswitch__CancelTransfer, "-interswitch:CancelTransfer", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__CancelTransferResponse) + return soap_closesock(soap); + interswitch__CancelTransferResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__CancelTransferResponse->soap_get(soap, "interswitch:CancelTransferResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::SendSessionKey(_interswitch__SendSessionKey *interswitch__SendSessionKey, _interswitch__SendSessionKeyResponse *interswitch__SendSessionKeyResponse) +{ struct soap *soap = this; + struct __interswitch__SendSessionKey soap_tmp___interswitch__SendSessionKey; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "SendSessionKey"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__SendSessionKey.interswitch__SendSessionKey = interswitch__SendSessionKey; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__SendSessionKey(soap, &soap_tmp___interswitch__SendSessionKey); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__SendSessionKey(soap, &soap_tmp___interswitch__SendSessionKey, "-interswitch:SendSessionKey", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__SendSessionKey(soap, &soap_tmp___interswitch__SendSessionKey, "-interswitch:SendSessionKey", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__SendSessionKeyResponse) + return soap_closesock(soap); + interswitch__SendSessionKeyResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__SendSessionKeyResponse->soap_get(soap, "interswitch:SendSessionKeyResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::QueryTransfer(_interswitch__QueryTransfer *interswitch__QueryTransfer, _interswitch__QueryTransferResponse *interswitch__QueryTransferResponse) +{ struct soap *soap = this; + struct __interswitch__QueryTransfer soap_tmp___interswitch__QueryTransfer; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "QueryTransfer"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__QueryTransfer.interswitch__QueryTransfer = interswitch__QueryTransfer; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__QueryTransfer(soap, &soap_tmp___interswitch__QueryTransfer); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__QueryTransfer(soap, &soap_tmp___interswitch__QueryTransfer, "-interswitch:QueryTransfer", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__QueryTransfer(soap, &soap_tmp___interswitch__QueryTransfer, "-interswitch:QueryTransfer", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__QueryTransferResponse) + return soap_closesock(soap); + interswitch__QueryTransferResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__QueryTransferResponse->soap_get(soap, "interswitch:QueryTransferResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::AuthoriseCashOut(_interswitch__AuthoriseCashOut *interswitch__AuthoriseCashOut, _interswitch__AuthoriseCashOutResponse *interswitch__AuthoriseCashOutResponse) +{ struct soap *soap = this; + struct __interswitch__AuthoriseCashOut soap_tmp___interswitch__AuthoriseCashOut; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "AuthoriseCashOut"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__AuthoriseCashOut.interswitch__AuthoriseCashOut = interswitch__AuthoriseCashOut; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__AuthoriseCashOut(soap, &soap_tmp___interswitch__AuthoriseCashOut); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__AuthoriseCashOut(soap, &soap_tmp___interswitch__AuthoriseCashOut, "-interswitch:AuthoriseCashOut", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__AuthoriseCashOut(soap, &soap_tmp___interswitch__AuthoriseCashOut, "-interswitch:AuthoriseCashOut", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__AuthoriseCashOutResponse) + return soap_closesock(soap); + interswitch__AuthoriseCashOutResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__AuthoriseCashOutResponse->soap_get(soap, "interswitch:AuthoriseCashOutResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::AuthoriseAccountCashOut(_interswitch__AuthoriseAccountCashOut *interswitch__AuthoriseAccountCashOut, _interswitch__AuthoriseAccountCashOutResponse *interswitch__AuthoriseAccountCashOutResponse) +{ struct soap *soap = this; + struct __interswitch__AuthoriseAccountCashOut soap_tmp___interswitch__AuthoriseAccountCashOut; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "AuthoriseAccountCashOut"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__AuthoriseAccountCashOut.interswitch__AuthoriseAccountCashOut = interswitch__AuthoriseAccountCashOut; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__AuthoriseAccountCashOut(soap, &soap_tmp___interswitch__AuthoriseAccountCashOut); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__AuthoriseAccountCashOut(soap, &soap_tmp___interswitch__AuthoriseAccountCashOut, "-interswitch:AuthoriseAccountCashOut", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__AuthoriseAccountCashOut(soap, &soap_tmp___interswitch__AuthoriseAccountCashOut, "-interswitch:AuthoriseAccountCashOut", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__AuthoriseAccountCashOutResponse) + return soap_closesock(soap); + interswitch__AuthoriseAccountCashOutResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__AuthoriseAccountCashOutResponse->soap_get(soap, "interswitch:AuthoriseAccountCashOutResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::ReverseCashOut(_interswitch__ReverseCashOut *interswitch__ReverseCashOut, _interswitch__ReverseCashOutResponse *interswitch__ReverseCashOutResponse) +{ struct soap *soap = this; + struct __interswitch__ReverseCashOut soap_tmp___interswitch__ReverseCashOut; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "ReverseCashOut"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__ReverseCashOut.interswitch__ReverseCashOut = interswitch__ReverseCashOut; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__ReverseCashOut(soap, &soap_tmp___interswitch__ReverseCashOut); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__ReverseCashOut(soap, &soap_tmp___interswitch__ReverseCashOut, "-interswitch:ReverseCashOut", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__ReverseCashOut(soap, &soap_tmp___interswitch__ReverseCashOut, "-interswitch:ReverseCashOut", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__ReverseCashOutResponse) + return soap_closesock(soap); + interswitch__ReverseCashOutResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__ReverseCashOutResponse->soap_get(soap, "interswitch:ReverseCashOutResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::StatusCheck(_interswitch__StatusCheck *interswitch__StatusCheck, _interswitch__StatusCheckResponse *interswitch__StatusCheckResponse) +{ struct soap *soap = this; + struct __interswitch__StatusCheck soap_tmp___interswitch__StatusCheck; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "StatusCheck"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__StatusCheck.interswitch__StatusCheck = interswitch__StatusCheck; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__StatusCheck(soap, &soap_tmp___interswitch__StatusCheck); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__StatusCheck(soap, &soap_tmp___interswitch__StatusCheck, "-interswitch:StatusCheck", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__StatusCheck(soap, &soap_tmp___interswitch__StatusCheck, "-interswitch:StatusCheck", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__StatusCheckResponse) + return soap_closesock(soap); + interswitch__StatusCheckResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__StatusCheckResponse->soap_get(soap, "interswitch:StatusCheckResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::QueryTransaction(_interswitch__QueryTransaction *interswitch__QueryTransaction, _interswitch__QueryTransactionResponse *interswitch__QueryTransactionResponse) +{ struct soap *soap = this; + struct __interswitch__QueryTransaction soap_tmp___interswitch__QueryTransaction; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "QueryTransaction"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__QueryTransaction.interswitch__QueryTransaction = interswitch__QueryTransaction; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__QueryTransaction(soap, &soap_tmp___interswitch__QueryTransaction); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__QueryTransaction(soap, &soap_tmp___interswitch__QueryTransaction, "-interswitch:QueryTransaction", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__QueryTransaction(soap, &soap_tmp___interswitch__QueryTransaction, "-interswitch:QueryTransaction", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__QueryTransactionResponse) + return soap_closesock(soap); + interswitch__QueryTransactionResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__QueryTransactionResponse->soap_get(soap, "interswitch:QueryTransactionResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::GetSystemSettings(_interswitch__GetSystemSettings *interswitch__GetSystemSettings, _interswitch__GetSystemSettingsResponse *interswitch__GetSystemSettingsResponse) +{ struct soap *soap = this; + struct __interswitch__GetSystemSettings soap_tmp___interswitch__GetSystemSettings; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "GetSystemSettings"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__GetSystemSettings.interswitch__GetSystemSettings = interswitch__GetSystemSettings; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__GetSystemSettings(soap, &soap_tmp___interswitch__GetSystemSettings); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetSystemSettings(soap, &soap_tmp___interswitch__GetSystemSettings, "-interswitch:GetSystemSettings", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetSystemSettings(soap, &soap_tmp___interswitch__GetSystemSettings, "-interswitch:GetSystemSettings", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__GetSystemSettingsResponse) + return soap_closesock(soap); + interswitch__GetSystemSettingsResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__GetSystemSettingsResponse->soap_get(soap, "interswitch:GetSystemSettingsResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::CreateUser(_interswitch__CreateUser *interswitch__CreateUser, _interswitch__CreateUserResponse *interswitch__CreateUserResponse) +{ struct soap *soap = this; + struct __interswitch__CreateUser soap_tmp___interswitch__CreateUser; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "CreateUser"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__CreateUser.interswitch__CreateUser = interswitch__CreateUser; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__CreateUser(soap, &soap_tmp___interswitch__CreateUser); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__CreateUser(soap, &soap_tmp___interswitch__CreateUser, "-interswitch:CreateUser", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__CreateUser(soap, &soap_tmp___interswitch__CreateUser, "-interswitch:CreateUser", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__CreateUserResponse) + return soap_closesock(soap); + interswitch__CreateUserResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__CreateUserResponse->soap_get(soap, "interswitch:CreateUserResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::ActivateUser(_interswitch__ActivateUser *interswitch__ActivateUser, _interswitch__ActivateUserResponse *interswitch__ActivateUserResponse) +{ struct soap *soap = this; + struct __interswitch__ActivateUser soap_tmp___interswitch__ActivateUser; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "ActivateUser"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__ActivateUser.interswitch__ActivateUser = interswitch__ActivateUser; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__ActivateUser(soap, &soap_tmp___interswitch__ActivateUser); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__ActivateUser(soap, &soap_tmp___interswitch__ActivateUser, "-interswitch:ActivateUser", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__ActivateUser(soap, &soap_tmp___interswitch__ActivateUser, "-interswitch:ActivateUser", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__ActivateUserResponse) + return soap_closesock(soap); + interswitch__ActivateUserResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__ActivateUserResponse->soap_get(soap, "interswitch:ActivateUserResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::UpdateUser(_interswitch__UpdateUser *interswitch__UpdateUser, _interswitch__UpdateUserResponse *interswitch__UpdateUserResponse) +{ struct soap *soap = this; + struct __interswitch__UpdateUser soap_tmp___interswitch__UpdateUser; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "UpdateUser"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__UpdateUser.interswitch__UpdateUser = interswitch__UpdateUser; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__UpdateUser(soap, &soap_tmp___interswitch__UpdateUser); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__UpdateUser(soap, &soap_tmp___interswitch__UpdateUser, "-interswitch:UpdateUser", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__UpdateUser(soap, &soap_tmp___interswitch__UpdateUser, "-interswitch:UpdateUser", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__UpdateUserResponse) + return soap_closesock(soap); + interswitch__UpdateUserResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__UpdateUserResponse->soap_get(soap, "interswitch:UpdateUserResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::ChangePassword(_interswitch__ChangePassword *interswitch__ChangePassword, _interswitch__ChangePasswordResponse *interswitch__ChangePasswordResponse) +{ struct soap *soap = this; + struct __interswitch__ChangePassword soap_tmp___interswitch__ChangePassword; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "ChangePassword"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__ChangePassword.interswitch__ChangePassword = interswitch__ChangePassword; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__ChangePassword(soap, &soap_tmp___interswitch__ChangePassword); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__ChangePassword(soap, &soap_tmp___interswitch__ChangePassword, "-interswitch:ChangePassword", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__ChangePassword(soap, &soap_tmp___interswitch__ChangePassword, "-interswitch:ChangePassword", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__ChangePasswordResponse) + return soap_closesock(soap); + interswitch__ChangePasswordResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__ChangePasswordResponse->soap_get(soap, "interswitch:ChangePasswordResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::ResetPassword(_interswitch__ResetPassword *interswitch__ResetPassword, _interswitch__ResetPasswordResponse *interswitch__ResetPasswordResponse) +{ struct soap *soap = this; + struct __interswitch__ResetPassword soap_tmp___interswitch__ResetPassword; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "ResetPassword"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__ResetPassword.interswitch__ResetPassword = interswitch__ResetPassword; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__ResetPassword(soap, &soap_tmp___interswitch__ResetPassword); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__ResetPassword(soap, &soap_tmp___interswitch__ResetPassword, "-interswitch:ResetPassword", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__ResetPassword(soap, &soap_tmp___interswitch__ResetPassword, "-interswitch:ResetPassword", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__ResetPasswordResponse) + return soap_closesock(soap); + interswitch__ResetPasswordResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__ResetPasswordResponse->soap_get(soap, "interswitch:ResetPasswordResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::AuthenticateUser(_interswitch__AuthenticateUser *interswitch__AuthenticateUser, _interswitch__AuthenticateUserResponse *interswitch__AuthenticateUserResponse) +{ struct soap *soap = this; + struct __interswitch__AuthenticateUser soap_tmp___interswitch__AuthenticateUser; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "AuthenticateUser"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__AuthenticateUser.interswitch__AuthenticateUser = interswitch__AuthenticateUser; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__AuthenticateUser(soap, &soap_tmp___interswitch__AuthenticateUser); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__AuthenticateUser(soap, &soap_tmp___interswitch__AuthenticateUser, "-interswitch:AuthenticateUser", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__AuthenticateUser(soap, &soap_tmp___interswitch__AuthenticateUser, "-interswitch:AuthenticateUser", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__AuthenticateUserResponse) + return soap_closesock(soap); + interswitch__AuthenticateUserResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__AuthenticateUserResponse->soap_get(soap, "interswitch:AuthenticateUserResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::AuthenticateUserSecurityToken(_interswitch__AuthenticateUserSecurityToken *interswitch__AuthenticateUserSecurityToken, _interswitch__AuthenticateUserSecurityTokenResponse *interswitch__AuthenticateUserSecurityTokenResponse) +{ struct soap *soap = this; + struct __interswitch__AuthenticateUserSecurityToken soap_tmp___interswitch__AuthenticateUserSecurityToken; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "AuthenticateUserSecurityToken"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__AuthenticateUserSecurityToken.interswitch__AuthenticateUserSecurityToken = interswitch__AuthenticateUserSecurityToken; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__AuthenticateUserSecurityToken(soap, &soap_tmp___interswitch__AuthenticateUserSecurityToken); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__AuthenticateUserSecurityToken(soap, &soap_tmp___interswitch__AuthenticateUserSecurityToken, "-interswitch:AuthenticateUserSecurityToken", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__AuthenticateUserSecurityToken(soap, &soap_tmp___interswitch__AuthenticateUserSecurityToken, "-interswitch:AuthenticateUserSecurityToken", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__AuthenticateUserSecurityTokenResponse) + return soap_closesock(soap); + interswitch__AuthenticateUserSecurityTokenResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__AuthenticateUserSecurityTokenResponse->soap_get(soap, "interswitch:AuthenticateUserSecurityTokenResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::GetUser(_interswitch__GetUser *interswitch__GetUser, _interswitch__GetUserResponse *interswitch__GetUserResponse) +{ struct soap *soap = this; + struct __interswitch__GetUser soap_tmp___interswitch__GetUser; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "GetUser"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__GetUser.interswitch__GetUser = interswitch__GetUser; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__GetUser(soap, &soap_tmp___interswitch__GetUser); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetUser(soap, &soap_tmp___interswitch__GetUser, "-interswitch:GetUser", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetUser(soap, &soap_tmp___interswitch__GetUser, "-interswitch:GetUser", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__GetUserResponse) + return soap_closesock(soap); + interswitch__GetUserResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__GetUserResponse->soap_get(soap, "interswitch:GetUserResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::GetBillers(_interswitch__GetBillers *interswitch__GetBillers, _interswitch__GetBillersResponse *interswitch__GetBillersResponse) +{ struct soap *soap = this; + struct __interswitch__GetBillers soap_tmp___interswitch__GetBillers; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "GetBillers"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__GetBillers.interswitch__GetBillers = interswitch__GetBillers; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__GetBillers(soap, &soap_tmp___interswitch__GetBillers); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetBillers(soap, &soap_tmp___interswitch__GetBillers, "-interswitch:GetBillers", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetBillers(soap, &soap_tmp___interswitch__GetBillers, "-interswitch:GetBillers", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__GetBillersResponse) + return soap_closesock(soap); + interswitch__GetBillersResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__GetBillersResponse->soap_get(soap, "interswitch:GetBillersResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::GetLatestBillers(_interswitch__GetLatestBillers *interswitch__GetLatestBillers, _interswitch__GetLatestBillersResponse *interswitch__GetLatestBillersResponse) +{ struct soap *soap = this; + struct __interswitch__GetLatestBillers soap_tmp___interswitch__GetLatestBillers; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "GetLatestBillers"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__GetLatestBillers.interswitch__GetLatestBillers = interswitch__GetLatestBillers; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__GetLatestBillers(soap, &soap_tmp___interswitch__GetLatestBillers); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetLatestBillers(soap, &soap_tmp___interswitch__GetLatestBillers, "-interswitch:GetLatestBillers", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetLatestBillers(soap, &soap_tmp___interswitch__GetLatestBillers, "-interswitch:GetLatestBillers", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__GetLatestBillersResponse) + return soap_closesock(soap); + interswitch__GetLatestBillersResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__GetLatestBillersResponse->soap_get(soap, "interswitch:GetLatestBillersResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::GetFeaturedBillers(_interswitch__GetFeaturedBillers *interswitch__GetFeaturedBillers, _interswitch__GetFeaturedBillersResponse *interswitch__GetFeaturedBillersResponse) +{ struct soap *soap = this; + struct __interswitch__GetFeaturedBillers soap_tmp___interswitch__GetFeaturedBillers; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "GetFeaturedBillers"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__GetFeaturedBillers.interswitch__GetFeaturedBillers = interswitch__GetFeaturedBillers; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__GetFeaturedBillers(soap, &soap_tmp___interswitch__GetFeaturedBillers); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetFeaturedBillers(soap, &soap_tmp___interswitch__GetFeaturedBillers, "-interswitch:GetFeaturedBillers", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetFeaturedBillers(soap, &soap_tmp___interswitch__GetFeaturedBillers, "-interswitch:GetFeaturedBillers", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__GetFeaturedBillersResponse) + return soap_closesock(soap); + interswitch__GetFeaturedBillersResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__GetFeaturedBillersResponse->soap_get(soap, "interswitch:GetFeaturedBillersResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::GetBillerPaymentItems(_interswitch__GetBillerPaymentItems *interswitch__GetBillerPaymentItems, _interswitch__GetBillerPaymentItemsResponse *interswitch__GetBillerPaymentItemsResponse) +{ struct soap *soap = this; + struct __interswitch__GetBillerPaymentItems soap_tmp___interswitch__GetBillerPaymentItems; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "GetBillerPaymentItems"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__GetBillerPaymentItems.interswitch__GetBillerPaymentItems = interswitch__GetBillerPaymentItems; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__GetBillerPaymentItems(soap, &soap_tmp___interswitch__GetBillerPaymentItems); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetBillerPaymentItems(soap, &soap_tmp___interswitch__GetBillerPaymentItems, "-interswitch:GetBillerPaymentItems", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetBillerPaymentItems(soap, &soap_tmp___interswitch__GetBillerPaymentItems, "-interswitch:GetBillerPaymentItems", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__GetBillerPaymentItemsResponse) + return soap_closesock(soap); + interswitch__GetBillerPaymentItemsResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__GetBillerPaymentItemsResponse->soap_get(soap, "interswitch:GetBillerPaymentItemsResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::GetBillerCategories(_interswitch__GetBillerCategories *interswitch__GetBillerCategories, _interswitch__GetBillerCategoriesResponse *interswitch__GetBillerCategoriesResponse) +{ struct soap *soap = this; + struct __interswitch__GetBillerCategories soap_tmp___interswitch__GetBillerCategories; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "GetBillerCategories"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__GetBillerCategories.interswitch__GetBillerCategories = interswitch__GetBillerCategories; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__GetBillerCategories(soap, &soap_tmp___interswitch__GetBillerCategories); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetBillerCategories(soap, &soap_tmp___interswitch__GetBillerCategories, "-interswitch:GetBillerCategories", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetBillerCategories(soap, &soap_tmp___interswitch__GetBillerCategories, "-interswitch:GetBillerCategories", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__GetBillerCategoriesResponse) + return soap_closesock(soap); + interswitch__GetBillerCategoriesResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__GetBillerCategoriesResponse->soap_get(soap, "interswitch:GetBillerCategoriesResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::DoBillPaymentInquiry(_interswitch__DoBillPaymentInquiry *interswitch__DoBillPaymentInquiry, _interswitch__DoBillPaymentInquiryResponse *interswitch__DoBillPaymentInquiryResponse) +{ struct soap *soap = this; + struct __interswitch__DoBillPaymentInquiry soap_tmp___interswitch__DoBillPaymentInquiry; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "DoBillPaymentInquiry"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__DoBillPaymentInquiry.interswitch__DoBillPaymentInquiry = interswitch__DoBillPaymentInquiry; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__DoBillPaymentInquiry(soap, &soap_tmp___interswitch__DoBillPaymentInquiry); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__DoBillPaymentInquiry(soap, &soap_tmp___interswitch__DoBillPaymentInquiry, "-interswitch:DoBillPaymentInquiry", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__DoBillPaymentInquiry(soap, &soap_tmp___interswitch__DoBillPaymentInquiry, "-interswitch:DoBillPaymentInquiry", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__DoBillPaymentInquiryResponse) + return soap_closesock(soap); + interswitch__DoBillPaymentInquiryResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__DoBillPaymentInquiryResponse->soap_get(soap, "interswitch:DoBillPaymentInquiryResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::AuthenticateCustomer(_interswitch__AuthenticateCustomer *interswitch__AuthenticateCustomer, _interswitch__AuthenticateCustomerResponse *interswitch__AuthenticateCustomerResponse) +{ struct soap *soap = this; + struct __interswitch__AuthenticateCustomer soap_tmp___interswitch__AuthenticateCustomer; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "AuthenticateCustomer"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__AuthenticateCustomer.interswitch__AuthenticateCustomer = interswitch__AuthenticateCustomer; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__AuthenticateCustomer(soap, &soap_tmp___interswitch__AuthenticateCustomer); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__AuthenticateCustomer(soap, &soap_tmp___interswitch__AuthenticateCustomer, "-interswitch:AuthenticateCustomer", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__AuthenticateCustomer(soap, &soap_tmp___interswitch__AuthenticateCustomer, "-interswitch:AuthenticateCustomer", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__AuthenticateCustomerResponse) + return soap_closesock(soap); + interswitch__AuthenticateCustomerResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__AuthenticateCustomerResponse->soap_get(soap, "interswitch:AuthenticateCustomerResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::SendBillPaymentAdvice(_interswitch__SendBillPaymentAdvice *interswitch__SendBillPaymentAdvice, _interswitch__SendBillPaymentAdviceResponse *interswitch__SendBillPaymentAdviceResponse) +{ struct soap *soap = this; + struct __interswitch__SendBillPaymentAdvice soap_tmp___interswitch__SendBillPaymentAdvice; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "SendBillPaymentAdvice"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__SendBillPaymentAdvice.interswitch__SendBillPaymentAdvice = interswitch__SendBillPaymentAdvice; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__SendBillPaymentAdvice(soap, &soap_tmp___interswitch__SendBillPaymentAdvice); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__SendBillPaymentAdvice(soap, &soap_tmp___interswitch__SendBillPaymentAdvice, "-interswitch:SendBillPaymentAdvice", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__SendBillPaymentAdvice(soap, &soap_tmp___interswitch__SendBillPaymentAdvice, "-interswitch:SendBillPaymentAdvice", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__SendBillPaymentAdviceResponse) + return soap_closesock(soap); + interswitch__SendBillPaymentAdviceResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__SendBillPaymentAdviceResponse->soap_get(soap, "interswitch:SendBillPaymentAdviceResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::SendPayments(_interswitch__SendPayments *interswitch__SendPayments, _interswitch__SendPaymentsResponse *interswitch__SendPaymentsResponse) +{ struct soap *soap = this; + struct __interswitch__SendPayments soap_tmp___interswitch__SendPayments; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "SendPayments"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__SendPayments.interswitch__SendPayments = interswitch__SendPayments; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__SendPayments(soap, &soap_tmp___interswitch__SendPayments); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__SendPayments(soap, &soap_tmp___interswitch__SendPayments, "-interswitch:SendPayments", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__SendPayments(soap, &soap_tmp___interswitch__SendPayments, "-interswitch:SendPayments", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__SendPaymentsResponse) + return soap_closesock(soap); + interswitch__SendPaymentsResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__SendPaymentsResponse->soap_get(soap, "interswitch:SendPaymentsResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::AddCustomerBillerAccount(_interswitch__AddCustomerBillerAccount *interswitch__AddCustomerBillerAccount, _interswitch__AddCustomerBillerAccountResponse *interswitch__AddCustomerBillerAccountResponse) +{ struct soap *soap = this; + struct __interswitch__AddCustomerBillerAccount soap_tmp___interswitch__AddCustomerBillerAccount; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "AddCustomerBillerAccount"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__AddCustomerBillerAccount.interswitch__AddCustomerBillerAccount = interswitch__AddCustomerBillerAccount; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__AddCustomerBillerAccount(soap, &soap_tmp___interswitch__AddCustomerBillerAccount); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__AddCustomerBillerAccount(soap, &soap_tmp___interswitch__AddCustomerBillerAccount, "-interswitch:AddCustomerBillerAccount", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__AddCustomerBillerAccount(soap, &soap_tmp___interswitch__AddCustomerBillerAccount, "-interswitch:AddCustomerBillerAccount", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__AddCustomerBillerAccountResponse) + return soap_closesock(soap); + interswitch__AddCustomerBillerAccountResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__AddCustomerBillerAccountResponse->soap_get(soap, "interswitch:AddCustomerBillerAccountResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::GetCustomerBillerAccounts(_interswitch__GetCustomerBillerAccounts *interswitch__GetCustomerBillerAccounts, _interswitch__GetCustomerBillerAccountsResponse *interswitch__GetCustomerBillerAccountsResponse) +{ struct soap *soap = this; + struct __interswitch__GetCustomerBillerAccounts soap_tmp___interswitch__GetCustomerBillerAccounts; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "GetCustomerBillerAccounts"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__GetCustomerBillerAccounts.interswitch__GetCustomerBillerAccounts = interswitch__GetCustomerBillerAccounts; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__GetCustomerBillerAccounts(soap, &soap_tmp___interswitch__GetCustomerBillerAccounts); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetCustomerBillerAccounts(soap, &soap_tmp___interswitch__GetCustomerBillerAccounts, "-interswitch:GetCustomerBillerAccounts", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetCustomerBillerAccounts(soap, &soap_tmp___interswitch__GetCustomerBillerAccounts, "-interswitch:GetCustomerBillerAccounts", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__GetCustomerBillerAccountsResponse) + return soap_closesock(soap); + interswitch__GetCustomerBillerAccountsResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__GetCustomerBillerAccountsResponse->soap_get(soap, "interswitch:GetCustomerBillerAccountsResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::GetCustomerPayments(_interswitch__GetCustomerPayments *interswitch__GetCustomerPayments, _interswitch__GetCustomerPaymentsResponse *interswitch__GetCustomerPaymentsResponse) +{ struct soap *soap = this; + struct __interswitch__GetCustomerPayments soap_tmp___interswitch__GetCustomerPayments; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "GetCustomerPayments"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__GetCustomerPayments.interswitch__GetCustomerPayments = interswitch__GetCustomerPayments; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__GetCustomerPayments(soap, &soap_tmp___interswitch__GetCustomerPayments); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetCustomerPayments(soap, &soap_tmp___interswitch__GetCustomerPayments, "-interswitch:GetCustomerPayments", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetCustomerPayments(soap, &soap_tmp___interswitch__GetCustomerPayments, "-interswitch:GetCustomerPayments", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__GetCustomerPaymentsResponse) + return soap_closesock(soap); + interswitch__GetCustomerPaymentsResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__GetCustomerPaymentsResponse->soap_get(soap, "interswitch:GetCustomerPaymentsResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::AddBillerCustomer(_interswitch__AddBillerCustomer *interswitch__AddBillerCustomer, _interswitch__AddBillerCustomerResponse *interswitch__AddBillerCustomerResponse) +{ struct soap *soap = this; + struct __interswitch__AddBillerCustomer soap_tmp___interswitch__AddBillerCustomer; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "AddBillerCustomer"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__AddBillerCustomer.interswitch__AddBillerCustomer = interswitch__AddBillerCustomer; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__AddBillerCustomer(soap, &soap_tmp___interswitch__AddBillerCustomer); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__AddBillerCustomer(soap, &soap_tmp___interswitch__AddBillerCustomer, "-interswitch:AddBillerCustomer", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__AddBillerCustomer(soap, &soap_tmp___interswitch__AddBillerCustomer, "-interswitch:AddBillerCustomer", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__AddBillerCustomerResponse) + return soap_closesock(soap); + interswitch__AddBillerCustomerResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__AddBillerCustomerResponse->soap_get(soap, "interswitch:AddBillerCustomerResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::GetCollectionsAccount(_interswitch__GetCollectionsAccount *interswitch__GetCollectionsAccount, _interswitch__GetCollectionsAccountResponse *interswitch__GetCollectionsAccountResponse) +{ struct soap *soap = this; + struct __interswitch__GetCollectionsAccount soap_tmp___interswitch__GetCollectionsAccount; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "GetCollectionsAccount"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__GetCollectionsAccount.interswitch__GetCollectionsAccount = interswitch__GetCollectionsAccount; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__GetCollectionsAccount(soap, &soap_tmp___interswitch__GetCollectionsAccount); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetCollectionsAccount(soap, &soap_tmp___interswitch__GetCollectionsAccount, "-interswitch:GetCollectionsAccount", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetCollectionsAccount(soap, &soap_tmp___interswitch__GetCollectionsAccount, "-interswitch:GetCollectionsAccount", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__GetCollectionsAccountResponse) + return soap_closesock(soap); + interswitch__GetCollectionsAccountResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__GetCollectionsAccountResponse->soap_get(soap, "interswitch:GetCollectionsAccountResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::GetBillersCollectionsAccount(_interswitch__GetBillersCollectionsAccount *interswitch__GetBillersCollectionsAccount, _interswitch__GetBillersCollectionsAccountResponse *interswitch__GetBillersCollectionsAccountResponse) +{ struct soap *soap = this; + struct __interswitch__GetBillersCollectionsAccount soap_tmp___interswitch__GetBillersCollectionsAccount; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "GetBillersCollectionsAccount"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__GetBillersCollectionsAccount.interswitch__GetBillersCollectionsAccount = interswitch__GetBillersCollectionsAccount; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__GetBillersCollectionsAccount(soap, &soap_tmp___interswitch__GetBillersCollectionsAccount); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetBillersCollectionsAccount(soap, &soap_tmp___interswitch__GetBillersCollectionsAccount, "-interswitch:GetBillersCollectionsAccount", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__GetBillersCollectionsAccount(soap, &soap_tmp___interswitch__GetBillersCollectionsAccount, "-interswitch:GetBillersCollectionsAccount", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__GetBillersCollectionsAccountResponse) + return soap_closesock(soap); + interswitch__GetBillersCollectionsAccountResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__GetBillersCollectionsAccountResponse->soap_get(soap, "interswitch:GetBillersCollectionsAccountResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::EditCustomerBillerAccount(_interswitch__EditCustomerBillerAccount *interswitch__EditCustomerBillerAccount, _interswitch__EditCustomerBillerAccountResponse *interswitch__EditCustomerBillerAccountResponse) +{ struct soap *soap = this; + struct __interswitch__EditCustomerBillerAccount soap_tmp___interswitch__EditCustomerBillerAccount; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "EditCustomerBillerAccount"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__EditCustomerBillerAccount.interswitch__EditCustomerBillerAccount = interswitch__EditCustomerBillerAccount; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__EditCustomerBillerAccount(soap, &soap_tmp___interswitch__EditCustomerBillerAccount); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__EditCustomerBillerAccount(soap, &soap_tmp___interswitch__EditCustomerBillerAccount, "-interswitch:EditCustomerBillerAccount", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__EditCustomerBillerAccount(soap, &soap_tmp___interswitch__EditCustomerBillerAccount, "-interswitch:EditCustomerBillerAccount", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__EditCustomerBillerAccountResponse) + return soap_closesock(soap); + interswitch__EditCustomerBillerAccountResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__EditCustomerBillerAccountResponse->soap_get(soap, "interswitch:EditCustomerBillerAccountResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::ResendActivationToken(_interswitch__ResendActivationToken *interswitch__ResendActivationToken, _interswitch__ResendActivationTokenResponse *interswitch__ResendActivationTokenResponse) +{ struct soap *soap = this; + struct __interswitch__ResendActivationToken soap_tmp___interswitch__ResendActivationToken; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "ResendActivationToken"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__ResendActivationToken.interswitch__ResendActivationToken = interswitch__ResendActivationToken; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__ResendActivationToken(soap, &soap_tmp___interswitch__ResendActivationToken); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__ResendActivationToken(soap, &soap_tmp___interswitch__ResendActivationToken, "-interswitch:ResendActivationToken", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__ResendActivationToken(soap, &soap_tmp___interswitch__ResendActivationToken, "-interswitch:ResendActivationToken", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__ResendActivationTokenResponse) + return soap_closesock(soap); + interswitch__ResendActivationTokenResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__ResendActivationTokenResponse->soap_get(soap, "interswitch:ResendActivationTokenResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::DoCustomProcessing(_interswitch__DoCustomProcessing *interswitch__DoCustomProcessing, _interswitch__DoCustomProcessingResponse *interswitch__DoCustomProcessingResponse) +{ struct soap *soap = this; + struct __interswitch__DoCustomProcessing soap_tmp___interswitch__DoCustomProcessing; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "DoCustomProcessing"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__DoCustomProcessing.interswitch__DoCustomProcessing = interswitch__DoCustomProcessing; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__DoCustomProcessing(soap, &soap_tmp___interswitch__DoCustomProcessing); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__DoCustomProcessing(soap, &soap_tmp___interswitch__DoCustomProcessing, "-interswitch:DoCustomProcessing", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__DoCustomProcessing(soap, &soap_tmp___interswitch__DoCustomProcessing, "-interswitch:DoCustomProcessing", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__DoCustomProcessingResponse) + return soap_closesock(soap); + interswitch__DoCustomProcessingResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__DoCustomProcessingResponse->soap_get(soap, "interswitch:DoCustomProcessingResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::CreateBiller(_interswitch__CreateBiller *interswitch__CreateBiller, _interswitch__CreateBillerResponse *interswitch__CreateBillerResponse) +{ struct soap *soap = this; + struct __interswitch__CreateBiller soap_tmp___interswitch__CreateBiller; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "CreateBiller"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__CreateBiller.interswitch__CreateBiller = interswitch__CreateBiller; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__CreateBiller(soap, &soap_tmp___interswitch__CreateBiller); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__CreateBiller(soap, &soap_tmp___interswitch__CreateBiller, "-interswitch:CreateBiller", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__CreateBiller(soap, &soap_tmp___interswitch__CreateBiller, "-interswitch:CreateBiller", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__CreateBillerResponse) + return soap_closesock(soap); + interswitch__CreateBillerResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__CreateBillerResponse->soap_get(soap, "interswitch:CreateBillerResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +int BasicHttpBinding_USCOREQuickTellerServiceProxy::VerifyBiller(_interswitch__VerifyBiller *interswitch__VerifyBiller, _interswitch__VerifyBillerResponse *interswitch__VerifyBillerResponse) +{ struct soap *soap = this; + struct __interswitch__VerifyBiller soap_tmp___interswitch__VerifyBiller; + const char *soap_action = NULL; + if (!soap_endpoint) + soap_endpoint = "https://stageserv.interswitchng.com/uat_QuickTellerService/QuickTeller.svc"; + soap_action = "VerifyBiller"; + soap->encodingStyle = NULL; + soap_tmp___interswitch__VerifyBiller.interswitch__VerifyBiller = interswitch__VerifyBiller; + soap_begin(soap); + soap_serializeheader(soap); + soap_serialize___interswitch__VerifyBiller(soap, &soap_tmp___interswitch__VerifyBiller); + if (soap_begin_count(soap)) + return soap->error; + if (soap->mode & SOAP_IO_LENGTH) + { if (soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__VerifyBiller(soap, &soap_tmp___interswitch__VerifyBiller, "-interswitch:VerifyBiller", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap)) + return soap->error; + } + if (soap_end_count(soap)) + return soap->error; + if (soap_connect(soap, soap_endpoint, soap_action) + || soap_envelope_begin_out(soap) + || soap_putheader(soap) + || soap_body_begin_out(soap) + || soap_put___interswitch__VerifyBiller(soap, &soap_tmp___interswitch__VerifyBiller, "-interswitch:VerifyBiller", NULL) + || soap_body_end_out(soap) + || soap_envelope_end_out(soap) + || soap_end_send(soap)) + return soap_closesock(soap); + if (!interswitch__VerifyBillerResponse) + return soap_closesock(soap); + interswitch__VerifyBillerResponse->soap_default(soap); + if (soap_begin_recv(soap) + || soap_envelope_begin_in(soap) + || soap_recv_header(soap) + || soap_body_begin_in(soap)) + return soap_closesock(soap); + interswitch__VerifyBillerResponse->soap_get(soap, "interswitch:VerifyBillerResponse", ""); + if (soap->error) + return soap_recv_fault(soap, 0); + if (soap_body_end_in(soap) + || soap_envelope_end_in(soap) + || soap_end_recv(soap)) + return soap_closesock(soap); + return soap_closesock(soap); +} + +} // namespace interswitch + +/* End of client proxy code */ diff --git a/coregrade/src/shared_tool/soap/interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.h b/coregrade/src/shared_tool/soap/interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.h new file mode 100644 index 0000000..8873bc5 --- /dev/null +++ b/coregrade/src/shared_tool/soap/interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.h @@ -0,0 +1,171 @@ +/* interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.h + Generated by gSOAP 2.7.16 from QuickTellerService.h + Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. + This part of the software is released under one of the following licenses: + GPL, the gSOAP public license, or Genivia's license for commercial use. +*/ + +#ifndef interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy_H +#define interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy_H +#include "interswitchH.h" + +namespace interswitch { + +class SOAP_CMAC BasicHttpBinding_USCOREQuickTellerServiceProxy : public soap +{ public: + /// Endpoint URL of service 'BasicHttpBinding_USCOREQuickTellerServiceProxy' (change as needed) + const char *soap_endpoint; + /// Constructor + BasicHttpBinding_USCOREQuickTellerServiceProxy(); + /// Constructor with copy of another engine state + BasicHttpBinding_USCOREQuickTellerServiceProxy(const struct soap&); + /// Constructor with engine input+output mode control + BasicHttpBinding_USCOREQuickTellerServiceProxy(soap_mode iomode); + /// Constructor with engine input and output mode control + BasicHttpBinding_USCOREQuickTellerServiceProxy(soap_mode imode, soap_mode omode); + /// Destructor frees deserialized data + virtual ~BasicHttpBinding_USCOREQuickTellerServiceProxy(); + /// Initializer used by constructors + virtual void BasicHttpBinding_USCOREQuickTellerServiceProxy_init(soap_mode imode, soap_mode omode); + /// Delete all deserialized data (uses soap_destroy and soap_end) + virtual void destroy(); + /// Disables and removes SOAP Header from message + virtual void soap_noheader(); + /// Get SOAP Fault structure (NULL when absent) + virtual const SOAP_ENV__Fault *soap_fault(); + /// Get SOAP Fault string (NULL when absent) + virtual const char *soap_fault_string(); + /// Get SOAP Fault detail as string (NULL when absent) + virtual const char *soap_fault_detail(); + /// Force close connection (normally automatic, except for send_X ops) + virtual int soap_close_socket(); + /// Print fault + virtual void soap_print_fault(FILE*); +#ifndef WITH_LEAN + /// Print fault to stream + virtual void soap_stream_fault(std::ostream&); + /// Put fault into buffer + virtual char *soap_sprint_fault(char *buf, size_t len); +#endif + + /// Web service operation 'ValidateCustomer' (returns error code or SOAP_OK) + virtual int ValidateCustomer(_interswitch__ValidateCustomer *interswitch__ValidateCustomer, _interswitch__ValidateCustomerResponse *interswitch__ValidateCustomerResponse); + + /// Web service operation 'DoTransfer' (returns error code or SOAP_OK) + virtual int DoTransfer(_interswitch__DoTransfer *interswitch__DoTransfer, _interswitch__DoTransferResponse *interswitch__DoTransferResponse); + + /// Web service operation 'CancelTransfer' (returns error code or SOAP_OK) + virtual int CancelTransfer(_interswitch__CancelTransfer *interswitch__CancelTransfer, _interswitch__CancelTransferResponse *interswitch__CancelTransferResponse); + + /// Web service operation 'SendSessionKey' (returns error code or SOAP_OK) + virtual int SendSessionKey(_interswitch__SendSessionKey *interswitch__SendSessionKey, _interswitch__SendSessionKeyResponse *interswitch__SendSessionKeyResponse); + + /// Web service operation 'QueryTransfer' (returns error code or SOAP_OK) + virtual int QueryTransfer(_interswitch__QueryTransfer *interswitch__QueryTransfer, _interswitch__QueryTransferResponse *interswitch__QueryTransferResponse); + + /// Web service operation 'AuthoriseCashOut' (returns error code or SOAP_OK) + virtual int AuthoriseCashOut(_interswitch__AuthoriseCashOut *interswitch__AuthoriseCashOut, _interswitch__AuthoriseCashOutResponse *interswitch__AuthoriseCashOutResponse); + + /// Web service operation 'AuthoriseAccountCashOut' (returns error code or SOAP_OK) + virtual int AuthoriseAccountCashOut(_interswitch__AuthoriseAccountCashOut *interswitch__AuthoriseAccountCashOut, _interswitch__AuthoriseAccountCashOutResponse *interswitch__AuthoriseAccountCashOutResponse); + + /// Web service operation 'ReverseCashOut' (returns error code or SOAP_OK) + virtual int ReverseCashOut(_interswitch__ReverseCashOut *interswitch__ReverseCashOut, _interswitch__ReverseCashOutResponse *interswitch__ReverseCashOutResponse); + + /// Web service operation 'StatusCheck' (returns error code or SOAP_OK) + virtual int StatusCheck(_interswitch__StatusCheck *interswitch__StatusCheck, _interswitch__StatusCheckResponse *interswitch__StatusCheckResponse); + + /// Web service operation 'QueryTransaction' (returns error code or SOAP_OK) + virtual int QueryTransaction(_interswitch__QueryTransaction *interswitch__QueryTransaction, _interswitch__QueryTransactionResponse *interswitch__QueryTransactionResponse); + + /// Web service operation 'GetSystemSettings' (returns error code or SOAP_OK) + virtual int GetSystemSettings(_interswitch__GetSystemSettings *interswitch__GetSystemSettings, _interswitch__GetSystemSettingsResponse *interswitch__GetSystemSettingsResponse); + + /// Web service operation 'CreateUser' (returns error code or SOAP_OK) + virtual int CreateUser(_interswitch__CreateUser *interswitch__CreateUser, _interswitch__CreateUserResponse *interswitch__CreateUserResponse); + + /// Web service operation 'ActivateUser' (returns error code or SOAP_OK) + virtual int ActivateUser(_interswitch__ActivateUser *interswitch__ActivateUser, _interswitch__ActivateUserResponse *interswitch__ActivateUserResponse); + + /// Web service operation 'UpdateUser' (returns error code or SOAP_OK) + virtual int UpdateUser(_interswitch__UpdateUser *interswitch__UpdateUser, _interswitch__UpdateUserResponse *interswitch__UpdateUserResponse); + + /// Web service operation 'ChangePassword' (returns error code or SOAP_OK) + virtual int ChangePassword(_interswitch__ChangePassword *interswitch__ChangePassword, _interswitch__ChangePasswordResponse *interswitch__ChangePasswordResponse); + + /// Web service operation 'ResetPassword' (returns error code or SOAP_OK) + virtual int ResetPassword(_interswitch__ResetPassword *interswitch__ResetPassword, _interswitch__ResetPasswordResponse *interswitch__ResetPasswordResponse); + + /// Web service operation 'AuthenticateUser' (returns error code or SOAP_OK) + virtual int AuthenticateUser(_interswitch__AuthenticateUser *interswitch__AuthenticateUser, _interswitch__AuthenticateUserResponse *interswitch__AuthenticateUserResponse); + + /// Web service operation 'AuthenticateUserSecurityToken' (returns error code or SOAP_OK) + virtual int AuthenticateUserSecurityToken(_interswitch__AuthenticateUserSecurityToken *interswitch__AuthenticateUserSecurityToken, _interswitch__AuthenticateUserSecurityTokenResponse *interswitch__AuthenticateUserSecurityTokenResponse); + + /// Web service operation 'GetUser' (returns error code or SOAP_OK) + virtual int GetUser(_interswitch__GetUser *interswitch__GetUser, _interswitch__GetUserResponse *interswitch__GetUserResponse); + + /// Web service operation 'GetBillers' (returns error code or SOAP_OK) + virtual int GetBillers(_interswitch__GetBillers *interswitch__GetBillers, _interswitch__GetBillersResponse *interswitch__GetBillersResponse); + + /// Web service operation 'GetLatestBillers' (returns error code or SOAP_OK) + virtual int GetLatestBillers(_interswitch__GetLatestBillers *interswitch__GetLatestBillers, _interswitch__GetLatestBillersResponse *interswitch__GetLatestBillersResponse); + + /// Web service operation 'GetFeaturedBillers' (returns error code or SOAP_OK) + virtual int GetFeaturedBillers(_interswitch__GetFeaturedBillers *interswitch__GetFeaturedBillers, _interswitch__GetFeaturedBillersResponse *interswitch__GetFeaturedBillersResponse); + + /// Web service operation 'GetBillerPaymentItems' (returns error code or SOAP_OK) + virtual int GetBillerPaymentItems(_interswitch__GetBillerPaymentItems *interswitch__GetBillerPaymentItems, _interswitch__GetBillerPaymentItemsResponse *interswitch__GetBillerPaymentItemsResponse); + + /// Web service operation 'GetBillerCategories' (returns error code or SOAP_OK) + virtual int GetBillerCategories(_interswitch__GetBillerCategories *interswitch__GetBillerCategories, _interswitch__GetBillerCategoriesResponse *interswitch__GetBillerCategoriesResponse); + + /// Web service operation 'DoBillPaymentInquiry' (returns error code or SOAP_OK) + virtual int DoBillPaymentInquiry(_interswitch__DoBillPaymentInquiry *interswitch__DoBillPaymentInquiry, _interswitch__DoBillPaymentInquiryResponse *interswitch__DoBillPaymentInquiryResponse); + + /// Web service operation 'AuthenticateCustomer' (returns error code or SOAP_OK) + virtual int AuthenticateCustomer(_interswitch__AuthenticateCustomer *interswitch__AuthenticateCustomer, _interswitch__AuthenticateCustomerResponse *interswitch__AuthenticateCustomerResponse); + + /// Web service operation 'SendBillPaymentAdvice' (returns error code or SOAP_OK) + virtual int SendBillPaymentAdvice(_interswitch__SendBillPaymentAdvice *interswitch__SendBillPaymentAdvice, _interswitch__SendBillPaymentAdviceResponse *interswitch__SendBillPaymentAdviceResponse); + + /// Web service operation 'SendPayments' (returns error code or SOAP_OK) + virtual int SendPayments(_interswitch__SendPayments *interswitch__SendPayments, _interswitch__SendPaymentsResponse *interswitch__SendPaymentsResponse); + + /// Web service operation 'AddCustomerBillerAccount' (returns error code or SOAP_OK) + virtual int AddCustomerBillerAccount(_interswitch__AddCustomerBillerAccount *interswitch__AddCustomerBillerAccount, _interswitch__AddCustomerBillerAccountResponse *interswitch__AddCustomerBillerAccountResponse); + + /// Web service operation 'GetCustomerBillerAccounts' (returns error code or SOAP_OK) + virtual int GetCustomerBillerAccounts(_interswitch__GetCustomerBillerAccounts *interswitch__GetCustomerBillerAccounts, _interswitch__GetCustomerBillerAccountsResponse *interswitch__GetCustomerBillerAccountsResponse); + + /// Web service operation 'GetCustomerPayments' (returns error code or SOAP_OK) + virtual int GetCustomerPayments(_interswitch__GetCustomerPayments *interswitch__GetCustomerPayments, _interswitch__GetCustomerPaymentsResponse *interswitch__GetCustomerPaymentsResponse); + + /// Web service operation 'AddBillerCustomer' (returns error code or SOAP_OK) + virtual int AddBillerCustomer(_interswitch__AddBillerCustomer *interswitch__AddBillerCustomer, _interswitch__AddBillerCustomerResponse *interswitch__AddBillerCustomerResponse); + + /// Web service operation 'GetCollectionsAccount' (returns error code or SOAP_OK) + virtual int GetCollectionsAccount(_interswitch__GetCollectionsAccount *interswitch__GetCollectionsAccount, _interswitch__GetCollectionsAccountResponse *interswitch__GetCollectionsAccountResponse); + + /// Web service operation 'GetBillersCollectionsAccount' (returns error code or SOAP_OK) + virtual int GetBillersCollectionsAccount(_interswitch__GetBillersCollectionsAccount *interswitch__GetBillersCollectionsAccount, _interswitch__GetBillersCollectionsAccountResponse *interswitch__GetBillersCollectionsAccountResponse); + + /// Web service operation 'EditCustomerBillerAccount' (returns error code or SOAP_OK) + virtual int EditCustomerBillerAccount(_interswitch__EditCustomerBillerAccount *interswitch__EditCustomerBillerAccount, _interswitch__EditCustomerBillerAccountResponse *interswitch__EditCustomerBillerAccountResponse); + + /// Web service operation 'ResendActivationToken' (returns error code or SOAP_OK) + virtual int ResendActivationToken(_interswitch__ResendActivationToken *interswitch__ResendActivationToken, _interswitch__ResendActivationTokenResponse *interswitch__ResendActivationTokenResponse); + + /// Web service operation 'DoCustomProcessing' (returns error code or SOAP_OK) + virtual int DoCustomProcessing(_interswitch__DoCustomProcessing *interswitch__DoCustomProcessing, _interswitch__DoCustomProcessingResponse *interswitch__DoCustomProcessingResponse); + + /// Web service operation 'CreateBiller' (returns error code or SOAP_OK) + virtual int CreateBiller(_interswitch__CreateBiller *interswitch__CreateBiller, _interswitch__CreateBillerResponse *interswitch__CreateBillerResponse); + + /// Web service operation 'VerifyBiller' (returns error code or SOAP_OK) + virtual int VerifyBiller(_interswitch__VerifyBiller *interswitch__VerifyBiller, _interswitch__VerifyBillerResponse *interswitch__VerifyBillerResponse); +}; + +} // namespace interswitch + +#endif diff --git a/coregrade/src/shared_tool/soap/interswitchC.cpp b/coregrade/src/shared_tool/soap/interswitchC.cpp new file mode 100644 index 0000000..79256f2 --- /dev/null +++ b/coregrade/src/shared_tool/soap/interswitchC.cpp @@ -0,0 +1,27239 @@ +/* interswitchC.cpp + Generated by gSOAP 2.7.16 from QuickTellerService.h + Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. + This part of the software is released under one of the following licenses: + GPL, the gSOAP public license, or Genivia's license for commercial use. +*/ + +#if defined(__BORLANDC__) +#pragma option push -w-8060 +#pragma option push -w-8004 +#endif + +#include "interswitchH.h" + +namespace interswitch { + +SOAP_SOURCE_STAMP("@(#) interswitchC.cpp ver 2.7.16 2015-05-18 17:28:01 GMT") + + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_serializeheader(struct soap *soap) +{ + if (soap->header) + soap_serialize_SOAP_ENV__Header(soap, soap->header); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_putheader(struct soap *soap) +{ + if (soap->header) + { soap->part = SOAP_IN_HEADER; + if (soap_out_SOAP_ENV__Header(soap, "SOAP-ENV:Header", 0, soap->header, NULL)) + return soap->error; + soap->part = SOAP_END_HEADER; + } + return SOAP_OK; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_getheader(struct soap *soap) +{ + soap->part = SOAP_IN_HEADER; + soap->header = soap_in_SOAP_ENV__Header(soap, "SOAP-ENV:Header", NULL, NULL); + soap->part = SOAP_END_HEADER; + return soap->header == NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_header(struct soap *soap) +{ + if (!soap->header) + { if ((soap->header = soap_new_SOAP_ENV__Header(soap, -1))) + soap_default_SOAP_ENV__Header(soap, soap->header); + } +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_fault(struct soap *soap) +{ + if (!soap->fault) + { soap->fault = soap_new_SOAP_ENV__Fault(soap, -1); + if (!soap->fault) + return; + soap_default_SOAP_ENV__Fault(soap, soap->fault); + } + if (soap->version == 2 && !soap->fault->SOAP_ENV__Code) + { soap->fault->SOAP_ENV__Code = soap_new_SOAP_ENV__Code(soap, -1); + soap_default_SOAP_ENV__Code(soap, soap->fault->SOAP_ENV__Code); + } + if (soap->version == 2 && !soap->fault->SOAP_ENV__Reason) + { soap->fault->SOAP_ENV__Reason = soap_new_SOAP_ENV__Reason(soap, -1); + soap_default_SOAP_ENV__Reason(soap, soap->fault->SOAP_ENV__Reason); + } +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serializefault(struct soap *soap) +{ + soap_fault(soap); + if (soap->fault) + soap_serialize_SOAP_ENV__Fault(soap, soap->fault); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_putfault(struct soap *soap) +{ + if (soap->fault) + return soap_put_SOAP_ENV__Fault(soap, soap->fault, "SOAP-ENV:Fault", NULL); + return SOAP_OK; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_getfault(struct soap *soap) +{ + return (soap->fault = soap_get_SOAP_ENV__Fault(soap, NULL, "SOAP-ENV:Fault", NULL)) == NULL; +} + +SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultcode(struct soap *soap) +{ + soap_fault(soap); + if (soap->version == 2) + return (const char**)&soap->fault->SOAP_ENV__Code->SOAP_ENV__Value; + return (const char**)&soap->fault->faultcode; +} + +SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultsubcode(struct soap *soap) +{ + soap_fault(soap); + if (soap->version == 2) + { if (!soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode) + { soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode = soap_new_SOAP_ENV__Code(soap, -1); + soap_default_SOAP_ENV__Code(soap, soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode); + } + return (const char**)&soap->fault->SOAP_ENV__Code->SOAP_ENV__Subcode->SOAP_ENV__Value; + } + return (const char**)&soap->fault->faultcode; +} + +SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultstring(struct soap *soap) +{ + soap_fault(soap); + if (soap->version == 2) + return (const char**)&soap->fault->SOAP_ENV__Reason->SOAP_ENV__Text; + return (const char**)&soap->fault->faultstring; +} + +SOAP_FMAC3 const char ** SOAP_FMAC4 soap_faultdetail(struct soap *soap) +{ + soap_fault(soap); + if (soap->version == 1) + { if (!soap->fault->detail) + { soap->fault->detail = (struct SOAP_ENV__Detail*)soap_malloc(soap, sizeof(struct SOAP_ENV__Detail)); + soap_default_SOAP_ENV__Detail(soap, soap->fault->detail); + } + return (const char**)&soap->fault->detail->__any; + } + if (!soap->fault->SOAP_ENV__Detail) + { soap->fault->SOAP_ENV__Detail = soap_new_SOAP_ENV__Detail(soap, -1); + soap_default_SOAP_ENV__Detail(soap, soap->fault->SOAP_ENV__Detail); + } + return (const char**)&soap->fault->SOAP_ENV__Detail->__any; +} + +#endif + +#ifndef WITH_NOIDREF +SOAP_FMAC3 int SOAP_FMAC4 soap_getindependent(struct soap *soap) +{ + int t; + if (soap->version == 1) + { for (;;) + { if (!soap_getelement(soap, &t)) + if (soap->error || soap_ignore_element(soap)) + break; + } + } + if (soap->error == SOAP_NO_TAG || soap->error == SOAP_EOF) + soap->error = SOAP_OK; + return soap->error; +} +#endif + +#ifndef WITH_NOIDREF +SOAP_FMAC3 void * SOAP_FMAC4 soap_getelement(struct soap *soap, int *type) +{ + if (soap_peek_element(soap)) + return NULL; + if (!*soap->id || !(*type = soap_lookup_type(soap, soap->id))) + *type = soap_lookup_type(soap, soap->href); + switch (*type) + { + case SOAP_TYPE_interswitch_xsd__byte: + return soap_in_xsd__byte(soap, NULL, NULL, "xsd:byte"); + case SOAP_TYPE_interswitch_byte: + return soap_in_byte(soap, NULL, NULL, "xsd:byte"); + case SOAP_TYPE_interswitch_short: + return soap_in_short(soap, NULL, NULL, "xsd:short"); + case SOAP_TYPE_interswitch_interswitch2__char: + return soap_in_interswitch2__char(soap, NULL, NULL, "interswitch2:char"); + case SOAP_TYPE_interswitch_int: + return soap_in_int(soap, NULL, NULL, "xsd:int"); + case SOAP_TYPE_interswitch_LONG64: + return soap_in_LONG64(soap, NULL, NULL, "xsd:long"); + case SOAP_TYPE_interswitch_float: + return soap_in_float(soap, NULL, NULL, "xsd:float"); + case SOAP_TYPE_interswitch_double: + return soap_in_double(soap, NULL, NULL, "xsd:double"); + case SOAP_TYPE_interswitch_xsd__unsignedByte: + return soap_in_xsd__unsignedByte(soap, NULL, NULL, "xsd:unsignedByte"); + case SOAP_TYPE_interswitch_unsignedByte: + return soap_in_unsignedByte(soap, NULL, NULL, "xsd:unsignedByte"); + case SOAP_TYPE_interswitch_unsignedShort: + return soap_in_unsignedShort(soap, NULL, NULL, "xsd:unsignedShort"); + case SOAP_TYPE_interswitch_unsignedInt: + return soap_in_unsignedInt(soap, NULL, NULL, "xsd:unsignedInt"); + case SOAP_TYPE_interswitch_unsignedLONG64: + return soap_in_unsignedLONG64(soap, NULL, NULL, "xsd:unsignedLong"); + case SOAP_TYPE_interswitch_time: + return soap_in_time(soap, NULL, NULL, "xsd:dateTime"); + case SOAP_TYPE_interswitch_bool: + return soap_in_bool(soap, NULL, NULL, "xsd:boolean"); + case SOAP_TYPE_interswitch_interswitch2__guid__: + return soap_in_interswitch2__guid__(soap, NULL, NULL, "interswitch2:guid"); + case SOAP_TYPE_interswitch_interswitch2__guid: + return soap_in_interswitch2__guid(soap, NULL, NULL, "interswitch2:guid"); + case SOAP_TYPE_interswitch_interswitch2__duration__: + return soap_in_interswitch2__duration__(soap, NULL, NULL, "interswitch2:duration"); + case SOAP_TYPE_interswitch_interswitch2__duration: + return soap_in_interswitch2__duration(soap, NULL, NULL, "interswitch2:duration"); + case SOAP_TYPE_interswitch_interswitch2__char__: + return soap_in_interswitch2__char__(soap, NULL, NULL, "interswitch2:char"); + case SOAP_TYPE_interswitch_xsd__unsignedShort: + return soap_in_xsd__unsignedShort(soap, NULL, NULL, "xsd:unsignedShort"); + case SOAP_TYPE_interswitch_xsd__unsignedLong: + return soap_in_xsd__unsignedLong(soap, NULL, NULL, "xsd:unsignedLong"); + case SOAP_TYPE_interswitch_xsd__unsignedInt: + return soap_in_xsd__unsignedInt(soap, NULL, NULL, "xsd:unsignedInt"); + case SOAP_TYPE_interswitch_xsd__unsignedByte_: + return soap_in_xsd__unsignedByte_(soap, NULL, NULL, "xsd:unsignedByte"); + case SOAP_TYPE_interswitch_xsd__string: + return soap_in_xsd__string(soap, NULL, NULL, "xsd:string"); + case SOAP_TYPE_interswitch_xsd__short: + return soap_in_xsd__short(soap, NULL, NULL, "xsd:short"); + case SOAP_TYPE_interswitch_xsd__long: + return soap_in_xsd__long(soap, NULL, NULL, "xsd:long"); + case SOAP_TYPE_interswitch_xsd__int: + return soap_in_xsd__int(soap, NULL, NULL, "xsd:int"); + case SOAP_TYPE_interswitch_xsd__float: + return soap_in_xsd__float(soap, NULL, NULL, "xsd:float"); + case SOAP_TYPE_interswitch_xsd__duration_: + return soap_in_xsd__duration_(soap, NULL, NULL, "xsd:duration"); + case SOAP_TYPE_interswitch_xsd__duration: + return soap_in_xsd__duration(soap, NULL, NULL, "xsd:duration"); + case SOAP_TYPE_interswitch_xsd__double: + return soap_in_xsd__double(soap, NULL, NULL, "xsd:double"); + case SOAP_TYPE_interswitch_xsd__decimal_: + return soap_in_xsd__decimal_(soap, NULL, NULL, "xsd:decimal"); + case SOAP_TYPE_interswitch_xsd__decimal: + return soap_in_xsd__decimal(soap, NULL, NULL, "xsd:decimal"); + case SOAP_TYPE_interswitch_xsd__dateTime: + return soap_in_xsd__dateTime(soap, NULL, NULL, "xsd:dateTime"); + case SOAP_TYPE_interswitch_xsd__byte_: + return soap_in_xsd__byte_(soap, NULL, NULL, "xsd:byte"); + case SOAP_TYPE_interswitch_xsd__boolean: + return soap_in_xsd__boolean(soap, NULL, NULL, "xsd:boolean"); + case SOAP_TYPE_interswitch_xsd__base64Binary_: + return soap_in_xsd__base64Binary_(soap, NULL, NULL, "xsd:base64Binary"); + case SOAP_TYPE_interswitch_xsd__base64Binary: + return soap_in_xsd__base64Binary(soap, NULL, NULL, "xsd:base64Binary"); + case SOAP_TYPE_interswitch_xsd__anyURI_: + return soap_in_xsd__anyURI_(soap, NULL, NULL, "xsd:anyURI"); + case SOAP_TYPE_interswitch_xsd__anyURI: + return soap_in_xsd__anyURI(soap, NULL, NULL, "xsd:anyURI"); + case SOAP_TYPE_interswitch_xsd__QName_: + return soap_in_xsd__QName_(soap, NULL, NULL, "xsd:QName"); + case SOAP_TYPE_interswitch_xsd__QName: + return soap_in_xsd__QName(soap, NULL, NULL, "xsd:QName"); + case SOAP_TYPE_interswitch_xsd__IDREF_: + return soap_in_xsd__IDREF_(soap, NULL, NULL, "xsd:IDREF"); + case SOAP_TYPE_interswitch_xsd__IDREF: + return soap_in_xsd__IDREF(soap, NULL, NULL, "xsd:IDREF"); + case SOAP_TYPE_interswitch_xsd__ID_: + return soap_in_xsd__ID_(soap, NULL, NULL, "xsd:ID"); + case SOAP_TYPE_interswitch_xsd__ID: + return soap_in_xsd__ID(soap, NULL, NULL, "xsd:ID"); + case SOAP_TYPE_interswitch_std__string: + return soap_in_std__string(soap, NULL, NULL, "xsd:string"); + case SOAP_TYPE_interswitch_xsd__anyType: + return soap_in_xsd__anyType(soap, NULL, NULL, "xsd:anyType"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__VerifyBillerResponse: + return soap_in_PointerTo_interswitch__VerifyBillerResponse(soap, NULL, NULL, "interswitch:VerifyBillerResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__VerifyBiller: + return soap_in_PointerTo_interswitch__VerifyBiller(soap, NULL, NULL, "interswitch:VerifyBiller"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__CreateBillerResponse: + return soap_in_PointerTo_interswitch__CreateBillerResponse(soap, NULL, NULL, "interswitch:CreateBillerResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__CreateBiller: + return soap_in_PointerTo_interswitch__CreateBiller(soap, NULL, NULL, "interswitch:CreateBiller"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__DoCustomProcessingResponse: + return soap_in_PointerTo_interswitch__DoCustomProcessingResponse(soap, NULL, NULL, "interswitch:DoCustomProcessingResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__DoCustomProcessing: + return soap_in_PointerTo_interswitch__DoCustomProcessing(soap, NULL, NULL, "interswitch:DoCustomProcessing"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ResendActivationTokenResponse: + return soap_in_PointerTo_interswitch__ResendActivationTokenResponse(soap, NULL, NULL, "interswitch:ResendActivationTokenResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ResendActivationToken: + return soap_in_PointerTo_interswitch__ResendActivationToken(soap, NULL, NULL, "interswitch:ResendActivationToken"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__EditCustomerBillerAccountResponse: + return soap_in_PointerTo_interswitch__EditCustomerBillerAccountResponse(soap, NULL, NULL, "interswitch:EditCustomerBillerAccountResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__EditCustomerBillerAccount: + return soap_in_PointerTo_interswitch__EditCustomerBillerAccount(soap, NULL, NULL, "interswitch:EditCustomerBillerAccount"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillersCollectionsAccountResponse: + return soap_in_PointerTo_interswitch__GetBillersCollectionsAccountResponse(soap, NULL, NULL, "interswitch:GetBillersCollectionsAccountResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillersCollectionsAccount: + return soap_in_PointerTo_interswitch__GetBillersCollectionsAccount(soap, NULL, NULL, "interswitch:GetBillersCollectionsAccount"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetCollectionsAccountResponse: + return soap_in_PointerTo_interswitch__GetCollectionsAccountResponse(soap, NULL, NULL, "interswitch:GetCollectionsAccountResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetCollectionsAccount: + return soap_in_PointerTo_interswitch__GetCollectionsAccount(soap, NULL, NULL, "interswitch:GetCollectionsAccount"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AddBillerCustomerResponse: + return soap_in_PointerTo_interswitch__AddBillerCustomerResponse(soap, NULL, NULL, "interswitch:AddBillerCustomerResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AddBillerCustomer: + return soap_in_PointerTo_interswitch__AddBillerCustomer(soap, NULL, NULL, "interswitch:AddBillerCustomer"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerPaymentsResponse: + return soap_in_PointerTo_interswitch__GetCustomerPaymentsResponse(soap, NULL, NULL, "interswitch:GetCustomerPaymentsResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerPayments: + return soap_in_PointerTo_interswitch__GetCustomerPayments(soap, NULL, NULL, "interswitch:GetCustomerPayments"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerBillerAccountsResponse: + return soap_in_PointerTo_interswitch__GetCustomerBillerAccountsResponse(soap, NULL, NULL, "interswitch:GetCustomerBillerAccountsResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerBillerAccounts: + return soap_in_PointerTo_interswitch__GetCustomerBillerAccounts(soap, NULL, NULL, "interswitch:GetCustomerBillerAccounts"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AddCustomerBillerAccountResponse: + return soap_in_PointerTo_interswitch__AddCustomerBillerAccountResponse(soap, NULL, NULL, "interswitch:AddCustomerBillerAccountResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AddCustomerBillerAccount: + return soap_in_PointerTo_interswitch__AddCustomerBillerAccount(soap, NULL, NULL, "interswitch:AddCustomerBillerAccount"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__SendPaymentsResponse: + return soap_in_PointerTo_interswitch__SendPaymentsResponse(soap, NULL, NULL, "interswitch:SendPaymentsResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__SendPayments: + return soap_in_PointerTo_interswitch__SendPayments(soap, NULL, NULL, "interswitch:SendPayments"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__SendBillPaymentAdviceResponse: + return soap_in_PointerTo_interswitch__SendBillPaymentAdviceResponse(soap, NULL, NULL, "interswitch:SendBillPaymentAdviceResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__SendBillPaymentAdvice: + return soap_in_PointerTo_interswitch__SendBillPaymentAdvice(soap, NULL, NULL, "interswitch:SendBillPaymentAdvice"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateCustomerResponse: + return soap_in_PointerTo_interswitch__AuthenticateCustomerResponse(soap, NULL, NULL, "interswitch:AuthenticateCustomerResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateCustomer: + return soap_in_PointerTo_interswitch__AuthenticateCustomer(soap, NULL, NULL, "interswitch:AuthenticateCustomer"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__DoBillPaymentInquiryResponse: + return soap_in_PointerTo_interswitch__DoBillPaymentInquiryResponse(soap, NULL, NULL, "interswitch:DoBillPaymentInquiryResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__DoBillPaymentInquiry: + return soap_in_PointerTo_interswitch__DoBillPaymentInquiry(soap, NULL, NULL, "interswitch:DoBillPaymentInquiry"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerCategoriesResponse: + return soap_in_PointerTo_interswitch__GetBillerCategoriesResponse(soap, NULL, NULL, "interswitch:GetBillerCategoriesResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerCategories: + return soap_in_PointerTo_interswitch__GetBillerCategories(soap, NULL, NULL, "interswitch:GetBillerCategories"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerPaymentItemsResponse: + return soap_in_PointerTo_interswitch__GetBillerPaymentItemsResponse(soap, NULL, NULL, "interswitch:GetBillerPaymentItemsResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerPaymentItems: + return soap_in_PointerTo_interswitch__GetBillerPaymentItems(soap, NULL, NULL, "interswitch:GetBillerPaymentItems"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetFeaturedBillersResponse: + return soap_in_PointerTo_interswitch__GetFeaturedBillersResponse(soap, NULL, NULL, "interswitch:GetFeaturedBillersResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetFeaturedBillers: + return soap_in_PointerTo_interswitch__GetFeaturedBillers(soap, NULL, NULL, "interswitch:GetFeaturedBillers"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetLatestBillersResponse: + return soap_in_PointerTo_interswitch__GetLatestBillersResponse(soap, NULL, NULL, "interswitch:GetLatestBillersResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetLatestBillers: + return soap_in_PointerTo_interswitch__GetLatestBillers(soap, NULL, NULL, "interswitch:GetLatestBillers"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillersResponse: + return soap_in_PointerTo_interswitch__GetBillersResponse(soap, NULL, NULL, "interswitch:GetBillersResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillers: + return soap_in_PointerTo_interswitch__GetBillers(soap, NULL, NULL, "interswitch:GetBillers"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetUserResponse: + return soap_in_PointerTo_interswitch__GetUserResponse(soap, NULL, NULL, "interswitch:GetUserResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetUser: + return soap_in_PointerTo_interswitch__GetUser(soap, NULL, NULL, "interswitch:GetUser"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse: + return soap_in_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(soap, NULL, NULL, "interswitch:AuthenticateUserSecurityTokenResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUserSecurityToken: + return soap_in_PointerTo_interswitch__AuthenticateUserSecurityToken(soap, NULL, NULL, "interswitch:AuthenticateUserSecurityToken"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUserResponse: + return soap_in_PointerTo_interswitch__AuthenticateUserResponse(soap, NULL, NULL, "interswitch:AuthenticateUserResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUser: + return soap_in_PointerTo_interswitch__AuthenticateUser(soap, NULL, NULL, "interswitch:AuthenticateUser"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ResetPasswordResponse: + return soap_in_PointerTo_interswitch__ResetPasswordResponse(soap, NULL, NULL, "interswitch:ResetPasswordResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ResetPassword: + return soap_in_PointerTo_interswitch__ResetPassword(soap, NULL, NULL, "interswitch:ResetPassword"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ChangePasswordResponse: + return soap_in_PointerTo_interswitch__ChangePasswordResponse(soap, NULL, NULL, "interswitch:ChangePasswordResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ChangePassword: + return soap_in_PointerTo_interswitch__ChangePassword(soap, NULL, NULL, "interswitch:ChangePassword"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__UpdateUserResponse: + return soap_in_PointerTo_interswitch__UpdateUserResponse(soap, NULL, NULL, "interswitch:UpdateUserResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__UpdateUser: + return soap_in_PointerTo_interswitch__UpdateUser(soap, NULL, NULL, "interswitch:UpdateUser"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ActivateUserResponse: + return soap_in_PointerTo_interswitch__ActivateUserResponse(soap, NULL, NULL, "interswitch:ActivateUserResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ActivateUser: + return soap_in_PointerTo_interswitch__ActivateUser(soap, NULL, NULL, "interswitch:ActivateUser"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__CreateUserResponse: + return soap_in_PointerTo_interswitch__CreateUserResponse(soap, NULL, NULL, "interswitch:CreateUserResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__CreateUser: + return soap_in_PointerTo_interswitch__CreateUser(soap, NULL, NULL, "interswitch:CreateUser"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetSystemSettingsResponse: + return soap_in_PointerTo_interswitch__GetSystemSettingsResponse(soap, NULL, NULL, "interswitch:GetSystemSettingsResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetSystemSettings: + return soap_in_PointerTo_interswitch__GetSystemSettings(soap, NULL, NULL, "interswitch:GetSystemSettings"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransactionResponse: + return soap_in_PointerTo_interswitch__QueryTransactionResponse(soap, NULL, NULL, "interswitch:QueryTransactionResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransaction: + return soap_in_PointerTo_interswitch__QueryTransaction(soap, NULL, NULL, "interswitch:QueryTransaction"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__StatusCheckResponse: + return soap_in_PointerTo_interswitch__StatusCheckResponse(soap, NULL, NULL, "interswitch:StatusCheckResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__StatusCheck: + return soap_in_PointerTo_interswitch__StatusCheck(soap, NULL, NULL, "interswitch:StatusCheck"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ReverseCashOutResponse: + return soap_in_PointerTo_interswitch__ReverseCashOutResponse(soap, NULL, NULL, "interswitch:ReverseCashOutResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ReverseCashOut: + return soap_in_PointerTo_interswitch__ReverseCashOut(soap, NULL, NULL, "interswitch:ReverseCashOut"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseAccountCashOutResponse: + return soap_in_PointerTo_interswitch__AuthoriseAccountCashOutResponse(soap, NULL, NULL, "interswitch:AuthoriseAccountCashOutResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseAccountCashOut: + return soap_in_PointerTo_interswitch__AuthoriseAccountCashOut(soap, NULL, NULL, "interswitch:AuthoriseAccountCashOut"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseCashOutResponse: + return soap_in_PointerTo_interswitch__AuthoriseCashOutResponse(soap, NULL, NULL, "interswitch:AuthoriseCashOutResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseCashOut: + return soap_in_PointerTo_interswitch__AuthoriseCashOut(soap, NULL, NULL, "interswitch:AuthoriseCashOut"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransferResponse: + return soap_in_PointerTo_interswitch__QueryTransferResponse(soap, NULL, NULL, "interswitch:QueryTransferResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransfer: + return soap_in_PointerTo_interswitch__QueryTransfer(soap, NULL, NULL, "interswitch:QueryTransfer"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__SendSessionKeyResponse: + return soap_in_PointerTo_interswitch__SendSessionKeyResponse(soap, NULL, NULL, "interswitch:SendSessionKeyResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__SendSessionKey: + return soap_in_PointerTo_interswitch__SendSessionKey(soap, NULL, NULL, "interswitch:SendSessionKey"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__CancelTransferResponse: + return soap_in_PointerTo_interswitch__CancelTransferResponse(soap, NULL, NULL, "interswitch:CancelTransferResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__CancelTransfer: + return soap_in_PointerTo_interswitch__CancelTransfer(soap, NULL, NULL, "interswitch:CancelTransfer"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__DoTransferResponse: + return soap_in_PointerTo_interswitch__DoTransferResponse(soap, NULL, NULL, "interswitch:DoTransferResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__DoTransfer: + return soap_in_PointerTo_interswitch__DoTransfer(soap, NULL, NULL, "interswitch:DoTransfer"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ValidateCustomerResponse: + return soap_in_PointerTo_interswitch__ValidateCustomerResponse(soap, NULL, NULL, "interswitch:ValidateCustomerResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ValidateCustomer: + return soap_in_PointerTo_interswitch__ValidateCustomer(soap, NULL, NULL, "interswitch:ValidateCustomer"); + case SOAP_TYPE_interswitch_PointerTostd__string: + return soap_in_PointerTostd__string(soap, NULL, NULL, "xsd:string"); + case SOAP_TYPE_interswitch_PointerTounsignedByte: + return soap_in_PointerTounsignedByte(soap, NULL, NULL, "xsd:unsignedByte"); + case SOAP_TYPE_interswitch__QName: + { char **s; + s = soap_in__QName(soap, NULL, NULL, "xsd:QName"); + return s ? *s : NULL; + } + case SOAP_TYPE_interswitch_string: + { char **s; + s = soap_in_string(soap, NULL, NULL, "xsd:string"); + return s ? *s : NULL; + } + default: + { const char *t = soap->type; + if (!*t) + t = soap->tag; + if (!soap_match_tag(soap, t, "interswitch2:guid")) + { *type = SOAP_TYPE_interswitch_interswitch2__guid__; + return soap_in_interswitch2__guid__(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch2:guid")) + { *type = SOAP_TYPE_interswitch_interswitch2__guid; + return soap_in_interswitch2__guid(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch2:duration")) + { *type = SOAP_TYPE_interswitch_interswitch2__duration__; + return soap_in_interswitch2__duration__(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch2:duration")) + { *type = SOAP_TYPE_interswitch_interswitch2__duration; + return soap_in_interswitch2__duration(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch2:char")) + { *type = SOAP_TYPE_interswitch_interswitch2__char__; + return soap_in_interswitch2__char__(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:unsignedShort")) + { *type = SOAP_TYPE_interswitch_xsd__unsignedShort; + return soap_in_xsd__unsignedShort(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:unsignedLong")) + { *type = SOAP_TYPE_interswitch_xsd__unsignedLong; + return soap_in_xsd__unsignedLong(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:unsignedInt")) + { *type = SOAP_TYPE_interswitch_xsd__unsignedInt; + return soap_in_xsd__unsignedInt(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:unsignedByte")) + { *type = SOAP_TYPE_interswitch_xsd__unsignedByte_; + return soap_in_xsd__unsignedByte_(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:string")) + { *type = SOAP_TYPE_interswitch_xsd__string; + return soap_in_xsd__string(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:short")) + { *type = SOAP_TYPE_interswitch_xsd__short; + return soap_in_xsd__short(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:long")) + { *type = SOAP_TYPE_interswitch_xsd__long; + return soap_in_xsd__long(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:int")) + { *type = SOAP_TYPE_interswitch_xsd__int; + return soap_in_xsd__int(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:float")) + { *type = SOAP_TYPE_interswitch_xsd__float; + return soap_in_xsd__float(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:duration")) + { *type = SOAP_TYPE_interswitch_xsd__duration_; + return soap_in_xsd__duration_(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:duration")) + { *type = SOAP_TYPE_interswitch_xsd__duration; + return soap_in_xsd__duration(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:double")) + { *type = SOAP_TYPE_interswitch_xsd__double; + return soap_in_xsd__double(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:decimal")) + { *type = SOAP_TYPE_interswitch_xsd__decimal_; + return soap_in_xsd__decimal_(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:decimal")) + { *type = SOAP_TYPE_interswitch_xsd__decimal; + return soap_in_xsd__decimal(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:dateTime")) + { *type = SOAP_TYPE_interswitch_xsd__dateTime; + return soap_in_xsd__dateTime(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:byte")) + { *type = SOAP_TYPE_interswitch_xsd__byte_; + return soap_in_xsd__byte_(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:boolean")) + { *type = SOAP_TYPE_interswitch_xsd__boolean; + return soap_in_xsd__boolean(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:base64Binary")) + { *type = SOAP_TYPE_interswitch_xsd__base64Binary_; + return soap_in_xsd__base64Binary_(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:base64Binary")) + { *type = SOAP_TYPE_interswitch_xsd__base64Binary; + return soap_in_xsd__base64Binary(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:anyURI")) + { *type = SOAP_TYPE_interswitch_xsd__anyURI_; + return soap_in_xsd__anyURI_(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:anyURI")) + { *type = SOAP_TYPE_interswitch_xsd__anyURI; + return soap_in_xsd__anyURI(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:QName")) + { *type = SOAP_TYPE_interswitch_xsd__QName_; + return soap_in_xsd__QName_(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:QName")) + { *type = SOAP_TYPE_interswitch_xsd__QName; + return soap_in_xsd__QName(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:IDREF")) + { *type = SOAP_TYPE_interswitch_xsd__IDREF_; + return soap_in_xsd__IDREF_(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:IDREF")) + { *type = SOAP_TYPE_interswitch_xsd__IDREF; + return soap_in_xsd__IDREF(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:ID")) + { *type = SOAP_TYPE_interswitch_xsd__ID_; + return soap_in_xsd__ID_(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:ID")) + { *type = SOAP_TYPE_interswitch_xsd__ID; + return soap_in_xsd__ID(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:string")) + { *type = SOAP_TYPE_interswitch_std__string; + return soap_in_std__string(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:anyType")) + { *type = SOAP_TYPE_interswitch_xsd__anyType; + return soap_in_xsd__anyType(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:byte")) + { *type = SOAP_TYPE_interswitch_xsd__byte; + return soap_in_xsd__byte(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:byte")) + { *type = SOAP_TYPE_interswitch_byte; + return soap_in_byte(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:short")) + { *type = SOAP_TYPE_interswitch_short; + return soap_in_short(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch2:char")) + { *type = SOAP_TYPE_interswitch_interswitch2__char; + return soap_in_interswitch2__char(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:int")) + { *type = SOAP_TYPE_interswitch_int; + return soap_in_int(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:long")) + { *type = SOAP_TYPE_interswitch_LONG64; + return soap_in_LONG64(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:float")) + { *type = SOAP_TYPE_interswitch_float; + return soap_in_float(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:double")) + { *type = SOAP_TYPE_interswitch_double; + return soap_in_double(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:unsignedByte")) + { *type = SOAP_TYPE_interswitch_xsd__unsignedByte; + return soap_in_xsd__unsignedByte(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:unsignedByte")) + { *type = SOAP_TYPE_interswitch_unsignedByte; + return soap_in_unsignedByte(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:unsignedShort")) + { *type = SOAP_TYPE_interswitch_unsignedShort; + return soap_in_unsignedShort(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:unsignedInt")) + { *type = SOAP_TYPE_interswitch_unsignedInt; + return soap_in_unsignedInt(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:unsignedLong")) + { *type = SOAP_TYPE_interswitch_unsignedLONG64; + return soap_in_unsignedLONG64(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:dateTime")) + { *type = SOAP_TYPE_interswitch_time; + return soap_in_time(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:boolean")) + { *type = SOAP_TYPE_interswitch_bool; + return soap_in_bool(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "xsd:QName")) + { char **s; + *type = SOAP_TYPE_interswitch__QName; + s = soap_in__QName(soap, NULL, NULL, NULL); + return s ? *s : NULL; + } + if (!soap_match_tag(soap, t, "xsd:string")) + { char **s; + *type = SOAP_TYPE_interswitch_string; + s = soap_in_string(soap, NULL, NULL, NULL); + return s ? *s : NULL; + } + t = soap->tag; + if (!soap_match_tag(soap, t, "interswitch:VerifyBillerResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse; + return soap_in__interswitch__VerifyBillerResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:VerifyBiller")) + { *type = SOAP_TYPE_interswitch__interswitch__VerifyBiller; + return soap_in__interswitch__VerifyBiller(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:CreateBillerResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__CreateBillerResponse; + return soap_in__interswitch__CreateBillerResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:CreateBiller")) + { *type = SOAP_TYPE_interswitch__interswitch__CreateBiller; + return soap_in__interswitch__CreateBiller(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:DoCustomProcessingResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse; + return soap_in__interswitch__DoCustomProcessingResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:DoCustomProcessing")) + { *type = SOAP_TYPE_interswitch__interswitch__DoCustomProcessing; + return soap_in__interswitch__DoCustomProcessing(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:ResendActivationTokenResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse; + return soap_in__interswitch__ResendActivationTokenResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:ResendActivationToken")) + { *type = SOAP_TYPE_interswitch__interswitch__ResendActivationToken; + return soap_in__interswitch__ResendActivationToken(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:EditCustomerBillerAccountResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse; + return soap_in__interswitch__EditCustomerBillerAccountResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:EditCustomerBillerAccount")) + { *type = SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount; + return soap_in__interswitch__EditCustomerBillerAccount(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetBillersCollectionsAccountResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse; + return soap_in__interswitch__GetBillersCollectionsAccountResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetBillersCollectionsAccount")) + { *type = SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount; + return soap_in__interswitch__GetBillersCollectionsAccount(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetCollectionsAccountResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse; + return soap_in__interswitch__GetCollectionsAccountResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetCollectionsAccount")) + { *type = SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount; + return soap_in__interswitch__GetCollectionsAccount(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:AddBillerCustomerResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse; + return soap_in__interswitch__AddBillerCustomerResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:AddBillerCustomer")) + { *type = SOAP_TYPE_interswitch__interswitch__AddBillerCustomer; + return soap_in__interswitch__AddBillerCustomer(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetCustomerPaymentsResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse; + return soap_in__interswitch__GetCustomerPaymentsResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetCustomerPayments")) + { *type = SOAP_TYPE_interswitch__interswitch__GetCustomerPayments; + return soap_in__interswitch__GetCustomerPayments(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetCustomerBillerAccountsResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse; + return soap_in__interswitch__GetCustomerBillerAccountsResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetCustomerBillerAccounts")) + { *type = SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts; + return soap_in__interswitch__GetCustomerBillerAccounts(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:AddCustomerBillerAccountResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse; + return soap_in__interswitch__AddCustomerBillerAccountResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:AddCustomerBillerAccount")) + { *type = SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount; + return soap_in__interswitch__AddCustomerBillerAccount(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:SendPaymentsResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse; + return soap_in__interswitch__SendPaymentsResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:SendPayments")) + { *type = SOAP_TYPE_interswitch__interswitch__SendPayments; + return soap_in__interswitch__SendPayments(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:SendBillPaymentAdviceResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse; + return soap_in__interswitch__SendBillPaymentAdviceResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:SendBillPaymentAdvice")) + { *type = SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice; + return soap_in__interswitch__SendBillPaymentAdvice(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:AuthenticateCustomerResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse; + return soap_in__interswitch__AuthenticateCustomerResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:AuthenticateCustomer")) + { *type = SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer; + return soap_in__interswitch__AuthenticateCustomer(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:DoBillPaymentInquiryResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse; + return soap_in__interswitch__DoBillPaymentInquiryResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:DoBillPaymentInquiry")) + { *type = SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry; + return soap_in__interswitch__DoBillPaymentInquiry(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetBillerCategoriesResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse; + return soap_in__interswitch__GetBillerCategoriesResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetBillerCategories")) + { *type = SOAP_TYPE_interswitch__interswitch__GetBillerCategories; + return soap_in__interswitch__GetBillerCategories(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetBillerPaymentItemsResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse; + return soap_in__interswitch__GetBillerPaymentItemsResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetBillerPaymentItems")) + { *type = SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems; + return soap_in__interswitch__GetBillerPaymentItems(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetFeaturedBillersResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse; + return soap_in__interswitch__GetFeaturedBillersResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetFeaturedBillers")) + { *type = SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers; + return soap_in__interswitch__GetFeaturedBillers(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetLatestBillersResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse; + return soap_in__interswitch__GetLatestBillersResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetLatestBillers")) + { *type = SOAP_TYPE_interswitch__interswitch__GetLatestBillers; + return soap_in__interswitch__GetLatestBillers(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetBillersResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__GetBillersResponse; + return soap_in__interswitch__GetBillersResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetBillers")) + { *type = SOAP_TYPE_interswitch__interswitch__GetBillers; + return soap_in__interswitch__GetBillers(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetUserResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__GetUserResponse; + return soap_in__interswitch__GetUserResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetUser")) + { *type = SOAP_TYPE_interswitch__interswitch__GetUser; + return soap_in__interswitch__GetUser(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:AuthenticateUserSecurityTokenResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse; + return soap_in__interswitch__AuthenticateUserSecurityTokenResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:AuthenticateUserSecurityToken")) + { *type = SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken; + return soap_in__interswitch__AuthenticateUserSecurityToken(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:AuthenticateUserResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse; + return soap_in__interswitch__AuthenticateUserResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:AuthenticateUser")) + { *type = SOAP_TYPE_interswitch__interswitch__AuthenticateUser; + return soap_in__interswitch__AuthenticateUser(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:ResetPasswordResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse; + return soap_in__interswitch__ResetPasswordResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:ResetPassword")) + { *type = SOAP_TYPE_interswitch__interswitch__ResetPassword; + return soap_in__interswitch__ResetPassword(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:ChangePasswordResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse; + return soap_in__interswitch__ChangePasswordResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:ChangePassword")) + { *type = SOAP_TYPE_interswitch__interswitch__ChangePassword; + return soap_in__interswitch__ChangePassword(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:UpdateUserResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__UpdateUserResponse; + return soap_in__interswitch__UpdateUserResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:UpdateUser")) + { *type = SOAP_TYPE_interswitch__interswitch__UpdateUser; + return soap_in__interswitch__UpdateUser(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:ActivateUserResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__ActivateUserResponse; + return soap_in__interswitch__ActivateUserResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:ActivateUser")) + { *type = SOAP_TYPE_interswitch__interswitch__ActivateUser; + return soap_in__interswitch__ActivateUser(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:CreateUserResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__CreateUserResponse; + return soap_in__interswitch__CreateUserResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:CreateUser")) + { *type = SOAP_TYPE_interswitch__interswitch__CreateUser; + return soap_in__interswitch__CreateUser(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetSystemSettingsResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse; + return soap_in__interswitch__GetSystemSettingsResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:GetSystemSettings")) + { *type = SOAP_TYPE_interswitch__interswitch__GetSystemSettings; + return soap_in__interswitch__GetSystemSettings(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:QueryTransactionResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse; + return soap_in__interswitch__QueryTransactionResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:QueryTransaction")) + { *type = SOAP_TYPE_interswitch__interswitch__QueryTransaction; + return soap_in__interswitch__QueryTransaction(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:StatusCheckResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__StatusCheckResponse; + return soap_in__interswitch__StatusCheckResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:StatusCheck")) + { *type = SOAP_TYPE_interswitch__interswitch__StatusCheck; + return soap_in__interswitch__StatusCheck(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:ReverseCashOutResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse; + return soap_in__interswitch__ReverseCashOutResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:ReverseCashOut")) + { *type = SOAP_TYPE_interswitch__interswitch__ReverseCashOut; + return soap_in__interswitch__ReverseCashOut(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:AuthoriseAccountCashOutResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse; + return soap_in__interswitch__AuthoriseAccountCashOutResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:AuthoriseAccountCashOut")) + { *type = SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut; + return soap_in__interswitch__AuthoriseAccountCashOut(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:AuthoriseCashOutResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse; + return soap_in__interswitch__AuthoriseCashOutResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:AuthoriseCashOut")) + { *type = SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut; + return soap_in__interswitch__AuthoriseCashOut(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:QueryTransferResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__QueryTransferResponse; + return soap_in__interswitch__QueryTransferResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:QueryTransfer")) + { *type = SOAP_TYPE_interswitch__interswitch__QueryTransfer; + return soap_in__interswitch__QueryTransfer(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:SendSessionKeyResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse; + return soap_in__interswitch__SendSessionKeyResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:SendSessionKey")) + { *type = SOAP_TYPE_interswitch__interswitch__SendSessionKey; + return soap_in__interswitch__SendSessionKey(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:CancelTransferResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__CancelTransferResponse; + return soap_in__interswitch__CancelTransferResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:CancelTransfer")) + { *type = SOAP_TYPE_interswitch__interswitch__CancelTransfer; + return soap_in__interswitch__CancelTransfer(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:DoTransferResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__DoTransferResponse; + return soap_in__interswitch__DoTransferResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:DoTransfer")) + { *type = SOAP_TYPE_interswitch__interswitch__DoTransfer; + return soap_in__interswitch__DoTransfer(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:ValidateCustomerResponse")) + { *type = SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse; + return soap_in__interswitch__ValidateCustomerResponse(soap, NULL, NULL, NULL); + } + if (!soap_match_tag(soap, t, "interswitch:ValidateCustomer")) + { *type = SOAP_TYPE_interswitch__interswitch__ValidateCustomer; + return soap_in__interswitch__ValidateCustomer(soap, NULL, NULL, NULL); + } + } + } + soap->error = SOAP_TAG_MISMATCH; + return NULL; +} +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_ignore_element(struct soap *soap) +{ + if (!soap_peek_element(soap)) + { int t; + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Unexpected element '%s' in input (level=%u, %d)\n", soap->tag, soap->level, soap->body)); + if (soap->mustUnderstand && !soap->other) + return soap->error = SOAP_MUSTUNDERSTAND; + if (((soap->mode & SOAP_XML_STRICT) && soap->part != SOAP_IN_HEADER) || !soap_match_tag(soap, soap->tag, "SOAP-ENV:")) + { DBGLOG(TEST, SOAP_MESSAGE(fdebug, "REJECTING element '%s'\n", soap->tag)); + return soap->error = SOAP_TAG_MISMATCH; + } + if (!*soap->id || !soap_getelement(soap, &t)) + { soap->peeked = 0; + if (soap->fignore) + soap->error = soap->fignore(soap, soap->tag); + else + soap->error = SOAP_OK; + DBGLOG(TEST, if (!soap->error) SOAP_MESSAGE(fdebug, "IGNORING element '%s'\n", soap->tag)); + if (!soap->error && soap->body) + { soap->level++; + while (!soap_ignore_element(soap)) + ; + if (soap->error == SOAP_NO_TAG) + soap->error = soap_element_end_in(soap, NULL); + } + } + } + return soap->error; +} + +#ifndef WITH_NOIDREF +SOAP_FMAC3 int SOAP_FMAC4 soap_putindependent(struct soap *soap) +{ + int i; + struct soap_plist *pp; + if (soap->version == 1 && soap->encodingStyle && !(soap->mode & (SOAP_XML_TREE | SOAP_XML_GRAPH))) + for (i = 0; i < SOAP_PTRHASH; i++) + for (pp = soap->pht[i]; pp; pp = pp->next) + if (pp->mark1 == 2 || pp->mark2 == 2) + if (soap_putelement(soap, pp->ptr, "id", pp->id, pp->type)) + return soap->error; + return SOAP_OK; +} +#endif + +#ifndef WITH_NOIDREF +SOAP_FMAC3 int SOAP_FMAC4 soap_putelement(struct soap *soap, const void *ptr, const char *tag, int id, int type) +{ + switch (type) + { + case SOAP_TYPE_interswitch_xsd__byte: + return soap_out_xsd__byte(soap, tag, id, (const char *)ptr, "xsd:byte"); + case SOAP_TYPE_interswitch_byte: + return soap_out_byte(soap, tag, id, (const char *)ptr, "xsd:byte"); + case SOAP_TYPE_interswitch_short: + return soap_out_short(soap, tag, id, (const short *)ptr, "xsd:short"); + case SOAP_TYPE_interswitch_interswitch2__char: + return soap_out_interswitch2__char(soap, tag, id, (const int *)ptr, "interswitch2:char"); + case SOAP_TYPE_interswitch_int: + return soap_out_int(soap, tag, id, (const int *)ptr, "xsd:int"); + case SOAP_TYPE_interswitch_LONG64: + return soap_out_LONG64(soap, tag, id, (const LONG64 *)ptr, "xsd:long"); + case SOAP_TYPE_interswitch_float: + return soap_out_float(soap, tag, id, (const float *)ptr, "xsd:float"); + case SOAP_TYPE_interswitch_double: + return soap_out_double(soap, tag, id, (const double *)ptr, "xsd:double"); + case SOAP_TYPE_interswitch_xsd__unsignedByte: + return soap_out_xsd__unsignedByte(soap, tag, id, (const unsigned char *)ptr, "xsd:unsignedByte"); + case SOAP_TYPE_interswitch_unsignedByte: + return soap_out_unsignedByte(soap, tag, id, (const unsigned char *)ptr, "xsd:unsignedByte"); + case SOAP_TYPE_interswitch_unsignedShort: + return soap_out_unsignedShort(soap, tag, id, (const unsigned short *)ptr, "xsd:unsignedShort"); + case SOAP_TYPE_interswitch_unsignedInt: + return soap_out_unsignedInt(soap, tag, id, (const unsigned int *)ptr, "xsd:unsignedInt"); + case SOAP_TYPE_interswitch_unsignedLONG64: + return soap_out_unsignedLONG64(soap, tag, id, (const ULONG64 *)ptr, "xsd:unsignedLong"); + case SOAP_TYPE_interswitch_time: + return soap_out_time(soap, tag, id, (const time_t *)ptr, "xsd:dateTime"); + case SOAP_TYPE_interswitch_bool: + return soap_out_bool(soap, tag, id, (const bool *)ptr, "xsd:boolean"); + case SOAP_TYPE_interswitch_interswitch2__guid__: + return ((interswitch2__guid__ *)ptr)->soap_out(soap, tag, id, "interswitch2:guid"); + case SOAP_TYPE_interswitch_interswitch2__guid: + return soap_out_interswitch2__guid(soap, tag, id, (const std::string *)ptr, "interswitch2:guid"); + case SOAP_TYPE_interswitch_interswitch2__duration__: + return ((interswitch2__duration__ *)ptr)->soap_out(soap, tag, id, "interswitch2:duration"); + case SOAP_TYPE_interswitch_interswitch2__duration: + return soap_out_interswitch2__duration(soap, tag, id, (const std::string *)ptr, "interswitch2:duration"); + case SOAP_TYPE_interswitch_interswitch2__char__: + return ((interswitch2__char__ *)ptr)->soap_out(soap, tag, id, "interswitch2:char"); + case SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse: + return ((_interswitch__VerifyBillerResponse *)ptr)->soap_out(soap, "interswitch:VerifyBillerResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__VerifyBiller: + return ((_interswitch__VerifyBiller *)ptr)->soap_out(soap, "interswitch:VerifyBiller", id, NULL); + case SOAP_TYPE_interswitch__interswitch__CreateBillerResponse: + return ((_interswitch__CreateBillerResponse *)ptr)->soap_out(soap, "interswitch:CreateBillerResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__CreateBiller: + return ((_interswitch__CreateBiller *)ptr)->soap_out(soap, "interswitch:CreateBiller", id, NULL); + case SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse: + return ((_interswitch__DoCustomProcessingResponse *)ptr)->soap_out(soap, "interswitch:DoCustomProcessingResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__DoCustomProcessing: + return ((_interswitch__DoCustomProcessing *)ptr)->soap_out(soap, "interswitch:DoCustomProcessing", id, NULL); + case SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse: + return ((_interswitch__ResendActivationTokenResponse *)ptr)->soap_out(soap, "interswitch:ResendActivationTokenResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__ResendActivationToken: + return ((_interswitch__ResendActivationToken *)ptr)->soap_out(soap, "interswitch:ResendActivationToken", id, NULL); + case SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse: + return ((_interswitch__EditCustomerBillerAccountResponse *)ptr)->soap_out(soap, "interswitch:EditCustomerBillerAccountResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount: + return ((_interswitch__EditCustomerBillerAccount *)ptr)->soap_out(soap, "interswitch:EditCustomerBillerAccount", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse: + return ((_interswitch__GetBillersCollectionsAccountResponse *)ptr)->soap_out(soap, "interswitch:GetBillersCollectionsAccountResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount: + return ((_interswitch__GetBillersCollectionsAccount *)ptr)->soap_out(soap, "interswitch:GetBillersCollectionsAccount", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse: + return ((_interswitch__GetCollectionsAccountResponse *)ptr)->soap_out(soap, "interswitch:GetCollectionsAccountResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount: + return ((_interswitch__GetCollectionsAccount *)ptr)->soap_out(soap, "interswitch:GetCollectionsAccount", id, NULL); + case SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse: + return ((_interswitch__AddBillerCustomerResponse *)ptr)->soap_out(soap, "interswitch:AddBillerCustomerResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__AddBillerCustomer: + return ((_interswitch__AddBillerCustomer *)ptr)->soap_out(soap, "interswitch:AddBillerCustomer", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse: + return ((_interswitch__GetCustomerPaymentsResponse *)ptr)->soap_out(soap, "interswitch:GetCustomerPaymentsResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetCustomerPayments: + return ((_interswitch__GetCustomerPayments *)ptr)->soap_out(soap, "interswitch:GetCustomerPayments", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse: + return ((_interswitch__GetCustomerBillerAccountsResponse *)ptr)->soap_out(soap, "interswitch:GetCustomerBillerAccountsResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts: + return ((_interswitch__GetCustomerBillerAccounts *)ptr)->soap_out(soap, "interswitch:GetCustomerBillerAccounts", id, NULL); + case SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse: + return ((_interswitch__AddCustomerBillerAccountResponse *)ptr)->soap_out(soap, "interswitch:AddCustomerBillerAccountResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount: + return ((_interswitch__AddCustomerBillerAccount *)ptr)->soap_out(soap, "interswitch:AddCustomerBillerAccount", id, NULL); + case SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse: + return ((_interswitch__SendPaymentsResponse *)ptr)->soap_out(soap, "interswitch:SendPaymentsResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__SendPayments: + return ((_interswitch__SendPayments *)ptr)->soap_out(soap, "interswitch:SendPayments", id, NULL); + case SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse: + return ((_interswitch__SendBillPaymentAdviceResponse *)ptr)->soap_out(soap, "interswitch:SendBillPaymentAdviceResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice: + return ((_interswitch__SendBillPaymentAdvice *)ptr)->soap_out(soap, "interswitch:SendBillPaymentAdvice", id, NULL); + case SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse: + return ((_interswitch__AuthenticateCustomerResponse *)ptr)->soap_out(soap, "interswitch:AuthenticateCustomerResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer: + return ((_interswitch__AuthenticateCustomer *)ptr)->soap_out(soap, "interswitch:AuthenticateCustomer", id, NULL); + case SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse: + return ((_interswitch__DoBillPaymentInquiryResponse *)ptr)->soap_out(soap, "interswitch:DoBillPaymentInquiryResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry: + return ((_interswitch__DoBillPaymentInquiry *)ptr)->soap_out(soap, "interswitch:DoBillPaymentInquiry", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse: + return ((_interswitch__GetBillerCategoriesResponse *)ptr)->soap_out(soap, "interswitch:GetBillerCategoriesResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetBillerCategories: + return ((_interswitch__GetBillerCategories *)ptr)->soap_out(soap, "interswitch:GetBillerCategories", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse: + return ((_interswitch__GetBillerPaymentItemsResponse *)ptr)->soap_out(soap, "interswitch:GetBillerPaymentItemsResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems: + return ((_interswitch__GetBillerPaymentItems *)ptr)->soap_out(soap, "interswitch:GetBillerPaymentItems", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse: + return ((_interswitch__GetFeaturedBillersResponse *)ptr)->soap_out(soap, "interswitch:GetFeaturedBillersResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers: + return ((_interswitch__GetFeaturedBillers *)ptr)->soap_out(soap, "interswitch:GetFeaturedBillers", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse: + return ((_interswitch__GetLatestBillersResponse *)ptr)->soap_out(soap, "interswitch:GetLatestBillersResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetLatestBillers: + return ((_interswitch__GetLatestBillers *)ptr)->soap_out(soap, "interswitch:GetLatestBillers", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetBillersResponse: + return ((_interswitch__GetBillersResponse *)ptr)->soap_out(soap, "interswitch:GetBillersResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetBillers: + return ((_interswitch__GetBillers *)ptr)->soap_out(soap, "interswitch:GetBillers", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetUserResponse: + return ((_interswitch__GetUserResponse *)ptr)->soap_out(soap, "interswitch:GetUserResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetUser: + return ((_interswitch__GetUser *)ptr)->soap_out(soap, "interswitch:GetUser", id, NULL); + case SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse: + return ((_interswitch__AuthenticateUserSecurityTokenResponse *)ptr)->soap_out(soap, "interswitch:AuthenticateUserSecurityTokenResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken: + return ((_interswitch__AuthenticateUserSecurityToken *)ptr)->soap_out(soap, "interswitch:AuthenticateUserSecurityToken", id, NULL); + case SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse: + return ((_interswitch__AuthenticateUserResponse *)ptr)->soap_out(soap, "interswitch:AuthenticateUserResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__AuthenticateUser: + return ((_interswitch__AuthenticateUser *)ptr)->soap_out(soap, "interswitch:AuthenticateUser", id, NULL); + case SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse: + return ((_interswitch__ResetPasswordResponse *)ptr)->soap_out(soap, "interswitch:ResetPasswordResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__ResetPassword: + return ((_interswitch__ResetPassword *)ptr)->soap_out(soap, "interswitch:ResetPassword", id, NULL); + case SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse: + return ((_interswitch__ChangePasswordResponse *)ptr)->soap_out(soap, "interswitch:ChangePasswordResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__ChangePassword: + return ((_interswitch__ChangePassword *)ptr)->soap_out(soap, "interswitch:ChangePassword", id, NULL); + case SOAP_TYPE_interswitch__interswitch__UpdateUserResponse: + return ((_interswitch__UpdateUserResponse *)ptr)->soap_out(soap, "interswitch:UpdateUserResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__UpdateUser: + return ((_interswitch__UpdateUser *)ptr)->soap_out(soap, "interswitch:UpdateUser", id, NULL); + case SOAP_TYPE_interswitch__interswitch__ActivateUserResponse: + return ((_interswitch__ActivateUserResponse *)ptr)->soap_out(soap, "interswitch:ActivateUserResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__ActivateUser: + return ((_interswitch__ActivateUser *)ptr)->soap_out(soap, "interswitch:ActivateUser", id, NULL); + case SOAP_TYPE_interswitch__interswitch__CreateUserResponse: + return ((_interswitch__CreateUserResponse *)ptr)->soap_out(soap, "interswitch:CreateUserResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__CreateUser: + return ((_interswitch__CreateUser *)ptr)->soap_out(soap, "interswitch:CreateUser", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse: + return ((_interswitch__GetSystemSettingsResponse *)ptr)->soap_out(soap, "interswitch:GetSystemSettingsResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__GetSystemSettings: + return ((_interswitch__GetSystemSettings *)ptr)->soap_out(soap, "interswitch:GetSystemSettings", id, NULL); + case SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse: + return ((_interswitch__QueryTransactionResponse *)ptr)->soap_out(soap, "interswitch:QueryTransactionResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__QueryTransaction: + return ((_interswitch__QueryTransaction *)ptr)->soap_out(soap, "interswitch:QueryTransaction", id, NULL); + case SOAP_TYPE_interswitch__interswitch__StatusCheckResponse: + return ((_interswitch__StatusCheckResponse *)ptr)->soap_out(soap, "interswitch:StatusCheckResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__StatusCheck: + return ((_interswitch__StatusCheck *)ptr)->soap_out(soap, "interswitch:StatusCheck", id, NULL); + case SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse: + return ((_interswitch__ReverseCashOutResponse *)ptr)->soap_out(soap, "interswitch:ReverseCashOutResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__ReverseCashOut: + return ((_interswitch__ReverseCashOut *)ptr)->soap_out(soap, "interswitch:ReverseCashOut", id, NULL); + case SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse: + return ((_interswitch__AuthoriseAccountCashOutResponse *)ptr)->soap_out(soap, "interswitch:AuthoriseAccountCashOutResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut: + return ((_interswitch__AuthoriseAccountCashOut *)ptr)->soap_out(soap, "interswitch:AuthoriseAccountCashOut", id, NULL); + case SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse: + return ((_interswitch__AuthoriseCashOutResponse *)ptr)->soap_out(soap, "interswitch:AuthoriseCashOutResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut: + return ((_interswitch__AuthoriseCashOut *)ptr)->soap_out(soap, "interswitch:AuthoriseCashOut", id, NULL); + case SOAP_TYPE_interswitch__interswitch__QueryTransferResponse: + return ((_interswitch__QueryTransferResponse *)ptr)->soap_out(soap, "interswitch:QueryTransferResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__QueryTransfer: + return ((_interswitch__QueryTransfer *)ptr)->soap_out(soap, "interswitch:QueryTransfer", id, NULL); + case SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse: + return ((_interswitch__SendSessionKeyResponse *)ptr)->soap_out(soap, "interswitch:SendSessionKeyResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__SendSessionKey: + return ((_interswitch__SendSessionKey *)ptr)->soap_out(soap, "interswitch:SendSessionKey", id, NULL); + case SOAP_TYPE_interswitch__interswitch__CancelTransferResponse: + return ((_interswitch__CancelTransferResponse *)ptr)->soap_out(soap, "interswitch:CancelTransferResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__CancelTransfer: + return ((_interswitch__CancelTransfer *)ptr)->soap_out(soap, "interswitch:CancelTransfer", id, NULL); + case SOAP_TYPE_interswitch__interswitch__DoTransferResponse: + return ((_interswitch__DoTransferResponse *)ptr)->soap_out(soap, "interswitch:DoTransferResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__DoTransfer: + return ((_interswitch__DoTransfer *)ptr)->soap_out(soap, "interswitch:DoTransfer", id, NULL); + case SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse: + return ((_interswitch__ValidateCustomerResponse *)ptr)->soap_out(soap, "interswitch:ValidateCustomerResponse", id, NULL); + case SOAP_TYPE_interswitch__interswitch__ValidateCustomer: + return ((_interswitch__ValidateCustomer *)ptr)->soap_out(soap, "interswitch:ValidateCustomer", id, NULL); + case SOAP_TYPE_interswitch_xsd__unsignedShort: + return ((xsd__unsignedShort *)ptr)->soap_out(soap, tag, id, "xsd:unsignedShort"); + case SOAP_TYPE_interswitch_xsd__unsignedLong: + return ((xsd__unsignedLong *)ptr)->soap_out(soap, tag, id, "xsd:unsignedLong"); + case SOAP_TYPE_interswitch_xsd__unsignedInt: + return ((xsd__unsignedInt *)ptr)->soap_out(soap, tag, id, "xsd:unsignedInt"); + case SOAP_TYPE_interswitch_xsd__unsignedByte_: + return ((xsd__unsignedByte_ *)ptr)->soap_out(soap, tag, id, "xsd:unsignedByte"); + case SOAP_TYPE_interswitch_xsd__string: + return ((xsd__string *)ptr)->soap_out(soap, tag, id, "xsd:string"); + case SOAP_TYPE_interswitch_xsd__short: + return ((xsd__short *)ptr)->soap_out(soap, tag, id, "xsd:short"); + case SOAP_TYPE_interswitch_xsd__long: + return ((xsd__long *)ptr)->soap_out(soap, tag, id, "xsd:long"); + case SOAP_TYPE_interswitch_xsd__int: + return ((xsd__int *)ptr)->soap_out(soap, tag, id, "xsd:int"); + case SOAP_TYPE_interswitch_xsd__float: + return ((xsd__float *)ptr)->soap_out(soap, tag, id, "xsd:float"); + case SOAP_TYPE_interswitch_xsd__duration_: + return ((xsd__duration_ *)ptr)->soap_out(soap, tag, id, "xsd:duration"); + case SOAP_TYPE_interswitch_xsd__duration: + return soap_out_xsd__duration(soap, tag, id, (const std::string *)ptr, "xsd:duration"); + case SOAP_TYPE_interswitch_xsd__double: + return ((xsd__double *)ptr)->soap_out(soap, tag, id, "xsd:double"); + case SOAP_TYPE_interswitch_xsd__decimal_: + return ((xsd__decimal_ *)ptr)->soap_out(soap, tag, id, "xsd:decimal"); + case SOAP_TYPE_interswitch_xsd__decimal: + return soap_out_xsd__decimal(soap, tag, id, (const std::string *)ptr, "xsd:decimal"); + case SOAP_TYPE_interswitch_xsd__dateTime: + return ((xsd__dateTime *)ptr)->soap_out(soap, tag, id, "xsd:dateTime"); + case SOAP_TYPE_interswitch_xsd__byte_: + return ((xsd__byte_ *)ptr)->soap_out(soap, tag, id, "xsd:byte"); + case SOAP_TYPE_interswitch_xsd__boolean: + return ((xsd__boolean *)ptr)->soap_out(soap, tag, id, "xsd:boolean"); + case SOAP_TYPE_interswitch_xsd__base64Binary_: + return ((xsd__base64Binary_ *)ptr)->soap_out(soap, tag, id, "xsd:base64Binary"); + case SOAP_TYPE_interswitch_xsd__base64Binary: + return ((xsd__base64Binary *)ptr)->soap_out(soap, tag, id, "xsd:base64Binary"); + case SOAP_TYPE_interswitch_xsd__anyURI_: + return ((xsd__anyURI_ *)ptr)->soap_out(soap, tag, id, "xsd:anyURI"); + case SOAP_TYPE_interswitch_xsd__anyURI: + return soap_out_xsd__anyURI(soap, tag, id, (const std::string *)ptr, "xsd:anyURI"); + case SOAP_TYPE_interswitch_xsd__QName_: + return ((xsd__QName_ *)ptr)->soap_out(soap, tag, id, "xsd:QName"); + case SOAP_TYPE_interswitch_xsd__QName: + return soap_out_xsd__QName(soap, tag, id, (const xsd__QName *)ptr, "xsd:QName"); + case SOAP_TYPE_interswitch_xsd__IDREF_: + return ((xsd__IDREF_ *)ptr)->soap_out(soap, tag, id, "xsd:IDREF"); + case SOAP_TYPE_interswitch_xsd__IDREF: + return soap_out_xsd__IDREF(soap, tag, id, (const std::string *)ptr, "xsd:IDREF"); + case SOAP_TYPE_interswitch_xsd__ID_: + return ((xsd__ID_ *)ptr)->soap_out(soap, tag, id, "xsd:ID"); + case SOAP_TYPE_interswitch_xsd__ID: + return soap_out_xsd__ID(soap, tag, id, (const std::string *)ptr, "xsd:ID"); + case SOAP_TYPE_interswitch_std__string: + return soap_out_std__string(soap, tag, id, (const std::string *)ptr, "xsd:string"); + case SOAP_TYPE_interswitch_xsd__anyType: + return ((xsd__anyType *)ptr)->soap_out(soap, tag, id, "xsd:anyType"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__VerifyBillerResponse: + return soap_out_PointerTo_interswitch__VerifyBillerResponse(soap, tag, id, (_interswitch__VerifyBillerResponse *const*)ptr, "interswitch:VerifyBillerResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__VerifyBiller: + return soap_out_PointerTo_interswitch__VerifyBiller(soap, tag, id, (_interswitch__VerifyBiller *const*)ptr, "interswitch:VerifyBiller"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__CreateBillerResponse: + return soap_out_PointerTo_interswitch__CreateBillerResponse(soap, tag, id, (_interswitch__CreateBillerResponse *const*)ptr, "interswitch:CreateBillerResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__CreateBiller: + return soap_out_PointerTo_interswitch__CreateBiller(soap, tag, id, (_interswitch__CreateBiller *const*)ptr, "interswitch:CreateBiller"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__DoCustomProcessingResponse: + return soap_out_PointerTo_interswitch__DoCustomProcessingResponse(soap, tag, id, (_interswitch__DoCustomProcessingResponse *const*)ptr, "interswitch:DoCustomProcessingResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__DoCustomProcessing: + return soap_out_PointerTo_interswitch__DoCustomProcessing(soap, tag, id, (_interswitch__DoCustomProcessing *const*)ptr, "interswitch:DoCustomProcessing"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ResendActivationTokenResponse: + return soap_out_PointerTo_interswitch__ResendActivationTokenResponse(soap, tag, id, (_interswitch__ResendActivationTokenResponse *const*)ptr, "interswitch:ResendActivationTokenResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ResendActivationToken: + return soap_out_PointerTo_interswitch__ResendActivationToken(soap, tag, id, (_interswitch__ResendActivationToken *const*)ptr, "interswitch:ResendActivationToken"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__EditCustomerBillerAccountResponse: + return soap_out_PointerTo_interswitch__EditCustomerBillerAccountResponse(soap, tag, id, (_interswitch__EditCustomerBillerAccountResponse *const*)ptr, "interswitch:EditCustomerBillerAccountResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__EditCustomerBillerAccount: + return soap_out_PointerTo_interswitch__EditCustomerBillerAccount(soap, tag, id, (_interswitch__EditCustomerBillerAccount *const*)ptr, "interswitch:EditCustomerBillerAccount"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillersCollectionsAccountResponse: + return soap_out_PointerTo_interswitch__GetBillersCollectionsAccountResponse(soap, tag, id, (_interswitch__GetBillersCollectionsAccountResponse *const*)ptr, "interswitch:GetBillersCollectionsAccountResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillersCollectionsAccount: + return soap_out_PointerTo_interswitch__GetBillersCollectionsAccount(soap, tag, id, (_interswitch__GetBillersCollectionsAccount *const*)ptr, "interswitch:GetBillersCollectionsAccount"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetCollectionsAccountResponse: + return soap_out_PointerTo_interswitch__GetCollectionsAccountResponse(soap, tag, id, (_interswitch__GetCollectionsAccountResponse *const*)ptr, "interswitch:GetCollectionsAccountResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetCollectionsAccount: + return soap_out_PointerTo_interswitch__GetCollectionsAccount(soap, tag, id, (_interswitch__GetCollectionsAccount *const*)ptr, "interswitch:GetCollectionsAccount"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AddBillerCustomerResponse: + return soap_out_PointerTo_interswitch__AddBillerCustomerResponse(soap, tag, id, (_interswitch__AddBillerCustomerResponse *const*)ptr, "interswitch:AddBillerCustomerResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AddBillerCustomer: + return soap_out_PointerTo_interswitch__AddBillerCustomer(soap, tag, id, (_interswitch__AddBillerCustomer *const*)ptr, "interswitch:AddBillerCustomer"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerPaymentsResponse: + return soap_out_PointerTo_interswitch__GetCustomerPaymentsResponse(soap, tag, id, (_interswitch__GetCustomerPaymentsResponse *const*)ptr, "interswitch:GetCustomerPaymentsResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerPayments: + return soap_out_PointerTo_interswitch__GetCustomerPayments(soap, tag, id, (_interswitch__GetCustomerPayments *const*)ptr, "interswitch:GetCustomerPayments"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerBillerAccountsResponse: + return soap_out_PointerTo_interswitch__GetCustomerBillerAccountsResponse(soap, tag, id, (_interswitch__GetCustomerBillerAccountsResponse *const*)ptr, "interswitch:GetCustomerBillerAccountsResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerBillerAccounts: + return soap_out_PointerTo_interswitch__GetCustomerBillerAccounts(soap, tag, id, (_interswitch__GetCustomerBillerAccounts *const*)ptr, "interswitch:GetCustomerBillerAccounts"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AddCustomerBillerAccountResponse: + return soap_out_PointerTo_interswitch__AddCustomerBillerAccountResponse(soap, tag, id, (_interswitch__AddCustomerBillerAccountResponse *const*)ptr, "interswitch:AddCustomerBillerAccountResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AddCustomerBillerAccount: + return soap_out_PointerTo_interswitch__AddCustomerBillerAccount(soap, tag, id, (_interswitch__AddCustomerBillerAccount *const*)ptr, "interswitch:AddCustomerBillerAccount"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__SendPaymentsResponse: + return soap_out_PointerTo_interswitch__SendPaymentsResponse(soap, tag, id, (_interswitch__SendPaymentsResponse *const*)ptr, "interswitch:SendPaymentsResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__SendPayments: + return soap_out_PointerTo_interswitch__SendPayments(soap, tag, id, (_interswitch__SendPayments *const*)ptr, "interswitch:SendPayments"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__SendBillPaymentAdviceResponse: + return soap_out_PointerTo_interswitch__SendBillPaymentAdviceResponse(soap, tag, id, (_interswitch__SendBillPaymentAdviceResponse *const*)ptr, "interswitch:SendBillPaymentAdviceResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__SendBillPaymentAdvice: + return soap_out_PointerTo_interswitch__SendBillPaymentAdvice(soap, tag, id, (_interswitch__SendBillPaymentAdvice *const*)ptr, "interswitch:SendBillPaymentAdvice"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateCustomerResponse: + return soap_out_PointerTo_interswitch__AuthenticateCustomerResponse(soap, tag, id, (_interswitch__AuthenticateCustomerResponse *const*)ptr, "interswitch:AuthenticateCustomerResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateCustomer: + return soap_out_PointerTo_interswitch__AuthenticateCustomer(soap, tag, id, (_interswitch__AuthenticateCustomer *const*)ptr, "interswitch:AuthenticateCustomer"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__DoBillPaymentInquiryResponse: + return soap_out_PointerTo_interswitch__DoBillPaymentInquiryResponse(soap, tag, id, (_interswitch__DoBillPaymentInquiryResponse *const*)ptr, "interswitch:DoBillPaymentInquiryResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__DoBillPaymentInquiry: + return soap_out_PointerTo_interswitch__DoBillPaymentInquiry(soap, tag, id, (_interswitch__DoBillPaymentInquiry *const*)ptr, "interswitch:DoBillPaymentInquiry"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerCategoriesResponse: + return soap_out_PointerTo_interswitch__GetBillerCategoriesResponse(soap, tag, id, (_interswitch__GetBillerCategoriesResponse *const*)ptr, "interswitch:GetBillerCategoriesResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerCategories: + return soap_out_PointerTo_interswitch__GetBillerCategories(soap, tag, id, (_interswitch__GetBillerCategories *const*)ptr, "interswitch:GetBillerCategories"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerPaymentItemsResponse: + return soap_out_PointerTo_interswitch__GetBillerPaymentItemsResponse(soap, tag, id, (_interswitch__GetBillerPaymentItemsResponse *const*)ptr, "interswitch:GetBillerPaymentItemsResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerPaymentItems: + return soap_out_PointerTo_interswitch__GetBillerPaymentItems(soap, tag, id, (_interswitch__GetBillerPaymentItems *const*)ptr, "interswitch:GetBillerPaymentItems"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetFeaturedBillersResponse: + return soap_out_PointerTo_interswitch__GetFeaturedBillersResponse(soap, tag, id, (_interswitch__GetFeaturedBillersResponse *const*)ptr, "interswitch:GetFeaturedBillersResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetFeaturedBillers: + return soap_out_PointerTo_interswitch__GetFeaturedBillers(soap, tag, id, (_interswitch__GetFeaturedBillers *const*)ptr, "interswitch:GetFeaturedBillers"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetLatestBillersResponse: + return soap_out_PointerTo_interswitch__GetLatestBillersResponse(soap, tag, id, (_interswitch__GetLatestBillersResponse *const*)ptr, "interswitch:GetLatestBillersResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetLatestBillers: + return soap_out_PointerTo_interswitch__GetLatestBillers(soap, tag, id, (_interswitch__GetLatestBillers *const*)ptr, "interswitch:GetLatestBillers"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillersResponse: + return soap_out_PointerTo_interswitch__GetBillersResponse(soap, tag, id, (_interswitch__GetBillersResponse *const*)ptr, "interswitch:GetBillersResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillers: + return soap_out_PointerTo_interswitch__GetBillers(soap, tag, id, (_interswitch__GetBillers *const*)ptr, "interswitch:GetBillers"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetUserResponse: + return soap_out_PointerTo_interswitch__GetUserResponse(soap, tag, id, (_interswitch__GetUserResponse *const*)ptr, "interswitch:GetUserResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetUser: + return soap_out_PointerTo_interswitch__GetUser(soap, tag, id, (_interswitch__GetUser *const*)ptr, "interswitch:GetUser"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse: + return soap_out_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(soap, tag, id, (_interswitch__AuthenticateUserSecurityTokenResponse *const*)ptr, "interswitch:AuthenticateUserSecurityTokenResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUserSecurityToken: + return soap_out_PointerTo_interswitch__AuthenticateUserSecurityToken(soap, tag, id, (_interswitch__AuthenticateUserSecurityToken *const*)ptr, "interswitch:AuthenticateUserSecurityToken"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUserResponse: + return soap_out_PointerTo_interswitch__AuthenticateUserResponse(soap, tag, id, (_interswitch__AuthenticateUserResponse *const*)ptr, "interswitch:AuthenticateUserResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUser: + return soap_out_PointerTo_interswitch__AuthenticateUser(soap, tag, id, (_interswitch__AuthenticateUser *const*)ptr, "interswitch:AuthenticateUser"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ResetPasswordResponse: + return soap_out_PointerTo_interswitch__ResetPasswordResponse(soap, tag, id, (_interswitch__ResetPasswordResponse *const*)ptr, "interswitch:ResetPasswordResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ResetPassword: + return soap_out_PointerTo_interswitch__ResetPassword(soap, tag, id, (_interswitch__ResetPassword *const*)ptr, "interswitch:ResetPassword"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ChangePasswordResponse: + return soap_out_PointerTo_interswitch__ChangePasswordResponse(soap, tag, id, (_interswitch__ChangePasswordResponse *const*)ptr, "interswitch:ChangePasswordResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ChangePassword: + return soap_out_PointerTo_interswitch__ChangePassword(soap, tag, id, (_interswitch__ChangePassword *const*)ptr, "interswitch:ChangePassword"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__UpdateUserResponse: + return soap_out_PointerTo_interswitch__UpdateUserResponse(soap, tag, id, (_interswitch__UpdateUserResponse *const*)ptr, "interswitch:UpdateUserResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__UpdateUser: + return soap_out_PointerTo_interswitch__UpdateUser(soap, tag, id, (_interswitch__UpdateUser *const*)ptr, "interswitch:UpdateUser"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ActivateUserResponse: + return soap_out_PointerTo_interswitch__ActivateUserResponse(soap, tag, id, (_interswitch__ActivateUserResponse *const*)ptr, "interswitch:ActivateUserResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ActivateUser: + return soap_out_PointerTo_interswitch__ActivateUser(soap, tag, id, (_interswitch__ActivateUser *const*)ptr, "interswitch:ActivateUser"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__CreateUserResponse: + return soap_out_PointerTo_interswitch__CreateUserResponse(soap, tag, id, (_interswitch__CreateUserResponse *const*)ptr, "interswitch:CreateUserResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__CreateUser: + return soap_out_PointerTo_interswitch__CreateUser(soap, tag, id, (_interswitch__CreateUser *const*)ptr, "interswitch:CreateUser"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetSystemSettingsResponse: + return soap_out_PointerTo_interswitch__GetSystemSettingsResponse(soap, tag, id, (_interswitch__GetSystemSettingsResponse *const*)ptr, "interswitch:GetSystemSettingsResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetSystemSettings: + return soap_out_PointerTo_interswitch__GetSystemSettings(soap, tag, id, (_interswitch__GetSystemSettings *const*)ptr, "interswitch:GetSystemSettings"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransactionResponse: + return soap_out_PointerTo_interswitch__QueryTransactionResponse(soap, tag, id, (_interswitch__QueryTransactionResponse *const*)ptr, "interswitch:QueryTransactionResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransaction: + return soap_out_PointerTo_interswitch__QueryTransaction(soap, tag, id, (_interswitch__QueryTransaction *const*)ptr, "interswitch:QueryTransaction"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__StatusCheckResponse: + return soap_out_PointerTo_interswitch__StatusCheckResponse(soap, tag, id, (_interswitch__StatusCheckResponse *const*)ptr, "interswitch:StatusCheckResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__StatusCheck: + return soap_out_PointerTo_interswitch__StatusCheck(soap, tag, id, (_interswitch__StatusCheck *const*)ptr, "interswitch:StatusCheck"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ReverseCashOutResponse: + return soap_out_PointerTo_interswitch__ReverseCashOutResponse(soap, tag, id, (_interswitch__ReverseCashOutResponse *const*)ptr, "interswitch:ReverseCashOutResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ReverseCashOut: + return soap_out_PointerTo_interswitch__ReverseCashOut(soap, tag, id, (_interswitch__ReverseCashOut *const*)ptr, "interswitch:ReverseCashOut"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseAccountCashOutResponse: + return soap_out_PointerTo_interswitch__AuthoriseAccountCashOutResponse(soap, tag, id, (_interswitch__AuthoriseAccountCashOutResponse *const*)ptr, "interswitch:AuthoriseAccountCashOutResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseAccountCashOut: + return soap_out_PointerTo_interswitch__AuthoriseAccountCashOut(soap, tag, id, (_interswitch__AuthoriseAccountCashOut *const*)ptr, "interswitch:AuthoriseAccountCashOut"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseCashOutResponse: + return soap_out_PointerTo_interswitch__AuthoriseCashOutResponse(soap, tag, id, (_interswitch__AuthoriseCashOutResponse *const*)ptr, "interswitch:AuthoriseCashOutResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseCashOut: + return soap_out_PointerTo_interswitch__AuthoriseCashOut(soap, tag, id, (_interswitch__AuthoriseCashOut *const*)ptr, "interswitch:AuthoriseCashOut"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransferResponse: + return soap_out_PointerTo_interswitch__QueryTransferResponse(soap, tag, id, (_interswitch__QueryTransferResponse *const*)ptr, "interswitch:QueryTransferResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransfer: + return soap_out_PointerTo_interswitch__QueryTransfer(soap, tag, id, (_interswitch__QueryTransfer *const*)ptr, "interswitch:QueryTransfer"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__SendSessionKeyResponse: + return soap_out_PointerTo_interswitch__SendSessionKeyResponse(soap, tag, id, (_interswitch__SendSessionKeyResponse *const*)ptr, "interswitch:SendSessionKeyResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__SendSessionKey: + return soap_out_PointerTo_interswitch__SendSessionKey(soap, tag, id, (_interswitch__SendSessionKey *const*)ptr, "interswitch:SendSessionKey"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__CancelTransferResponse: + return soap_out_PointerTo_interswitch__CancelTransferResponse(soap, tag, id, (_interswitch__CancelTransferResponse *const*)ptr, "interswitch:CancelTransferResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__CancelTransfer: + return soap_out_PointerTo_interswitch__CancelTransfer(soap, tag, id, (_interswitch__CancelTransfer *const*)ptr, "interswitch:CancelTransfer"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__DoTransferResponse: + return soap_out_PointerTo_interswitch__DoTransferResponse(soap, tag, id, (_interswitch__DoTransferResponse *const*)ptr, "interswitch:DoTransferResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__DoTransfer: + return soap_out_PointerTo_interswitch__DoTransfer(soap, tag, id, (_interswitch__DoTransfer *const*)ptr, "interswitch:DoTransfer"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ValidateCustomerResponse: + return soap_out_PointerTo_interswitch__ValidateCustomerResponse(soap, tag, id, (_interswitch__ValidateCustomerResponse *const*)ptr, "interswitch:ValidateCustomerResponse"); + case SOAP_TYPE_interswitch_PointerTo_interswitch__ValidateCustomer: + return soap_out_PointerTo_interswitch__ValidateCustomer(soap, tag, id, (_interswitch__ValidateCustomer *const*)ptr, "interswitch:ValidateCustomer"); + case SOAP_TYPE_interswitch_PointerTostd__string: + return soap_out_PointerTostd__string(soap, tag, id, (std::string *const*)ptr, "xsd:string"); + case SOAP_TYPE_interswitch_PointerTounsignedByte: + return soap_out_PointerTounsignedByte(soap, tag, id, (unsigned char *const*)ptr, "xsd:unsignedByte"); + case SOAP_TYPE_interswitch__QName: + return soap_out_string(soap, tag, id, (char*const*)&ptr, "xsd:QName"); + case SOAP_TYPE_interswitch_string: + return soap_out_string(soap, tag, id, (char*const*)&ptr, "xsd:string"); + } + return SOAP_OK; +} +#endif + +#ifndef WITH_NOIDREF +SOAP_FMAC3 void SOAP_FMAC4 soap_markelement(struct soap *soap, const void *ptr, int type) +{ + (void)soap; (void)ptr; (void)type; /* appease -Wall -Werror */ + switch (type) + { + case SOAP_TYPE_interswitch_interswitch2__guid__: + ((interswitch2__guid__ *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_interswitch2__guid: + soap_serialize_interswitch2__guid(soap, (const std::string *)ptr); + break; + case SOAP_TYPE_interswitch_interswitch2__duration__: + ((interswitch2__duration__ *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_interswitch2__duration: + soap_serialize_interswitch2__duration(soap, (const std::string *)ptr); + break; + case SOAP_TYPE_interswitch_interswitch2__char__: + ((interswitch2__char__ *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse: + ((_interswitch__VerifyBillerResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__VerifyBiller: + ((_interswitch__VerifyBiller *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__CreateBillerResponse: + ((_interswitch__CreateBillerResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__CreateBiller: + ((_interswitch__CreateBiller *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse: + ((_interswitch__DoCustomProcessingResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__DoCustomProcessing: + ((_interswitch__DoCustomProcessing *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse: + ((_interswitch__ResendActivationTokenResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__ResendActivationToken: + ((_interswitch__ResendActivationToken *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse: + ((_interswitch__EditCustomerBillerAccountResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount: + ((_interswitch__EditCustomerBillerAccount *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse: + ((_interswitch__GetBillersCollectionsAccountResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount: + ((_interswitch__GetBillersCollectionsAccount *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse: + ((_interswitch__GetCollectionsAccountResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount: + ((_interswitch__GetCollectionsAccount *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse: + ((_interswitch__AddBillerCustomerResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__AddBillerCustomer: + ((_interswitch__AddBillerCustomer *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse: + ((_interswitch__GetCustomerPaymentsResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetCustomerPayments: + ((_interswitch__GetCustomerPayments *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse: + ((_interswitch__GetCustomerBillerAccountsResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts: + ((_interswitch__GetCustomerBillerAccounts *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse: + ((_interswitch__AddCustomerBillerAccountResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount: + ((_interswitch__AddCustomerBillerAccount *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse: + ((_interswitch__SendPaymentsResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__SendPayments: + ((_interswitch__SendPayments *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse: + ((_interswitch__SendBillPaymentAdviceResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice: + ((_interswitch__SendBillPaymentAdvice *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse: + ((_interswitch__AuthenticateCustomerResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer: + ((_interswitch__AuthenticateCustomer *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse: + ((_interswitch__DoBillPaymentInquiryResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry: + ((_interswitch__DoBillPaymentInquiry *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse: + ((_interswitch__GetBillerCategoriesResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetBillerCategories: + ((_interswitch__GetBillerCategories *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse: + ((_interswitch__GetBillerPaymentItemsResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems: + ((_interswitch__GetBillerPaymentItems *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse: + ((_interswitch__GetFeaturedBillersResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers: + ((_interswitch__GetFeaturedBillers *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse: + ((_interswitch__GetLatestBillersResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetLatestBillers: + ((_interswitch__GetLatestBillers *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetBillersResponse: + ((_interswitch__GetBillersResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetBillers: + ((_interswitch__GetBillers *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetUserResponse: + ((_interswitch__GetUserResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetUser: + ((_interswitch__GetUser *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse: + ((_interswitch__AuthenticateUserSecurityTokenResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken: + ((_interswitch__AuthenticateUserSecurityToken *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse: + ((_interswitch__AuthenticateUserResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__AuthenticateUser: + ((_interswitch__AuthenticateUser *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse: + ((_interswitch__ResetPasswordResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__ResetPassword: + ((_interswitch__ResetPassword *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse: + ((_interswitch__ChangePasswordResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__ChangePassword: + ((_interswitch__ChangePassword *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__UpdateUserResponse: + ((_interswitch__UpdateUserResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__UpdateUser: + ((_interswitch__UpdateUser *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__ActivateUserResponse: + ((_interswitch__ActivateUserResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__ActivateUser: + ((_interswitch__ActivateUser *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__CreateUserResponse: + ((_interswitch__CreateUserResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__CreateUser: + ((_interswitch__CreateUser *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse: + ((_interswitch__GetSystemSettingsResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__GetSystemSettings: + ((_interswitch__GetSystemSettings *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse: + ((_interswitch__QueryTransactionResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__QueryTransaction: + ((_interswitch__QueryTransaction *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__StatusCheckResponse: + ((_interswitch__StatusCheckResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__StatusCheck: + ((_interswitch__StatusCheck *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse: + ((_interswitch__ReverseCashOutResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__ReverseCashOut: + ((_interswitch__ReverseCashOut *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse: + ((_interswitch__AuthoriseAccountCashOutResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut: + ((_interswitch__AuthoriseAccountCashOut *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse: + ((_interswitch__AuthoriseCashOutResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut: + ((_interswitch__AuthoriseCashOut *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__QueryTransferResponse: + ((_interswitch__QueryTransferResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__QueryTransfer: + ((_interswitch__QueryTransfer *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse: + ((_interswitch__SendSessionKeyResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__SendSessionKey: + ((_interswitch__SendSessionKey *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__CancelTransferResponse: + ((_interswitch__CancelTransferResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__CancelTransfer: + ((_interswitch__CancelTransfer *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__DoTransferResponse: + ((_interswitch__DoTransferResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__DoTransfer: + ((_interswitch__DoTransfer *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse: + ((_interswitch__ValidateCustomerResponse *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch__interswitch__ValidateCustomer: + ((_interswitch__ValidateCustomer *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__unsignedShort: + ((xsd__unsignedShort *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__unsignedLong: + ((xsd__unsignedLong *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__unsignedInt: + ((xsd__unsignedInt *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__unsignedByte_: + ((xsd__unsignedByte_ *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__string: + ((xsd__string *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__short: + ((xsd__short *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__long: + ((xsd__long *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__int: + ((xsd__int *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__float: + ((xsd__float *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__duration_: + ((xsd__duration_ *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__duration: + soap_serialize_xsd__duration(soap, (const std::string *)ptr); + break; + case SOAP_TYPE_interswitch_xsd__double: + ((xsd__double *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__decimal_: + ((xsd__decimal_ *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__decimal: + soap_serialize_xsd__decimal(soap, (const std::string *)ptr); + break; + case SOAP_TYPE_interswitch_xsd__dateTime: + ((xsd__dateTime *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__byte_: + ((xsd__byte_ *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__boolean: + ((xsd__boolean *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__base64Binary_: + ((xsd__base64Binary_ *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__base64Binary: + ((xsd__base64Binary *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__anyURI_: + ((xsd__anyURI_ *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__anyURI: + soap_serialize_xsd__anyURI(soap, (const std::string *)ptr); + break; + case SOAP_TYPE_interswitch_xsd__QName_: + ((xsd__QName_ *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__QName: + soap_serialize_xsd__QName(soap, (const xsd__QName *)ptr); + break; + case SOAP_TYPE_interswitch_xsd__IDREF_: + ((xsd__IDREF_ *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__IDREF: + soap_serialize_xsd__IDREF(soap, (const std::string *)ptr); + break; + case SOAP_TYPE_interswitch_xsd__ID_: + ((xsd__ID_ *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch_xsd__ID: + soap_serialize_xsd__ID(soap, (const std::string *)ptr); + break; + case SOAP_TYPE_interswitch_std__string: + soap_serialize_std__string(soap, (const std::string *)ptr); + break; + case SOAP_TYPE_interswitch_xsd__anyType: + ((xsd__anyType *)ptr)->soap_serialize(soap); + break; + case SOAP_TYPE_interswitch___interswitch__VerifyBiller: + soap_serialize___interswitch__VerifyBiller(soap, (const struct __interswitch__VerifyBiller *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__CreateBiller: + soap_serialize___interswitch__CreateBiller(soap, (const struct __interswitch__CreateBiller *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__DoCustomProcessing: + soap_serialize___interswitch__DoCustomProcessing(soap, (const struct __interswitch__DoCustomProcessing *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__ResendActivationToken: + soap_serialize___interswitch__ResendActivationToken(soap, (const struct __interswitch__ResendActivationToken *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__EditCustomerBillerAccount: + soap_serialize___interswitch__EditCustomerBillerAccount(soap, (const struct __interswitch__EditCustomerBillerAccount *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetBillersCollectionsAccount: + soap_serialize___interswitch__GetBillersCollectionsAccount(soap, (const struct __interswitch__GetBillersCollectionsAccount *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetCollectionsAccount: + soap_serialize___interswitch__GetCollectionsAccount(soap, (const struct __interswitch__GetCollectionsAccount *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__AddBillerCustomer: + soap_serialize___interswitch__AddBillerCustomer(soap, (const struct __interswitch__AddBillerCustomer *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetCustomerPayments: + soap_serialize___interswitch__GetCustomerPayments(soap, (const struct __interswitch__GetCustomerPayments *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetCustomerBillerAccounts: + soap_serialize___interswitch__GetCustomerBillerAccounts(soap, (const struct __interswitch__GetCustomerBillerAccounts *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__AddCustomerBillerAccount: + soap_serialize___interswitch__AddCustomerBillerAccount(soap, (const struct __interswitch__AddCustomerBillerAccount *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__SendPayments: + soap_serialize___interswitch__SendPayments(soap, (const struct __interswitch__SendPayments *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__SendBillPaymentAdvice: + soap_serialize___interswitch__SendBillPaymentAdvice(soap, (const struct __interswitch__SendBillPaymentAdvice *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__AuthenticateCustomer: + soap_serialize___interswitch__AuthenticateCustomer(soap, (const struct __interswitch__AuthenticateCustomer *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__DoBillPaymentInquiry: + soap_serialize___interswitch__DoBillPaymentInquiry(soap, (const struct __interswitch__DoBillPaymentInquiry *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetBillerCategories: + soap_serialize___interswitch__GetBillerCategories(soap, (const struct __interswitch__GetBillerCategories *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetBillerPaymentItems: + soap_serialize___interswitch__GetBillerPaymentItems(soap, (const struct __interswitch__GetBillerPaymentItems *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetFeaturedBillers: + soap_serialize___interswitch__GetFeaturedBillers(soap, (const struct __interswitch__GetFeaturedBillers *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetLatestBillers: + soap_serialize___interswitch__GetLatestBillers(soap, (const struct __interswitch__GetLatestBillers *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetBillers: + soap_serialize___interswitch__GetBillers(soap, (const struct __interswitch__GetBillers *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetUser: + soap_serialize___interswitch__GetUser(soap, (const struct __interswitch__GetUser *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__AuthenticateUserSecurityToken: + soap_serialize___interswitch__AuthenticateUserSecurityToken(soap, (const struct __interswitch__AuthenticateUserSecurityToken *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__AuthenticateUser: + soap_serialize___interswitch__AuthenticateUser(soap, (const struct __interswitch__AuthenticateUser *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__ResetPassword: + soap_serialize___interswitch__ResetPassword(soap, (const struct __interswitch__ResetPassword *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__ChangePassword: + soap_serialize___interswitch__ChangePassword(soap, (const struct __interswitch__ChangePassword *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__UpdateUser: + soap_serialize___interswitch__UpdateUser(soap, (const struct __interswitch__UpdateUser *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__ActivateUser: + soap_serialize___interswitch__ActivateUser(soap, (const struct __interswitch__ActivateUser *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__CreateUser: + soap_serialize___interswitch__CreateUser(soap, (const struct __interswitch__CreateUser *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetSystemSettings: + soap_serialize___interswitch__GetSystemSettings(soap, (const struct __interswitch__GetSystemSettings *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__QueryTransaction: + soap_serialize___interswitch__QueryTransaction(soap, (const struct __interswitch__QueryTransaction *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__StatusCheck: + soap_serialize___interswitch__StatusCheck(soap, (const struct __interswitch__StatusCheck *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__ReverseCashOut: + soap_serialize___interswitch__ReverseCashOut(soap, (const struct __interswitch__ReverseCashOut *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__AuthoriseAccountCashOut: + soap_serialize___interswitch__AuthoriseAccountCashOut(soap, (const struct __interswitch__AuthoriseAccountCashOut *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__AuthoriseCashOut: + soap_serialize___interswitch__AuthoriseCashOut(soap, (const struct __interswitch__AuthoriseCashOut *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__QueryTransfer: + soap_serialize___interswitch__QueryTransfer(soap, (const struct __interswitch__QueryTransfer *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__SendSessionKey: + soap_serialize___interswitch__SendSessionKey(soap, (const struct __interswitch__SendSessionKey *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__CancelTransfer: + soap_serialize___interswitch__CancelTransfer(soap, (const struct __interswitch__CancelTransfer *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__DoTransfer: + soap_serialize___interswitch__DoTransfer(soap, (const struct __interswitch__DoTransfer *)ptr); + break; + case SOAP_TYPE_interswitch___interswitch__ValidateCustomer: + soap_serialize___interswitch__ValidateCustomer(soap, (const struct __interswitch__ValidateCustomer *)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__VerifyBillerResponse: + soap_serialize_PointerTo_interswitch__VerifyBillerResponse(soap, (_interswitch__VerifyBillerResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__VerifyBiller: + soap_serialize_PointerTo_interswitch__VerifyBiller(soap, (_interswitch__VerifyBiller *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__CreateBillerResponse: + soap_serialize_PointerTo_interswitch__CreateBillerResponse(soap, (_interswitch__CreateBillerResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__CreateBiller: + soap_serialize_PointerTo_interswitch__CreateBiller(soap, (_interswitch__CreateBiller *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__DoCustomProcessingResponse: + soap_serialize_PointerTo_interswitch__DoCustomProcessingResponse(soap, (_interswitch__DoCustomProcessingResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__DoCustomProcessing: + soap_serialize_PointerTo_interswitch__DoCustomProcessing(soap, (_interswitch__DoCustomProcessing *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__ResendActivationTokenResponse: + soap_serialize_PointerTo_interswitch__ResendActivationTokenResponse(soap, (_interswitch__ResendActivationTokenResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__ResendActivationToken: + soap_serialize_PointerTo_interswitch__ResendActivationToken(soap, (_interswitch__ResendActivationToken *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__EditCustomerBillerAccountResponse: + soap_serialize_PointerTo_interswitch__EditCustomerBillerAccountResponse(soap, (_interswitch__EditCustomerBillerAccountResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__EditCustomerBillerAccount: + soap_serialize_PointerTo_interswitch__EditCustomerBillerAccount(soap, (_interswitch__EditCustomerBillerAccount *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillersCollectionsAccountResponse: + soap_serialize_PointerTo_interswitch__GetBillersCollectionsAccountResponse(soap, (_interswitch__GetBillersCollectionsAccountResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillersCollectionsAccount: + soap_serialize_PointerTo_interswitch__GetBillersCollectionsAccount(soap, (_interswitch__GetBillersCollectionsAccount *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetCollectionsAccountResponse: + soap_serialize_PointerTo_interswitch__GetCollectionsAccountResponse(soap, (_interswitch__GetCollectionsAccountResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetCollectionsAccount: + soap_serialize_PointerTo_interswitch__GetCollectionsAccount(soap, (_interswitch__GetCollectionsAccount *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__AddBillerCustomerResponse: + soap_serialize_PointerTo_interswitch__AddBillerCustomerResponse(soap, (_interswitch__AddBillerCustomerResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__AddBillerCustomer: + soap_serialize_PointerTo_interswitch__AddBillerCustomer(soap, (_interswitch__AddBillerCustomer *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerPaymentsResponse: + soap_serialize_PointerTo_interswitch__GetCustomerPaymentsResponse(soap, (_interswitch__GetCustomerPaymentsResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerPayments: + soap_serialize_PointerTo_interswitch__GetCustomerPayments(soap, (_interswitch__GetCustomerPayments *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerBillerAccountsResponse: + soap_serialize_PointerTo_interswitch__GetCustomerBillerAccountsResponse(soap, (_interswitch__GetCustomerBillerAccountsResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerBillerAccounts: + soap_serialize_PointerTo_interswitch__GetCustomerBillerAccounts(soap, (_interswitch__GetCustomerBillerAccounts *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__AddCustomerBillerAccountResponse: + soap_serialize_PointerTo_interswitch__AddCustomerBillerAccountResponse(soap, (_interswitch__AddCustomerBillerAccountResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__AddCustomerBillerAccount: + soap_serialize_PointerTo_interswitch__AddCustomerBillerAccount(soap, (_interswitch__AddCustomerBillerAccount *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__SendPaymentsResponse: + soap_serialize_PointerTo_interswitch__SendPaymentsResponse(soap, (_interswitch__SendPaymentsResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__SendPayments: + soap_serialize_PointerTo_interswitch__SendPayments(soap, (_interswitch__SendPayments *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__SendBillPaymentAdviceResponse: + soap_serialize_PointerTo_interswitch__SendBillPaymentAdviceResponse(soap, (_interswitch__SendBillPaymentAdviceResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__SendBillPaymentAdvice: + soap_serialize_PointerTo_interswitch__SendBillPaymentAdvice(soap, (_interswitch__SendBillPaymentAdvice *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateCustomerResponse: + soap_serialize_PointerTo_interswitch__AuthenticateCustomerResponse(soap, (_interswitch__AuthenticateCustomerResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateCustomer: + soap_serialize_PointerTo_interswitch__AuthenticateCustomer(soap, (_interswitch__AuthenticateCustomer *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__DoBillPaymentInquiryResponse: + soap_serialize_PointerTo_interswitch__DoBillPaymentInquiryResponse(soap, (_interswitch__DoBillPaymentInquiryResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__DoBillPaymentInquiry: + soap_serialize_PointerTo_interswitch__DoBillPaymentInquiry(soap, (_interswitch__DoBillPaymentInquiry *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerCategoriesResponse: + soap_serialize_PointerTo_interswitch__GetBillerCategoriesResponse(soap, (_interswitch__GetBillerCategoriesResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerCategories: + soap_serialize_PointerTo_interswitch__GetBillerCategories(soap, (_interswitch__GetBillerCategories *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerPaymentItemsResponse: + soap_serialize_PointerTo_interswitch__GetBillerPaymentItemsResponse(soap, (_interswitch__GetBillerPaymentItemsResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerPaymentItems: + soap_serialize_PointerTo_interswitch__GetBillerPaymentItems(soap, (_interswitch__GetBillerPaymentItems *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetFeaturedBillersResponse: + soap_serialize_PointerTo_interswitch__GetFeaturedBillersResponse(soap, (_interswitch__GetFeaturedBillersResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetFeaturedBillers: + soap_serialize_PointerTo_interswitch__GetFeaturedBillers(soap, (_interswitch__GetFeaturedBillers *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetLatestBillersResponse: + soap_serialize_PointerTo_interswitch__GetLatestBillersResponse(soap, (_interswitch__GetLatestBillersResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetLatestBillers: + soap_serialize_PointerTo_interswitch__GetLatestBillers(soap, (_interswitch__GetLatestBillers *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillersResponse: + soap_serialize_PointerTo_interswitch__GetBillersResponse(soap, (_interswitch__GetBillersResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillers: + soap_serialize_PointerTo_interswitch__GetBillers(soap, (_interswitch__GetBillers *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetUserResponse: + soap_serialize_PointerTo_interswitch__GetUserResponse(soap, (_interswitch__GetUserResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetUser: + soap_serialize_PointerTo_interswitch__GetUser(soap, (_interswitch__GetUser *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse: + soap_serialize_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(soap, (_interswitch__AuthenticateUserSecurityTokenResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUserSecurityToken: + soap_serialize_PointerTo_interswitch__AuthenticateUserSecurityToken(soap, (_interswitch__AuthenticateUserSecurityToken *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUserResponse: + soap_serialize_PointerTo_interswitch__AuthenticateUserResponse(soap, (_interswitch__AuthenticateUserResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUser: + soap_serialize_PointerTo_interswitch__AuthenticateUser(soap, (_interswitch__AuthenticateUser *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__ResetPasswordResponse: + soap_serialize_PointerTo_interswitch__ResetPasswordResponse(soap, (_interswitch__ResetPasswordResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__ResetPassword: + soap_serialize_PointerTo_interswitch__ResetPassword(soap, (_interswitch__ResetPassword *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__ChangePasswordResponse: + soap_serialize_PointerTo_interswitch__ChangePasswordResponse(soap, (_interswitch__ChangePasswordResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__ChangePassword: + soap_serialize_PointerTo_interswitch__ChangePassword(soap, (_interswitch__ChangePassword *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__UpdateUserResponse: + soap_serialize_PointerTo_interswitch__UpdateUserResponse(soap, (_interswitch__UpdateUserResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__UpdateUser: + soap_serialize_PointerTo_interswitch__UpdateUser(soap, (_interswitch__UpdateUser *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__ActivateUserResponse: + soap_serialize_PointerTo_interswitch__ActivateUserResponse(soap, (_interswitch__ActivateUserResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__ActivateUser: + soap_serialize_PointerTo_interswitch__ActivateUser(soap, (_interswitch__ActivateUser *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__CreateUserResponse: + soap_serialize_PointerTo_interswitch__CreateUserResponse(soap, (_interswitch__CreateUserResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__CreateUser: + soap_serialize_PointerTo_interswitch__CreateUser(soap, (_interswitch__CreateUser *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetSystemSettingsResponse: + soap_serialize_PointerTo_interswitch__GetSystemSettingsResponse(soap, (_interswitch__GetSystemSettingsResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__GetSystemSettings: + soap_serialize_PointerTo_interswitch__GetSystemSettings(soap, (_interswitch__GetSystemSettings *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransactionResponse: + soap_serialize_PointerTo_interswitch__QueryTransactionResponse(soap, (_interswitch__QueryTransactionResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransaction: + soap_serialize_PointerTo_interswitch__QueryTransaction(soap, (_interswitch__QueryTransaction *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__StatusCheckResponse: + soap_serialize_PointerTo_interswitch__StatusCheckResponse(soap, (_interswitch__StatusCheckResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__StatusCheck: + soap_serialize_PointerTo_interswitch__StatusCheck(soap, (_interswitch__StatusCheck *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__ReverseCashOutResponse: + soap_serialize_PointerTo_interswitch__ReverseCashOutResponse(soap, (_interswitch__ReverseCashOutResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__ReverseCashOut: + soap_serialize_PointerTo_interswitch__ReverseCashOut(soap, (_interswitch__ReverseCashOut *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseAccountCashOutResponse: + soap_serialize_PointerTo_interswitch__AuthoriseAccountCashOutResponse(soap, (_interswitch__AuthoriseAccountCashOutResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseAccountCashOut: + soap_serialize_PointerTo_interswitch__AuthoriseAccountCashOut(soap, (_interswitch__AuthoriseAccountCashOut *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseCashOutResponse: + soap_serialize_PointerTo_interswitch__AuthoriseCashOutResponse(soap, (_interswitch__AuthoriseCashOutResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseCashOut: + soap_serialize_PointerTo_interswitch__AuthoriseCashOut(soap, (_interswitch__AuthoriseCashOut *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransferResponse: + soap_serialize_PointerTo_interswitch__QueryTransferResponse(soap, (_interswitch__QueryTransferResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransfer: + soap_serialize_PointerTo_interswitch__QueryTransfer(soap, (_interswitch__QueryTransfer *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__SendSessionKeyResponse: + soap_serialize_PointerTo_interswitch__SendSessionKeyResponse(soap, (_interswitch__SendSessionKeyResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__SendSessionKey: + soap_serialize_PointerTo_interswitch__SendSessionKey(soap, (_interswitch__SendSessionKey *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__CancelTransferResponse: + soap_serialize_PointerTo_interswitch__CancelTransferResponse(soap, (_interswitch__CancelTransferResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__CancelTransfer: + soap_serialize_PointerTo_interswitch__CancelTransfer(soap, (_interswitch__CancelTransfer *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__DoTransferResponse: + soap_serialize_PointerTo_interswitch__DoTransferResponse(soap, (_interswitch__DoTransferResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__DoTransfer: + soap_serialize_PointerTo_interswitch__DoTransfer(soap, (_interswitch__DoTransfer *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__ValidateCustomerResponse: + soap_serialize_PointerTo_interswitch__ValidateCustomerResponse(soap, (_interswitch__ValidateCustomerResponse *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTo_interswitch__ValidateCustomer: + soap_serialize_PointerTo_interswitch__ValidateCustomer(soap, (_interswitch__ValidateCustomer *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTostd__string: + soap_serialize_PointerTostd__string(soap, (std::string *const*)ptr); + break; + case SOAP_TYPE_interswitch_PointerTounsignedByte: + soap_serialize_PointerTounsignedByte(soap, (unsigned char *const*)ptr); + break; + case SOAP_TYPE_interswitch__QName: + soap_serialize_string(soap, (char*const*)&ptr); + break; + case SOAP_TYPE_interswitch_string: + soap_serialize_string(soap, (char*const*)&ptr); + break; + } +} +#endif + +SOAP_FMAC3 void * SOAP_FMAC4 soap_instantiate(struct soap *soap, int t, const char *type, const char *arrayType, size_t *n) +{ + switch (t) + { + case SOAP_TYPE_interswitch_xsd__anyType: + return (void*)soap_instantiate_xsd__anyType(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_std__string: + return (void*)soap_instantiate_std__string(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__ID_: + return (void*)soap_instantiate_xsd__ID_(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__IDREF_: + return (void*)soap_instantiate_xsd__IDREF_(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__QName_: + return (void*)soap_instantiate_xsd__QName_(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__anyURI_: + return (void*)soap_instantiate_xsd__anyURI_(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__base64Binary: + return (void*)soap_instantiate_xsd__base64Binary(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__base64Binary_: + return (void*)soap_instantiate_xsd__base64Binary_(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__boolean: + return (void*)soap_instantiate_xsd__boolean(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__byte_: + return (void*)soap_instantiate_xsd__byte_(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__dateTime: + return (void*)soap_instantiate_xsd__dateTime(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__decimal_: + return (void*)soap_instantiate_xsd__decimal_(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__double: + return (void*)soap_instantiate_xsd__double(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__duration_: + return (void*)soap_instantiate_xsd__duration_(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__float: + return (void*)soap_instantiate_xsd__float(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__int: + return (void*)soap_instantiate_xsd__int(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__long: + return (void*)soap_instantiate_xsd__long(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__short: + return (void*)soap_instantiate_xsd__short(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__string: + return (void*)soap_instantiate_xsd__string(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__unsignedByte_: + return (void*)soap_instantiate_xsd__unsignedByte_(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__unsignedInt: + return (void*)soap_instantiate_xsd__unsignedInt(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__unsignedLong: + return (void*)soap_instantiate_xsd__unsignedLong(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__unsignedShort: + return (void*)soap_instantiate_xsd__unsignedShort(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_interswitch2__char__: + return (void*)soap_instantiate_interswitch2__char__(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_interswitch2__duration__: + return (void*)soap_instantiate_interswitch2__duration__(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_interswitch2__guid__: + return (void*)soap_instantiate_interswitch2__guid__(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__ValidateCustomer: + return (void*)soap_instantiate__interswitch__ValidateCustomer(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse: + return (void*)soap_instantiate__interswitch__ValidateCustomerResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__DoTransfer: + return (void*)soap_instantiate__interswitch__DoTransfer(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__DoTransferResponse: + return (void*)soap_instantiate__interswitch__DoTransferResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__CancelTransfer: + return (void*)soap_instantiate__interswitch__CancelTransfer(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__CancelTransferResponse: + return (void*)soap_instantiate__interswitch__CancelTransferResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__SendSessionKey: + return (void*)soap_instantiate__interswitch__SendSessionKey(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse: + return (void*)soap_instantiate__interswitch__SendSessionKeyResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__QueryTransfer: + return (void*)soap_instantiate__interswitch__QueryTransfer(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__QueryTransferResponse: + return (void*)soap_instantiate__interswitch__QueryTransferResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut: + return (void*)soap_instantiate__interswitch__AuthoriseCashOut(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse: + return (void*)soap_instantiate__interswitch__AuthoriseCashOutResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut: + return (void*)soap_instantiate__interswitch__AuthoriseAccountCashOut(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse: + return (void*)soap_instantiate__interswitch__AuthoriseAccountCashOutResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__ReverseCashOut: + return (void*)soap_instantiate__interswitch__ReverseCashOut(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse: + return (void*)soap_instantiate__interswitch__ReverseCashOutResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__StatusCheck: + return (void*)soap_instantiate__interswitch__StatusCheck(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__StatusCheckResponse: + return (void*)soap_instantiate__interswitch__StatusCheckResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__QueryTransaction: + return (void*)soap_instantiate__interswitch__QueryTransaction(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse: + return (void*)soap_instantiate__interswitch__QueryTransactionResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetSystemSettings: + return (void*)soap_instantiate__interswitch__GetSystemSettings(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse: + return (void*)soap_instantiate__interswitch__GetSystemSettingsResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__CreateUser: + return (void*)soap_instantiate__interswitch__CreateUser(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__CreateUserResponse: + return (void*)soap_instantiate__interswitch__CreateUserResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__ActivateUser: + return (void*)soap_instantiate__interswitch__ActivateUser(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__ActivateUserResponse: + return (void*)soap_instantiate__interswitch__ActivateUserResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__UpdateUser: + return (void*)soap_instantiate__interswitch__UpdateUser(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__UpdateUserResponse: + return (void*)soap_instantiate__interswitch__UpdateUserResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__ChangePassword: + return (void*)soap_instantiate__interswitch__ChangePassword(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse: + return (void*)soap_instantiate__interswitch__ChangePasswordResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__ResetPassword: + return (void*)soap_instantiate__interswitch__ResetPassword(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse: + return (void*)soap_instantiate__interswitch__ResetPasswordResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__AuthenticateUser: + return (void*)soap_instantiate__interswitch__AuthenticateUser(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse: + return (void*)soap_instantiate__interswitch__AuthenticateUserResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken: + return (void*)soap_instantiate__interswitch__AuthenticateUserSecurityToken(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse: + return (void*)soap_instantiate__interswitch__AuthenticateUserSecurityTokenResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetUser: + return (void*)soap_instantiate__interswitch__GetUser(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetUserResponse: + return (void*)soap_instantiate__interswitch__GetUserResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetBillers: + return (void*)soap_instantiate__interswitch__GetBillers(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetBillersResponse: + return (void*)soap_instantiate__interswitch__GetBillersResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetLatestBillers: + return (void*)soap_instantiate__interswitch__GetLatestBillers(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse: + return (void*)soap_instantiate__interswitch__GetLatestBillersResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers: + return (void*)soap_instantiate__interswitch__GetFeaturedBillers(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse: + return (void*)soap_instantiate__interswitch__GetFeaturedBillersResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems: + return (void*)soap_instantiate__interswitch__GetBillerPaymentItems(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse: + return (void*)soap_instantiate__interswitch__GetBillerPaymentItemsResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetBillerCategories: + return (void*)soap_instantiate__interswitch__GetBillerCategories(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse: + return (void*)soap_instantiate__interswitch__GetBillerCategoriesResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry: + return (void*)soap_instantiate__interswitch__DoBillPaymentInquiry(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse: + return (void*)soap_instantiate__interswitch__DoBillPaymentInquiryResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer: + return (void*)soap_instantiate__interswitch__AuthenticateCustomer(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse: + return (void*)soap_instantiate__interswitch__AuthenticateCustomerResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice: + return (void*)soap_instantiate__interswitch__SendBillPaymentAdvice(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse: + return (void*)soap_instantiate__interswitch__SendBillPaymentAdviceResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__SendPayments: + return (void*)soap_instantiate__interswitch__SendPayments(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse: + return (void*)soap_instantiate__interswitch__SendPaymentsResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount: + return (void*)soap_instantiate__interswitch__AddCustomerBillerAccount(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse: + return (void*)soap_instantiate__interswitch__AddCustomerBillerAccountResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts: + return (void*)soap_instantiate__interswitch__GetCustomerBillerAccounts(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse: + return (void*)soap_instantiate__interswitch__GetCustomerBillerAccountsResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetCustomerPayments: + return (void*)soap_instantiate__interswitch__GetCustomerPayments(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse: + return (void*)soap_instantiate__interswitch__GetCustomerPaymentsResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__AddBillerCustomer: + return (void*)soap_instantiate__interswitch__AddBillerCustomer(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse: + return (void*)soap_instantiate__interswitch__AddBillerCustomerResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount: + return (void*)soap_instantiate__interswitch__GetCollectionsAccount(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse: + return (void*)soap_instantiate__interswitch__GetCollectionsAccountResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount: + return (void*)soap_instantiate__interswitch__GetBillersCollectionsAccount(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse: + return (void*)soap_instantiate__interswitch__GetBillersCollectionsAccountResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount: + return (void*)soap_instantiate__interswitch__EditCustomerBillerAccount(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse: + return (void*)soap_instantiate__interswitch__EditCustomerBillerAccountResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__ResendActivationToken: + return (void*)soap_instantiate__interswitch__ResendActivationToken(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse: + return (void*)soap_instantiate__interswitch__ResendActivationTokenResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__DoCustomProcessing: + return (void*)soap_instantiate__interswitch__DoCustomProcessing(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse: + return (void*)soap_instantiate__interswitch__DoCustomProcessingResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__CreateBiller: + return (void*)soap_instantiate__interswitch__CreateBiller(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__CreateBillerResponse: + return (void*)soap_instantiate__interswitch__CreateBillerResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__VerifyBiller: + return (void*)soap_instantiate__interswitch__VerifyBiller(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse: + return (void*)soap_instantiate__interswitch__VerifyBillerResponse(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__ValidateCustomer: + return (void*)soap_instantiate___interswitch__ValidateCustomer(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__DoTransfer: + return (void*)soap_instantiate___interswitch__DoTransfer(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__CancelTransfer: + return (void*)soap_instantiate___interswitch__CancelTransfer(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__SendSessionKey: + return (void*)soap_instantiate___interswitch__SendSessionKey(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__QueryTransfer: + return (void*)soap_instantiate___interswitch__QueryTransfer(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__AuthoriseCashOut: + return (void*)soap_instantiate___interswitch__AuthoriseCashOut(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__AuthoriseAccountCashOut: + return (void*)soap_instantiate___interswitch__AuthoriseAccountCashOut(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__ReverseCashOut: + return (void*)soap_instantiate___interswitch__ReverseCashOut(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__StatusCheck: + return (void*)soap_instantiate___interswitch__StatusCheck(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__QueryTransaction: + return (void*)soap_instantiate___interswitch__QueryTransaction(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__GetSystemSettings: + return (void*)soap_instantiate___interswitch__GetSystemSettings(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__CreateUser: + return (void*)soap_instantiate___interswitch__CreateUser(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__ActivateUser: + return (void*)soap_instantiate___interswitch__ActivateUser(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__UpdateUser: + return (void*)soap_instantiate___interswitch__UpdateUser(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__ChangePassword: + return (void*)soap_instantiate___interswitch__ChangePassword(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__ResetPassword: + return (void*)soap_instantiate___interswitch__ResetPassword(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__AuthenticateUser: + return (void*)soap_instantiate___interswitch__AuthenticateUser(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__AuthenticateUserSecurityToken: + return (void*)soap_instantiate___interswitch__AuthenticateUserSecurityToken(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__GetUser: + return (void*)soap_instantiate___interswitch__GetUser(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__GetBillers: + return (void*)soap_instantiate___interswitch__GetBillers(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__GetLatestBillers: + return (void*)soap_instantiate___interswitch__GetLatestBillers(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__GetFeaturedBillers: + return (void*)soap_instantiate___interswitch__GetFeaturedBillers(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__GetBillerPaymentItems: + return (void*)soap_instantiate___interswitch__GetBillerPaymentItems(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__GetBillerCategories: + return (void*)soap_instantiate___interswitch__GetBillerCategories(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__DoBillPaymentInquiry: + return (void*)soap_instantiate___interswitch__DoBillPaymentInquiry(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__AuthenticateCustomer: + return (void*)soap_instantiate___interswitch__AuthenticateCustomer(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__SendBillPaymentAdvice: + return (void*)soap_instantiate___interswitch__SendBillPaymentAdvice(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__SendPayments: + return (void*)soap_instantiate___interswitch__SendPayments(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__AddCustomerBillerAccount: + return (void*)soap_instantiate___interswitch__AddCustomerBillerAccount(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__GetCustomerBillerAccounts: + return (void*)soap_instantiate___interswitch__GetCustomerBillerAccounts(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__GetCustomerPayments: + return (void*)soap_instantiate___interswitch__GetCustomerPayments(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__AddBillerCustomer: + return (void*)soap_instantiate___interswitch__AddBillerCustomer(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__GetCollectionsAccount: + return (void*)soap_instantiate___interswitch__GetCollectionsAccount(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__GetBillersCollectionsAccount: + return (void*)soap_instantiate___interswitch__GetBillersCollectionsAccount(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__EditCustomerBillerAccount: + return (void*)soap_instantiate___interswitch__EditCustomerBillerAccount(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__ResendActivationToken: + return (void*)soap_instantiate___interswitch__ResendActivationToken(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__DoCustomProcessing: + return (void*)soap_instantiate___interswitch__DoCustomProcessing(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__CreateBiller: + return (void*)soap_instantiate___interswitch__CreateBiller(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch___interswitch__VerifyBiller: + return (void*)soap_instantiate___interswitch__VerifyBiller(soap, -1, type, arrayType, n); +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_interswitch_SOAP_ENV__Header: + return (void*)soap_instantiate_SOAP_ENV__Header(soap, -1, type, arrayType, n); +#endif +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_interswitch_SOAP_ENV__Code: + return (void*)soap_instantiate_SOAP_ENV__Code(soap, -1, type, arrayType, n); +#endif +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_interswitch_SOAP_ENV__Detail: + return (void*)soap_instantiate_SOAP_ENV__Detail(soap, -1, type, arrayType, n); +#endif +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_interswitch_SOAP_ENV__Reason: + return (void*)soap_instantiate_SOAP_ENV__Reason(soap, -1, type, arrayType, n); +#endif +#ifndef WITH_NOGLOBAL + case SOAP_TYPE_interswitch_SOAP_ENV__Fault: + return (void*)soap_instantiate_SOAP_ENV__Fault(soap, -1, type, arrayType, n); +#endif + case SOAP_TYPE_interswitch_xsd__ID: + return (void*)soap_instantiate_xsd__ID(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__IDREF: + return (void*)soap_instantiate_xsd__IDREF(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__QName: + return (void*)soap_instantiate_xsd__QName(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__anyURI: + return (void*)soap_instantiate_xsd__anyURI(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__decimal: + return (void*)soap_instantiate_xsd__decimal(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_xsd__duration: + return (void*)soap_instantiate_xsd__duration(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_interswitch2__duration: + return (void*)soap_instantiate_interswitch2__duration(soap, -1, type, arrayType, n); + case SOAP_TYPE_interswitch_interswitch2__guid: + return (void*)soap_instantiate_interswitch2__guid(soap, -1, type, arrayType, n); + } + return NULL; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_fdelete(struct soap_clist *p) +{ switch (p->type) + { + case SOAP_TYPE_interswitch_xsd__anyType: + if (p->size < 0) + SOAP_DELETE((xsd__anyType*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__anyType*)p->ptr); + break; + case SOAP_TYPE_interswitch_std__string: + if (p->size < 0) + SOAP_DELETE((std::string*)p->ptr); + else + SOAP_DELETE_ARRAY((std::string*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__ID_: + if (p->size < 0) + SOAP_DELETE((xsd__ID_*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__ID_*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__IDREF_: + if (p->size < 0) + SOAP_DELETE((xsd__IDREF_*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__IDREF_*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__QName_: + if (p->size < 0) + SOAP_DELETE((xsd__QName_*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__QName_*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__anyURI_: + if (p->size < 0) + SOAP_DELETE((xsd__anyURI_*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__anyURI_*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__base64Binary: + if (p->size < 0) + SOAP_DELETE((xsd__base64Binary*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__base64Binary*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__base64Binary_: + if (p->size < 0) + SOAP_DELETE((xsd__base64Binary_*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__base64Binary_*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__boolean: + if (p->size < 0) + SOAP_DELETE((xsd__boolean*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__boolean*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__byte_: + if (p->size < 0) + SOAP_DELETE((xsd__byte_*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__byte_*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__dateTime: + if (p->size < 0) + SOAP_DELETE((xsd__dateTime*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__dateTime*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__decimal_: + if (p->size < 0) + SOAP_DELETE((xsd__decimal_*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__decimal_*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__double: + if (p->size < 0) + SOAP_DELETE((xsd__double*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__double*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__duration_: + if (p->size < 0) + SOAP_DELETE((xsd__duration_*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__duration_*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__float: + if (p->size < 0) + SOAP_DELETE((xsd__float*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__float*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__int: + if (p->size < 0) + SOAP_DELETE((xsd__int*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__int*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__long: + if (p->size < 0) + SOAP_DELETE((xsd__long*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__long*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__short: + if (p->size < 0) + SOAP_DELETE((xsd__short*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__short*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__string: + if (p->size < 0) + SOAP_DELETE((xsd__string*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__string*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__unsignedByte_: + if (p->size < 0) + SOAP_DELETE((xsd__unsignedByte_*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__unsignedByte_*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__unsignedInt: + if (p->size < 0) + SOAP_DELETE((xsd__unsignedInt*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__unsignedInt*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__unsignedLong: + if (p->size < 0) + SOAP_DELETE((xsd__unsignedLong*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__unsignedLong*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__unsignedShort: + if (p->size < 0) + SOAP_DELETE((xsd__unsignedShort*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__unsignedShort*)p->ptr); + break; + case SOAP_TYPE_interswitch_interswitch2__char__: + if (p->size < 0) + SOAP_DELETE((interswitch2__char__*)p->ptr); + else + SOAP_DELETE_ARRAY((interswitch2__char__*)p->ptr); + break; + case SOAP_TYPE_interswitch_interswitch2__duration__: + if (p->size < 0) + SOAP_DELETE((interswitch2__duration__*)p->ptr); + else + SOAP_DELETE_ARRAY((interswitch2__duration__*)p->ptr); + break; + case SOAP_TYPE_interswitch_interswitch2__guid__: + if (p->size < 0) + SOAP_DELETE((interswitch2__guid__*)p->ptr); + else + SOAP_DELETE_ARRAY((interswitch2__guid__*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__ValidateCustomer: + if (p->size < 0) + SOAP_DELETE((_interswitch__ValidateCustomer*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__ValidateCustomer*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__ValidateCustomerResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__ValidateCustomerResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__DoTransfer: + if (p->size < 0) + SOAP_DELETE((_interswitch__DoTransfer*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__DoTransfer*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__DoTransferResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__DoTransferResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__DoTransferResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__CancelTransfer: + if (p->size < 0) + SOAP_DELETE((_interswitch__CancelTransfer*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__CancelTransfer*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__CancelTransferResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__CancelTransferResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__CancelTransferResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__SendSessionKey: + if (p->size < 0) + SOAP_DELETE((_interswitch__SendSessionKey*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__SendSessionKey*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__SendSessionKeyResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__SendSessionKeyResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__QueryTransfer: + if (p->size < 0) + SOAP_DELETE((_interswitch__QueryTransfer*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__QueryTransfer*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__QueryTransferResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__QueryTransferResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__QueryTransferResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut: + if (p->size < 0) + SOAP_DELETE((_interswitch__AuthoriseCashOut*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__AuthoriseCashOut*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__AuthoriseCashOutResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__AuthoriseCashOutResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut: + if (p->size < 0) + SOAP_DELETE((_interswitch__AuthoriseAccountCashOut*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__AuthoriseAccountCashOut*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__AuthoriseAccountCashOutResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__AuthoriseAccountCashOutResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__ReverseCashOut: + if (p->size < 0) + SOAP_DELETE((_interswitch__ReverseCashOut*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__ReverseCashOut*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__ReverseCashOutResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__ReverseCashOutResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__StatusCheck: + if (p->size < 0) + SOAP_DELETE((_interswitch__StatusCheck*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__StatusCheck*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__StatusCheckResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__StatusCheckResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__StatusCheckResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__QueryTransaction: + if (p->size < 0) + SOAP_DELETE((_interswitch__QueryTransaction*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__QueryTransaction*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__QueryTransactionResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__QueryTransactionResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetSystemSettings: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetSystemSettings*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetSystemSettings*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetSystemSettingsResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetSystemSettingsResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__CreateUser: + if (p->size < 0) + SOAP_DELETE((_interswitch__CreateUser*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__CreateUser*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__CreateUserResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__CreateUserResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__CreateUserResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__ActivateUser: + if (p->size < 0) + SOAP_DELETE((_interswitch__ActivateUser*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__ActivateUser*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__ActivateUserResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__ActivateUserResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__ActivateUserResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__UpdateUser: + if (p->size < 0) + SOAP_DELETE((_interswitch__UpdateUser*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__UpdateUser*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__UpdateUserResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__UpdateUserResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__UpdateUserResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__ChangePassword: + if (p->size < 0) + SOAP_DELETE((_interswitch__ChangePassword*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__ChangePassword*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__ChangePasswordResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__ChangePasswordResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__ResetPassword: + if (p->size < 0) + SOAP_DELETE((_interswitch__ResetPassword*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__ResetPassword*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__ResetPasswordResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__ResetPasswordResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__AuthenticateUser: + if (p->size < 0) + SOAP_DELETE((_interswitch__AuthenticateUser*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__AuthenticateUser*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__AuthenticateUserResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__AuthenticateUserResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken: + if (p->size < 0) + SOAP_DELETE((_interswitch__AuthenticateUserSecurityToken*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__AuthenticateUserSecurityToken*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__AuthenticateUserSecurityTokenResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__AuthenticateUserSecurityTokenResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetUser: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetUser*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetUser*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetUserResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetUserResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetUserResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetBillers: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetBillers*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetBillers*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetBillersResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetBillersResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetBillersResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetLatestBillers: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetLatestBillers*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetLatestBillers*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetLatestBillersResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetLatestBillersResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetFeaturedBillers*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetFeaturedBillers*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetFeaturedBillersResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetFeaturedBillersResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetBillerPaymentItems*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetBillerPaymentItems*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetBillerPaymentItemsResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetBillerPaymentItemsResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetBillerCategories: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetBillerCategories*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetBillerCategories*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetBillerCategoriesResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetBillerCategoriesResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry: + if (p->size < 0) + SOAP_DELETE((_interswitch__DoBillPaymentInquiry*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__DoBillPaymentInquiry*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__DoBillPaymentInquiryResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__DoBillPaymentInquiryResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer: + if (p->size < 0) + SOAP_DELETE((_interswitch__AuthenticateCustomer*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__AuthenticateCustomer*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__AuthenticateCustomerResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__AuthenticateCustomerResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice: + if (p->size < 0) + SOAP_DELETE((_interswitch__SendBillPaymentAdvice*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__SendBillPaymentAdvice*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__SendBillPaymentAdviceResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__SendBillPaymentAdviceResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__SendPayments: + if (p->size < 0) + SOAP_DELETE((_interswitch__SendPayments*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__SendPayments*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__SendPaymentsResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__SendPaymentsResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount: + if (p->size < 0) + SOAP_DELETE((_interswitch__AddCustomerBillerAccount*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__AddCustomerBillerAccount*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__AddCustomerBillerAccountResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__AddCustomerBillerAccountResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetCustomerBillerAccounts*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetCustomerBillerAccounts*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetCustomerBillerAccountsResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetCustomerBillerAccountsResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetCustomerPayments: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetCustomerPayments*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetCustomerPayments*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetCustomerPaymentsResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetCustomerPaymentsResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__AddBillerCustomer: + if (p->size < 0) + SOAP_DELETE((_interswitch__AddBillerCustomer*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__AddBillerCustomer*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__AddBillerCustomerResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__AddBillerCustomerResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetCollectionsAccount*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetCollectionsAccount*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetCollectionsAccountResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetCollectionsAccountResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetBillersCollectionsAccount*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetBillersCollectionsAccount*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__GetBillersCollectionsAccountResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__GetBillersCollectionsAccountResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount: + if (p->size < 0) + SOAP_DELETE((_interswitch__EditCustomerBillerAccount*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__EditCustomerBillerAccount*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__EditCustomerBillerAccountResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__EditCustomerBillerAccountResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__ResendActivationToken: + if (p->size < 0) + SOAP_DELETE((_interswitch__ResendActivationToken*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__ResendActivationToken*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__ResendActivationTokenResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__ResendActivationTokenResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__DoCustomProcessing: + if (p->size < 0) + SOAP_DELETE((_interswitch__DoCustomProcessing*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__DoCustomProcessing*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__DoCustomProcessingResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__DoCustomProcessingResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__CreateBiller: + if (p->size < 0) + SOAP_DELETE((_interswitch__CreateBiller*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__CreateBiller*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__CreateBillerResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__CreateBillerResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__CreateBillerResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__VerifyBiller: + if (p->size < 0) + SOAP_DELETE((_interswitch__VerifyBiller*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__VerifyBiller*)p->ptr); + break; + case SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse: + if (p->size < 0) + SOAP_DELETE((_interswitch__VerifyBillerResponse*)p->ptr); + else + SOAP_DELETE_ARRAY((_interswitch__VerifyBillerResponse*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__ValidateCustomer: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__ValidateCustomer*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__ValidateCustomer*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__DoTransfer: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__DoTransfer*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__DoTransfer*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__CancelTransfer: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__CancelTransfer*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__CancelTransfer*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__SendSessionKey: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__SendSessionKey*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__SendSessionKey*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__QueryTransfer: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__QueryTransfer*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__QueryTransfer*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__AuthoriseCashOut: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__AuthoriseCashOut*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__AuthoriseCashOut*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__AuthoriseAccountCashOut: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__AuthoriseAccountCashOut*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__AuthoriseAccountCashOut*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__ReverseCashOut: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__ReverseCashOut*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__ReverseCashOut*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__StatusCheck: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__StatusCheck*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__StatusCheck*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__QueryTransaction: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__QueryTransaction*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__QueryTransaction*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetSystemSettings: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__GetSystemSettings*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__GetSystemSettings*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__CreateUser: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__CreateUser*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__CreateUser*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__ActivateUser: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__ActivateUser*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__ActivateUser*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__UpdateUser: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__UpdateUser*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__UpdateUser*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__ChangePassword: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__ChangePassword*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__ChangePassword*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__ResetPassword: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__ResetPassword*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__ResetPassword*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__AuthenticateUser: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__AuthenticateUser*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__AuthenticateUser*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__AuthenticateUserSecurityToken: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__AuthenticateUserSecurityToken*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__AuthenticateUserSecurityToken*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetUser: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__GetUser*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__GetUser*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetBillers: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__GetBillers*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__GetBillers*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetLatestBillers: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__GetLatestBillers*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__GetLatestBillers*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetFeaturedBillers: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__GetFeaturedBillers*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__GetFeaturedBillers*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetBillerPaymentItems: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__GetBillerPaymentItems*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__GetBillerPaymentItems*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetBillerCategories: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__GetBillerCategories*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__GetBillerCategories*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__DoBillPaymentInquiry: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__DoBillPaymentInquiry*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__DoBillPaymentInquiry*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__AuthenticateCustomer: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__AuthenticateCustomer*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__AuthenticateCustomer*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__SendBillPaymentAdvice: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__SendBillPaymentAdvice*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__SendBillPaymentAdvice*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__SendPayments: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__SendPayments*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__SendPayments*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__AddCustomerBillerAccount: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__AddCustomerBillerAccount*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__AddCustomerBillerAccount*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetCustomerBillerAccounts: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__GetCustomerBillerAccounts*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__GetCustomerBillerAccounts*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetCustomerPayments: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__GetCustomerPayments*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__GetCustomerPayments*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__AddBillerCustomer: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__AddBillerCustomer*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__AddBillerCustomer*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetCollectionsAccount: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__GetCollectionsAccount*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__GetCollectionsAccount*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__GetBillersCollectionsAccount: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__GetBillersCollectionsAccount*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__GetBillersCollectionsAccount*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__EditCustomerBillerAccount: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__EditCustomerBillerAccount*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__EditCustomerBillerAccount*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__ResendActivationToken: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__ResendActivationToken*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__ResendActivationToken*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__DoCustomProcessing: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__DoCustomProcessing*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__DoCustomProcessing*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__CreateBiller: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__CreateBiller*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__CreateBiller*)p->ptr); + break; + case SOAP_TYPE_interswitch___interswitch__VerifyBiller: + if (p->size < 0) + SOAP_DELETE((struct __interswitch__VerifyBiller*)p->ptr); + else + SOAP_DELETE_ARRAY((struct __interswitch__VerifyBiller*)p->ptr); + break; + case SOAP_TYPE_interswitch_SOAP_ENV__Header: + if (p->size < 0) + SOAP_DELETE((struct SOAP_ENV__Header*)p->ptr); + else + SOAP_DELETE_ARRAY((struct SOAP_ENV__Header*)p->ptr); + break; + case SOAP_TYPE_interswitch_SOAP_ENV__Code: + if (p->size < 0) + SOAP_DELETE((struct SOAP_ENV__Code*)p->ptr); + else + SOAP_DELETE_ARRAY((struct SOAP_ENV__Code*)p->ptr); + break; + case SOAP_TYPE_interswitch_SOAP_ENV__Detail: + if (p->size < 0) + SOAP_DELETE((struct SOAP_ENV__Detail*)p->ptr); + else + SOAP_DELETE_ARRAY((struct SOAP_ENV__Detail*)p->ptr); + break; + case SOAP_TYPE_interswitch_SOAP_ENV__Reason: + if (p->size < 0) + SOAP_DELETE((struct SOAP_ENV__Reason*)p->ptr); + else + SOAP_DELETE_ARRAY((struct SOAP_ENV__Reason*)p->ptr); + break; + case SOAP_TYPE_interswitch_SOAP_ENV__Fault: + if (p->size < 0) + SOAP_DELETE((struct SOAP_ENV__Fault*)p->ptr); + else + SOAP_DELETE_ARRAY((struct SOAP_ENV__Fault*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__ID: + if (p->size < 0) + SOAP_DELETE((std::string*)p->ptr); + else + SOAP_DELETE_ARRAY((std::string*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__IDREF: + if (p->size < 0) + SOAP_DELETE((std::string*)p->ptr); + else + SOAP_DELETE_ARRAY((std::string*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__QName: + if (p->size < 0) + SOAP_DELETE((xsd__QName*)p->ptr); + else + SOAP_DELETE_ARRAY((xsd__QName*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__anyURI: + if (p->size < 0) + SOAP_DELETE((std::string*)p->ptr); + else + SOAP_DELETE_ARRAY((std::string*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__decimal: + if (p->size < 0) + SOAP_DELETE((std::string*)p->ptr); + else + SOAP_DELETE_ARRAY((std::string*)p->ptr); + break; + case SOAP_TYPE_interswitch_xsd__duration: + if (p->size < 0) + SOAP_DELETE((std::string*)p->ptr); + else + SOAP_DELETE_ARRAY((std::string*)p->ptr); + break; + case SOAP_TYPE_interswitch_interswitch2__duration: + if (p->size < 0) + SOAP_DELETE((std::string*)p->ptr); + else + SOAP_DELETE_ARRAY((std::string*)p->ptr); + break; + case SOAP_TYPE_interswitch_interswitch2__guid: + if (p->size < 0) + SOAP_DELETE((std::string*)p->ptr); + else + SOAP_DELETE_ARRAY((std::string*)p->ptr); + break; + default: return SOAP_ERR; + } + return SOAP_OK; +} + +SOAP_FMAC3 void* SOAP_FMAC4 soap_class_id_enter(struct soap *soap, const char *id, void *p, int t, size_t n, const char *type, const char *arrayType) +{ return soap_id_enter(soap, id, p, t, n, 0, type, arrayType, soap_instantiate); +} + +SOAP_FMAC3 void* SOAP_FMAC4 soap_container_id_forward(struct soap *soap, const char *href, void *p, size_t len, int st, int tt, size_t n, unsigned int k) +{ return soap_id_forward(soap, href, p, len, st, tt, n, k, soap_container_insert); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_container_insert(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +#ifdef WIN32 +#pragma warning(push) +#pragma warning(disable:4065) +#endif +{ + (void)soap; (void)st; (void)p; (void)len; (void)q; (void)n; /* appease -Wall -Werror */ + switch (tt) + { + default: + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Could not insert type=%d in %d\n", st, tt)); + } +#ifdef WIN32 +#pragma warning(pop) +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__byte(struct soap *soap, const char *tag, int id, const char *a, const char *type) +{ + return soap_outbyte(soap, tag, id, a, type, SOAP_TYPE_interswitch_xsd__byte); +} + +SOAP_FMAC3 char * SOAP_FMAC4 soap_in_xsd__byte(struct soap *soap, const char *tag, char *a, const char *type) +{ char *p; + p = soap_inbyte(soap, tag, a, type, SOAP_TYPE_interswitch_xsd__byte); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__byte(struct soap *soap, const char *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__byte); + if (soap_out_xsd__byte(soap, tag?tag:"xsd:byte", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 char * SOAP_FMAC4 soap_get_xsd__byte(struct soap *soap, char *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__byte(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_byte(struct soap *soap, char *a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_byte + *a = SOAP_DEFAULT_byte; +#else + *a = (char)0; +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_byte(struct soap *soap, const char *tag, int id, const char *a, const char *type) +{ + return soap_outbyte(soap, tag, id, a, type, SOAP_TYPE_interswitch_byte); +} + +SOAP_FMAC3 char * SOAP_FMAC4 soap_in_byte(struct soap *soap, const char *tag, char *a, const char *type) +{ char *p; + p = soap_inbyte(soap, tag, a, type, SOAP_TYPE_interswitch_byte); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_byte(struct soap *soap, const char *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_byte); + if (soap_out_byte(soap, tag?tag:"byte", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 char * SOAP_FMAC4 soap_get_byte(struct soap *soap, char *p, const char *tag, const char *type) +{ + if ((p = soap_in_byte(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_short(struct soap *soap, short *a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_short + *a = SOAP_DEFAULT_short; +#else + *a = (short)0; +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_short(struct soap *soap, const char *tag, int id, const short *a, const char *type) +{ + return soap_outshort(soap, tag, id, a, type, SOAP_TYPE_interswitch_short); +} + +SOAP_FMAC3 short * SOAP_FMAC4 soap_in_short(struct soap *soap, const char *tag, short *a, const char *type) +{ short *p; + p = soap_inshort(soap, tag, a, type, SOAP_TYPE_interswitch_short); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_short(struct soap *soap, const short *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_short); + if (soap_out_short(soap, tag?tag:"short", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 short * SOAP_FMAC4 soap_get_short(struct soap *soap, short *p, const char *tag, const char *type) +{ + if ((p = soap_in_short(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_interswitch2__char(struct soap *soap, const char *tag, int id, const int *a, const char *type) +{ + return soap_outint(soap, tag, id, a, type, SOAP_TYPE_interswitch_interswitch2__char); +} + +SOAP_FMAC3 int * SOAP_FMAC4 soap_in_interswitch2__char(struct soap *soap, const char *tag, int *a, const char *type) +{ int *p; + p = soap_inint(soap, tag, a, type, SOAP_TYPE_interswitch_interswitch2__char); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_interswitch2__char(struct soap *soap, const int *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_interswitch2__char); + if (soap_out_interswitch2__char(soap, tag?tag:"interswitch2:char", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 int * SOAP_FMAC4 soap_get_interswitch2__char(struct soap *soap, int *p, const char *tag, const char *type) +{ + if ((p = soap_in_interswitch2__char(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_int(struct soap *soap, int *a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_int + *a = SOAP_DEFAULT_int; +#else + *a = (int)0; +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_int(struct soap *soap, const char *tag, int id, const int *a, const char *type) +{ + return soap_outint(soap, tag, id, a, type, SOAP_TYPE_interswitch_int); +} + +SOAP_FMAC3 int * SOAP_FMAC4 soap_in_int(struct soap *soap, const char *tag, int *a, const char *type) +{ int *p; + p = soap_inint(soap, tag, a, type, SOAP_TYPE_interswitch_int); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_int(struct soap *soap, const int *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_int); + if (soap_out_int(soap, tag?tag:"int", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 int * SOAP_FMAC4 soap_get_int(struct soap *soap, int *p, const char *tag, const char *type) +{ + if ((p = soap_in_int(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_LONG64(struct soap *soap, LONG64 *a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_LONG64 + *a = SOAP_DEFAULT_LONG64; +#else + *a = (LONG64)0; +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_LONG64(struct soap *soap, const char *tag, int id, const LONG64 *a, const char *type) +{ + return soap_outLONG64(soap, tag, id, a, type, SOAP_TYPE_interswitch_LONG64); +} + +SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_in_LONG64(struct soap *soap, const char *tag, LONG64 *a, const char *type) +{ LONG64 *p; + p = soap_inLONG64(soap, tag, a, type, SOAP_TYPE_interswitch_LONG64); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_LONG64(struct soap *soap, const LONG64 *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_LONG64); + if (soap_out_LONG64(soap, tag?tag:"long", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_get_LONG64(struct soap *soap, LONG64 *p, const char *tag, const char *type) +{ + if ((p = soap_in_LONG64(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_float(struct soap *soap, float *a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_float + *a = SOAP_DEFAULT_float; +#else + *a = (float)0; +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_float(struct soap *soap, const char *tag, int id, const float *a, const char *type) +{ + return soap_outfloat(soap, tag, id, a, type, SOAP_TYPE_interswitch_float); +} + +SOAP_FMAC3 float * SOAP_FMAC4 soap_in_float(struct soap *soap, const char *tag, float *a, const char *type) +{ float *p; + p = soap_infloat(soap, tag, a, type, SOAP_TYPE_interswitch_float); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_float(struct soap *soap, const float *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_float); + if (soap_out_float(soap, tag?tag:"float", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 float * SOAP_FMAC4 soap_get_float(struct soap *soap, float *p, const char *tag, const char *type) +{ + if ((p = soap_in_float(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_double(struct soap *soap, double *a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_double + *a = SOAP_DEFAULT_double; +#else + *a = (double)0; +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_double(struct soap *soap, const char *tag, int id, const double *a, const char *type) +{ + return soap_outdouble(soap, tag, id, a, type, SOAP_TYPE_interswitch_double); +} + +SOAP_FMAC3 double * SOAP_FMAC4 soap_in_double(struct soap *soap, const char *tag, double *a, const char *type) +{ double *p; + p = soap_indouble(soap, tag, a, type, SOAP_TYPE_interswitch_double); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_double(struct soap *soap, const double *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_double); + if (soap_out_double(soap, tag?tag:"double", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 double * SOAP_FMAC4 soap_get_double(struct soap *soap, double *p, const char *tag, const char *type) +{ + if ((p = soap_in_double(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__unsignedByte(struct soap *soap, const char *tag, int id, const unsigned char *a, const char *type) +{ + return soap_outunsignedByte(soap, tag, id, a, type, SOAP_TYPE_interswitch_xsd__unsignedByte); +} + +SOAP_FMAC3 unsigned char * SOAP_FMAC4 soap_in_xsd__unsignedByte(struct soap *soap, const char *tag, unsigned char *a, const char *type) +{ unsigned char *p; + p = soap_inunsignedByte(soap, tag, a, type, SOAP_TYPE_interswitch_xsd__unsignedByte); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__unsignedByte(struct soap *soap, const unsigned char *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__unsignedByte); + if (soap_out_xsd__unsignedByte(soap, tag?tag:"xsd:unsignedByte", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 unsigned char * SOAP_FMAC4 soap_get_xsd__unsignedByte(struct soap *soap, unsigned char *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__unsignedByte(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_unsignedByte(struct soap *soap, unsigned char *a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_unsignedByte + *a = SOAP_DEFAULT_unsignedByte; +#else + *a = (unsigned char)0; +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_unsignedByte(struct soap *soap, const char *tag, int id, const unsigned char *a, const char *type) +{ + return soap_outunsignedByte(soap, tag, id, a, type, SOAP_TYPE_interswitch_unsignedByte); +} + +SOAP_FMAC3 unsigned char * SOAP_FMAC4 soap_in_unsignedByte(struct soap *soap, const char *tag, unsigned char *a, const char *type) +{ unsigned char *p; + p = soap_inunsignedByte(soap, tag, a, type, SOAP_TYPE_interswitch_unsignedByte); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_unsignedByte(struct soap *soap, const unsigned char *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_unsignedByte); + if (soap_out_unsignedByte(soap, tag?tag:"unsignedByte", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 unsigned char * SOAP_FMAC4 soap_get_unsignedByte(struct soap *soap, unsigned char *p, const char *tag, const char *type) +{ + if ((p = soap_in_unsignedByte(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_unsignedShort(struct soap *soap, unsigned short *a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_unsignedShort + *a = SOAP_DEFAULT_unsignedShort; +#else + *a = (unsigned short)0; +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_unsignedShort(struct soap *soap, const char *tag, int id, const unsigned short *a, const char *type) +{ + return soap_outunsignedShort(soap, tag, id, a, type, SOAP_TYPE_interswitch_unsignedShort); +} + +SOAP_FMAC3 unsigned short * SOAP_FMAC4 soap_in_unsignedShort(struct soap *soap, const char *tag, unsigned short *a, const char *type) +{ unsigned short *p; + p = soap_inunsignedShort(soap, tag, a, type, SOAP_TYPE_interswitch_unsignedShort); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_unsignedShort(struct soap *soap, const unsigned short *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_unsignedShort); + if (soap_out_unsignedShort(soap, tag?tag:"unsignedShort", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 unsigned short * SOAP_FMAC4 soap_get_unsignedShort(struct soap *soap, unsigned short *p, const char *tag, const char *type) +{ + if ((p = soap_in_unsignedShort(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_unsignedInt(struct soap *soap, unsigned int *a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_unsignedInt + *a = SOAP_DEFAULT_unsignedInt; +#else + *a = (unsigned int)0; +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_unsignedInt(struct soap *soap, const char *tag, int id, const unsigned int *a, const char *type) +{ + return soap_outunsignedInt(soap, tag, id, a, type, SOAP_TYPE_interswitch_unsignedInt); +} + +SOAP_FMAC3 unsigned int * SOAP_FMAC4 soap_in_unsignedInt(struct soap *soap, const char *tag, unsigned int *a, const char *type) +{ unsigned int *p; + p = soap_inunsignedInt(soap, tag, a, type, SOAP_TYPE_interswitch_unsignedInt); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_unsignedInt(struct soap *soap, const unsigned int *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_unsignedInt); + if (soap_out_unsignedInt(soap, tag?tag:"unsignedInt", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 unsigned int * SOAP_FMAC4 soap_get_unsignedInt(struct soap *soap, unsigned int *p, const char *tag, const char *type) +{ + if ((p = soap_in_unsignedInt(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_unsignedLONG64(struct soap *soap, ULONG64 *a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_unsignedLONG64 + *a = SOAP_DEFAULT_unsignedLONG64; +#else + *a = (ULONG64)0; +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_unsignedLONG64(struct soap *soap, const char *tag, int id, const ULONG64 *a, const char *type) +{ + return soap_outULONG64(soap, tag, id, a, type, SOAP_TYPE_interswitch_unsignedLONG64); +} + +SOAP_FMAC3 ULONG64 * SOAP_FMAC4 soap_in_unsignedLONG64(struct soap *soap, const char *tag, ULONG64 *a, const char *type) +{ ULONG64 *p; + p = soap_inULONG64(soap, tag, a, type, SOAP_TYPE_interswitch_unsignedLONG64); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_unsignedLONG64(struct soap *soap, const ULONG64 *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_unsignedLONG64); + if (soap_out_unsignedLONG64(soap, tag?tag:"unsignedLong", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 ULONG64 * SOAP_FMAC4 soap_get_unsignedLONG64(struct soap *soap, ULONG64 *p, const char *tag, const char *type) +{ + if ((p = soap_in_unsignedLONG64(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_time(struct soap *soap, time_t *a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_time + *a = SOAP_DEFAULT_time; +#else + *a = (time_t)0; +#endif +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_time(struct soap *soap, const char *tag, int id, const time_t *a, const char *type) +{ + return soap_outdateTime(soap, tag, id, a, type, SOAP_TYPE_interswitch_time); +} + +SOAP_FMAC3 time_t * SOAP_FMAC4 soap_in_time(struct soap *soap, const char *tag, time_t *a, const char *type) +{ time_t *p; + p = soap_indateTime(soap, tag, a, type, SOAP_TYPE_interswitch_time); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_time(struct soap *soap, const time_t *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_time); + if (soap_out_time(soap, tag?tag:"dateTime", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 time_t * SOAP_FMAC4 soap_get_time(struct soap *soap, time_t *p, const char *tag, const char *type) +{ + if ((p = soap_in_time(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_bool(struct soap *soap, bool *a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_bool + *a = SOAP_DEFAULT_bool; +#else + *a = (bool)0; +#endif +} + +static const struct soap_code_map soap_codes_bool[] = +{ { (long)false, "false" }, + { (long)true, "true" }, + { 0, NULL } +}; + +SOAP_FMAC3S const char* SOAP_FMAC4S soap_bool2s(struct soap *soap, bool n) +{ + (void)soap; /* appease -Wall -Werror */ +return soap_code_str(soap_codes_bool, n!=0); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_bool(struct soap *soap, const char *tag, int id, const bool *a, const char *type) +{ if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch_bool), type) || soap_send(soap, soap_bool2s(soap, *a))) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3S int SOAP_FMAC4S soap_s2bool(struct soap *soap, const char *s, bool *a) +{ + const struct soap_code_map *map; + if (!s) + return soap->error; + map = soap_code(soap_codes_bool, s); + if (map) + *a = (bool)(map->code != 0); + else + { long n; + if (soap_s2long(soap, s, &n) || n < 0 || n > 1) + return soap->error = SOAP_TYPE; + *a = (bool)(n != 0); + } + return SOAP_OK; +} + +SOAP_FMAC3 bool * SOAP_FMAC4 soap_in_bool(struct soap *soap, const char *tag, bool *a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + if (*soap->type && soap_match_tag(soap, soap->type, type) && soap_match_tag(soap, soap->type, ":boolean")) + { soap->error = SOAP_TYPE; + return NULL; + } + a = (bool *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_bool, sizeof(bool), 0, NULL, NULL, NULL); + if (!a) + return NULL; + if (soap->body && !*soap->href) + { if (!a || soap_s2bool(soap, soap_value(soap), a) || soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (bool *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch_bool, 0, sizeof(bool), 0, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_bool(struct soap *soap, const bool *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_bool); + if (soap_out_bool(soap, tag?tag:"boolean", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 bool * SOAP_FMAC4 soap_get_bool(struct soap *soap, bool *p, const char *tag, const char *type) +{ + if ((p = soap_in_bool(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void interswitch2__guid__::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_interswitch2__guid(soap, &this->interswitch2__guid__::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void interswitch2__guid__::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_interswitch2__guid(soap, &this->interswitch2__guid__::__item); + /* transient soap skipped */ +} + +int interswitch2__guid__::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_interswitch2__guid__(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_interswitch2__guid__(struct soap *soap, const char *tag, int id, const interswitch2__guid__ *a, const char *type) +{ + return soap_out_interswitch2__guid(soap, tag, id, &(a->interswitch2__guid__::__item), "interswitch2:guid"); +} + +void *interswitch2__guid__::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_interswitch2__guid__(soap, tag, this, type); +} + +SOAP_FMAC3 interswitch2__guid__ * SOAP_FMAC4 soap_in_interswitch2__guid__(struct soap *soap, const char *tag, interswitch2__guid__ *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (interswitch2__guid__ *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_interswitch2__guid__, sizeof(interswitch2__guid__), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_interswitch2__guid__) + return (interswitch2__guid__ *)a->soap_in(soap, tag, type); + } + if (!soap_in_interswitch2__guid(soap, tag, &(a->interswitch2__guid__::__item), "interswitch2:guid")) + return NULL; + return a; +} + +int interswitch2__guid__::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_interswitch2__guid__); + if (this->soap_out(soap, tag?tag:"interswitch2:guid", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *interswitch2__guid__::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_interswitch2__guid__(soap, this, tag, type); +} + +SOAP_FMAC3 interswitch2__guid__ * SOAP_FMAC4 soap_get_interswitch2__guid__(struct soap *soap, interswitch2__guid__ *p, const char *tag, const char *type) +{ + if ((p = soap_in_interswitch2__guid__(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 interswitch2__guid__ * SOAP_FMAC2 soap_instantiate_interswitch2__guid__(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_interswitch2__guid__(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_interswitch2__guid__, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(interswitch2__guid__); + if (size) + *size = sizeof(interswitch2__guid__); + ((interswitch2__guid__*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(interswitch2__guid__[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(interswitch2__guid__); + for (int i = 0; i < n; i++) + ((interswitch2__guid__*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (interswitch2__guid__*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_interswitch2__guid__(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying interswitch2__guid__ %p -> %p\n", q, p)); + *(interswitch2__guid__*)p = *(interswitch2__guid__*)q; +} +SOAP_FMAC3 int SOAP_FMAC4 soap_out_interswitch2__guid(struct soap *soap, const char *tag, int id, const std::string *s, const char *type) +{ + if ((soap->mode & SOAP_C_NILSTRING) && s->empty()) + return soap_element_null(soap, tag, id, type); + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, s, SOAP_TYPE_interswitch_interswitch2__guid), type) || soap_string_out(soap, s->c_str(), 0) || soap_element_end_out(soap, tag)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_interswitch2__guid(struct soap *soap, const char *tag, std::string *s, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!s) + s = soap_new_std__string(soap, -1); + if (soap->null) + if (s) + s->erase(); + if (soap->body && !*soap->href) + { char *t; + s = (std::string*)soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_interswitch_interswitch2__guid, sizeof(std::string), soap->type, soap->arrayType); + if (s) + { if ((t = soap_string_in(soap, 1, -1, -1))) + s->assign(t); + else + return NULL; + } + } + else + s = (std::string*)soap_id_forward(soap, soap->href, soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_interswitch_interswitch2__guid, sizeof(std::string), soap->type, soap->arrayType), 0, SOAP_TYPE_interswitch_interswitch2__guid, 0, sizeof(std::string), 0, soap_copy_interswitch2__guid); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + return s; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_interswitch2__guid(struct soap *soap, const std::string *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_interswitch2__guid); + if (soap_out_interswitch2__guid(soap, tag?tag:"interswitch2:guid", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_interswitch2__guid(struct soap *soap, std::string *p, const char *tag, const char *type) +{ + if ((p = soap_in_interswitch2__guid(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void interswitch2__duration__::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_interswitch2__duration(soap, &this->interswitch2__duration__::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void interswitch2__duration__::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_interswitch2__duration(soap, &this->interswitch2__duration__::__item); + /* transient soap skipped */ +} + +int interswitch2__duration__::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_interswitch2__duration__(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_interswitch2__duration__(struct soap *soap, const char *tag, int id, const interswitch2__duration__ *a, const char *type) +{ + return soap_out_interswitch2__duration(soap, tag, id, &(a->interswitch2__duration__::__item), "interswitch2:duration"); +} + +void *interswitch2__duration__::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_interswitch2__duration__(soap, tag, this, type); +} + +SOAP_FMAC3 interswitch2__duration__ * SOAP_FMAC4 soap_in_interswitch2__duration__(struct soap *soap, const char *tag, interswitch2__duration__ *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (interswitch2__duration__ *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_interswitch2__duration__, sizeof(interswitch2__duration__), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_interswitch2__duration__) + return (interswitch2__duration__ *)a->soap_in(soap, tag, type); + } + if (!soap_in_interswitch2__duration(soap, tag, &(a->interswitch2__duration__::__item), "interswitch2:duration")) + return NULL; + return a; +} + +int interswitch2__duration__::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_interswitch2__duration__); + if (this->soap_out(soap, tag?tag:"interswitch2:duration", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *interswitch2__duration__::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_interswitch2__duration__(soap, this, tag, type); +} + +SOAP_FMAC3 interswitch2__duration__ * SOAP_FMAC4 soap_get_interswitch2__duration__(struct soap *soap, interswitch2__duration__ *p, const char *tag, const char *type) +{ + if ((p = soap_in_interswitch2__duration__(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 interswitch2__duration__ * SOAP_FMAC2 soap_instantiate_interswitch2__duration__(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_interswitch2__duration__(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_interswitch2__duration__, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(interswitch2__duration__); + if (size) + *size = sizeof(interswitch2__duration__); + ((interswitch2__duration__*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(interswitch2__duration__[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(interswitch2__duration__); + for (int i = 0; i < n; i++) + ((interswitch2__duration__*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (interswitch2__duration__*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_interswitch2__duration__(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying interswitch2__duration__ %p -> %p\n", q, p)); + *(interswitch2__duration__*)p = *(interswitch2__duration__*)q; +} +SOAP_FMAC3 int SOAP_FMAC4 soap_out_interswitch2__duration(struct soap *soap, const char *tag, int id, const std::string *s, const char *type) +{ + if ((soap->mode & SOAP_C_NILSTRING) && s->empty()) + return soap_element_null(soap, tag, id, type); + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, s, SOAP_TYPE_interswitch_interswitch2__duration), type) || soap_string_out(soap, s->c_str(), 0) || soap_element_end_out(soap, tag)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_interswitch2__duration(struct soap *soap, const char *tag, std::string *s, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!s) + s = soap_new_std__string(soap, -1); + if (soap->null) + if (s) + s->erase(); + if (soap->body && !*soap->href) + { char *t; + s = (std::string*)soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_interswitch_interswitch2__duration, sizeof(std::string), soap->type, soap->arrayType); + if (s) + { if ((t = soap_string_in(soap, 1, -1, -1))) + s->assign(t); + else + return NULL; + } + } + else + s = (std::string*)soap_id_forward(soap, soap->href, soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_interswitch_interswitch2__duration, sizeof(std::string), soap->type, soap->arrayType), 0, SOAP_TYPE_interswitch_interswitch2__duration, 0, sizeof(std::string), 0, soap_copy_interswitch2__duration); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + return s; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_interswitch2__duration(struct soap *soap, const std::string *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_interswitch2__duration); + if (soap_out_interswitch2__duration(soap, tag?tag:"interswitch2:duration", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_interswitch2__duration(struct soap *soap, std::string *p, const char *tag, const char *type) +{ + if ((p = soap_in_interswitch2__duration(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void interswitch2__char__::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_interswitch2__char(soap, &this->interswitch2__char__::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void interswitch2__char__::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + /* transient soap skipped */ +} + +int interswitch2__char__::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_interswitch2__char__(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_interswitch2__char__(struct soap *soap, const char *tag, int id, const interswitch2__char__ *a, const char *type) +{ + return soap_out_interswitch2__char(soap, tag, id, &(a->interswitch2__char__::__item), "interswitch2:char"); +} + +void *interswitch2__char__::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_interswitch2__char__(soap, tag, this, type); +} + +SOAP_FMAC3 interswitch2__char__ * SOAP_FMAC4 soap_in_interswitch2__char__(struct soap *soap, const char *tag, interswitch2__char__ *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (interswitch2__char__ *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_interswitch2__char__, sizeof(interswitch2__char__), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_interswitch2__char__) + return (interswitch2__char__ *)a->soap_in(soap, tag, type); + } + if (!soap_in_interswitch2__char(soap, tag, &(a->interswitch2__char__::__item), "interswitch2:char")) + return NULL; + return a; +} + +int interswitch2__char__::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_interswitch2__char__); + if (this->soap_out(soap, tag?tag:"interswitch2:char", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *interswitch2__char__::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_interswitch2__char__(soap, this, tag, type); +} + +SOAP_FMAC3 interswitch2__char__ * SOAP_FMAC4 soap_get_interswitch2__char__(struct soap *soap, interswitch2__char__ *p, const char *tag, const char *type) +{ + if ((p = soap_in_interswitch2__char__(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 interswitch2__char__ * SOAP_FMAC2 soap_instantiate_interswitch2__char__(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_interswitch2__char__(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_interswitch2__char__, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(interswitch2__char__); + if (size) + *size = sizeof(interswitch2__char__); + ((interswitch2__char__*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(interswitch2__char__[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(interswitch2__char__); + for (int i = 0; i < n; i++) + ((interswitch2__char__*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (interswitch2__char__*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_interswitch2__char__(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying interswitch2__char__ %p -> %p\n", q, p)); + *(interswitch2__char__*)p = *(interswitch2__char__*)q; +} + +void _interswitch__VerifyBillerResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__VerifyBillerResponse::VerifyBillerResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__VerifyBillerResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__VerifyBillerResponse::VerifyBillerResult); + /* transient soap skipped */ +} + +int _interswitch__VerifyBillerResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__VerifyBillerResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__VerifyBillerResponse(struct soap *soap, const char *tag, int id, const _interswitch__VerifyBillerResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse), type)) + return soap->error; + if (a->VerifyBillerResult) + soap_element_result(soap, "interswitch:VerifyBillerResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:VerifyBillerResult", -1, &(a->_interswitch__VerifyBillerResponse::VerifyBillerResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__VerifyBillerResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__VerifyBillerResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__VerifyBillerResponse * SOAP_FMAC4 soap_in__interswitch__VerifyBillerResponse(struct soap *soap, const char *tag, _interswitch__VerifyBillerResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__VerifyBillerResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse, sizeof(_interswitch__VerifyBillerResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__VerifyBillerResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_VerifyBillerResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_VerifyBillerResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:VerifyBillerResult", &(a->_interswitch__VerifyBillerResponse::VerifyBillerResult), "xsd:string")) + { soap_flag_VerifyBillerResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:VerifyBillerResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__VerifyBillerResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse, 0, sizeof(_interswitch__VerifyBillerResponse), 0, soap_copy__interswitch__VerifyBillerResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__VerifyBillerResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse); + if (this->soap_out(soap, tag?tag:"interswitch:VerifyBillerResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__VerifyBillerResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__VerifyBillerResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__VerifyBillerResponse * SOAP_FMAC4 soap_get__interswitch__VerifyBillerResponse(struct soap *soap, _interswitch__VerifyBillerResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__VerifyBillerResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__VerifyBillerResponse * SOAP_FMAC2 soap_instantiate__interswitch__VerifyBillerResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__VerifyBillerResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__VerifyBillerResponse); + if (size) + *size = sizeof(_interswitch__VerifyBillerResponse); + ((_interswitch__VerifyBillerResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__VerifyBillerResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__VerifyBillerResponse); + for (int i = 0; i < n; i++) + ((_interswitch__VerifyBillerResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__VerifyBillerResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__VerifyBillerResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__VerifyBillerResponse %p -> %p\n", q, p)); + *(_interswitch__VerifyBillerResponse*)p = *(_interswitch__VerifyBillerResponse*)q; +} + +void _interswitch__VerifyBiller::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__VerifyBiller::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__VerifyBiller::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__VerifyBiller::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__VerifyBiller::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__VerifyBiller(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__VerifyBiller(struct soap *soap, const char *tag, int id, const _interswitch__VerifyBiller *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__VerifyBiller), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__VerifyBiller::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__VerifyBiller::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__VerifyBiller(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__VerifyBiller * SOAP_FMAC4 soap_in__interswitch__VerifyBiller(struct soap *soap, const char *tag, _interswitch__VerifyBiller *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__VerifyBiller *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__VerifyBiller, sizeof(_interswitch__VerifyBiller), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__VerifyBiller) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__VerifyBiller *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__VerifyBiller::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__VerifyBiller *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__VerifyBiller, 0, sizeof(_interswitch__VerifyBiller), 0, soap_copy__interswitch__VerifyBiller); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__VerifyBiller::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__VerifyBiller); + if (this->soap_out(soap, tag?tag:"interswitch:VerifyBiller", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__VerifyBiller::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__VerifyBiller(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__VerifyBiller * SOAP_FMAC4 soap_get__interswitch__VerifyBiller(struct soap *soap, _interswitch__VerifyBiller *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__VerifyBiller(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__VerifyBiller * SOAP_FMAC2 soap_instantiate__interswitch__VerifyBiller(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__VerifyBiller(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__VerifyBiller, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__VerifyBiller); + if (size) + *size = sizeof(_interswitch__VerifyBiller); + ((_interswitch__VerifyBiller*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__VerifyBiller[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__VerifyBiller); + for (int i = 0; i < n; i++) + ((_interswitch__VerifyBiller*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__VerifyBiller*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__VerifyBiller(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__VerifyBiller %p -> %p\n", q, p)); + *(_interswitch__VerifyBiller*)p = *(_interswitch__VerifyBiller*)q; +} + +void _interswitch__CreateBillerResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__CreateBillerResponse::CreateBillerResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__CreateBillerResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__CreateBillerResponse::CreateBillerResult); + /* transient soap skipped */ +} + +int _interswitch__CreateBillerResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__CreateBillerResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__CreateBillerResponse(struct soap *soap, const char *tag, int id, const _interswitch__CreateBillerResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__CreateBillerResponse), type)) + return soap->error; + if (a->CreateBillerResult) + soap_element_result(soap, "interswitch:CreateBillerResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:CreateBillerResult", -1, &(a->_interswitch__CreateBillerResponse::CreateBillerResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__CreateBillerResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__CreateBillerResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__CreateBillerResponse * SOAP_FMAC4 soap_in__interswitch__CreateBillerResponse(struct soap *soap, const char *tag, _interswitch__CreateBillerResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__CreateBillerResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__CreateBillerResponse, sizeof(_interswitch__CreateBillerResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__CreateBillerResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__CreateBillerResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_CreateBillerResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_CreateBillerResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:CreateBillerResult", &(a->_interswitch__CreateBillerResponse::CreateBillerResult), "xsd:string")) + { soap_flag_CreateBillerResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:CreateBillerResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__CreateBillerResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__CreateBillerResponse, 0, sizeof(_interswitch__CreateBillerResponse), 0, soap_copy__interswitch__CreateBillerResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__CreateBillerResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__CreateBillerResponse); + if (this->soap_out(soap, tag?tag:"interswitch:CreateBillerResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__CreateBillerResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__CreateBillerResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__CreateBillerResponse * SOAP_FMAC4 soap_get__interswitch__CreateBillerResponse(struct soap *soap, _interswitch__CreateBillerResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__CreateBillerResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__CreateBillerResponse * SOAP_FMAC2 soap_instantiate__interswitch__CreateBillerResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__CreateBillerResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__CreateBillerResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__CreateBillerResponse); + if (size) + *size = sizeof(_interswitch__CreateBillerResponse); + ((_interswitch__CreateBillerResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__CreateBillerResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__CreateBillerResponse); + for (int i = 0; i < n; i++) + ((_interswitch__CreateBillerResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__CreateBillerResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__CreateBillerResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__CreateBillerResponse %p -> %p\n", q, p)); + *(_interswitch__CreateBillerResponse*)p = *(_interswitch__CreateBillerResponse*)q; +} + +void _interswitch__CreateBiller::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__CreateBiller::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__CreateBiller::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__CreateBiller::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__CreateBiller::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__CreateBiller(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__CreateBiller(struct soap *soap, const char *tag, int id, const _interswitch__CreateBiller *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__CreateBiller), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__CreateBiller::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__CreateBiller::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__CreateBiller(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__CreateBiller * SOAP_FMAC4 soap_in__interswitch__CreateBiller(struct soap *soap, const char *tag, _interswitch__CreateBiller *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__CreateBiller *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__CreateBiller, sizeof(_interswitch__CreateBiller), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__CreateBiller) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__CreateBiller *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__CreateBiller::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__CreateBiller *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__CreateBiller, 0, sizeof(_interswitch__CreateBiller), 0, soap_copy__interswitch__CreateBiller); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__CreateBiller::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__CreateBiller); + if (this->soap_out(soap, tag?tag:"interswitch:CreateBiller", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__CreateBiller::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__CreateBiller(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__CreateBiller * SOAP_FMAC4 soap_get__interswitch__CreateBiller(struct soap *soap, _interswitch__CreateBiller *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__CreateBiller(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__CreateBiller * SOAP_FMAC2 soap_instantiate__interswitch__CreateBiller(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__CreateBiller(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__CreateBiller, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__CreateBiller); + if (size) + *size = sizeof(_interswitch__CreateBiller); + ((_interswitch__CreateBiller*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__CreateBiller[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__CreateBiller); + for (int i = 0; i < n; i++) + ((_interswitch__CreateBiller*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__CreateBiller*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__CreateBiller(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__CreateBiller %p -> %p\n", q, p)); + *(_interswitch__CreateBiller*)p = *(_interswitch__CreateBiller*)q; +} + +void _interswitch__DoCustomProcessingResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__DoCustomProcessingResponse::DoCustomProcessingResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__DoCustomProcessingResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__DoCustomProcessingResponse::DoCustomProcessingResult); + /* transient soap skipped */ +} + +int _interswitch__DoCustomProcessingResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__DoCustomProcessingResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__DoCustomProcessingResponse(struct soap *soap, const char *tag, int id, const _interswitch__DoCustomProcessingResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse), type)) + return soap->error; + if (a->DoCustomProcessingResult) + soap_element_result(soap, "interswitch:DoCustomProcessingResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:DoCustomProcessingResult", -1, &(a->_interswitch__DoCustomProcessingResponse::DoCustomProcessingResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__DoCustomProcessingResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__DoCustomProcessingResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__DoCustomProcessingResponse * SOAP_FMAC4 soap_in__interswitch__DoCustomProcessingResponse(struct soap *soap, const char *tag, _interswitch__DoCustomProcessingResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__DoCustomProcessingResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse, sizeof(_interswitch__DoCustomProcessingResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__DoCustomProcessingResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_DoCustomProcessingResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_DoCustomProcessingResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:DoCustomProcessingResult", &(a->_interswitch__DoCustomProcessingResponse::DoCustomProcessingResult), "xsd:string")) + { soap_flag_DoCustomProcessingResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:DoCustomProcessingResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__DoCustomProcessingResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse, 0, sizeof(_interswitch__DoCustomProcessingResponse), 0, soap_copy__interswitch__DoCustomProcessingResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__DoCustomProcessingResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse); + if (this->soap_out(soap, tag?tag:"interswitch:DoCustomProcessingResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__DoCustomProcessingResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__DoCustomProcessingResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__DoCustomProcessingResponse * SOAP_FMAC4 soap_get__interswitch__DoCustomProcessingResponse(struct soap *soap, _interswitch__DoCustomProcessingResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__DoCustomProcessingResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__DoCustomProcessingResponse * SOAP_FMAC2 soap_instantiate__interswitch__DoCustomProcessingResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__DoCustomProcessingResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__DoCustomProcessingResponse); + if (size) + *size = sizeof(_interswitch__DoCustomProcessingResponse); + ((_interswitch__DoCustomProcessingResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__DoCustomProcessingResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__DoCustomProcessingResponse); + for (int i = 0; i < n; i++) + ((_interswitch__DoCustomProcessingResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__DoCustomProcessingResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__DoCustomProcessingResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__DoCustomProcessingResponse %p -> %p\n", q, p)); + *(_interswitch__DoCustomProcessingResponse*)p = *(_interswitch__DoCustomProcessingResponse*)q; +} + +void _interswitch__DoCustomProcessing::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__DoCustomProcessing::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__DoCustomProcessing::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__DoCustomProcessing::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__DoCustomProcessing::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__DoCustomProcessing(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__DoCustomProcessing(struct soap *soap, const char *tag, int id, const _interswitch__DoCustomProcessing *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__DoCustomProcessing), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__DoCustomProcessing::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__DoCustomProcessing::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__DoCustomProcessing(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__DoCustomProcessing * SOAP_FMAC4 soap_in__interswitch__DoCustomProcessing(struct soap *soap, const char *tag, _interswitch__DoCustomProcessing *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__DoCustomProcessing *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__DoCustomProcessing, sizeof(_interswitch__DoCustomProcessing), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__DoCustomProcessing) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__DoCustomProcessing *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__DoCustomProcessing::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__DoCustomProcessing *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__DoCustomProcessing, 0, sizeof(_interswitch__DoCustomProcessing), 0, soap_copy__interswitch__DoCustomProcessing); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__DoCustomProcessing::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__DoCustomProcessing); + if (this->soap_out(soap, tag?tag:"interswitch:DoCustomProcessing", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__DoCustomProcessing::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__DoCustomProcessing(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__DoCustomProcessing * SOAP_FMAC4 soap_get__interswitch__DoCustomProcessing(struct soap *soap, _interswitch__DoCustomProcessing *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__DoCustomProcessing(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__DoCustomProcessing * SOAP_FMAC2 soap_instantiate__interswitch__DoCustomProcessing(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__DoCustomProcessing(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__DoCustomProcessing, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__DoCustomProcessing); + if (size) + *size = sizeof(_interswitch__DoCustomProcessing); + ((_interswitch__DoCustomProcessing*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__DoCustomProcessing[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__DoCustomProcessing); + for (int i = 0; i < n; i++) + ((_interswitch__DoCustomProcessing*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__DoCustomProcessing*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__DoCustomProcessing(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__DoCustomProcessing %p -> %p\n", q, p)); + *(_interswitch__DoCustomProcessing*)p = *(_interswitch__DoCustomProcessing*)q; +} + +void _interswitch__ResendActivationTokenResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__ResendActivationTokenResponse::ResendActivationTokenResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__ResendActivationTokenResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__ResendActivationTokenResponse::ResendActivationTokenResult); + /* transient soap skipped */ +} + +int _interswitch__ResendActivationTokenResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__ResendActivationTokenResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ResendActivationTokenResponse(struct soap *soap, const char *tag, int id, const _interswitch__ResendActivationTokenResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse), type)) + return soap->error; + if (a->ResendActivationTokenResult) + soap_element_result(soap, "interswitch:ResendActivationTokenResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:ResendActivationTokenResult", -1, &(a->_interswitch__ResendActivationTokenResponse::ResendActivationTokenResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__ResendActivationTokenResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__ResendActivationTokenResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__ResendActivationTokenResponse * SOAP_FMAC4 soap_in__interswitch__ResendActivationTokenResponse(struct soap *soap, const char *tag, _interswitch__ResendActivationTokenResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__ResendActivationTokenResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse, sizeof(_interswitch__ResendActivationTokenResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__ResendActivationTokenResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_ResendActivationTokenResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_ResendActivationTokenResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:ResendActivationTokenResult", &(a->_interswitch__ResendActivationTokenResponse::ResendActivationTokenResult), "xsd:string")) + { soap_flag_ResendActivationTokenResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:ResendActivationTokenResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__ResendActivationTokenResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse, 0, sizeof(_interswitch__ResendActivationTokenResponse), 0, soap_copy__interswitch__ResendActivationTokenResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__ResendActivationTokenResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse); + if (this->soap_out(soap, tag?tag:"interswitch:ResendActivationTokenResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__ResendActivationTokenResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__ResendActivationTokenResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__ResendActivationTokenResponse * SOAP_FMAC4 soap_get__interswitch__ResendActivationTokenResponse(struct soap *soap, _interswitch__ResendActivationTokenResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__ResendActivationTokenResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__ResendActivationTokenResponse * SOAP_FMAC2 soap_instantiate__interswitch__ResendActivationTokenResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__ResendActivationTokenResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__ResendActivationTokenResponse); + if (size) + *size = sizeof(_interswitch__ResendActivationTokenResponse); + ((_interswitch__ResendActivationTokenResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__ResendActivationTokenResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__ResendActivationTokenResponse); + for (int i = 0; i < n; i++) + ((_interswitch__ResendActivationTokenResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__ResendActivationTokenResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ResendActivationTokenResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__ResendActivationTokenResponse %p -> %p\n", q, p)); + *(_interswitch__ResendActivationTokenResponse*)p = *(_interswitch__ResendActivationTokenResponse*)q; +} + +void _interswitch__ResendActivationToken::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__ResendActivationToken::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__ResendActivationToken::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__ResendActivationToken::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__ResendActivationToken::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__ResendActivationToken(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ResendActivationToken(struct soap *soap, const char *tag, int id, const _interswitch__ResendActivationToken *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__ResendActivationToken), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__ResendActivationToken::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__ResendActivationToken::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__ResendActivationToken(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__ResendActivationToken * SOAP_FMAC4 soap_in__interswitch__ResendActivationToken(struct soap *soap, const char *tag, _interswitch__ResendActivationToken *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__ResendActivationToken *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__ResendActivationToken, sizeof(_interswitch__ResendActivationToken), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__ResendActivationToken) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__ResendActivationToken *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__ResendActivationToken::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__ResendActivationToken *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__ResendActivationToken, 0, sizeof(_interswitch__ResendActivationToken), 0, soap_copy__interswitch__ResendActivationToken); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__ResendActivationToken::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__ResendActivationToken); + if (this->soap_out(soap, tag?tag:"interswitch:ResendActivationToken", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__ResendActivationToken::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__ResendActivationToken(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__ResendActivationToken * SOAP_FMAC4 soap_get__interswitch__ResendActivationToken(struct soap *soap, _interswitch__ResendActivationToken *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__ResendActivationToken(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__ResendActivationToken * SOAP_FMAC2 soap_instantiate__interswitch__ResendActivationToken(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__ResendActivationToken(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__ResendActivationToken, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__ResendActivationToken); + if (size) + *size = sizeof(_interswitch__ResendActivationToken); + ((_interswitch__ResendActivationToken*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__ResendActivationToken[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__ResendActivationToken); + for (int i = 0; i < n; i++) + ((_interswitch__ResendActivationToken*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__ResendActivationToken*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ResendActivationToken(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__ResendActivationToken %p -> %p\n", q, p)); + *(_interswitch__ResendActivationToken*)p = *(_interswitch__ResendActivationToken*)q; +} + +void _interswitch__EditCustomerBillerAccountResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__EditCustomerBillerAccountResponse::EditCustomerBillerAccountResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__EditCustomerBillerAccountResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__EditCustomerBillerAccountResponse::EditCustomerBillerAccountResult); + /* transient soap skipped */ +} + +int _interswitch__EditCustomerBillerAccountResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__EditCustomerBillerAccountResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__EditCustomerBillerAccountResponse(struct soap *soap, const char *tag, int id, const _interswitch__EditCustomerBillerAccountResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse), type)) + return soap->error; + if (a->EditCustomerBillerAccountResult) + soap_element_result(soap, "interswitch:EditCustomerBillerAccountResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:EditCustomerBillerAccountResult", -1, &(a->_interswitch__EditCustomerBillerAccountResponse::EditCustomerBillerAccountResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__EditCustomerBillerAccountResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__EditCustomerBillerAccountResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__EditCustomerBillerAccountResponse * SOAP_FMAC4 soap_in__interswitch__EditCustomerBillerAccountResponse(struct soap *soap, const char *tag, _interswitch__EditCustomerBillerAccountResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__EditCustomerBillerAccountResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse, sizeof(_interswitch__EditCustomerBillerAccountResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__EditCustomerBillerAccountResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_EditCustomerBillerAccountResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_EditCustomerBillerAccountResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:EditCustomerBillerAccountResult", &(a->_interswitch__EditCustomerBillerAccountResponse::EditCustomerBillerAccountResult), "xsd:string")) + { soap_flag_EditCustomerBillerAccountResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:EditCustomerBillerAccountResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__EditCustomerBillerAccountResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse, 0, sizeof(_interswitch__EditCustomerBillerAccountResponse), 0, soap_copy__interswitch__EditCustomerBillerAccountResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__EditCustomerBillerAccountResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse); + if (this->soap_out(soap, tag?tag:"interswitch:EditCustomerBillerAccountResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__EditCustomerBillerAccountResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__EditCustomerBillerAccountResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__EditCustomerBillerAccountResponse * SOAP_FMAC4 soap_get__interswitch__EditCustomerBillerAccountResponse(struct soap *soap, _interswitch__EditCustomerBillerAccountResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__EditCustomerBillerAccountResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__EditCustomerBillerAccountResponse * SOAP_FMAC2 soap_instantiate__interswitch__EditCustomerBillerAccountResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__EditCustomerBillerAccountResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__EditCustomerBillerAccountResponse); + if (size) + *size = sizeof(_interswitch__EditCustomerBillerAccountResponse); + ((_interswitch__EditCustomerBillerAccountResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__EditCustomerBillerAccountResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__EditCustomerBillerAccountResponse); + for (int i = 0; i < n; i++) + ((_interswitch__EditCustomerBillerAccountResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__EditCustomerBillerAccountResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__EditCustomerBillerAccountResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__EditCustomerBillerAccountResponse %p -> %p\n", q, p)); + *(_interswitch__EditCustomerBillerAccountResponse*)p = *(_interswitch__EditCustomerBillerAccountResponse*)q; +} + +void _interswitch__EditCustomerBillerAccount::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__EditCustomerBillerAccount::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__EditCustomerBillerAccount::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__EditCustomerBillerAccount::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__EditCustomerBillerAccount::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__EditCustomerBillerAccount(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__EditCustomerBillerAccount(struct soap *soap, const char *tag, int id, const _interswitch__EditCustomerBillerAccount *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__EditCustomerBillerAccount::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__EditCustomerBillerAccount::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__EditCustomerBillerAccount(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__EditCustomerBillerAccount * SOAP_FMAC4 soap_in__interswitch__EditCustomerBillerAccount(struct soap *soap, const char *tag, _interswitch__EditCustomerBillerAccount *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__EditCustomerBillerAccount *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount, sizeof(_interswitch__EditCustomerBillerAccount), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__EditCustomerBillerAccount *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__EditCustomerBillerAccount::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__EditCustomerBillerAccount *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount, 0, sizeof(_interswitch__EditCustomerBillerAccount), 0, soap_copy__interswitch__EditCustomerBillerAccount); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__EditCustomerBillerAccount::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount); + if (this->soap_out(soap, tag?tag:"interswitch:EditCustomerBillerAccount", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__EditCustomerBillerAccount::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__EditCustomerBillerAccount(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__EditCustomerBillerAccount * SOAP_FMAC4 soap_get__interswitch__EditCustomerBillerAccount(struct soap *soap, _interswitch__EditCustomerBillerAccount *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__EditCustomerBillerAccount(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__EditCustomerBillerAccount * SOAP_FMAC2 soap_instantiate__interswitch__EditCustomerBillerAccount(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__EditCustomerBillerAccount(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__EditCustomerBillerAccount); + if (size) + *size = sizeof(_interswitch__EditCustomerBillerAccount); + ((_interswitch__EditCustomerBillerAccount*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__EditCustomerBillerAccount[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__EditCustomerBillerAccount); + for (int i = 0; i < n; i++) + ((_interswitch__EditCustomerBillerAccount*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__EditCustomerBillerAccount*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__EditCustomerBillerAccount(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__EditCustomerBillerAccount %p -> %p\n", q, p)); + *(_interswitch__EditCustomerBillerAccount*)p = *(_interswitch__EditCustomerBillerAccount*)q; +} + +void _interswitch__GetBillersCollectionsAccountResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetBillersCollectionsAccountResponse::GetBillersCollectionsAccountResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetBillersCollectionsAccountResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetBillersCollectionsAccountResponse::GetBillersCollectionsAccountResult); + /* transient soap skipped */ +} + +int _interswitch__GetBillersCollectionsAccountResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetBillersCollectionsAccountResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetBillersCollectionsAccountResponse(struct soap *soap, const char *tag, int id, const _interswitch__GetBillersCollectionsAccountResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse), type)) + return soap->error; + if (a->GetBillersCollectionsAccountResult) + soap_element_result(soap, "interswitch:GetBillersCollectionsAccountResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:GetBillersCollectionsAccountResult", -1, &(a->_interswitch__GetBillersCollectionsAccountResponse::GetBillersCollectionsAccountResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetBillersCollectionsAccountResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetBillersCollectionsAccountResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetBillersCollectionsAccountResponse * SOAP_FMAC4 soap_in__interswitch__GetBillersCollectionsAccountResponse(struct soap *soap, const char *tag, _interswitch__GetBillersCollectionsAccountResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetBillersCollectionsAccountResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse, sizeof(_interswitch__GetBillersCollectionsAccountResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetBillersCollectionsAccountResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_GetBillersCollectionsAccountResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_GetBillersCollectionsAccountResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:GetBillersCollectionsAccountResult", &(a->_interswitch__GetBillersCollectionsAccountResponse::GetBillersCollectionsAccountResult), "xsd:string")) + { soap_flag_GetBillersCollectionsAccountResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:GetBillersCollectionsAccountResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetBillersCollectionsAccountResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse, 0, sizeof(_interswitch__GetBillersCollectionsAccountResponse), 0, soap_copy__interswitch__GetBillersCollectionsAccountResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetBillersCollectionsAccountResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse); + if (this->soap_out(soap, tag?tag:"interswitch:GetBillersCollectionsAccountResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetBillersCollectionsAccountResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetBillersCollectionsAccountResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetBillersCollectionsAccountResponse * SOAP_FMAC4 soap_get__interswitch__GetBillersCollectionsAccountResponse(struct soap *soap, _interswitch__GetBillersCollectionsAccountResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetBillersCollectionsAccountResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetBillersCollectionsAccountResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetBillersCollectionsAccountResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetBillersCollectionsAccountResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetBillersCollectionsAccountResponse); + if (size) + *size = sizeof(_interswitch__GetBillersCollectionsAccountResponse); + ((_interswitch__GetBillersCollectionsAccountResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetBillersCollectionsAccountResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetBillersCollectionsAccountResponse); + for (int i = 0; i < n; i++) + ((_interswitch__GetBillersCollectionsAccountResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetBillersCollectionsAccountResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetBillersCollectionsAccountResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetBillersCollectionsAccountResponse %p -> %p\n", q, p)); + *(_interswitch__GetBillersCollectionsAccountResponse*)p = *(_interswitch__GetBillersCollectionsAccountResponse*)q; +} + +void _interswitch__GetBillersCollectionsAccount::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetBillersCollectionsAccount::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetBillersCollectionsAccount::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetBillersCollectionsAccount::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__GetBillersCollectionsAccount::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetBillersCollectionsAccount(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetBillersCollectionsAccount(struct soap *soap, const char *tag, int id, const _interswitch__GetBillersCollectionsAccount *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__GetBillersCollectionsAccount::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetBillersCollectionsAccount::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetBillersCollectionsAccount(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetBillersCollectionsAccount * SOAP_FMAC4 soap_in__interswitch__GetBillersCollectionsAccount(struct soap *soap, const char *tag, _interswitch__GetBillersCollectionsAccount *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetBillersCollectionsAccount *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount, sizeof(_interswitch__GetBillersCollectionsAccount), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetBillersCollectionsAccount *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__GetBillersCollectionsAccount::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetBillersCollectionsAccount *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount, 0, sizeof(_interswitch__GetBillersCollectionsAccount), 0, soap_copy__interswitch__GetBillersCollectionsAccount); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetBillersCollectionsAccount::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount); + if (this->soap_out(soap, tag?tag:"interswitch:GetBillersCollectionsAccount", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetBillersCollectionsAccount::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetBillersCollectionsAccount(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetBillersCollectionsAccount * SOAP_FMAC4 soap_get__interswitch__GetBillersCollectionsAccount(struct soap *soap, _interswitch__GetBillersCollectionsAccount *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetBillersCollectionsAccount(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetBillersCollectionsAccount * SOAP_FMAC2 soap_instantiate__interswitch__GetBillersCollectionsAccount(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetBillersCollectionsAccount(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetBillersCollectionsAccount); + if (size) + *size = sizeof(_interswitch__GetBillersCollectionsAccount); + ((_interswitch__GetBillersCollectionsAccount*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetBillersCollectionsAccount[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetBillersCollectionsAccount); + for (int i = 0; i < n; i++) + ((_interswitch__GetBillersCollectionsAccount*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetBillersCollectionsAccount*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetBillersCollectionsAccount(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetBillersCollectionsAccount %p -> %p\n", q, p)); + *(_interswitch__GetBillersCollectionsAccount*)p = *(_interswitch__GetBillersCollectionsAccount*)q; +} + +void _interswitch__GetCollectionsAccountResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetCollectionsAccountResponse::GetCollectionsAccountResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetCollectionsAccountResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetCollectionsAccountResponse::GetCollectionsAccountResult); + /* transient soap skipped */ +} + +int _interswitch__GetCollectionsAccountResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetCollectionsAccountResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetCollectionsAccountResponse(struct soap *soap, const char *tag, int id, const _interswitch__GetCollectionsAccountResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse), type)) + return soap->error; + if (a->GetCollectionsAccountResult) + soap_element_result(soap, "interswitch:GetCollectionsAccountResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:GetCollectionsAccountResult", -1, &(a->_interswitch__GetCollectionsAccountResponse::GetCollectionsAccountResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetCollectionsAccountResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetCollectionsAccountResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetCollectionsAccountResponse * SOAP_FMAC4 soap_in__interswitch__GetCollectionsAccountResponse(struct soap *soap, const char *tag, _interswitch__GetCollectionsAccountResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetCollectionsAccountResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse, sizeof(_interswitch__GetCollectionsAccountResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetCollectionsAccountResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_GetCollectionsAccountResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_GetCollectionsAccountResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:GetCollectionsAccountResult", &(a->_interswitch__GetCollectionsAccountResponse::GetCollectionsAccountResult), "xsd:string")) + { soap_flag_GetCollectionsAccountResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:GetCollectionsAccountResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetCollectionsAccountResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse, 0, sizeof(_interswitch__GetCollectionsAccountResponse), 0, soap_copy__interswitch__GetCollectionsAccountResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetCollectionsAccountResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse); + if (this->soap_out(soap, tag?tag:"interswitch:GetCollectionsAccountResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetCollectionsAccountResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetCollectionsAccountResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetCollectionsAccountResponse * SOAP_FMAC4 soap_get__interswitch__GetCollectionsAccountResponse(struct soap *soap, _interswitch__GetCollectionsAccountResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetCollectionsAccountResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetCollectionsAccountResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetCollectionsAccountResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetCollectionsAccountResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetCollectionsAccountResponse); + if (size) + *size = sizeof(_interswitch__GetCollectionsAccountResponse); + ((_interswitch__GetCollectionsAccountResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetCollectionsAccountResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetCollectionsAccountResponse); + for (int i = 0; i < n; i++) + ((_interswitch__GetCollectionsAccountResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetCollectionsAccountResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetCollectionsAccountResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetCollectionsAccountResponse %p -> %p\n", q, p)); + *(_interswitch__GetCollectionsAccountResponse*)p = *(_interswitch__GetCollectionsAccountResponse*)q; +} + +void _interswitch__GetCollectionsAccount::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetCollectionsAccount::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetCollectionsAccount::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetCollectionsAccount::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__GetCollectionsAccount::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetCollectionsAccount(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetCollectionsAccount(struct soap *soap, const char *tag, int id, const _interswitch__GetCollectionsAccount *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__GetCollectionsAccount::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetCollectionsAccount::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetCollectionsAccount(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetCollectionsAccount * SOAP_FMAC4 soap_in__interswitch__GetCollectionsAccount(struct soap *soap, const char *tag, _interswitch__GetCollectionsAccount *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetCollectionsAccount *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount, sizeof(_interswitch__GetCollectionsAccount), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetCollectionsAccount *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__GetCollectionsAccount::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetCollectionsAccount *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount, 0, sizeof(_interswitch__GetCollectionsAccount), 0, soap_copy__interswitch__GetCollectionsAccount); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetCollectionsAccount::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount); + if (this->soap_out(soap, tag?tag:"interswitch:GetCollectionsAccount", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetCollectionsAccount::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetCollectionsAccount(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetCollectionsAccount * SOAP_FMAC4 soap_get__interswitch__GetCollectionsAccount(struct soap *soap, _interswitch__GetCollectionsAccount *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetCollectionsAccount(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetCollectionsAccount * SOAP_FMAC2 soap_instantiate__interswitch__GetCollectionsAccount(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetCollectionsAccount(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetCollectionsAccount); + if (size) + *size = sizeof(_interswitch__GetCollectionsAccount); + ((_interswitch__GetCollectionsAccount*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetCollectionsAccount[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetCollectionsAccount); + for (int i = 0; i < n; i++) + ((_interswitch__GetCollectionsAccount*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetCollectionsAccount*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetCollectionsAccount(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetCollectionsAccount %p -> %p\n", q, p)); + *(_interswitch__GetCollectionsAccount*)p = *(_interswitch__GetCollectionsAccount*)q; +} + +void _interswitch__AddBillerCustomerResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__AddBillerCustomerResponse::AddBillerCustomerResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__AddBillerCustomerResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__AddBillerCustomerResponse::AddBillerCustomerResult); + /* transient soap skipped */ +} + +int _interswitch__AddBillerCustomerResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__AddBillerCustomerResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AddBillerCustomerResponse(struct soap *soap, const char *tag, int id, const _interswitch__AddBillerCustomerResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse), type)) + return soap->error; + if (a->AddBillerCustomerResult) + soap_element_result(soap, "interswitch:AddBillerCustomerResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:AddBillerCustomerResult", -1, &(a->_interswitch__AddBillerCustomerResponse::AddBillerCustomerResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__AddBillerCustomerResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__AddBillerCustomerResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__AddBillerCustomerResponse * SOAP_FMAC4 soap_in__interswitch__AddBillerCustomerResponse(struct soap *soap, const char *tag, _interswitch__AddBillerCustomerResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__AddBillerCustomerResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse, sizeof(_interswitch__AddBillerCustomerResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__AddBillerCustomerResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_AddBillerCustomerResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_AddBillerCustomerResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:AddBillerCustomerResult", &(a->_interswitch__AddBillerCustomerResponse::AddBillerCustomerResult), "xsd:string")) + { soap_flag_AddBillerCustomerResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:AddBillerCustomerResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__AddBillerCustomerResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse, 0, sizeof(_interswitch__AddBillerCustomerResponse), 0, soap_copy__interswitch__AddBillerCustomerResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__AddBillerCustomerResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse); + if (this->soap_out(soap, tag?tag:"interswitch:AddBillerCustomerResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__AddBillerCustomerResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__AddBillerCustomerResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__AddBillerCustomerResponse * SOAP_FMAC4 soap_get__interswitch__AddBillerCustomerResponse(struct soap *soap, _interswitch__AddBillerCustomerResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__AddBillerCustomerResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__AddBillerCustomerResponse * SOAP_FMAC2 soap_instantiate__interswitch__AddBillerCustomerResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__AddBillerCustomerResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__AddBillerCustomerResponse); + if (size) + *size = sizeof(_interswitch__AddBillerCustomerResponse); + ((_interswitch__AddBillerCustomerResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__AddBillerCustomerResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__AddBillerCustomerResponse); + for (int i = 0; i < n; i++) + ((_interswitch__AddBillerCustomerResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__AddBillerCustomerResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AddBillerCustomerResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__AddBillerCustomerResponse %p -> %p\n", q, p)); + *(_interswitch__AddBillerCustomerResponse*)p = *(_interswitch__AddBillerCustomerResponse*)q; +} + +void _interswitch__AddBillerCustomer::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__AddBillerCustomer::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__AddBillerCustomer::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__AddBillerCustomer::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__AddBillerCustomer::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__AddBillerCustomer(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AddBillerCustomer(struct soap *soap, const char *tag, int id, const _interswitch__AddBillerCustomer *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__AddBillerCustomer), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__AddBillerCustomer::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__AddBillerCustomer::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__AddBillerCustomer(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__AddBillerCustomer * SOAP_FMAC4 soap_in__interswitch__AddBillerCustomer(struct soap *soap, const char *tag, _interswitch__AddBillerCustomer *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__AddBillerCustomer *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__AddBillerCustomer, sizeof(_interswitch__AddBillerCustomer), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__AddBillerCustomer) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__AddBillerCustomer *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__AddBillerCustomer::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__AddBillerCustomer *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__AddBillerCustomer, 0, sizeof(_interswitch__AddBillerCustomer), 0, soap_copy__interswitch__AddBillerCustomer); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__AddBillerCustomer::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__AddBillerCustomer); + if (this->soap_out(soap, tag?tag:"interswitch:AddBillerCustomer", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__AddBillerCustomer::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__AddBillerCustomer(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__AddBillerCustomer * SOAP_FMAC4 soap_get__interswitch__AddBillerCustomer(struct soap *soap, _interswitch__AddBillerCustomer *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__AddBillerCustomer(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__AddBillerCustomer * SOAP_FMAC2 soap_instantiate__interswitch__AddBillerCustomer(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__AddBillerCustomer(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__AddBillerCustomer, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__AddBillerCustomer); + if (size) + *size = sizeof(_interswitch__AddBillerCustomer); + ((_interswitch__AddBillerCustomer*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__AddBillerCustomer[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__AddBillerCustomer); + for (int i = 0; i < n; i++) + ((_interswitch__AddBillerCustomer*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__AddBillerCustomer*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AddBillerCustomer(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__AddBillerCustomer %p -> %p\n", q, p)); + *(_interswitch__AddBillerCustomer*)p = *(_interswitch__AddBillerCustomer*)q; +} + +void _interswitch__GetCustomerPaymentsResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetCustomerPaymentsResponse::GetCustomerPaymentsResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetCustomerPaymentsResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetCustomerPaymentsResponse::GetCustomerPaymentsResult); + /* transient soap skipped */ +} + +int _interswitch__GetCustomerPaymentsResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetCustomerPaymentsResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetCustomerPaymentsResponse(struct soap *soap, const char *tag, int id, const _interswitch__GetCustomerPaymentsResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse), type)) + return soap->error; + if (a->GetCustomerPaymentsResult) + soap_element_result(soap, "interswitch:GetCustomerPaymentsResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:GetCustomerPaymentsResult", -1, &(a->_interswitch__GetCustomerPaymentsResponse::GetCustomerPaymentsResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetCustomerPaymentsResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetCustomerPaymentsResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetCustomerPaymentsResponse * SOAP_FMAC4 soap_in__interswitch__GetCustomerPaymentsResponse(struct soap *soap, const char *tag, _interswitch__GetCustomerPaymentsResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetCustomerPaymentsResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse, sizeof(_interswitch__GetCustomerPaymentsResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetCustomerPaymentsResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_GetCustomerPaymentsResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_GetCustomerPaymentsResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:GetCustomerPaymentsResult", &(a->_interswitch__GetCustomerPaymentsResponse::GetCustomerPaymentsResult), "xsd:string")) + { soap_flag_GetCustomerPaymentsResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:GetCustomerPaymentsResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetCustomerPaymentsResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse, 0, sizeof(_interswitch__GetCustomerPaymentsResponse), 0, soap_copy__interswitch__GetCustomerPaymentsResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetCustomerPaymentsResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse); + if (this->soap_out(soap, tag?tag:"interswitch:GetCustomerPaymentsResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetCustomerPaymentsResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetCustomerPaymentsResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetCustomerPaymentsResponse * SOAP_FMAC4 soap_get__interswitch__GetCustomerPaymentsResponse(struct soap *soap, _interswitch__GetCustomerPaymentsResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetCustomerPaymentsResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetCustomerPaymentsResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetCustomerPaymentsResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetCustomerPaymentsResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetCustomerPaymentsResponse); + if (size) + *size = sizeof(_interswitch__GetCustomerPaymentsResponse); + ((_interswitch__GetCustomerPaymentsResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetCustomerPaymentsResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetCustomerPaymentsResponse); + for (int i = 0; i < n; i++) + ((_interswitch__GetCustomerPaymentsResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetCustomerPaymentsResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetCustomerPaymentsResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetCustomerPaymentsResponse %p -> %p\n", q, p)); + *(_interswitch__GetCustomerPaymentsResponse*)p = *(_interswitch__GetCustomerPaymentsResponse*)q; +} + +void _interswitch__GetCustomerPayments::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetCustomerPayments::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetCustomerPayments::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetCustomerPayments::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__GetCustomerPayments::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetCustomerPayments(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetCustomerPayments(struct soap *soap, const char *tag, int id, const _interswitch__GetCustomerPayments *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetCustomerPayments), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__GetCustomerPayments::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetCustomerPayments::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetCustomerPayments(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetCustomerPayments * SOAP_FMAC4 soap_in__interswitch__GetCustomerPayments(struct soap *soap, const char *tag, _interswitch__GetCustomerPayments *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetCustomerPayments *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetCustomerPayments, sizeof(_interswitch__GetCustomerPayments), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetCustomerPayments) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetCustomerPayments *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__GetCustomerPayments::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetCustomerPayments *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetCustomerPayments, 0, sizeof(_interswitch__GetCustomerPayments), 0, soap_copy__interswitch__GetCustomerPayments); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetCustomerPayments::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetCustomerPayments); + if (this->soap_out(soap, tag?tag:"interswitch:GetCustomerPayments", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetCustomerPayments::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetCustomerPayments(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetCustomerPayments * SOAP_FMAC4 soap_get__interswitch__GetCustomerPayments(struct soap *soap, _interswitch__GetCustomerPayments *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetCustomerPayments(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetCustomerPayments * SOAP_FMAC2 soap_instantiate__interswitch__GetCustomerPayments(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetCustomerPayments(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetCustomerPayments, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetCustomerPayments); + if (size) + *size = sizeof(_interswitch__GetCustomerPayments); + ((_interswitch__GetCustomerPayments*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetCustomerPayments[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetCustomerPayments); + for (int i = 0; i < n; i++) + ((_interswitch__GetCustomerPayments*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetCustomerPayments*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetCustomerPayments(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetCustomerPayments %p -> %p\n", q, p)); + *(_interswitch__GetCustomerPayments*)p = *(_interswitch__GetCustomerPayments*)q; +} + +void _interswitch__GetCustomerBillerAccountsResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetCustomerBillerAccountsResponse::GetCustomerBillerAccountsResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetCustomerBillerAccountsResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetCustomerBillerAccountsResponse::GetCustomerBillerAccountsResult); + /* transient soap skipped */ +} + +int _interswitch__GetCustomerBillerAccountsResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetCustomerBillerAccountsResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetCustomerBillerAccountsResponse(struct soap *soap, const char *tag, int id, const _interswitch__GetCustomerBillerAccountsResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse), type)) + return soap->error; + if (a->GetCustomerBillerAccountsResult) + soap_element_result(soap, "interswitch:GetCustomerBillerAccountsResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:GetCustomerBillerAccountsResult", -1, &(a->_interswitch__GetCustomerBillerAccountsResponse::GetCustomerBillerAccountsResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetCustomerBillerAccountsResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetCustomerBillerAccountsResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetCustomerBillerAccountsResponse * SOAP_FMAC4 soap_in__interswitch__GetCustomerBillerAccountsResponse(struct soap *soap, const char *tag, _interswitch__GetCustomerBillerAccountsResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetCustomerBillerAccountsResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse, sizeof(_interswitch__GetCustomerBillerAccountsResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetCustomerBillerAccountsResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_GetCustomerBillerAccountsResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_GetCustomerBillerAccountsResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:GetCustomerBillerAccountsResult", &(a->_interswitch__GetCustomerBillerAccountsResponse::GetCustomerBillerAccountsResult), "xsd:string")) + { soap_flag_GetCustomerBillerAccountsResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:GetCustomerBillerAccountsResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetCustomerBillerAccountsResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse, 0, sizeof(_interswitch__GetCustomerBillerAccountsResponse), 0, soap_copy__interswitch__GetCustomerBillerAccountsResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetCustomerBillerAccountsResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse); + if (this->soap_out(soap, tag?tag:"interswitch:GetCustomerBillerAccountsResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetCustomerBillerAccountsResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetCustomerBillerAccountsResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetCustomerBillerAccountsResponse * SOAP_FMAC4 soap_get__interswitch__GetCustomerBillerAccountsResponse(struct soap *soap, _interswitch__GetCustomerBillerAccountsResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetCustomerBillerAccountsResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetCustomerBillerAccountsResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetCustomerBillerAccountsResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetCustomerBillerAccountsResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetCustomerBillerAccountsResponse); + if (size) + *size = sizeof(_interswitch__GetCustomerBillerAccountsResponse); + ((_interswitch__GetCustomerBillerAccountsResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetCustomerBillerAccountsResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetCustomerBillerAccountsResponse); + for (int i = 0; i < n; i++) + ((_interswitch__GetCustomerBillerAccountsResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetCustomerBillerAccountsResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetCustomerBillerAccountsResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetCustomerBillerAccountsResponse %p -> %p\n", q, p)); + *(_interswitch__GetCustomerBillerAccountsResponse*)p = *(_interswitch__GetCustomerBillerAccountsResponse*)q; +} + +void _interswitch__GetCustomerBillerAccounts::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetCustomerBillerAccounts::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetCustomerBillerAccounts::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetCustomerBillerAccounts::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__GetCustomerBillerAccounts::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetCustomerBillerAccounts(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetCustomerBillerAccounts(struct soap *soap, const char *tag, int id, const _interswitch__GetCustomerBillerAccounts *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__GetCustomerBillerAccounts::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetCustomerBillerAccounts::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetCustomerBillerAccounts(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetCustomerBillerAccounts * SOAP_FMAC4 soap_in__interswitch__GetCustomerBillerAccounts(struct soap *soap, const char *tag, _interswitch__GetCustomerBillerAccounts *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetCustomerBillerAccounts *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts, sizeof(_interswitch__GetCustomerBillerAccounts), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetCustomerBillerAccounts *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__GetCustomerBillerAccounts::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetCustomerBillerAccounts *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts, 0, sizeof(_interswitch__GetCustomerBillerAccounts), 0, soap_copy__interswitch__GetCustomerBillerAccounts); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetCustomerBillerAccounts::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts); + if (this->soap_out(soap, tag?tag:"interswitch:GetCustomerBillerAccounts", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetCustomerBillerAccounts::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetCustomerBillerAccounts(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetCustomerBillerAccounts * SOAP_FMAC4 soap_get__interswitch__GetCustomerBillerAccounts(struct soap *soap, _interswitch__GetCustomerBillerAccounts *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetCustomerBillerAccounts(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetCustomerBillerAccounts * SOAP_FMAC2 soap_instantiate__interswitch__GetCustomerBillerAccounts(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetCustomerBillerAccounts(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetCustomerBillerAccounts); + if (size) + *size = sizeof(_interswitch__GetCustomerBillerAccounts); + ((_interswitch__GetCustomerBillerAccounts*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetCustomerBillerAccounts[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetCustomerBillerAccounts); + for (int i = 0; i < n; i++) + ((_interswitch__GetCustomerBillerAccounts*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetCustomerBillerAccounts*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetCustomerBillerAccounts(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetCustomerBillerAccounts %p -> %p\n", q, p)); + *(_interswitch__GetCustomerBillerAccounts*)p = *(_interswitch__GetCustomerBillerAccounts*)q; +} + +void _interswitch__AddCustomerBillerAccountResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__AddCustomerBillerAccountResponse::AddCustomerBillerAccountResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__AddCustomerBillerAccountResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__AddCustomerBillerAccountResponse::AddCustomerBillerAccountResult); + /* transient soap skipped */ +} + +int _interswitch__AddCustomerBillerAccountResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__AddCustomerBillerAccountResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AddCustomerBillerAccountResponse(struct soap *soap, const char *tag, int id, const _interswitch__AddCustomerBillerAccountResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse), type)) + return soap->error; + if (a->AddCustomerBillerAccountResult) + soap_element_result(soap, "interswitch:AddCustomerBillerAccountResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:AddCustomerBillerAccountResult", -1, &(a->_interswitch__AddCustomerBillerAccountResponse::AddCustomerBillerAccountResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__AddCustomerBillerAccountResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__AddCustomerBillerAccountResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__AddCustomerBillerAccountResponse * SOAP_FMAC4 soap_in__interswitch__AddCustomerBillerAccountResponse(struct soap *soap, const char *tag, _interswitch__AddCustomerBillerAccountResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__AddCustomerBillerAccountResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse, sizeof(_interswitch__AddCustomerBillerAccountResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__AddCustomerBillerAccountResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_AddCustomerBillerAccountResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_AddCustomerBillerAccountResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:AddCustomerBillerAccountResult", &(a->_interswitch__AddCustomerBillerAccountResponse::AddCustomerBillerAccountResult), "xsd:string")) + { soap_flag_AddCustomerBillerAccountResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:AddCustomerBillerAccountResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__AddCustomerBillerAccountResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse, 0, sizeof(_interswitch__AddCustomerBillerAccountResponse), 0, soap_copy__interswitch__AddCustomerBillerAccountResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__AddCustomerBillerAccountResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse); + if (this->soap_out(soap, tag?tag:"interswitch:AddCustomerBillerAccountResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__AddCustomerBillerAccountResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__AddCustomerBillerAccountResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__AddCustomerBillerAccountResponse * SOAP_FMAC4 soap_get__interswitch__AddCustomerBillerAccountResponse(struct soap *soap, _interswitch__AddCustomerBillerAccountResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__AddCustomerBillerAccountResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__AddCustomerBillerAccountResponse * SOAP_FMAC2 soap_instantiate__interswitch__AddCustomerBillerAccountResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__AddCustomerBillerAccountResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__AddCustomerBillerAccountResponse); + if (size) + *size = sizeof(_interswitch__AddCustomerBillerAccountResponse); + ((_interswitch__AddCustomerBillerAccountResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__AddCustomerBillerAccountResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__AddCustomerBillerAccountResponse); + for (int i = 0; i < n; i++) + ((_interswitch__AddCustomerBillerAccountResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__AddCustomerBillerAccountResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AddCustomerBillerAccountResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__AddCustomerBillerAccountResponse %p -> %p\n", q, p)); + *(_interswitch__AddCustomerBillerAccountResponse*)p = *(_interswitch__AddCustomerBillerAccountResponse*)q; +} + +void _interswitch__AddCustomerBillerAccount::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__AddCustomerBillerAccount::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__AddCustomerBillerAccount::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__AddCustomerBillerAccount::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__AddCustomerBillerAccount::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__AddCustomerBillerAccount(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AddCustomerBillerAccount(struct soap *soap, const char *tag, int id, const _interswitch__AddCustomerBillerAccount *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__AddCustomerBillerAccount::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__AddCustomerBillerAccount::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__AddCustomerBillerAccount(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__AddCustomerBillerAccount * SOAP_FMAC4 soap_in__interswitch__AddCustomerBillerAccount(struct soap *soap, const char *tag, _interswitch__AddCustomerBillerAccount *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__AddCustomerBillerAccount *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount, sizeof(_interswitch__AddCustomerBillerAccount), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__AddCustomerBillerAccount *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__AddCustomerBillerAccount::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__AddCustomerBillerAccount *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount, 0, sizeof(_interswitch__AddCustomerBillerAccount), 0, soap_copy__interswitch__AddCustomerBillerAccount); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__AddCustomerBillerAccount::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount); + if (this->soap_out(soap, tag?tag:"interswitch:AddCustomerBillerAccount", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__AddCustomerBillerAccount::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__AddCustomerBillerAccount(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__AddCustomerBillerAccount * SOAP_FMAC4 soap_get__interswitch__AddCustomerBillerAccount(struct soap *soap, _interswitch__AddCustomerBillerAccount *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__AddCustomerBillerAccount(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__AddCustomerBillerAccount * SOAP_FMAC2 soap_instantiate__interswitch__AddCustomerBillerAccount(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__AddCustomerBillerAccount(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__AddCustomerBillerAccount); + if (size) + *size = sizeof(_interswitch__AddCustomerBillerAccount); + ((_interswitch__AddCustomerBillerAccount*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__AddCustomerBillerAccount[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__AddCustomerBillerAccount); + for (int i = 0; i < n; i++) + ((_interswitch__AddCustomerBillerAccount*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__AddCustomerBillerAccount*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AddCustomerBillerAccount(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__AddCustomerBillerAccount %p -> %p\n", q, p)); + *(_interswitch__AddCustomerBillerAccount*)p = *(_interswitch__AddCustomerBillerAccount*)q; +} + +void _interswitch__SendPaymentsResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__SendPaymentsResponse::SendPaymentsResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__SendPaymentsResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__SendPaymentsResponse::SendPaymentsResult); + /* transient soap skipped */ +} + +int _interswitch__SendPaymentsResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__SendPaymentsResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__SendPaymentsResponse(struct soap *soap, const char *tag, int id, const _interswitch__SendPaymentsResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse), type)) + return soap->error; + if (a->SendPaymentsResult) + soap_element_result(soap, "interswitch:SendPaymentsResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:SendPaymentsResult", -1, &(a->_interswitch__SendPaymentsResponse::SendPaymentsResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__SendPaymentsResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__SendPaymentsResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__SendPaymentsResponse * SOAP_FMAC4 soap_in__interswitch__SendPaymentsResponse(struct soap *soap, const char *tag, _interswitch__SendPaymentsResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__SendPaymentsResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse, sizeof(_interswitch__SendPaymentsResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__SendPaymentsResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_SendPaymentsResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_SendPaymentsResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:SendPaymentsResult", &(a->_interswitch__SendPaymentsResponse::SendPaymentsResult), "xsd:string")) + { soap_flag_SendPaymentsResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:SendPaymentsResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__SendPaymentsResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse, 0, sizeof(_interswitch__SendPaymentsResponse), 0, soap_copy__interswitch__SendPaymentsResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__SendPaymentsResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse); + if (this->soap_out(soap, tag?tag:"interswitch:SendPaymentsResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__SendPaymentsResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__SendPaymentsResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__SendPaymentsResponse * SOAP_FMAC4 soap_get__interswitch__SendPaymentsResponse(struct soap *soap, _interswitch__SendPaymentsResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__SendPaymentsResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__SendPaymentsResponse * SOAP_FMAC2 soap_instantiate__interswitch__SendPaymentsResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__SendPaymentsResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__SendPaymentsResponse); + if (size) + *size = sizeof(_interswitch__SendPaymentsResponse); + ((_interswitch__SendPaymentsResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__SendPaymentsResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__SendPaymentsResponse); + for (int i = 0; i < n; i++) + ((_interswitch__SendPaymentsResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__SendPaymentsResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__SendPaymentsResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__SendPaymentsResponse %p -> %p\n", q, p)); + *(_interswitch__SendPaymentsResponse*)p = *(_interswitch__SendPaymentsResponse*)q; +} + +void _interswitch__SendPayments::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__SendPayments::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__SendPayments::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__SendPayments::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__SendPayments::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__SendPayments(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__SendPayments(struct soap *soap, const char *tag, int id, const _interswitch__SendPayments *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__SendPayments), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__SendPayments::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__SendPayments::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__SendPayments(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__SendPayments * SOAP_FMAC4 soap_in__interswitch__SendPayments(struct soap *soap, const char *tag, _interswitch__SendPayments *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__SendPayments *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__SendPayments, sizeof(_interswitch__SendPayments), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__SendPayments) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__SendPayments *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__SendPayments::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__SendPayments *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__SendPayments, 0, sizeof(_interswitch__SendPayments), 0, soap_copy__interswitch__SendPayments); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__SendPayments::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__SendPayments); + if (this->soap_out(soap, tag?tag:"interswitch:SendPayments", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__SendPayments::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__SendPayments(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__SendPayments * SOAP_FMAC4 soap_get__interswitch__SendPayments(struct soap *soap, _interswitch__SendPayments *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__SendPayments(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__SendPayments * SOAP_FMAC2 soap_instantiate__interswitch__SendPayments(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__SendPayments(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__SendPayments, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__SendPayments); + if (size) + *size = sizeof(_interswitch__SendPayments); + ((_interswitch__SendPayments*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__SendPayments[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__SendPayments); + for (int i = 0; i < n; i++) + ((_interswitch__SendPayments*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__SendPayments*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__SendPayments(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__SendPayments %p -> %p\n", q, p)); + *(_interswitch__SendPayments*)p = *(_interswitch__SendPayments*)q; +} + +void _interswitch__SendBillPaymentAdviceResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__SendBillPaymentAdviceResponse::SendBillPaymentAdviceResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__SendBillPaymentAdviceResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__SendBillPaymentAdviceResponse::SendBillPaymentAdviceResult); + /* transient soap skipped */ +} + +int _interswitch__SendBillPaymentAdviceResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__SendBillPaymentAdviceResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__SendBillPaymentAdviceResponse(struct soap *soap, const char *tag, int id, const _interswitch__SendBillPaymentAdviceResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse), type)) + return soap->error; + if (a->SendBillPaymentAdviceResult) + soap_element_result(soap, "interswitch:SendBillPaymentAdviceResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:SendBillPaymentAdviceResult", -1, &(a->_interswitch__SendBillPaymentAdviceResponse::SendBillPaymentAdviceResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__SendBillPaymentAdviceResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__SendBillPaymentAdviceResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__SendBillPaymentAdviceResponse * SOAP_FMAC4 soap_in__interswitch__SendBillPaymentAdviceResponse(struct soap *soap, const char *tag, _interswitch__SendBillPaymentAdviceResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__SendBillPaymentAdviceResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse, sizeof(_interswitch__SendBillPaymentAdviceResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__SendBillPaymentAdviceResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_SendBillPaymentAdviceResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_SendBillPaymentAdviceResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:SendBillPaymentAdviceResult", &(a->_interswitch__SendBillPaymentAdviceResponse::SendBillPaymentAdviceResult), "xsd:string")) + { soap_flag_SendBillPaymentAdviceResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:SendBillPaymentAdviceResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__SendBillPaymentAdviceResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse, 0, sizeof(_interswitch__SendBillPaymentAdviceResponse), 0, soap_copy__interswitch__SendBillPaymentAdviceResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__SendBillPaymentAdviceResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse); + if (this->soap_out(soap, tag?tag:"interswitch:SendBillPaymentAdviceResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__SendBillPaymentAdviceResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__SendBillPaymentAdviceResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__SendBillPaymentAdviceResponse * SOAP_FMAC4 soap_get__interswitch__SendBillPaymentAdviceResponse(struct soap *soap, _interswitch__SendBillPaymentAdviceResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__SendBillPaymentAdviceResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__SendBillPaymentAdviceResponse * SOAP_FMAC2 soap_instantiate__interswitch__SendBillPaymentAdviceResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__SendBillPaymentAdviceResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__SendBillPaymentAdviceResponse); + if (size) + *size = sizeof(_interswitch__SendBillPaymentAdviceResponse); + ((_interswitch__SendBillPaymentAdviceResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__SendBillPaymentAdviceResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__SendBillPaymentAdviceResponse); + for (int i = 0; i < n; i++) + ((_interswitch__SendBillPaymentAdviceResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__SendBillPaymentAdviceResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__SendBillPaymentAdviceResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__SendBillPaymentAdviceResponse %p -> %p\n", q, p)); + *(_interswitch__SendBillPaymentAdviceResponse*)p = *(_interswitch__SendBillPaymentAdviceResponse*)q; +} + +void _interswitch__SendBillPaymentAdvice::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__SendBillPaymentAdvice::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__SendBillPaymentAdvice::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__SendBillPaymentAdvice::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__SendBillPaymentAdvice::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__SendBillPaymentAdvice(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__SendBillPaymentAdvice(struct soap *soap, const char *tag, int id, const _interswitch__SendBillPaymentAdvice *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__SendBillPaymentAdvice::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__SendBillPaymentAdvice::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__SendBillPaymentAdvice(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__SendBillPaymentAdvice * SOAP_FMAC4 soap_in__interswitch__SendBillPaymentAdvice(struct soap *soap, const char *tag, _interswitch__SendBillPaymentAdvice *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__SendBillPaymentAdvice *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice, sizeof(_interswitch__SendBillPaymentAdvice), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__SendBillPaymentAdvice *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__SendBillPaymentAdvice::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__SendBillPaymentAdvice *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice, 0, sizeof(_interswitch__SendBillPaymentAdvice), 0, soap_copy__interswitch__SendBillPaymentAdvice); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__SendBillPaymentAdvice::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice); + if (this->soap_out(soap, tag?tag:"interswitch:SendBillPaymentAdvice", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__SendBillPaymentAdvice::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__SendBillPaymentAdvice(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__SendBillPaymentAdvice * SOAP_FMAC4 soap_get__interswitch__SendBillPaymentAdvice(struct soap *soap, _interswitch__SendBillPaymentAdvice *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__SendBillPaymentAdvice(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__SendBillPaymentAdvice * SOAP_FMAC2 soap_instantiate__interswitch__SendBillPaymentAdvice(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__SendBillPaymentAdvice(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__SendBillPaymentAdvice); + if (size) + *size = sizeof(_interswitch__SendBillPaymentAdvice); + ((_interswitch__SendBillPaymentAdvice*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__SendBillPaymentAdvice[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__SendBillPaymentAdvice); + for (int i = 0; i < n; i++) + ((_interswitch__SendBillPaymentAdvice*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__SendBillPaymentAdvice*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__SendBillPaymentAdvice(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__SendBillPaymentAdvice %p -> %p\n", q, p)); + *(_interswitch__SendBillPaymentAdvice*)p = *(_interswitch__SendBillPaymentAdvice*)q; +} + +void _interswitch__AuthenticateCustomerResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__AuthenticateCustomerResponse::AuthenticateCustomerResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__AuthenticateCustomerResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__AuthenticateCustomerResponse::AuthenticateCustomerResult); + /* transient soap skipped */ +} + +int _interswitch__AuthenticateCustomerResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__AuthenticateCustomerResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthenticateCustomerResponse(struct soap *soap, const char *tag, int id, const _interswitch__AuthenticateCustomerResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse), type)) + return soap->error; + if (a->AuthenticateCustomerResult) + soap_element_result(soap, "interswitch:AuthenticateCustomerResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:AuthenticateCustomerResult", -1, &(a->_interswitch__AuthenticateCustomerResponse::AuthenticateCustomerResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__AuthenticateCustomerResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__AuthenticateCustomerResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__AuthenticateCustomerResponse * SOAP_FMAC4 soap_in__interswitch__AuthenticateCustomerResponse(struct soap *soap, const char *tag, _interswitch__AuthenticateCustomerResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__AuthenticateCustomerResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse, sizeof(_interswitch__AuthenticateCustomerResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__AuthenticateCustomerResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_AuthenticateCustomerResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_AuthenticateCustomerResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:AuthenticateCustomerResult", &(a->_interswitch__AuthenticateCustomerResponse::AuthenticateCustomerResult), "xsd:string")) + { soap_flag_AuthenticateCustomerResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:AuthenticateCustomerResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__AuthenticateCustomerResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse, 0, sizeof(_interswitch__AuthenticateCustomerResponse), 0, soap_copy__interswitch__AuthenticateCustomerResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__AuthenticateCustomerResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse); + if (this->soap_out(soap, tag?tag:"interswitch:AuthenticateCustomerResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__AuthenticateCustomerResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__AuthenticateCustomerResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__AuthenticateCustomerResponse * SOAP_FMAC4 soap_get__interswitch__AuthenticateCustomerResponse(struct soap *soap, _interswitch__AuthenticateCustomerResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__AuthenticateCustomerResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__AuthenticateCustomerResponse * SOAP_FMAC2 soap_instantiate__interswitch__AuthenticateCustomerResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__AuthenticateCustomerResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthenticateCustomerResponse); + if (size) + *size = sizeof(_interswitch__AuthenticateCustomerResponse); + ((_interswitch__AuthenticateCustomerResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthenticateCustomerResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__AuthenticateCustomerResponse); + for (int i = 0; i < n; i++) + ((_interswitch__AuthenticateCustomerResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__AuthenticateCustomerResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthenticateCustomerResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__AuthenticateCustomerResponse %p -> %p\n", q, p)); + *(_interswitch__AuthenticateCustomerResponse*)p = *(_interswitch__AuthenticateCustomerResponse*)q; +} + +void _interswitch__AuthenticateCustomer::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__AuthenticateCustomer::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__AuthenticateCustomer::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__AuthenticateCustomer::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__AuthenticateCustomer::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__AuthenticateCustomer(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthenticateCustomer(struct soap *soap, const char *tag, int id, const _interswitch__AuthenticateCustomer *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__AuthenticateCustomer::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__AuthenticateCustomer::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__AuthenticateCustomer(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__AuthenticateCustomer * SOAP_FMAC4 soap_in__interswitch__AuthenticateCustomer(struct soap *soap, const char *tag, _interswitch__AuthenticateCustomer *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__AuthenticateCustomer *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer, sizeof(_interswitch__AuthenticateCustomer), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__AuthenticateCustomer *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__AuthenticateCustomer::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__AuthenticateCustomer *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer, 0, sizeof(_interswitch__AuthenticateCustomer), 0, soap_copy__interswitch__AuthenticateCustomer); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__AuthenticateCustomer::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer); + if (this->soap_out(soap, tag?tag:"interswitch:AuthenticateCustomer", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__AuthenticateCustomer::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__AuthenticateCustomer(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__AuthenticateCustomer * SOAP_FMAC4 soap_get__interswitch__AuthenticateCustomer(struct soap *soap, _interswitch__AuthenticateCustomer *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__AuthenticateCustomer(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__AuthenticateCustomer * SOAP_FMAC2 soap_instantiate__interswitch__AuthenticateCustomer(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__AuthenticateCustomer(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthenticateCustomer); + if (size) + *size = sizeof(_interswitch__AuthenticateCustomer); + ((_interswitch__AuthenticateCustomer*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthenticateCustomer[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__AuthenticateCustomer); + for (int i = 0; i < n; i++) + ((_interswitch__AuthenticateCustomer*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__AuthenticateCustomer*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthenticateCustomer(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__AuthenticateCustomer %p -> %p\n", q, p)); + *(_interswitch__AuthenticateCustomer*)p = *(_interswitch__AuthenticateCustomer*)q; +} + +void _interswitch__DoBillPaymentInquiryResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__DoBillPaymentInquiryResponse::DoBillPaymentInquiryResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__DoBillPaymentInquiryResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__DoBillPaymentInquiryResponse::DoBillPaymentInquiryResult); + /* transient soap skipped */ +} + +int _interswitch__DoBillPaymentInquiryResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__DoBillPaymentInquiryResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__DoBillPaymentInquiryResponse(struct soap *soap, const char *tag, int id, const _interswitch__DoBillPaymentInquiryResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse), type)) + return soap->error; + if (a->DoBillPaymentInquiryResult) + soap_element_result(soap, "interswitch:DoBillPaymentInquiryResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:DoBillPaymentInquiryResult", -1, &(a->_interswitch__DoBillPaymentInquiryResponse::DoBillPaymentInquiryResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__DoBillPaymentInquiryResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__DoBillPaymentInquiryResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__DoBillPaymentInquiryResponse * SOAP_FMAC4 soap_in__interswitch__DoBillPaymentInquiryResponse(struct soap *soap, const char *tag, _interswitch__DoBillPaymentInquiryResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__DoBillPaymentInquiryResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse, sizeof(_interswitch__DoBillPaymentInquiryResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__DoBillPaymentInquiryResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_DoBillPaymentInquiryResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_DoBillPaymentInquiryResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:DoBillPaymentInquiryResult", &(a->_interswitch__DoBillPaymentInquiryResponse::DoBillPaymentInquiryResult), "xsd:string")) + { soap_flag_DoBillPaymentInquiryResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:DoBillPaymentInquiryResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__DoBillPaymentInquiryResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse, 0, sizeof(_interswitch__DoBillPaymentInquiryResponse), 0, soap_copy__interswitch__DoBillPaymentInquiryResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__DoBillPaymentInquiryResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse); + if (this->soap_out(soap, tag?tag:"interswitch:DoBillPaymentInquiryResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__DoBillPaymentInquiryResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__DoBillPaymentInquiryResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__DoBillPaymentInquiryResponse * SOAP_FMAC4 soap_get__interswitch__DoBillPaymentInquiryResponse(struct soap *soap, _interswitch__DoBillPaymentInquiryResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__DoBillPaymentInquiryResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__DoBillPaymentInquiryResponse * SOAP_FMAC2 soap_instantiate__interswitch__DoBillPaymentInquiryResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__DoBillPaymentInquiryResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__DoBillPaymentInquiryResponse); + if (size) + *size = sizeof(_interswitch__DoBillPaymentInquiryResponse); + ((_interswitch__DoBillPaymentInquiryResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__DoBillPaymentInquiryResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__DoBillPaymentInquiryResponse); + for (int i = 0; i < n; i++) + ((_interswitch__DoBillPaymentInquiryResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__DoBillPaymentInquiryResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__DoBillPaymentInquiryResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__DoBillPaymentInquiryResponse %p -> %p\n", q, p)); + *(_interswitch__DoBillPaymentInquiryResponse*)p = *(_interswitch__DoBillPaymentInquiryResponse*)q; +} + +void _interswitch__DoBillPaymentInquiry::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__DoBillPaymentInquiry::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__DoBillPaymentInquiry::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__DoBillPaymentInquiry::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__DoBillPaymentInquiry::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__DoBillPaymentInquiry(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__DoBillPaymentInquiry(struct soap *soap, const char *tag, int id, const _interswitch__DoBillPaymentInquiry *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__DoBillPaymentInquiry::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__DoBillPaymentInquiry::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__DoBillPaymentInquiry(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__DoBillPaymentInquiry * SOAP_FMAC4 soap_in__interswitch__DoBillPaymentInquiry(struct soap *soap, const char *tag, _interswitch__DoBillPaymentInquiry *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__DoBillPaymentInquiry *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry, sizeof(_interswitch__DoBillPaymentInquiry), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__DoBillPaymentInquiry *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__DoBillPaymentInquiry::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__DoBillPaymentInquiry *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry, 0, sizeof(_interswitch__DoBillPaymentInquiry), 0, soap_copy__interswitch__DoBillPaymentInquiry); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__DoBillPaymentInquiry::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry); + if (this->soap_out(soap, tag?tag:"interswitch:DoBillPaymentInquiry", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__DoBillPaymentInquiry::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__DoBillPaymentInquiry(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__DoBillPaymentInquiry * SOAP_FMAC4 soap_get__interswitch__DoBillPaymentInquiry(struct soap *soap, _interswitch__DoBillPaymentInquiry *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__DoBillPaymentInquiry(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__DoBillPaymentInquiry * SOAP_FMAC2 soap_instantiate__interswitch__DoBillPaymentInquiry(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__DoBillPaymentInquiry(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__DoBillPaymentInquiry); + if (size) + *size = sizeof(_interswitch__DoBillPaymentInquiry); + ((_interswitch__DoBillPaymentInquiry*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__DoBillPaymentInquiry[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__DoBillPaymentInquiry); + for (int i = 0; i < n; i++) + ((_interswitch__DoBillPaymentInquiry*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__DoBillPaymentInquiry*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__DoBillPaymentInquiry(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__DoBillPaymentInquiry %p -> %p\n", q, p)); + *(_interswitch__DoBillPaymentInquiry*)p = *(_interswitch__DoBillPaymentInquiry*)q; +} + +void _interswitch__GetBillerCategoriesResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetBillerCategoriesResponse::GetBillerCategoriesResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetBillerCategoriesResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetBillerCategoriesResponse::GetBillerCategoriesResult); + /* transient soap skipped */ +} + +int _interswitch__GetBillerCategoriesResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetBillerCategoriesResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetBillerCategoriesResponse(struct soap *soap, const char *tag, int id, const _interswitch__GetBillerCategoriesResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse), type)) + return soap->error; + if (a->GetBillerCategoriesResult) + soap_element_result(soap, "interswitch:GetBillerCategoriesResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:GetBillerCategoriesResult", -1, &(a->_interswitch__GetBillerCategoriesResponse::GetBillerCategoriesResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetBillerCategoriesResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetBillerCategoriesResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetBillerCategoriesResponse * SOAP_FMAC4 soap_in__interswitch__GetBillerCategoriesResponse(struct soap *soap, const char *tag, _interswitch__GetBillerCategoriesResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetBillerCategoriesResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse, sizeof(_interswitch__GetBillerCategoriesResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetBillerCategoriesResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_GetBillerCategoriesResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_GetBillerCategoriesResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:GetBillerCategoriesResult", &(a->_interswitch__GetBillerCategoriesResponse::GetBillerCategoriesResult), "xsd:string")) + { soap_flag_GetBillerCategoriesResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:GetBillerCategoriesResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetBillerCategoriesResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse, 0, sizeof(_interswitch__GetBillerCategoriesResponse), 0, soap_copy__interswitch__GetBillerCategoriesResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetBillerCategoriesResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse); + if (this->soap_out(soap, tag?tag:"interswitch:GetBillerCategoriesResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetBillerCategoriesResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetBillerCategoriesResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetBillerCategoriesResponse * SOAP_FMAC4 soap_get__interswitch__GetBillerCategoriesResponse(struct soap *soap, _interswitch__GetBillerCategoriesResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetBillerCategoriesResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetBillerCategoriesResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetBillerCategoriesResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetBillerCategoriesResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetBillerCategoriesResponse); + if (size) + *size = sizeof(_interswitch__GetBillerCategoriesResponse); + ((_interswitch__GetBillerCategoriesResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetBillerCategoriesResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetBillerCategoriesResponse); + for (int i = 0; i < n; i++) + ((_interswitch__GetBillerCategoriesResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetBillerCategoriesResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetBillerCategoriesResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetBillerCategoriesResponse %p -> %p\n", q, p)); + *(_interswitch__GetBillerCategoriesResponse*)p = *(_interswitch__GetBillerCategoriesResponse*)q; +} + +void _interswitch__GetBillerCategories::soap_default(struct soap *soap) +{ + this->soap = soap; + /* transient soap skipped */ +} + +void _interswitch__GetBillerCategories::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + /* transient soap skipped */ +} + +int _interswitch__GetBillerCategories::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetBillerCategories(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetBillerCategories(struct soap *soap, const char *tag, int id, const _interswitch__GetBillerCategories *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetBillerCategories), type)) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetBillerCategories::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetBillerCategories(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetBillerCategories * SOAP_FMAC4 soap_in__interswitch__GetBillerCategories(struct soap *soap, const char *tag, _interswitch__GetBillerCategories *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetBillerCategories *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetBillerCategories, sizeof(_interswitch__GetBillerCategories), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetBillerCategories) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetBillerCategories *)a->soap_in(soap, tag, type); + } + } + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetBillerCategories *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetBillerCategories, 0, sizeof(_interswitch__GetBillerCategories), 0, soap_copy__interswitch__GetBillerCategories); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetBillerCategories::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetBillerCategories); + if (this->soap_out(soap, tag?tag:"interswitch:GetBillerCategories", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetBillerCategories::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetBillerCategories(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetBillerCategories * SOAP_FMAC4 soap_get__interswitch__GetBillerCategories(struct soap *soap, _interswitch__GetBillerCategories *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetBillerCategories(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetBillerCategories * SOAP_FMAC2 soap_instantiate__interswitch__GetBillerCategories(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetBillerCategories(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetBillerCategories, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetBillerCategories); + if (size) + *size = sizeof(_interswitch__GetBillerCategories); + ((_interswitch__GetBillerCategories*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetBillerCategories[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetBillerCategories); + for (int i = 0; i < n; i++) + ((_interswitch__GetBillerCategories*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetBillerCategories*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetBillerCategories(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetBillerCategories %p -> %p\n", q, p)); + *(_interswitch__GetBillerCategories*)p = *(_interswitch__GetBillerCategories*)q; +} + +void _interswitch__GetBillerPaymentItemsResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetBillerPaymentItemsResponse::GetBillerPaymentItemsResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetBillerPaymentItemsResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetBillerPaymentItemsResponse::GetBillerPaymentItemsResult); + /* transient soap skipped */ +} + +int _interswitch__GetBillerPaymentItemsResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetBillerPaymentItemsResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetBillerPaymentItemsResponse(struct soap *soap, const char *tag, int id, const _interswitch__GetBillerPaymentItemsResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse), type)) + return soap->error; + if (a->GetBillerPaymentItemsResult) + soap_element_result(soap, "interswitch:GetBillerPaymentItemsResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:GetBillerPaymentItemsResult", -1, &(a->_interswitch__GetBillerPaymentItemsResponse::GetBillerPaymentItemsResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetBillerPaymentItemsResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetBillerPaymentItemsResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetBillerPaymentItemsResponse * SOAP_FMAC4 soap_in__interswitch__GetBillerPaymentItemsResponse(struct soap *soap, const char *tag, _interswitch__GetBillerPaymentItemsResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetBillerPaymentItemsResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse, sizeof(_interswitch__GetBillerPaymentItemsResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetBillerPaymentItemsResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_GetBillerPaymentItemsResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_GetBillerPaymentItemsResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:GetBillerPaymentItemsResult", &(a->_interswitch__GetBillerPaymentItemsResponse::GetBillerPaymentItemsResult), "xsd:string")) + { soap_flag_GetBillerPaymentItemsResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:GetBillerPaymentItemsResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetBillerPaymentItemsResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse, 0, sizeof(_interswitch__GetBillerPaymentItemsResponse), 0, soap_copy__interswitch__GetBillerPaymentItemsResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetBillerPaymentItemsResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse); + if (this->soap_out(soap, tag?tag:"interswitch:GetBillerPaymentItemsResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetBillerPaymentItemsResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetBillerPaymentItemsResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetBillerPaymentItemsResponse * SOAP_FMAC4 soap_get__interswitch__GetBillerPaymentItemsResponse(struct soap *soap, _interswitch__GetBillerPaymentItemsResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetBillerPaymentItemsResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetBillerPaymentItemsResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetBillerPaymentItemsResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetBillerPaymentItemsResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetBillerPaymentItemsResponse); + if (size) + *size = sizeof(_interswitch__GetBillerPaymentItemsResponse); + ((_interswitch__GetBillerPaymentItemsResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetBillerPaymentItemsResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetBillerPaymentItemsResponse); + for (int i = 0; i < n; i++) + ((_interswitch__GetBillerPaymentItemsResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetBillerPaymentItemsResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetBillerPaymentItemsResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetBillerPaymentItemsResponse %p -> %p\n", q, p)); + *(_interswitch__GetBillerPaymentItemsResponse*)p = *(_interswitch__GetBillerPaymentItemsResponse*)q; +} + +void _interswitch__GetBillerPaymentItems::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetBillerPaymentItems::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetBillerPaymentItems::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetBillerPaymentItems::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__GetBillerPaymentItems::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetBillerPaymentItems(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetBillerPaymentItems(struct soap *soap, const char *tag, int id, const _interswitch__GetBillerPaymentItems *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__GetBillerPaymentItems::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetBillerPaymentItems::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetBillerPaymentItems(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetBillerPaymentItems * SOAP_FMAC4 soap_in__interswitch__GetBillerPaymentItems(struct soap *soap, const char *tag, _interswitch__GetBillerPaymentItems *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetBillerPaymentItems *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems, sizeof(_interswitch__GetBillerPaymentItems), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetBillerPaymentItems *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__GetBillerPaymentItems::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetBillerPaymentItems *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems, 0, sizeof(_interswitch__GetBillerPaymentItems), 0, soap_copy__interswitch__GetBillerPaymentItems); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetBillerPaymentItems::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems); + if (this->soap_out(soap, tag?tag:"interswitch:GetBillerPaymentItems", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetBillerPaymentItems::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetBillerPaymentItems(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetBillerPaymentItems * SOAP_FMAC4 soap_get__interswitch__GetBillerPaymentItems(struct soap *soap, _interswitch__GetBillerPaymentItems *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetBillerPaymentItems(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetBillerPaymentItems * SOAP_FMAC2 soap_instantiate__interswitch__GetBillerPaymentItems(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetBillerPaymentItems(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetBillerPaymentItems); + if (size) + *size = sizeof(_interswitch__GetBillerPaymentItems); + ((_interswitch__GetBillerPaymentItems*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetBillerPaymentItems[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetBillerPaymentItems); + for (int i = 0; i < n; i++) + ((_interswitch__GetBillerPaymentItems*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetBillerPaymentItems*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetBillerPaymentItems(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetBillerPaymentItems %p -> %p\n", q, p)); + *(_interswitch__GetBillerPaymentItems*)p = *(_interswitch__GetBillerPaymentItems*)q; +} + +void _interswitch__GetFeaturedBillersResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetFeaturedBillersResponse::GetFeaturedBillersResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetFeaturedBillersResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetFeaturedBillersResponse::GetFeaturedBillersResult); + /* transient soap skipped */ +} + +int _interswitch__GetFeaturedBillersResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetFeaturedBillersResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetFeaturedBillersResponse(struct soap *soap, const char *tag, int id, const _interswitch__GetFeaturedBillersResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse), type)) + return soap->error; + if (a->GetFeaturedBillersResult) + soap_element_result(soap, "interswitch:GetFeaturedBillersResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:GetFeaturedBillersResult", -1, &(a->_interswitch__GetFeaturedBillersResponse::GetFeaturedBillersResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetFeaturedBillersResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetFeaturedBillersResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetFeaturedBillersResponse * SOAP_FMAC4 soap_in__interswitch__GetFeaturedBillersResponse(struct soap *soap, const char *tag, _interswitch__GetFeaturedBillersResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetFeaturedBillersResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse, sizeof(_interswitch__GetFeaturedBillersResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetFeaturedBillersResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_GetFeaturedBillersResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_GetFeaturedBillersResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:GetFeaturedBillersResult", &(a->_interswitch__GetFeaturedBillersResponse::GetFeaturedBillersResult), "xsd:string")) + { soap_flag_GetFeaturedBillersResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:GetFeaturedBillersResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetFeaturedBillersResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse, 0, sizeof(_interswitch__GetFeaturedBillersResponse), 0, soap_copy__interswitch__GetFeaturedBillersResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetFeaturedBillersResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse); + if (this->soap_out(soap, tag?tag:"interswitch:GetFeaturedBillersResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetFeaturedBillersResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetFeaturedBillersResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetFeaturedBillersResponse * SOAP_FMAC4 soap_get__interswitch__GetFeaturedBillersResponse(struct soap *soap, _interswitch__GetFeaturedBillersResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetFeaturedBillersResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetFeaturedBillersResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetFeaturedBillersResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetFeaturedBillersResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetFeaturedBillersResponse); + if (size) + *size = sizeof(_interswitch__GetFeaturedBillersResponse); + ((_interswitch__GetFeaturedBillersResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetFeaturedBillersResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetFeaturedBillersResponse); + for (int i = 0; i < n; i++) + ((_interswitch__GetFeaturedBillersResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetFeaturedBillersResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetFeaturedBillersResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetFeaturedBillersResponse %p -> %p\n", q, p)); + *(_interswitch__GetFeaturedBillersResponse*)p = *(_interswitch__GetFeaturedBillersResponse*)q; +} + +void _interswitch__GetFeaturedBillers::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetFeaturedBillers::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetFeaturedBillers::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetFeaturedBillers::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__GetFeaturedBillers::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetFeaturedBillers(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetFeaturedBillers(struct soap *soap, const char *tag, int id, const _interswitch__GetFeaturedBillers *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__GetFeaturedBillers::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetFeaturedBillers::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetFeaturedBillers(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetFeaturedBillers * SOAP_FMAC4 soap_in__interswitch__GetFeaturedBillers(struct soap *soap, const char *tag, _interswitch__GetFeaturedBillers *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetFeaturedBillers *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers, sizeof(_interswitch__GetFeaturedBillers), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetFeaturedBillers *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__GetFeaturedBillers::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetFeaturedBillers *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers, 0, sizeof(_interswitch__GetFeaturedBillers), 0, soap_copy__interswitch__GetFeaturedBillers); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetFeaturedBillers::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers); + if (this->soap_out(soap, tag?tag:"interswitch:GetFeaturedBillers", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetFeaturedBillers::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetFeaturedBillers(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetFeaturedBillers * SOAP_FMAC4 soap_get__interswitch__GetFeaturedBillers(struct soap *soap, _interswitch__GetFeaturedBillers *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetFeaturedBillers(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetFeaturedBillers * SOAP_FMAC2 soap_instantiate__interswitch__GetFeaturedBillers(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetFeaturedBillers(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetFeaturedBillers); + if (size) + *size = sizeof(_interswitch__GetFeaturedBillers); + ((_interswitch__GetFeaturedBillers*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetFeaturedBillers[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetFeaturedBillers); + for (int i = 0; i < n; i++) + ((_interswitch__GetFeaturedBillers*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetFeaturedBillers*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetFeaturedBillers(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetFeaturedBillers %p -> %p\n", q, p)); + *(_interswitch__GetFeaturedBillers*)p = *(_interswitch__GetFeaturedBillers*)q; +} + +void _interswitch__GetLatestBillersResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetLatestBillersResponse::GetLatestBillersResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetLatestBillersResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetLatestBillersResponse::GetLatestBillersResult); + /* transient soap skipped */ +} + +int _interswitch__GetLatestBillersResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetLatestBillersResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetLatestBillersResponse(struct soap *soap, const char *tag, int id, const _interswitch__GetLatestBillersResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse), type)) + return soap->error; + if (a->GetLatestBillersResult) + soap_element_result(soap, "interswitch:GetLatestBillersResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:GetLatestBillersResult", -1, &(a->_interswitch__GetLatestBillersResponse::GetLatestBillersResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetLatestBillersResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetLatestBillersResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetLatestBillersResponse * SOAP_FMAC4 soap_in__interswitch__GetLatestBillersResponse(struct soap *soap, const char *tag, _interswitch__GetLatestBillersResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetLatestBillersResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse, sizeof(_interswitch__GetLatestBillersResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetLatestBillersResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_GetLatestBillersResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_GetLatestBillersResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:GetLatestBillersResult", &(a->_interswitch__GetLatestBillersResponse::GetLatestBillersResult), "xsd:string")) + { soap_flag_GetLatestBillersResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:GetLatestBillersResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetLatestBillersResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse, 0, sizeof(_interswitch__GetLatestBillersResponse), 0, soap_copy__interswitch__GetLatestBillersResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetLatestBillersResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse); + if (this->soap_out(soap, tag?tag:"interswitch:GetLatestBillersResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetLatestBillersResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetLatestBillersResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetLatestBillersResponse * SOAP_FMAC4 soap_get__interswitch__GetLatestBillersResponse(struct soap *soap, _interswitch__GetLatestBillersResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetLatestBillersResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetLatestBillersResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetLatestBillersResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetLatestBillersResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetLatestBillersResponse); + if (size) + *size = sizeof(_interswitch__GetLatestBillersResponse); + ((_interswitch__GetLatestBillersResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetLatestBillersResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetLatestBillersResponse); + for (int i = 0; i < n; i++) + ((_interswitch__GetLatestBillersResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetLatestBillersResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetLatestBillersResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetLatestBillersResponse %p -> %p\n", q, p)); + *(_interswitch__GetLatestBillersResponse*)p = *(_interswitch__GetLatestBillersResponse*)q; +} + +void _interswitch__GetLatestBillers::soap_default(struct soap *soap) +{ + this->soap = soap; + /* transient soap skipped */ +} + +void _interswitch__GetLatestBillers::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + /* transient soap skipped */ +} + +int _interswitch__GetLatestBillers::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetLatestBillers(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetLatestBillers(struct soap *soap, const char *tag, int id, const _interswitch__GetLatestBillers *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetLatestBillers), type)) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetLatestBillers::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetLatestBillers(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetLatestBillers * SOAP_FMAC4 soap_in__interswitch__GetLatestBillers(struct soap *soap, const char *tag, _interswitch__GetLatestBillers *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetLatestBillers *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetLatestBillers, sizeof(_interswitch__GetLatestBillers), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetLatestBillers) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetLatestBillers *)a->soap_in(soap, tag, type); + } + } + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetLatestBillers *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetLatestBillers, 0, sizeof(_interswitch__GetLatestBillers), 0, soap_copy__interswitch__GetLatestBillers); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetLatestBillers::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetLatestBillers); + if (this->soap_out(soap, tag?tag:"interswitch:GetLatestBillers", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetLatestBillers::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetLatestBillers(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetLatestBillers * SOAP_FMAC4 soap_get__interswitch__GetLatestBillers(struct soap *soap, _interswitch__GetLatestBillers *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetLatestBillers(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetLatestBillers * SOAP_FMAC2 soap_instantiate__interswitch__GetLatestBillers(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetLatestBillers(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetLatestBillers, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetLatestBillers); + if (size) + *size = sizeof(_interswitch__GetLatestBillers); + ((_interswitch__GetLatestBillers*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetLatestBillers[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetLatestBillers); + for (int i = 0; i < n; i++) + ((_interswitch__GetLatestBillers*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetLatestBillers*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetLatestBillers(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetLatestBillers %p -> %p\n", q, p)); + *(_interswitch__GetLatestBillers*)p = *(_interswitch__GetLatestBillers*)q; +} + +void _interswitch__GetBillersResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetBillersResponse::GetBillersResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetBillersResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetBillersResponse::GetBillersResult); + /* transient soap skipped */ +} + +int _interswitch__GetBillersResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetBillersResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetBillersResponse(struct soap *soap, const char *tag, int id, const _interswitch__GetBillersResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetBillersResponse), type)) + return soap->error; + if (a->GetBillersResult) + soap_element_result(soap, "interswitch:GetBillersResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:GetBillersResult", -1, &(a->_interswitch__GetBillersResponse::GetBillersResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetBillersResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetBillersResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetBillersResponse * SOAP_FMAC4 soap_in__interswitch__GetBillersResponse(struct soap *soap, const char *tag, _interswitch__GetBillersResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetBillersResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetBillersResponse, sizeof(_interswitch__GetBillersResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetBillersResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetBillersResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_GetBillersResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_GetBillersResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:GetBillersResult", &(a->_interswitch__GetBillersResponse::GetBillersResult), "xsd:string")) + { soap_flag_GetBillersResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:GetBillersResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetBillersResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetBillersResponse, 0, sizeof(_interswitch__GetBillersResponse), 0, soap_copy__interswitch__GetBillersResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetBillersResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetBillersResponse); + if (this->soap_out(soap, tag?tag:"interswitch:GetBillersResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetBillersResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetBillersResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetBillersResponse * SOAP_FMAC4 soap_get__interswitch__GetBillersResponse(struct soap *soap, _interswitch__GetBillersResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetBillersResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetBillersResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetBillersResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetBillersResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetBillersResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetBillersResponse); + if (size) + *size = sizeof(_interswitch__GetBillersResponse); + ((_interswitch__GetBillersResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetBillersResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetBillersResponse); + for (int i = 0; i < n; i++) + ((_interswitch__GetBillersResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetBillersResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetBillersResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetBillersResponse %p -> %p\n", q, p)); + *(_interswitch__GetBillersResponse*)p = *(_interswitch__GetBillersResponse*)q; +} + +void _interswitch__GetBillers::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetBillers::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetBillers::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetBillers::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__GetBillers::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetBillers(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetBillers(struct soap *soap, const char *tag, int id, const _interswitch__GetBillers *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetBillers), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__GetBillers::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetBillers::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetBillers(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetBillers * SOAP_FMAC4 soap_in__interswitch__GetBillers(struct soap *soap, const char *tag, _interswitch__GetBillers *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetBillers *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetBillers, sizeof(_interswitch__GetBillers), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetBillers) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetBillers *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__GetBillers::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetBillers *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetBillers, 0, sizeof(_interswitch__GetBillers), 0, soap_copy__interswitch__GetBillers); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetBillers::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetBillers); + if (this->soap_out(soap, tag?tag:"interswitch:GetBillers", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetBillers::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetBillers(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetBillers * SOAP_FMAC4 soap_get__interswitch__GetBillers(struct soap *soap, _interswitch__GetBillers *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetBillers(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetBillers * SOAP_FMAC2 soap_instantiate__interswitch__GetBillers(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetBillers(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetBillers, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetBillers); + if (size) + *size = sizeof(_interswitch__GetBillers); + ((_interswitch__GetBillers*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetBillers[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetBillers); + for (int i = 0; i < n; i++) + ((_interswitch__GetBillers*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetBillers*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetBillers(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetBillers %p -> %p\n", q, p)); + *(_interswitch__GetBillers*)p = *(_interswitch__GetBillers*)q; +} + +void _interswitch__GetUserResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetUserResponse::GetUserResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetUserResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetUserResponse::GetUserResult); + /* transient soap skipped */ +} + +int _interswitch__GetUserResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetUserResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetUserResponse(struct soap *soap, const char *tag, int id, const _interswitch__GetUserResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetUserResponse), type)) + return soap->error; + if (a->GetUserResult) + soap_element_result(soap, "interswitch:GetUserResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:GetUserResult", -1, &(a->_interswitch__GetUserResponse::GetUserResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetUserResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetUserResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetUserResponse * SOAP_FMAC4 soap_in__interswitch__GetUserResponse(struct soap *soap, const char *tag, _interswitch__GetUserResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetUserResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetUserResponse, sizeof(_interswitch__GetUserResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetUserResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetUserResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_GetUserResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_GetUserResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:GetUserResult", &(a->_interswitch__GetUserResponse::GetUserResult), "xsd:string")) + { soap_flag_GetUserResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:GetUserResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetUserResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetUserResponse, 0, sizeof(_interswitch__GetUserResponse), 0, soap_copy__interswitch__GetUserResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetUserResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetUserResponse); + if (this->soap_out(soap, tag?tag:"interswitch:GetUserResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetUserResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetUserResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetUserResponse * SOAP_FMAC4 soap_get__interswitch__GetUserResponse(struct soap *soap, _interswitch__GetUserResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetUserResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetUserResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetUserResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetUserResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetUserResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetUserResponse); + if (size) + *size = sizeof(_interswitch__GetUserResponse); + ((_interswitch__GetUserResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetUserResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetUserResponse); + for (int i = 0; i < n; i++) + ((_interswitch__GetUserResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetUserResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetUserResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetUserResponse %p -> %p\n", q, p)); + *(_interswitch__GetUserResponse*)p = *(_interswitch__GetUserResponse*)q; +} + +void _interswitch__GetUser::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetUser::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetUser::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetUser::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__GetUser::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetUser(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetUser(struct soap *soap, const char *tag, int id, const _interswitch__GetUser *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetUser), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__GetUser::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetUser::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetUser(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetUser * SOAP_FMAC4 soap_in__interswitch__GetUser(struct soap *soap, const char *tag, _interswitch__GetUser *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetUser *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetUser, sizeof(_interswitch__GetUser), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetUser) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetUser *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__GetUser::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetUser *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetUser, 0, sizeof(_interswitch__GetUser), 0, soap_copy__interswitch__GetUser); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetUser::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetUser); + if (this->soap_out(soap, tag?tag:"interswitch:GetUser", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetUser::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetUser(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetUser * SOAP_FMAC4 soap_get__interswitch__GetUser(struct soap *soap, _interswitch__GetUser *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetUser(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetUser * SOAP_FMAC2 soap_instantiate__interswitch__GetUser(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetUser(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetUser, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetUser); + if (size) + *size = sizeof(_interswitch__GetUser); + ((_interswitch__GetUser*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetUser[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetUser); + for (int i = 0; i < n; i++) + ((_interswitch__GetUser*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetUser*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetUser(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetUser %p -> %p\n", q, p)); + *(_interswitch__GetUser*)p = *(_interswitch__GetUser*)q; +} + +void _interswitch__AuthenticateUserSecurityTokenResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__AuthenticateUserSecurityTokenResponse::AuthenticateUserSecurityTokenResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__AuthenticateUserSecurityTokenResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__AuthenticateUserSecurityTokenResponse::AuthenticateUserSecurityTokenResult); + /* transient soap skipped */ +} + +int _interswitch__AuthenticateUserSecurityTokenResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__AuthenticateUserSecurityTokenResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthenticateUserSecurityTokenResponse(struct soap *soap, const char *tag, int id, const _interswitch__AuthenticateUserSecurityTokenResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse), type)) + return soap->error; + if (a->AuthenticateUserSecurityTokenResult) + soap_element_result(soap, "interswitch:AuthenticateUserSecurityTokenResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:AuthenticateUserSecurityTokenResult", -1, &(a->_interswitch__AuthenticateUserSecurityTokenResponse::AuthenticateUserSecurityTokenResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__AuthenticateUserSecurityTokenResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__AuthenticateUserSecurityTokenResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__AuthenticateUserSecurityTokenResponse * SOAP_FMAC4 soap_in__interswitch__AuthenticateUserSecurityTokenResponse(struct soap *soap, const char *tag, _interswitch__AuthenticateUserSecurityTokenResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__AuthenticateUserSecurityTokenResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse, sizeof(_interswitch__AuthenticateUserSecurityTokenResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__AuthenticateUserSecurityTokenResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_AuthenticateUserSecurityTokenResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_AuthenticateUserSecurityTokenResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:AuthenticateUserSecurityTokenResult", &(a->_interswitch__AuthenticateUserSecurityTokenResponse::AuthenticateUserSecurityTokenResult), "xsd:string")) + { soap_flag_AuthenticateUserSecurityTokenResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:AuthenticateUserSecurityTokenResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__AuthenticateUserSecurityTokenResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse, 0, sizeof(_interswitch__AuthenticateUserSecurityTokenResponse), 0, soap_copy__interswitch__AuthenticateUserSecurityTokenResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__AuthenticateUserSecurityTokenResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse); + if (this->soap_out(soap, tag?tag:"interswitch:AuthenticateUserSecurityTokenResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__AuthenticateUserSecurityTokenResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__AuthenticateUserSecurityTokenResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__AuthenticateUserSecurityTokenResponse * SOAP_FMAC4 soap_get__interswitch__AuthenticateUserSecurityTokenResponse(struct soap *soap, _interswitch__AuthenticateUserSecurityTokenResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__AuthenticateUserSecurityTokenResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__AuthenticateUserSecurityTokenResponse * SOAP_FMAC2 soap_instantiate__interswitch__AuthenticateUserSecurityTokenResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__AuthenticateUserSecurityTokenResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthenticateUserSecurityTokenResponse); + if (size) + *size = sizeof(_interswitch__AuthenticateUserSecurityTokenResponse); + ((_interswitch__AuthenticateUserSecurityTokenResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthenticateUserSecurityTokenResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__AuthenticateUserSecurityTokenResponse); + for (int i = 0; i < n; i++) + ((_interswitch__AuthenticateUserSecurityTokenResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__AuthenticateUserSecurityTokenResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthenticateUserSecurityTokenResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__AuthenticateUserSecurityTokenResponse %p -> %p\n", q, p)); + *(_interswitch__AuthenticateUserSecurityTokenResponse*)p = *(_interswitch__AuthenticateUserSecurityTokenResponse*)q; +} + +void _interswitch__AuthenticateUserSecurityToken::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__AuthenticateUserSecurityToken::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__AuthenticateUserSecurityToken::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__AuthenticateUserSecurityToken::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__AuthenticateUserSecurityToken::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__AuthenticateUserSecurityToken(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthenticateUserSecurityToken(struct soap *soap, const char *tag, int id, const _interswitch__AuthenticateUserSecurityToken *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__AuthenticateUserSecurityToken::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__AuthenticateUserSecurityToken::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__AuthenticateUserSecurityToken(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__AuthenticateUserSecurityToken * SOAP_FMAC4 soap_in__interswitch__AuthenticateUserSecurityToken(struct soap *soap, const char *tag, _interswitch__AuthenticateUserSecurityToken *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__AuthenticateUserSecurityToken *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken, sizeof(_interswitch__AuthenticateUserSecurityToken), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__AuthenticateUserSecurityToken *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__AuthenticateUserSecurityToken::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__AuthenticateUserSecurityToken *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken, 0, sizeof(_interswitch__AuthenticateUserSecurityToken), 0, soap_copy__interswitch__AuthenticateUserSecurityToken); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__AuthenticateUserSecurityToken::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken); + if (this->soap_out(soap, tag?tag:"interswitch:AuthenticateUserSecurityToken", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__AuthenticateUserSecurityToken::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__AuthenticateUserSecurityToken(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__AuthenticateUserSecurityToken * SOAP_FMAC4 soap_get__interswitch__AuthenticateUserSecurityToken(struct soap *soap, _interswitch__AuthenticateUserSecurityToken *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__AuthenticateUserSecurityToken(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__AuthenticateUserSecurityToken * SOAP_FMAC2 soap_instantiate__interswitch__AuthenticateUserSecurityToken(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__AuthenticateUserSecurityToken(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthenticateUserSecurityToken); + if (size) + *size = sizeof(_interswitch__AuthenticateUserSecurityToken); + ((_interswitch__AuthenticateUserSecurityToken*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthenticateUserSecurityToken[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__AuthenticateUserSecurityToken); + for (int i = 0; i < n; i++) + ((_interswitch__AuthenticateUserSecurityToken*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__AuthenticateUserSecurityToken*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthenticateUserSecurityToken(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__AuthenticateUserSecurityToken %p -> %p\n", q, p)); + *(_interswitch__AuthenticateUserSecurityToken*)p = *(_interswitch__AuthenticateUserSecurityToken*)q; +} + +void _interswitch__AuthenticateUserResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__AuthenticateUserResponse::AuthenticateUserResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__AuthenticateUserResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__AuthenticateUserResponse::AuthenticateUserResult); + /* transient soap skipped */ +} + +int _interswitch__AuthenticateUserResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__AuthenticateUserResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthenticateUserResponse(struct soap *soap, const char *tag, int id, const _interswitch__AuthenticateUserResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse), type)) + return soap->error; + if (a->AuthenticateUserResult) + soap_element_result(soap, "interswitch:AuthenticateUserResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:AuthenticateUserResult", -1, &(a->_interswitch__AuthenticateUserResponse::AuthenticateUserResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__AuthenticateUserResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__AuthenticateUserResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__AuthenticateUserResponse * SOAP_FMAC4 soap_in__interswitch__AuthenticateUserResponse(struct soap *soap, const char *tag, _interswitch__AuthenticateUserResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__AuthenticateUserResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse, sizeof(_interswitch__AuthenticateUserResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__AuthenticateUserResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_AuthenticateUserResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_AuthenticateUserResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:AuthenticateUserResult", &(a->_interswitch__AuthenticateUserResponse::AuthenticateUserResult), "xsd:string")) + { soap_flag_AuthenticateUserResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:AuthenticateUserResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__AuthenticateUserResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse, 0, sizeof(_interswitch__AuthenticateUserResponse), 0, soap_copy__interswitch__AuthenticateUserResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__AuthenticateUserResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse); + if (this->soap_out(soap, tag?tag:"interswitch:AuthenticateUserResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__AuthenticateUserResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__AuthenticateUserResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__AuthenticateUserResponse * SOAP_FMAC4 soap_get__interswitch__AuthenticateUserResponse(struct soap *soap, _interswitch__AuthenticateUserResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__AuthenticateUserResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__AuthenticateUserResponse * SOAP_FMAC2 soap_instantiate__interswitch__AuthenticateUserResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__AuthenticateUserResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthenticateUserResponse); + if (size) + *size = sizeof(_interswitch__AuthenticateUserResponse); + ((_interswitch__AuthenticateUserResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthenticateUserResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__AuthenticateUserResponse); + for (int i = 0; i < n; i++) + ((_interswitch__AuthenticateUserResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__AuthenticateUserResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthenticateUserResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__AuthenticateUserResponse %p -> %p\n", q, p)); + *(_interswitch__AuthenticateUserResponse*)p = *(_interswitch__AuthenticateUserResponse*)q; +} + +void _interswitch__AuthenticateUser::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__AuthenticateUser::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__AuthenticateUser::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__AuthenticateUser::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__AuthenticateUser::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__AuthenticateUser(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthenticateUser(struct soap *soap, const char *tag, int id, const _interswitch__AuthenticateUser *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__AuthenticateUser), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__AuthenticateUser::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__AuthenticateUser::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__AuthenticateUser(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__AuthenticateUser * SOAP_FMAC4 soap_in__interswitch__AuthenticateUser(struct soap *soap, const char *tag, _interswitch__AuthenticateUser *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__AuthenticateUser *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__AuthenticateUser, sizeof(_interswitch__AuthenticateUser), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__AuthenticateUser) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__AuthenticateUser *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__AuthenticateUser::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__AuthenticateUser *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__AuthenticateUser, 0, sizeof(_interswitch__AuthenticateUser), 0, soap_copy__interswitch__AuthenticateUser); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__AuthenticateUser::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__AuthenticateUser); + if (this->soap_out(soap, tag?tag:"interswitch:AuthenticateUser", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__AuthenticateUser::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__AuthenticateUser(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__AuthenticateUser * SOAP_FMAC4 soap_get__interswitch__AuthenticateUser(struct soap *soap, _interswitch__AuthenticateUser *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__AuthenticateUser(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__AuthenticateUser * SOAP_FMAC2 soap_instantiate__interswitch__AuthenticateUser(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__AuthenticateUser(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__AuthenticateUser, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthenticateUser); + if (size) + *size = sizeof(_interswitch__AuthenticateUser); + ((_interswitch__AuthenticateUser*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthenticateUser[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__AuthenticateUser); + for (int i = 0; i < n; i++) + ((_interswitch__AuthenticateUser*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__AuthenticateUser*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthenticateUser(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__AuthenticateUser %p -> %p\n", q, p)); + *(_interswitch__AuthenticateUser*)p = *(_interswitch__AuthenticateUser*)q; +} + +void _interswitch__ResetPasswordResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__ResetPasswordResponse::ResetPasswordResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__ResetPasswordResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__ResetPasswordResponse::ResetPasswordResult); + /* transient soap skipped */ +} + +int _interswitch__ResetPasswordResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__ResetPasswordResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ResetPasswordResponse(struct soap *soap, const char *tag, int id, const _interswitch__ResetPasswordResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse), type)) + return soap->error; + if (a->ResetPasswordResult) + soap_element_result(soap, "interswitch:ResetPasswordResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:ResetPasswordResult", -1, &(a->_interswitch__ResetPasswordResponse::ResetPasswordResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__ResetPasswordResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__ResetPasswordResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__ResetPasswordResponse * SOAP_FMAC4 soap_in__interswitch__ResetPasswordResponse(struct soap *soap, const char *tag, _interswitch__ResetPasswordResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__ResetPasswordResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse, sizeof(_interswitch__ResetPasswordResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__ResetPasswordResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_ResetPasswordResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_ResetPasswordResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:ResetPasswordResult", &(a->_interswitch__ResetPasswordResponse::ResetPasswordResult), "xsd:string")) + { soap_flag_ResetPasswordResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:ResetPasswordResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__ResetPasswordResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse, 0, sizeof(_interswitch__ResetPasswordResponse), 0, soap_copy__interswitch__ResetPasswordResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__ResetPasswordResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse); + if (this->soap_out(soap, tag?tag:"interswitch:ResetPasswordResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__ResetPasswordResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__ResetPasswordResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__ResetPasswordResponse * SOAP_FMAC4 soap_get__interswitch__ResetPasswordResponse(struct soap *soap, _interswitch__ResetPasswordResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__ResetPasswordResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__ResetPasswordResponse * SOAP_FMAC2 soap_instantiate__interswitch__ResetPasswordResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__ResetPasswordResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__ResetPasswordResponse); + if (size) + *size = sizeof(_interswitch__ResetPasswordResponse); + ((_interswitch__ResetPasswordResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__ResetPasswordResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__ResetPasswordResponse); + for (int i = 0; i < n; i++) + ((_interswitch__ResetPasswordResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__ResetPasswordResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ResetPasswordResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__ResetPasswordResponse %p -> %p\n", q, p)); + *(_interswitch__ResetPasswordResponse*)p = *(_interswitch__ResetPasswordResponse*)q; +} + +void _interswitch__ResetPassword::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__ResetPassword::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__ResetPassword::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__ResetPassword::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__ResetPassword::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__ResetPassword(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ResetPassword(struct soap *soap, const char *tag, int id, const _interswitch__ResetPassword *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__ResetPassword), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__ResetPassword::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__ResetPassword::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__ResetPassword(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__ResetPassword * SOAP_FMAC4 soap_in__interswitch__ResetPassword(struct soap *soap, const char *tag, _interswitch__ResetPassword *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__ResetPassword *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__ResetPassword, sizeof(_interswitch__ResetPassword), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__ResetPassword) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__ResetPassword *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__ResetPassword::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__ResetPassword *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__ResetPassword, 0, sizeof(_interswitch__ResetPassword), 0, soap_copy__interswitch__ResetPassword); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__ResetPassword::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__ResetPassword); + if (this->soap_out(soap, tag?tag:"interswitch:ResetPassword", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__ResetPassword::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__ResetPassword(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__ResetPassword * SOAP_FMAC4 soap_get__interswitch__ResetPassword(struct soap *soap, _interswitch__ResetPassword *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__ResetPassword(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__ResetPassword * SOAP_FMAC2 soap_instantiate__interswitch__ResetPassword(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__ResetPassword(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__ResetPassword, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__ResetPassword); + if (size) + *size = sizeof(_interswitch__ResetPassword); + ((_interswitch__ResetPassword*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__ResetPassword[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__ResetPassword); + for (int i = 0; i < n; i++) + ((_interswitch__ResetPassword*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__ResetPassword*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ResetPassword(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__ResetPassword %p -> %p\n", q, p)); + *(_interswitch__ResetPassword*)p = *(_interswitch__ResetPassword*)q; +} + +void _interswitch__ChangePasswordResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__ChangePasswordResponse::ChangePasswordResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__ChangePasswordResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__ChangePasswordResponse::ChangePasswordResult); + /* transient soap skipped */ +} + +int _interswitch__ChangePasswordResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__ChangePasswordResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ChangePasswordResponse(struct soap *soap, const char *tag, int id, const _interswitch__ChangePasswordResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse), type)) + return soap->error; + if (a->ChangePasswordResult) + soap_element_result(soap, "interswitch:ChangePasswordResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:ChangePasswordResult", -1, &(a->_interswitch__ChangePasswordResponse::ChangePasswordResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__ChangePasswordResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__ChangePasswordResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__ChangePasswordResponse * SOAP_FMAC4 soap_in__interswitch__ChangePasswordResponse(struct soap *soap, const char *tag, _interswitch__ChangePasswordResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__ChangePasswordResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse, sizeof(_interswitch__ChangePasswordResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__ChangePasswordResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_ChangePasswordResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_ChangePasswordResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:ChangePasswordResult", &(a->_interswitch__ChangePasswordResponse::ChangePasswordResult), "xsd:string")) + { soap_flag_ChangePasswordResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:ChangePasswordResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__ChangePasswordResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse, 0, sizeof(_interswitch__ChangePasswordResponse), 0, soap_copy__interswitch__ChangePasswordResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__ChangePasswordResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse); + if (this->soap_out(soap, tag?tag:"interswitch:ChangePasswordResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__ChangePasswordResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__ChangePasswordResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__ChangePasswordResponse * SOAP_FMAC4 soap_get__interswitch__ChangePasswordResponse(struct soap *soap, _interswitch__ChangePasswordResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__ChangePasswordResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__ChangePasswordResponse * SOAP_FMAC2 soap_instantiate__interswitch__ChangePasswordResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__ChangePasswordResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__ChangePasswordResponse); + if (size) + *size = sizeof(_interswitch__ChangePasswordResponse); + ((_interswitch__ChangePasswordResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__ChangePasswordResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__ChangePasswordResponse); + for (int i = 0; i < n; i++) + ((_interswitch__ChangePasswordResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__ChangePasswordResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ChangePasswordResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__ChangePasswordResponse %p -> %p\n", q, p)); + *(_interswitch__ChangePasswordResponse*)p = *(_interswitch__ChangePasswordResponse*)q; +} + +void _interswitch__ChangePassword::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__ChangePassword::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__ChangePassword::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__ChangePassword::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__ChangePassword::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__ChangePassword(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ChangePassword(struct soap *soap, const char *tag, int id, const _interswitch__ChangePassword *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__ChangePassword), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__ChangePassword::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__ChangePassword::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__ChangePassword(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__ChangePassword * SOAP_FMAC4 soap_in__interswitch__ChangePassword(struct soap *soap, const char *tag, _interswitch__ChangePassword *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__ChangePassword *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__ChangePassword, sizeof(_interswitch__ChangePassword), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__ChangePassword) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__ChangePassword *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__ChangePassword::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__ChangePassword *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__ChangePassword, 0, sizeof(_interswitch__ChangePassword), 0, soap_copy__interswitch__ChangePassword); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__ChangePassword::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__ChangePassword); + if (this->soap_out(soap, tag?tag:"interswitch:ChangePassword", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__ChangePassword::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__ChangePassword(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__ChangePassword * SOAP_FMAC4 soap_get__interswitch__ChangePassword(struct soap *soap, _interswitch__ChangePassword *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__ChangePassword(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__ChangePassword * SOAP_FMAC2 soap_instantiate__interswitch__ChangePassword(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__ChangePassword(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__ChangePassword, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__ChangePassword); + if (size) + *size = sizeof(_interswitch__ChangePassword); + ((_interswitch__ChangePassword*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__ChangePassword[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__ChangePassword); + for (int i = 0; i < n; i++) + ((_interswitch__ChangePassword*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__ChangePassword*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ChangePassword(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__ChangePassword %p -> %p\n", q, p)); + *(_interswitch__ChangePassword*)p = *(_interswitch__ChangePassword*)q; +} + +void _interswitch__UpdateUserResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__UpdateUserResponse::UpdateUserResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__UpdateUserResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__UpdateUserResponse::UpdateUserResult); + /* transient soap skipped */ +} + +int _interswitch__UpdateUserResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__UpdateUserResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__UpdateUserResponse(struct soap *soap, const char *tag, int id, const _interswitch__UpdateUserResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__UpdateUserResponse), type)) + return soap->error; + if (a->UpdateUserResult) + soap_element_result(soap, "interswitch:UpdateUserResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:UpdateUserResult", -1, &(a->_interswitch__UpdateUserResponse::UpdateUserResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__UpdateUserResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__UpdateUserResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__UpdateUserResponse * SOAP_FMAC4 soap_in__interswitch__UpdateUserResponse(struct soap *soap, const char *tag, _interswitch__UpdateUserResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__UpdateUserResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__UpdateUserResponse, sizeof(_interswitch__UpdateUserResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__UpdateUserResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__UpdateUserResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_UpdateUserResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_UpdateUserResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:UpdateUserResult", &(a->_interswitch__UpdateUserResponse::UpdateUserResult), "xsd:string")) + { soap_flag_UpdateUserResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:UpdateUserResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__UpdateUserResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__UpdateUserResponse, 0, sizeof(_interswitch__UpdateUserResponse), 0, soap_copy__interswitch__UpdateUserResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__UpdateUserResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__UpdateUserResponse); + if (this->soap_out(soap, tag?tag:"interswitch:UpdateUserResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__UpdateUserResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__UpdateUserResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__UpdateUserResponse * SOAP_FMAC4 soap_get__interswitch__UpdateUserResponse(struct soap *soap, _interswitch__UpdateUserResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__UpdateUserResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__UpdateUserResponse * SOAP_FMAC2 soap_instantiate__interswitch__UpdateUserResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__UpdateUserResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__UpdateUserResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__UpdateUserResponse); + if (size) + *size = sizeof(_interswitch__UpdateUserResponse); + ((_interswitch__UpdateUserResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__UpdateUserResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__UpdateUserResponse); + for (int i = 0; i < n; i++) + ((_interswitch__UpdateUserResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__UpdateUserResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__UpdateUserResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__UpdateUserResponse %p -> %p\n", q, p)); + *(_interswitch__UpdateUserResponse*)p = *(_interswitch__UpdateUserResponse*)q; +} + +void _interswitch__UpdateUser::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__UpdateUser::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__UpdateUser::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__UpdateUser::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__UpdateUser::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__UpdateUser(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__UpdateUser(struct soap *soap, const char *tag, int id, const _interswitch__UpdateUser *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__UpdateUser), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__UpdateUser::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__UpdateUser::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__UpdateUser(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__UpdateUser * SOAP_FMAC4 soap_in__interswitch__UpdateUser(struct soap *soap, const char *tag, _interswitch__UpdateUser *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__UpdateUser *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__UpdateUser, sizeof(_interswitch__UpdateUser), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__UpdateUser) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__UpdateUser *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__UpdateUser::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__UpdateUser *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__UpdateUser, 0, sizeof(_interswitch__UpdateUser), 0, soap_copy__interswitch__UpdateUser); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__UpdateUser::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__UpdateUser); + if (this->soap_out(soap, tag?tag:"interswitch:UpdateUser", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__UpdateUser::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__UpdateUser(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__UpdateUser * SOAP_FMAC4 soap_get__interswitch__UpdateUser(struct soap *soap, _interswitch__UpdateUser *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__UpdateUser(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__UpdateUser * SOAP_FMAC2 soap_instantiate__interswitch__UpdateUser(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__UpdateUser(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__UpdateUser, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__UpdateUser); + if (size) + *size = sizeof(_interswitch__UpdateUser); + ((_interswitch__UpdateUser*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__UpdateUser[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__UpdateUser); + for (int i = 0; i < n; i++) + ((_interswitch__UpdateUser*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__UpdateUser*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__UpdateUser(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__UpdateUser %p -> %p\n", q, p)); + *(_interswitch__UpdateUser*)p = *(_interswitch__UpdateUser*)q; +} + +void _interswitch__ActivateUserResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__ActivateUserResponse::ActivateUserResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__ActivateUserResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__ActivateUserResponse::ActivateUserResult); + /* transient soap skipped */ +} + +int _interswitch__ActivateUserResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__ActivateUserResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ActivateUserResponse(struct soap *soap, const char *tag, int id, const _interswitch__ActivateUserResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__ActivateUserResponse), type)) + return soap->error; + if (a->ActivateUserResult) + soap_element_result(soap, "interswitch:ActivateUserResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:ActivateUserResult", -1, &(a->_interswitch__ActivateUserResponse::ActivateUserResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__ActivateUserResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__ActivateUserResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__ActivateUserResponse * SOAP_FMAC4 soap_in__interswitch__ActivateUserResponse(struct soap *soap, const char *tag, _interswitch__ActivateUserResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__ActivateUserResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__ActivateUserResponse, sizeof(_interswitch__ActivateUserResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__ActivateUserResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__ActivateUserResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_ActivateUserResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_ActivateUserResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:ActivateUserResult", &(a->_interswitch__ActivateUserResponse::ActivateUserResult), "xsd:string")) + { soap_flag_ActivateUserResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:ActivateUserResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__ActivateUserResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__ActivateUserResponse, 0, sizeof(_interswitch__ActivateUserResponse), 0, soap_copy__interswitch__ActivateUserResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__ActivateUserResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__ActivateUserResponse); + if (this->soap_out(soap, tag?tag:"interswitch:ActivateUserResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__ActivateUserResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__ActivateUserResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__ActivateUserResponse * SOAP_FMAC4 soap_get__interswitch__ActivateUserResponse(struct soap *soap, _interswitch__ActivateUserResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__ActivateUserResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__ActivateUserResponse * SOAP_FMAC2 soap_instantiate__interswitch__ActivateUserResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__ActivateUserResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__ActivateUserResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__ActivateUserResponse); + if (size) + *size = sizeof(_interswitch__ActivateUserResponse); + ((_interswitch__ActivateUserResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__ActivateUserResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__ActivateUserResponse); + for (int i = 0; i < n; i++) + ((_interswitch__ActivateUserResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__ActivateUserResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ActivateUserResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__ActivateUserResponse %p -> %p\n", q, p)); + *(_interswitch__ActivateUserResponse*)p = *(_interswitch__ActivateUserResponse*)q; +} + +void _interswitch__ActivateUser::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__ActivateUser::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__ActivateUser::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__ActivateUser::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__ActivateUser::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__ActivateUser(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ActivateUser(struct soap *soap, const char *tag, int id, const _interswitch__ActivateUser *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__ActivateUser), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__ActivateUser::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__ActivateUser::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__ActivateUser(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__ActivateUser * SOAP_FMAC4 soap_in__interswitch__ActivateUser(struct soap *soap, const char *tag, _interswitch__ActivateUser *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__ActivateUser *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__ActivateUser, sizeof(_interswitch__ActivateUser), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__ActivateUser) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__ActivateUser *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__ActivateUser::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__ActivateUser *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__ActivateUser, 0, sizeof(_interswitch__ActivateUser), 0, soap_copy__interswitch__ActivateUser); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__ActivateUser::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__ActivateUser); + if (this->soap_out(soap, tag?tag:"interswitch:ActivateUser", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__ActivateUser::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__ActivateUser(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__ActivateUser * SOAP_FMAC4 soap_get__interswitch__ActivateUser(struct soap *soap, _interswitch__ActivateUser *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__ActivateUser(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__ActivateUser * SOAP_FMAC2 soap_instantiate__interswitch__ActivateUser(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__ActivateUser(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__ActivateUser, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__ActivateUser); + if (size) + *size = sizeof(_interswitch__ActivateUser); + ((_interswitch__ActivateUser*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__ActivateUser[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__ActivateUser); + for (int i = 0; i < n; i++) + ((_interswitch__ActivateUser*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__ActivateUser*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ActivateUser(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__ActivateUser %p -> %p\n", q, p)); + *(_interswitch__ActivateUser*)p = *(_interswitch__ActivateUser*)q; +} + +void _interswitch__CreateUserResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__CreateUserResponse::CreateUserResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__CreateUserResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__CreateUserResponse::CreateUserResult); + /* transient soap skipped */ +} + +int _interswitch__CreateUserResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__CreateUserResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__CreateUserResponse(struct soap *soap, const char *tag, int id, const _interswitch__CreateUserResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__CreateUserResponse), type)) + return soap->error; + if (a->CreateUserResult) + soap_element_result(soap, "interswitch:CreateUserResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:CreateUserResult", -1, &(a->_interswitch__CreateUserResponse::CreateUserResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__CreateUserResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__CreateUserResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__CreateUserResponse * SOAP_FMAC4 soap_in__interswitch__CreateUserResponse(struct soap *soap, const char *tag, _interswitch__CreateUserResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__CreateUserResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__CreateUserResponse, sizeof(_interswitch__CreateUserResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__CreateUserResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__CreateUserResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_CreateUserResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_CreateUserResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:CreateUserResult", &(a->_interswitch__CreateUserResponse::CreateUserResult), "xsd:string")) + { soap_flag_CreateUserResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:CreateUserResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__CreateUserResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__CreateUserResponse, 0, sizeof(_interswitch__CreateUserResponse), 0, soap_copy__interswitch__CreateUserResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__CreateUserResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__CreateUserResponse); + if (this->soap_out(soap, tag?tag:"interswitch:CreateUserResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__CreateUserResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__CreateUserResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__CreateUserResponse * SOAP_FMAC4 soap_get__interswitch__CreateUserResponse(struct soap *soap, _interswitch__CreateUserResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__CreateUserResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__CreateUserResponse * SOAP_FMAC2 soap_instantiate__interswitch__CreateUserResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__CreateUserResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__CreateUserResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__CreateUserResponse); + if (size) + *size = sizeof(_interswitch__CreateUserResponse); + ((_interswitch__CreateUserResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__CreateUserResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__CreateUserResponse); + for (int i = 0; i < n; i++) + ((_interswitch__CreateUserResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__CreateUserResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__CreateUserResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__CreateUserResponse %p -> %p\n", q, p)); + *(_interswitch__CreateUserResponse*)p = *(_interswitch__CreateUserResponse*)q; +} + +void _interswitch__CreateUser::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__CreateUser::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__CreateUser::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__CreateUser::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__CreateUser::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__CreateUser(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__CreateUser(struct soap *soap, const char *tag, int id, const _interswitch__CreateUser *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__CreateUser), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__CreateUser::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__CreateUser::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__CreateUser(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__CreateUser * SOAP_FMAC4 soap_in__interswitch__CreateUser(struct soap *soap, const char *tag, _interswitch__CreateUser *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__CreateUser *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__CreateUser, sizeof(_interswitch__CreateUser), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__CreateUser) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__CreateUser *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__CreateUser::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__CreateUser *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__CreateUser, 0, sizeof(_interswitch__CreateUser), 0, soap_copy__interswitch__CreateUser); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__CreateUser::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__CreateUser); + if (this->soap_out(soap, tag?tag:"interswitch:CreateUser", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__CreateUser::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__CreateUser(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__CreateUser * SOAP_FMAC4 soap_get__interswitch__CreateUser(struct soap *soap, _interswitch__CreateUser *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__CreateUser(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__CreateUser * SOAP_FMAC2 soap_instantiate__interswitch__CreateUser(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__CreateUser(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__CreateUser, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__CreateUser); + if (size) + *size = sizeof(_interswitch__CreateUser); + ((_interswitch__CreateUser*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__CreateUser[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__CreateUser); + for (int i = 0; i < n; i++) + ((_interswitch__CreateUser*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__CreateUser*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__CreateUser(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__CreateUser %p -> %p\n", q, p)); + *(_interswitch__CreateUser*)p = *(_interswitch__CreateUser*)q; +} + +void _interswitch__GetSystemSettingsResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetSystemSettingsResponse::GetSystemSettingsResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetSystemSettingsResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetSystemSettingsResponse::GetSystemSettingsResult); + /* transient soap skipped */ +} + +int _interswitch__GetSystemSettingsResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetSystemSettingsResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetSystemSettingsResponse(struct soap *soap, const char *tag, int id, const _interswitch__GetSystemSettingsResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse), type)) + return soap->error; + if (a->GetSystemSettingsResult) + soap_element_result(soap, "interswitch:GetSystemSettingsResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:GetSystemSettingsResult", -1, &(a->_interswitch__GetSystemSettingsResponse::GetSystemSettingsResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetSystemSettingsResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetSystemSettingsResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetSystemSettingsResponse * SOAP_FMAC4 soap_in__interswitch__GetSystemSettingsResponse(struct soap *soap, const char *tag, _interswitch__GetSystemSettingsResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetSystemSettingsResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse, sizeof(_interswitch__GetSystemSettingsResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetSystemSettingsResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_GetSystemSettingsResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_GetSystemSettingsResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:GetSystemSettingsResult", &(a->_interswitch__GetSystemSettingsResponse::GetSystemSettingsResult), "xsd:string")) + { soap_flag_GetSystemSettingsResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:GetSystemSettingsResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetSystemSettingsResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse, 0, sizeof(_interswitch__GetSystemSettingsResponse), 0, soap_copy__interswitch__GetSystemSettingsResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetSystemSettingsResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse); + if (this->soap_out(soap, tag?tag:"interswitch:GetSystemSettingsResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetSystemSettingsResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetSystemSettingsResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetSystemSettingsResponse * SOAP_FMAC4 soap_get__interswitch__GetSystemSettingsResponse(struct soap *soap, _interswitch__GetSystemSettingsResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetSystemSettingsResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetSystemSettingsResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetSystemSettingsResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetSystemSettingsResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetSystemSettingsResponse); + if (size) + *size = sizeof(_interswitch__GetSystemSettingsResponse); + ((_interswitch__GetSystemSettingsResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetSystemSettingsResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetSystemSettingsResponse); + for (int i = 0; i < n; i++) + ((_interswitch__GetSystemSettingsResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetSystemSettingsResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetSystemSettingsResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetSystemSettingsResponse %p -> %p\n", q, p)); + *(_interswitch__GetSystemSettingsResponse*)p = *(_interswitch__GetSystemSettingsResponse*)q; +} + +void _interswitch__GetSystemSettings::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__GetSystemSettings::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__GetSystemSettings::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__GetSystemSettings::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__GetSystemSettings::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__GetSystemSettings(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetSystemSettings(struct soap *soap, const char *tag, int id, const _interswitch__GetSystemSettings *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__GetSystemSettings), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__GetSystemSettings::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__GetSystemSettings::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__GetSystemSettings(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__GetSystemSettings * SOAP_FMAC4 soap_in__interswitch__GetSystemSettings(struct soap *soap, const char *tag, _interswitch__GetSystemSettings *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__GetSystemSettings *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__GetSystemSettings, sizeof(_interswitch__GetSystemSettings), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__GetSystemSettings) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__GetSystemSettings *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__GetSystemSettings::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__GetSystemSettings *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__GetSystemSettings, 0, sizeof(_interswitch__GetSystemSettings), 0, soap_copy__interswitch__GetSystemSettings); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__GetSystemSettings::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__GetSystemSettings); + if (this->soap_out(soap, tag?tag:"interswitch:GetSystemSettings", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__GetSystemSettings::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__GetSystemSettings(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__GetSystemSettings * SOAP_FMAC4 soap_get__interswitch__GetSystemSettings(struct soap *soap, _interswitch__GetSystemSettings *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__GetSystemSettings(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__GetSystemSettings * SOAP_FMAC2 soap_instantiate__interswitch__GetSystemSettings(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__GetSystemSettings(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__GetSystemSettings, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetSystemSettings); + if (size) + *size = sizeof(_interswitch__GetSystemSettings); + ((_interswitch__GetSystemSettings*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__GetSystemSettings[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__GetSystemSettings); + for (int i = 0; i < n; i++) + ((_interswitch__GetSystemSettings*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__GetSystemSettings*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetSystemSettings(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__GetSystemSettings %p -> %p\n", q, p)); + *(_interswitch__GetSystemSettings*)p = *(_interswitch__GetSystemSettings*)q; +} + +void _interswitch__QueryTransactionResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__QueryTransactionResponse::QueryTransactionResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__QueryTransactionResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__QueryTransactionResponse::QueryTransactionResult); + /* transient soap skipped */ +} + +int _interswitch__QueryTransactionResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__QueryTransactionResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__QueryTransactionResponse(struct soap *soap, const char *tag, int id, const _interswitch__QueryTransactionResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse), type)) + return soap->error; + if (a->QueryTransactionResult) + soap_element_result(soap, "interswitch:QueryTransactionResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:QueryTransactionResult", -1, &(a->_interswitch__QueryTransactionResponse::QueryTransactionResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__QueryTransactionResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__QueryTransactionResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__QueryTransactionResponse * SOAP_FMAC4 soap_in__interswitch__QueryTransactionResponse(struct soap *soap, const char *tag, _interswitch__QueryTransactionResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__QueryTransactionResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse, sizeof(_interswitch__QueryTransactionResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__QueryTransactionResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_QueryTransactionResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_QueryTransactionResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:QueryTransactionResult", &(a->_interswitch__QueryTransactionResponse::QueryTransactionResult), "xsd:string")) + { soap_flag_QueryTransactionResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:QueryTransactionResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__QueryTransactionResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse, 0, sizeof(_interswitch__QueryTransactionResponse), 0, soap_copy__interswitch__QueryTransactionResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__QueryTransactionResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse); + if (this->soap_out(soap, tag?tag:"interswitch:QueryTransactionResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__QueryTransactionResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__QueryTransactionResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__QueryTransactionResponse * SOAP_FMAC4 soap_get__interswitch__QueryTransactionResponse(struct soap *soap, _interswitch__QueryTransactionResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__QueryTransactionResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__QueryTransactionResponse * SOAP_FMAC2 soap_instantiate__interswitch__QueryTransactionResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__QueryTransactionResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__QueryTransactionResponse); + if (size) + *size = sizeof(_interswitch__QueryTransactionResponse); + ((_interswitch__QueryTransactionResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__QueryTransactionResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__QueryTransactionResponse); + for (int i = 0; i < n; i++) + ((_interswitch__QueryTransactionResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__QueryTransactionResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__QueryTransactionResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__QueryTransactionResponse %p -> %p\n", q, p)); + *(_interswitch__QueryTransactionResponse*)p = *(_interswitch__QueryTransactionResponse*)q; +} + +void _interswitch__QueryTransaction::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__QueryTransaction::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__QueryTransaction::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__QueryTransaction::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__QueryTransaction::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__QueryTransaction(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__QueryTransaction(struct soap *soap, const char *tag, int id, const _interswitch__QueryTransaction *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__QueryTransaction), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__QueryTransaction::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__QueryTransaction::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__QueryTransaction(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__QueryTransaction * SOAP_FMAC4 soap_in__interswitch__QueryTransaction(struct soap *soap, const char *tag, _interswitch__QueryTransaction *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__QueryTransaction *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__QueryTransaction, sizeof(_interswitch__QueryTransaction), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__QueryTransaction) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__QueryTransaction *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__QueryTransaction::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__QueryTransaction *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__QueryTransaction, 0, sizeof(_interswitch__QueryTransaction), 0, soap_copy__interswitch__QueryTransaction); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__QueryTransaction::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__QueryTransaction); + if (this->soap_out(soap, tag?tag:"interswitch:QueryTransaction", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__QueryTransaction::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__QueryTransaction(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__QueryTransaction * SOAP_FMAC4 soap_get__interswitch__QueryTransaction(struct soap *soap, _interswitch__QueryTransaction *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__QueryTransaction(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__QueryTransaction * SOAP_FMAC2 soap_instantiate__interswitch__QueryTransaction(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__QueryTransaction(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__QueryTransaction, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__QueryTransaction); + if (size) + *size = sizeof(_interswitch__QueryTransaction); + ((_interswitch__QueryTransaction*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__QueryTransaction[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__QueryTransaction); + for (int i = 0; i < n; i++) + ((_interswitch__QueryTransaction*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__QueryTransaction*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__QueryTransaction(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__QueryTransaction %p -> %p\n", q, p)); + *(_interswitch__QueryTransaction*)p = *(_interswitch__QueryTransaction*)q; +} + +void _interswitch__StatusCheckResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__StatusCheckResponse::StatusCheckResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__StatusCheckResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__StatusCheckResponse::StatusCheckResult); + /* transient soap skipped */ +} + +int _interswitch__StatusCheckResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__StatusCheckResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__StatusCheckResponse(struct soap *soap, const char *tag, int id, const _interswitch__StatusCheckResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__StatusCheckResponse), type)) + return soap->error; + if (a->StatusCheckResult) + soap_element_result(soap, "interswitch:StatusCheckResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:StatusCheckResult", -1, &(a->_interswitch__StatusCheckResponse::StatusCheckResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__StatusCheckResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__StatusCheckResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__StatusCheckResponse * SOAP_FMAC4 soap_in__interswitch__StatusCheckResponse(struct soap *soap, const char *tag, _interswitch__StatusCheckResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__StatusCheckResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__StatusCheckResponse, sizeof(_interswitch__StatusCheckResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__StatusCheckResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__StatusCheckResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_StatusCheckResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_StatusCheckResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:StatusCheckResult", &(a->_interswitch__StatusCheckResponse::StatusCheckResult), "xsd:string")) + { soap_flag_StatusCheckResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:StatusCheckResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__StatusCheckResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__StatusCheckResponse, 0, sizeof(_interswitch__StatusCheckResponse), 0, soap_copy__interswitch__StatusCheckResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__StatusCheckResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__StatusCheckResponse); + if (this->soap_out(soap, tag?tag:"interswitch:StatusCheckResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__StatusCheckResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__StatusCheckResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__StatusCheckResponse * SOAP_FMAC4 soap_get__interswitch__StatusCheckResponse(struct soap *soap, _interswitch__StatusCheckResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__StatusCheckResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__StatusCheckResponse * SOAP_FMAC2 soap_instantiate__interswitch__StatusCheckResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__StatusCheckResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__StatusCheckResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__StatusCheckResponse); + if (size) + *size = sizeof(_interswitch__StatusCheckResponse); + ((_interswitch__StatusCheckResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__StatusCheckResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__StatusCheckResponse); + for (int i = 0; i < n; i++) + ((_interswitch__StatusCheckResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__StatusCheckResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__StatusCheckResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__StatusCheckResponse %p -> %p\n", q, p)); + *(_interswitch__StatusCheckResponse*)p = *(_interswitch__StatusCheckResponse*)q; +} + +void _interswitch__StatusCheck::soap_default(struct soap *soap) +{ + this->soap = soap; + /* transient soap skipped */ +} + +void _interswitch__StatusCheck::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + /* transient soap skipped */ +} + +int _interswitch__StatusCheck::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__StatusCheck(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__StatusCheck(struct soap *soap, const char *tag, int id, const _interswitch__StatusCheck *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__StatusCheck), type)) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__StatusCheck::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__StatusCheck(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__StatusCheck * SOAP_FMAC4 soap_in__interswitch__StatusCheck(struct soap *soap, const char *tag, _interswitch__StatusCheck *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__StatusCheck *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__StatusCheck, sizeof(_interswitch__StatusCheck), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__StatusCheck) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__StatusCheck *)a->soap_in(soap, tag, type); + } + } + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__StatusCheck *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__StatusCheck, 0, sizeof(_interswitch__StatusCheck), 0, soap_copy__interswitch__StatusCheck); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__StatusCheck::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__StatusCheck); + if (this->soap_out(soap, tag?tag:"interswitch:StatusCheck", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__StatusCheck::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__StatusCheck(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__StatusCheck * SOAP_FMAC4 soap_get__interswitch__StatusCheck(struct soap *soap, _interswitch__StatusCheck *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__StatusCheck(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__StatusCheck * SOAP_FMAC2 soap_instantiate__interswitch__StatusCheck(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__StatusCheck(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__StatusCheck, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__StatusCheck); + if (size) + *size = sizeof(_interswitch__StatusCheck); + ((_interswitch__StatusCheck*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__StatusCheck[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__StatusCheck); + for (int i = 0; i < n; i++) + ((_interswitch__StatusCheck*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__StatusCheck*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__StatusCheck(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__StatusCheck %p -> %p\n", q, p)); + *(_interswitch__StatusCheck*)p = *(_interswitch__StatusCheck*)q; +} + +void _interswitch__ReverseCashOutResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__ReverseCashOutResponse::ReverseCashOutResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__ReverseCashOutResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__ReverseCashOutResponse::ReverseCashOutResult); + /* transient soap skipped */ +} + +int _interswitch__ReverseCashOutResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__ReverseCashOutResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ReverseCashOutResponse(struct soap *soap, const char *tag, int id, const _interswitch__ReverseCashOutResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse), type)) + return soap->error; + if (a->ReverseCashOutResult) + soap_element_result(soap, "interswitch:ReverseCashOutResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:ReverseCashOutResult", -1, &(a->_interswitch__ReverseCashOutResponse::ReverseCashOutResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__ReverseCashOutResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__ReverseCashOutResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__ReverseCashOutResponse * SOAP_FMAC4 soap_in__interswitch__ReverseCashOutResponse(struct soap *soap, const char *tag, _interswitch__ReverseCashOutResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__ReverseCashOutResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse, sizeof(_interswitch__ReverseCashOutResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__ReverseCashOutResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_ReverseCashOutResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_ReverseCashOutResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:ReverseCashOutResult", &(a->_interswitch__ReverseCashOutResponse::ReverseCashOutResult), "xsd:string")) + { soap_flag_ReverseCashOutResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:ReverseCashOutResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__ReverseCashOutResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse, 0, sizeof(_interswitch__ReverseCashOutResponse), 0, soap_copy__interswitch__ReverseCashOutResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__ReverseCashOutResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse); + if (this->soap_out(soap, tag?tag:"interswitch:ReverseCashOutResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__ReverseCashOutResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__ReverseCashOutResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__ReverseCashOutResponse * SOAP_FMAC4 soap_get__interswitch__ReverseCashOutResponse(struct soap *soap, _interswitch__ReverseCashOutResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__ReverseCashOutResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__ReverseCashOutResponse * SOAP_FMAC2 soap_instantiate__interswitch__ReverseCashOutResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__ReverseCashOutResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__ReverseCashOutResponse); + if (size) + *size = sizeof(_interswitch__ReverseCashOutResponse); + ((_interswitch__ReverseCashOutResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__ReverseCashOutResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__ReverseCashOutResponse); + for (int i = 0; i < n; i++) + ((_interswitch__ReverseCashOutResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__ReverseCashOutResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ReverseCashOutResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__ReverseCashOutResponse %p -> %p\n", q, p)); + *(_interswitch__ReverseCashOutResponse*)p = *(_interswitch__ReverseCashOutResponse*)q; +} + +void _interswitch__ReverseCashOut::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__ReverseCashOut::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__ReverseCashOut::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__ReverseCashOut::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__ReverseCashOut::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__ReverseCashOut(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ReverseCashOut(struct soap *soap, const char *tag, int id, const _interswitch__ReverseCashOut *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__ReverseCashOut), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__ReverseCashOut::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__ReverseCashOut::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__ReverseCashOut(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__ReverseCashOut * SOAP_FMAC4 soap_in__interswitch__ReverseCashOut(struct soap *soap, const char *tag, _interswitch__ReverseCashOut *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__ReverseCashOut *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__ReverseCashOut, sizeof(_interswitch__ReverseCashOut), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__ReverseCashOut) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__ReverseCashOut *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__ReverseCashOut::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__ReverseCashOut *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__ReverseCashOut, 0, sizeof(_interswitch__ReverseCashOut), 0, soap_copy__interswitch__ReverseCashOut); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__ReverseCashOut::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__ReverseCashOut); + if (this->soap_out(soap, tag?tag:"interswitch:ReverseCashOut", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__ReverseCashOut::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__ReverseCashOut(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__ReverseCashOut * SOAP_FMAC4 soap_get__interswitch__ReverseCashOut(struct soap *soap, _interswitch__ReverseCashOut *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__ReverseCashOut(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__ReverseCashOut * SOAP_FMAC2 soap_instantiate__interswitch__ReverseCashOut(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__ReverseCashOut(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__ReverseCashOut, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__ReverseCashOut); + if (size) + *size = sizeof(_interswitch__ReverseCashOut); + ((_interswitch__ReverseCashOut*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__ReverseCashOut[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__ReverseCashOut); + for (int i = 0; i < n; i++) + ((_interswitch__ReverseCashOut*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__ReverseCashOut*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ReverseCashOut(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__ReverseCashOut %p -> %p\n", q, p)); + *(_interswitch__ReverseCashOut*)p = *(_interswitch__ReverseCashOut*)q; +} + +void _interswitch__AuthoriseAccountCashOutResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__AuthoriseAccountCashOutResponse::AuthoriseAccountCashOutResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__AuthoriseAccountCashOutResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__AuthoriseAccountCashOutResponse::AuthoriseAccountCashOutResult); + /* transient soap skipped */ +} + +int _interswitch__AuthoriseAccountCashOutResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__AuthoriseAccountCashOutResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthoriseAccountCashOutResponse(struct soap *soap, const char *tag, int id, const _interswitch__AuthoriseAccountCashOutResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse), type)) + return soap->error; + if (a->AuthoriseAccountCashOutResult) + soap_element_result(soap, "interswitch:AuthoriseAccountCashOutResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:AuthoriseAccountCashOutResult", -1, &(a->_interswitch__AuthoriseAccountCashOutResponse::AuthoriseAccountCashOutResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__AuthoriseAccountCashOutResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__AuthoriseAccountCashOutResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__AuthoriseAccountCashOutResponse * SOAP_FMAC4 soap_in__interswitch__AuthoriseAccountCashOutResponse(struct soap *soap, const char *tag, _interswitch__AuthoriseAccountCashOutResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__AuthoriseAccountCashOutResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse, sizeof(_interswitch__AuthoriseAccountCashOutResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__AuthoriseAccountCashOutResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_AuthoriseAccountCashOutResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_AuthoriseAccountCashOutResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:AuthoriseAccountCashOutResult", &(a->_interswitch__AuthoriseAccountCashOutResponse::AuthoriseAccountCashOutResult), "xsd:string")) + { soap_flag_AuthoriseAccountCashOutResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:AuthoriseAccountCashOutResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__AuthoriseAccountCashOutResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse, 0, sizeof(_interswitch__AuthoriseAccountCashOutResponse), 0, soap_copy__interswitch__AuthoriseAccountCashOutResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__AuthoriseAccountCashOutResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse); + if (this->soap_out(soap, tag?tag:"interswitch:AuthoriseAccountCashOutResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__AuthoriseAccountCashOutResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__AuthoriseAccountCashOutResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__AuthoriseAccountCashOutResponse * SOAP_FMAC4 soap_get__interswitch__AuthoriseAccountCashOutResponse(struct soap *soap, _interswitch__AuthoriseAccountCashOutResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__AuthoriseAccountCashOutResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__AuthoriseAccountCashOutResponse * SOAP_FMAC2 soap_instantiate__interswitch__AuthoriseAccountCashOutResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__AuthoriseAccountCashOutResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthoriseAccountCashOutResponse); + if (size) + *size = sizeof(_interswitch__AuthoriseAccountCashOutResponse); + ((_interswitch__AuthoriseAccountCashOutResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthoriseAccountCashOutResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__AuthoriseAccountCashOutResponse); + for (int i = 0; i < n; i++) + ((_interswitch__AuthoriseAccountCashOutResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__AuthoriseAccountCashOutResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthoriseAccountCashOutResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__AuthoriseAccountCashOutResponse %p -> %p\n", q, p)); + *(_interswitch__AuthoriseAccountCashOutResponse*)p = *(_interswitch__AuthoriseAccountCashOutResponse*)q; +} + +void _interswitch__AuthoriseAccountCashOut::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__AuthoriseAccountCashOut::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__AuthoriseAccountCashOut::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__AuthoriseAccountCashOut::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__AuthoriseAccountCashOut::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__AuthoriseAccountCashOut(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthoriseAccountCashOut(struct soap *soap, const char *tag, int id, const _interswitch__AuthoriseAccountCashOut *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__AuthoriseAccountCashOut::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__AuthoriseAccountCashOut::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__AuthoriseAccountCashOut(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__AuthoriseAccountCashOut * SOAP_FMAC4 soap_in__interswitch__AuthoriseAccountCashOut(struct soap *soap, const char *tag, _interswitch__AuthoriseAccountCashOut *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__AuthoriseAccountCashOut *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut, sizeof(_interswitch__AuthoriseAccountCashOut), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__AuthoriseAccountCashOut *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__AuthoriseAccountCashOut::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__AuthoriseAccountCashOut *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut, 0, sizeof(_interswitch__AuthoriseAccountCashOut), 0, soap_copy__interswitch__AuthoriseAccountCashOut); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__AuthoriseAccountCashOut::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut); + if (this->soap_out(soap, tag?tag:"interswitch:AuthoriseAccountCashOut", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__AuthoriseAccountCashOut::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__AuthoriseAccountCashOut(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__AuthoriseAccountCashOut * SOAP_FMAC4 soap_get__interswitch__AuthoriseAccountCashOut(struct soap *soap, _interswitch__AuthoriseAccountCashOut *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__AuthoriseAccountCashOut(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__AuthoriseAccountCashOut * SOAP_FMAC2 soap_instantiate__interswitch__AuthoriseAccountCashOut(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__AuthoriseAccountCashOut(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthoriseAccountCashOut); + if (size) + *size = sizeof(_interswitch__AuthoriseAccountCashOut); + ((_interswitch__AuthoriseAccountCashOut*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthoriseAccountCashOut[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__AuthoriseAccountCashOut); + for (int i = 0; i < n; i++) + ((_interswitch__AuthoriseAccountCashOut*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__AuthoriseAccountCashOut*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthoriseAccountCashOut(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__AuthoriseAccountCashOut %p -> %p\n", q, p)); + *(_interswitch__AuthoriseAccountCashOut*)p = *(_interswitch__AuthoriseAccountCashOut*)q; +} + +void _interswitch__AuthoriseCashOutResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__AuthoriseCashOutResponse::AuthoriseCashOutResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__AuthoriseCashOutResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__AuthoriseCashOutResponse::AuthoriseCashOutResult); + /* transient soap skipped */ +} + +int _interswitch__AuthoriseCashOutResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__AuthoriseCashOutResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthoriseCashOutResponse(struct soap *soap, const char *tag, int id, const _interswitch__AuthoriseCashOutResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse), type)) + return soap->error; + if (a->AuthoriseCashOutResult) + soap_element_result(soap, "interswitch:AuthoriseCashOutResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:AuthoriseCashOutResult", -1, &(a->_interswitch__AuthoriseCashOutResponse::AuthoriseCashOutResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__AuthoriseCashOutResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__AuthoriseCashOutResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__AuthoriseCashOutResponse * SOAP_FMAC4 soap_in__interswitch__AuthoriseCashOutResponse(struct soap *soap, const char *tag, _interswitch__AuthoriseCashOutResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__AuthoriseCashOutResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse, sizeof(_interswitch__AuthoriseCashOutResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__AuthoriseCashOutResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_AuthoriseCashOutResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_AuthoriseCashOutResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:AuthoriseCashOutResult", &(a->_interswitch__AuthoriseCashOutResponse::AuthoriseCashOutResult), "xsd:string")) + { soap_flag_AuthoriseCashOutResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:AuthoriseCashOutResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__AuthoriseCashOutResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse, 0, sizeof(_interswitch__AuthoriseCashOutResponse), 0, soap_copy__interswitch__AuthoriseCashOutResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__AuthoriseCashOutResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse); + if (this->soap_out(soap, tag?tag:"interswitch:AuthoriseCashOutResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__AuthoriseCashOutResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__AuthoriseCashOutResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__AuthoriseCashOutResponse * SOAP_FMAC4 soap_get__interswitch__AuthoriseCashOutResponse(struct soap *soap, _interswitch__AuthoriseCashOutResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__AuthoriseCashOutResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__AuthoriseCashOutResponse * SOAP_FMAC2 soap_instantiate__interswitch__AuthoriseCashOutResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__AuthoriseCashOutResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthoriseCashOutResponse); + if (size) + *size = sizeof(_interswitch__AuthoriseCashOutResponse); + ((_interswitch__AuthoriseCashOutResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthoriseCashOutResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__AuthoriseCashOutResponse); + for (int i = 0; i < n; i++) + ((_interswitch__AuthoriseCashOutResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__AuthoriseCashOutResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthoriseCashOutResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__AuthoriseCashOutResponse %p -> %p\n", q, p)); + *(_interswitch__AuthoriseCashOutResponse*)p = *(_interswitch__AuthoriseCashOutResponse*)q; +} + +void _interswitch__AuthoriseCashOut::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__AuthoriseCashOut::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__AuthoriseCashOut::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__AuthoriseCashOut::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__AuthoriseCashOut::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__AuthoriseCashOut(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthoriseCashOut(struct soap *soap, const char *tag, int id, const _interswitch__AuthoriseCashOut *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__AuthoriseCashOut::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__AuthoriseCashOut::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__AuthoriseCashOut(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__AuthoriseCashOut * SOAP_FMAC4 soap_in__interswitch__AuthoriseCashOut(struct soap *soap, const char *tag, _interswitch__AuthoriseCashOut *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__AuthoriseCashOut *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut, sizeof(_interswitch__AuthoriseCashOut), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__AuthoriseCashOut *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__AuthoriseCashOut::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__AuthoriseCashOut *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut, 0, sizeof(_interswitch__AuthoriseCashOut), 0, soap_copy__interswitch__AuthoriseCashOut); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__AuthoriseCashOut::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut); + if (this->soap_out(soap, tag?tag:"interswitch:AuthoriseCashOut", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__AuthoriseCashOut::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__AuthoriseCashOut(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__AuthoriseCashOut * SOAP_FMAC4 soap_get__interswitch__AuthoriseCashOut(struct soap *soap, _interswitch__AuthoriseCashOut *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__AuthoriseCashOut(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__AuthoriseCashOut * SOAP_FMAC2 soap_instantiate__interswitch__AuthoriseCashOut(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__AuthoriseCashOut(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthoriseCashOut); + if (size) + *size = sizeof(_interswitch__AuthoriseCashOut); + ((_interswitch__AuthoriseCashOut*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__AuthoriseCashOut[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__AuthoriseCashOut); + for (int i = 0; i < n; i++) + ((_interswitch__AuthoriseCashOut*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__AuthoriseCashOut*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthoriseCashOut(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__AuthoriseCashOut %p -> %p\n", q, p)); + *(_interswitch__AuthoriseCashOut*)p = *(_interswitch__AuthoriseCashOut*)q; +} + +void _interswitch__QueryTransferResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__QueryTransferResponse::QueryTransferResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__QueryTransferResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__QueryTransferResponse::QueryTransferResult); + /* transient soap skipped */ +} + +int _interswitch__QueryTransferResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__QueryTransferResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__QueryTransferResponse(struct soap *soap, const char *tag, int id, const _interswitch__QueryTransferResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__QueryTransferResponse), type)) + return soap->error; + if (a->QueryTransferResult) + soap_element_result(soap, "interswitch:QueryTransferResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:QueryTransferResult", -1, &(a->_interswitch__QueryTransferResponse::QueryTransferResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__QueryTransferResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__QueryTransferResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__QueryTransferResponse * SOAP_FMAC4 soap_in__interswitch__QueryTransferResponse(struct soap *soap, const char *tag, _interswitch__QueryTransferResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__QueryTransferResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__QueryTransferResponse, sizeof(_interswitch__QueryTransferResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__QueryTransferResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__QueryTransferResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_QueryTransferResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_QueryTransferResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:QueryTransferResult", &(a->_interswitch__QueryTransferResponse::QueryTransferResult), "xsd:string")) + { soap_flag_QueryTransferResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:QueryTransferResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__QueryTransferResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__QueryTransferResponse, 0, sizeof(_interswitch__QueryTransferResponse), 0, soap_copy__interswitch__QueryTransferResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__QueryTransferResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__QueryTransferResponse); + if (this->soap_out(soap, tag?tag:"interswitch:QueryTransferResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__QueryTransferResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__QueryTransferResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__QueryTransferResponse * SOAP_FMAC4 soap_get__interswitch__QueryTransferResponse(struct soap *soap, _interswitch__QueryTransferResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__QueryTransferResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__QueryTransferResponse * SOAP_FMAC2 soap_instantiate__interswitch__QueryTransferResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__QueryTransferResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__QueryTransferResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__QueryTransferResponse); + if (size) + *size = sizeof(_interswitch__QueryTransferResponse); + ((_interswitch__QueryTransferResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__QueryTransferResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__QueryTransferResponse); + for (int i = 0; i < n; i++) + ((_interswitch__QueryTransferResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__QueryTransferResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__QueryTransferResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__QueryTransferResponse %p -> %p\n", q, p)); + *(_interswitch__QueryTransferResponse*)p = *(_interswitch__QueryTransferResponse*)q; +} + +void _interswitch__QueryTransfer::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__QueryTransfer::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__QueryTransfer::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__QueryTransfer::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__QueryTransfer::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__QueryTransfer(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__QueryTransfer(struct soap *soap, const char *tag, int id, const _interswitch__QueryTransfer *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__QueryTransfer), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__QueryTransfer::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__QueryTransfer::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__QueryTransfer(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__QueryTransfer * SOAP_FMAC4 soap_in__interswitch__QueryTransfer(struct soap *soap, const char *tag, _interswitch__QueryTransfer *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__QueryTransfer *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__QueryTransfer, sizeof(_interswitch__QueryTransfer), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__QueryTransfer) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__QueryTransfer *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__QueryTransfer::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__QueryTransfer *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__QueryTransfer, 0, sizeof(_interswitch__QueryTransfer), 0, soap_copy__interswitch__QueryTransfer); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__QueryTransfer::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__QueryTransfer); + if (this->soap_out(soap, tag?tag:"interswitch:QueryTransfer", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__QueryTransfer::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__QueryTransfer(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__QueryTransfer * SOAP_FMAC4 soap_get__interswitch__QueryTransfer(struct soap *soap, _interswitch__QueryTransfer *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__QueryTransfer(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__QueryTransfer * SOAP_FMAC2 soap_instantiate__interswitch__QueryTransfer(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__QueryTransfer(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__QueryTransfer, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__QueryTransfer); + if (size) + *size = sizeof(_interswitch__QueryTransfer); + ((_interswitch__QueryTransfer*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__QueryTransfer[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__QueryTransfer); + for (int i = 0; i < n; i++) + ((_interswitch__QueryTransfer*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__QueryTransfer*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__QueryTransfer(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__QueryTransfer %p -> %p\n", q, p)); + *(_interswitch__QueryTransfer*)p = *(_interswitch__QueryTransfer*)q; +} + +void _interswitch__SendSessionKeyResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__SendSessionKeyResponse::SendSessionKeyResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__SendSessionKeyResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__SendSessionKeyResponse::SendSessionKeyResult); + /* transient soap skipped */ +} + +int _interswitch__SendSessionKeyResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__SendSessionKeyResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__SendSessionKeyResponse(struct soap *soap, const char *tag, int id, const _interswitch__SendSessionKeyResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse), type)) + return soap->error; + if (a->SendSessionKeyResult) + soap_element_result(soap, "interswitch:SendSessionKeyResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:SendSessionKeyResult", -1, &(a->_interswitch__SendSessionKeyResponse::SendSessionKeyResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__SendSessionKeyResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__SendSessionKeyResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__SendSessionKeyResponse * SOAP_FMAC4 soap_in__interswitch__SendSessionKeyResponse(struct soap *soap, const char *tag, _interswitch__SendSessionKeyResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__SendSessionKeyResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse, sizeof(_interswitch__SendSessionKeyResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__SendSessionKeyResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_SendSessionKeyResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_SendSessionKeyResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:SendSessionKeyResult", &(a->_interswitch__SendSessionKeyResponse::SendSessionKeyResult), "xsd:string")) + { soap_flag_SendSessionKeyResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:SendSessionKeyResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__SendSessionKeyResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse, 0, sizeof(_interswitch__SendSessionKeyResponse), 0, soap_copy__interswitch__SendSessionKeyResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__SendSessionKeyResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse); + if (this->soap_out(soap, tag?tag:"interswitch:SendSessionKeyResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__SendSessionKeyResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__SendSessionKeyResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__SendSessionKeyResponse * SOAP_FMAC4 soap_get__interswitch__SendSessionKeyResponse(struct soap *soap, _interswitch__SendSessionKeyResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__SendSessionKeyResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__SendSessionKeyResponse * SOAP_FMAC2 soap_instantiate__interswitch__SendSessionKeyResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__SendSessionKeyResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__SendSessionKeyResponse); + if (size) + *size = sizeof(_interswitch__SendSessionKeyResponse); + ((_interswitch__SendSessionKeyResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__SendSessionKeyResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__SendSessionKeyResponse); + for (int i = 0; i < n; i++) + ((_interswitch__SendSessionKeyResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__SendSessionKeyResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__SendSessionKeyResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__SendSessionKeyResponse %p -> %p\n", q, p)); + *(_interswitch__SendSessionKeyResponse*)p = *(_interswitch__SendSessionKeyResponse*)q; +} + +void _interswitch__SendSessionKey::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__SendSessionKey::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__SendSessionKey::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__SendSessionKey::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__SendSessionKey::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__SendSessionKey(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__SendSessionKey(struct soap *soap, const char *tag, int id, const _interswitch__SendSessionKey *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__SendSessionKey), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__SendSessionKey::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__SendSessionKey::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__SendSessionKey(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__SendSessionKey * SOAP_FMAC4 soap_in__interswitch__SendSessionKey(struct soap *soap, const char *tag, _interswitch__SendSessionKey *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__SendSessionKey *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__SendSessionKey, sizeof(_interswitch__SendSessionKey), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__SendSessionKey) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__SendSessionKey *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__SendSessionKey::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__SendSessionKey *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__SendSessionKey, 0, sizeof(_interswitch__SendSessionKey), 0, soap_copy__interswitch__SendSessionKey); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__SendSessionKey::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__SendSessionKey); + if (this->soap_out(soap, tag?tag:"interswitch:SendSessionKey", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__SendSessionKey::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__SendSessionKey(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__SendSessionKey * SOAP_FMAC4 soap_get__interswitch__SendSessionKey(struct soap *soap, _interswitch__SendSessionKey *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__SendSessionKey(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__SendSessionKey * SOAP_FMAC2 soap_instantiate__interswitch__SendSessionKey(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__SendSessionKey(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__SendSessionKey, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__SendSessionKey); + if (size) + *size = sizeof(_interswitch__SendSessionKey); + ((_interswitch__SendSessionKey*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__SendSessionKey[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__SendSessionKey); + for (int i = 0; i < n; i++) + ((_interswitch__SendSessionKey*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__SendSessionKey*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__SendSessionKey(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__SendSessionKey %p -> %p\n", q, p)); + *(_interswitch__SendSessionKey*)p = *(_interswitch__SendSessionKey*)q; +} + +void _interswitch__CancelTransferResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__CancelTransferResponse::CancelTransferResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__CancelTransferResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__CancelTransferResponse::CancelTransferResult); + /* transient soap skipped */ +} + +int _interswitch__CancelTransferResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__CancelTransferResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__CancelTransferResponse(struct soap *soap, const char *tag, int id, const _interswitch__CancelTransferResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__CancelTransferResponse), type)) + return soap->error; + if (a->CancelTransferResult) + soap_element_result(soap, "interswitch:CancelTransferResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:CancelTransferResult", -1, &(a->_interswitch__CancelTransferResponse::CancelTransferResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__CancelTransferResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__CancelTransferResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__CancelTransferResponse * SOAP_FMAC4 soap_in__interswitch__CancelTransferResponse(struct soap *soap, const char *tag, _interswitch__CancelTransferResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__CancelTransferResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__CancelTransferResponse, sizeof(_interswitch__CancelTransferResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__CancelTransferResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__CancelTransferResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_CancelTransferResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_CancelTransferResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:CancelTransferResult", &(a->_interswitch__CancelTransferResponse::CancelTransferResult), "xsd:string")) + { soap_flag_CancelTransferResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:CancelTransferResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__CancelTransferResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__CancelTransferResponse, 0, sizeof(_interswitch__CancelTransferResponse), 0, soap_copy__interswitch__CancelTransferResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__CancelTransferResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__CancelTransferResponse); + if (this->soap_out(soap, tag?tag:"interswitch:CancelTransferResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__CancelTransferResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__CancelTransferResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__CancelTransferResponse * SOAP_FMAC4 soap_get__interswitch__CancelTransferResponse(struct soap *soap, _interswitch__CancelTransferResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__CancelTransferResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__CancelTransferResponse * SOAP_FMAC2 soap_instantiate__interswitch__CancelTransferResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__CancelTransferResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__CancelTransferResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__CancelTransferResponse); + if (size) + *size = sizeof(_interswitch__CancelTransferResponse); + ((_interswitch__CancelTransferResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__CancelTransferResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__CancelTransferResponse); + for (int i = 0; i < n; i++) + ((_interswitch__CancelTransferResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__CancelTransferResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__CancelTransferResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__CancelTransferResponse %p -> %p\n", q, p)); + *(_interswitch__CancelTransferResponse*)p = *(_interswitch__CancelTransferResponse*)q; +} + +void _interswitch__CancelTransfer::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__CancelTransfer::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__CancelTransfer::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__CancelTransfer::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__CancelTransfer::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__CancelTransfer(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__CancelTransfer(struct soap *soap, const char *tag, int id, const _interswitch__CancelTransfer *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__CancelTransfer), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__CancelTransfer::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__CancelTransfer::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__CancelTransfer(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__CancelTransfer * SOAP_FMAC4 soap_in__interswitch__CancelTransfer(struct soap *soap, const char *tag, _interswitch__CancelTransfer *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__CancelTransfer *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__CancelTransfer, sizeof(_interswitch__CancelTransfer), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__CancelTransfer) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__CancelTransfer *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__CancelTransfer::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__CancelTransfer *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__CancelTransfer, 0, sizeof(_interswitch__CancelTransfer), 0, soap_copy__interswitch__CancelTransfer); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__CancelTransfer::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__CancelTransfer); + if (this->soap_out(soap, tag?tag:"interswitch:CancelTransfer", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__CancelTransfer::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__CancelTransfer(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__CancelTransfer * SOAP_FMAC4 soap_get__interswitch__CancelTransfer(struct soap *soap, _interswitch__CancelTransfer *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__CancelTransfer(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__CancelTransfer * SOAP_FMAC2 soap_instantiate__interswitch__CancelTransfer(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__CancelTransfer(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__CancelTransfer, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__CancelTransfer); + if (size) + *size = sizeof(_interswitch__CancelTransfer); + ((_interswitch__CancelTransfer*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__CancelTransfer[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__CancelTransfer); + for (int i = 0; i < n; i++) + ((_interswitch__CancelTransfer*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__CancelTransfer*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__CancelTransfer(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__CancelTransfer %p -> %p\n", q, p)); + *(_interswitch__CancelTransfer*)p = *(_interswitch__CancelTransfer*)q; +} + +void _interswitch__DoTransferResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__DoTransferResponse::DoTransferResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__DoTransferResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__DoTransferResponse::DoTransferResult); + /* transient soap skipped */ +} + +int _interswitch__DoTransferResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__DoTransferResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__DoTransferResponse(struct soap *soap, const char *tag, int id, const _interswitch__DoTransferResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__DoTransferResponse), type)) + return soap->error; + if (a->DoTransferResult) + soap_element_result(soap, "interswitch:DoTransferResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:DoTransferResult", -1, &(a->_interswitch__DoTransferResponse::DoTransferResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__DoTransferResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__DoTransferResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__DoTransferResponse * SOAP_FMAC4 soap_in__interswitch__DoTransferResponse(struct soap *soap, const char *tag, _interswitch__DoTransferResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__DoTransferResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__DoTransferResponse, sizeof(_interswitch__DoTransferResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__DoTransferResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__DoTransferResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_DoTransferResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_DoTransferResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:DoTransferResult", &(a->_interswitch__DoTransferResponse::DoTransferResult), "xsd:string")) + { soap_flag_DoTransferResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:DoTransferResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__DoTransferResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__DoTransferResponse, 0, sizeof(_interswitch__DoTransferResponse), 0, soap_copy__interswitch__DoTransferResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__DoTransferResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__DoTransferResponse); + if (this->soap_out(soap, tag?tag:"interswitch:DoTransferResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__DoTransferResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__DoTransferResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__DoTransferResponse * SOAP_FMAC4 soap_get__interswitch__DoTransferResponse(struct soap *soap, _interswitch__DoTransferResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__DoTransferResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__DoTransferResponse * SOAP_FMAC2 soap_instantiate__interswitch__DoTransferResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__DoTransferResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__DoTransferResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__DoTransferResponse); + if (size) + *size = sizeof(_interswitch__DoTransferResponse); + ((_interswitch__DoTransferResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__DoTransferResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__DoTransferResponse); + for (int i = 0; i < n; i++) + ((_interswitch__DoTransferResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__DoTransferResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__DoTransferResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__DoTransferResponse %p -> %p\n", q, p)); + *(_interswitch__DoTransferResponse*)p = *(_interswitch__DoTransferResponse*)q; +} + +void _interswitch__DoTransfer::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__DoTransfer::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__DoTransfer::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__DoTransfer::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__DoTransfer::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__DoTransfer(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__DoTransfer(struct soap *soap, const char *tag, int id, const _interswitch__DoTransfer *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__DoTransfer), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__DoTransfer::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__DoTransfer::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__DoTransfer(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__DoTransfer * SOAP_FMAC4 soap_in__interswitch__DoTransfer(struct soap *soap, const char *tag, _interswitch__DoTransfer *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__DoTransfer *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__DoTransfer, sizeof(_interswitch__DoTransfer), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__DoTransfer) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__DoTransfer *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__DoTransfer::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__DoTransfer *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__DoTransfer, 0, sizeof(_interswitch__DoTransfer), 0, soap_copy__interswitch__DoTransfer); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__DoTransfer::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__DoTransfer); + if (this->soap_out(soap, tag?tag:"interswitch:DoTransfer", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__DoTransfer::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__DoTransfer(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__DoTransfer * SOAP_FMAC4 soap_get__interswitch__DoTransfer(struct soap *soap, _interswitch__DoTransfer *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__DoTransfer(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__DoTransfer * SOAP_FMAC2 soap_instantiate__interswitch__DoTransfer(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__DoTransfer(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__DoTransfer, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__DoTransfer); + if (size) + *size = sizeof(_interswitch__DoTransfer); + ((_interswitch__DoTransfer*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__DoTransfer[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__DoTransfer); + for (int i = 0; i < n; i++) + ((_interswitch__DoTransfer*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__DoTransfer*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__DoTransfer(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__DoTransfer %p -> %p\n", q, p)); + *(_interswitch__DoTransfer*)p = *(_interswitch__DoTransfer*)q; +} + +void _interswitch__ValidateCustomerResponse::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__ValidateCustomerResponse::ValidateCustomerResult = NULL; + /* transient soap skipped */ +} + +void _interswitch__ValidateCustomerResponse::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__ValidateCustomerResponse::ValidateCustomerResult); + /* transient soap skipped */ +} + +int _interswitch__ValidateCustomerResponse::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__ValidateCustomerResponse(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ValidateCustomerResponse(struct soap *soap, const char *tag, int id, const _interswitch__ValidateCustomerResponse *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse), type)) + return soap->error; + if (a->ValidateCustomerResult) + soap_element_result(soap, "interswitch:ValidateCustomerResult"); + if (soap_out_PointerTostd__string(soap, "interswitch:ValidateCustomerResult", -1, &(a->_interswitch__ValidateCustomerResponse::ValidateCustomerResult), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__ValidateCustomerResponse::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__ValidateCustomerResponse(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__ValidateCustomerResponse * SOAP_FMAC4 soap_in__interswitch__ValidateCustomerResponse(struct soap *soap, const char *tag, _interswitch__ValidateCustomerResponse *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__ValidateCustomerResponse *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse, sizeof(_interswitch__ValidateCustomerResponse), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__ValidateCustomerResponse *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_ValidateCustomerResult1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_ValidateCustomerResult1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:ValidateCustomerResult", &(a->_interswitch__ValidateCustomerResponse::ValidateCustomerResult), "xsd:string")) + { soap_flag_ValidateCustomerResult1--; + continue; + } + /* transient soap skipped */ + soap_check_result(soap, "interswitch:ValidateCustomerResult"); + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__ValidateCustomerResponse *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse, 0, sizeof(_interswitch__ValidateCustomerResponse), 0, soap_copy__interswitch__ValidateCustomerResponse); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__ValidateCustomerResponse::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse); + if (this->soap_out(soap, tag?tag:"interswitch:ValidateCustomerResponse", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__ValidateCustomerResponse::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__ValidateCustomerResponse(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__ValidateCustomerResponse * SOAP_FMAC4 soap_get__interswitch__ValidateCustomerResponse(struct soap *soap, _interswitch__ValidateCustomerResponse *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__ValidateCustomerResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__ValidateCustomerResponse * SOAP_FMAC2 soap_instantiate__interswitch__ValidateCustomerResponse(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__ValidateCustomerResponse(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__ValidateCustomerResponse); + if (size) + *size = sizeof(_interswitch__ValidateCustomerResponse); + ((_interswitch__ValidateCustomerResponse*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__ValidateCustomerResponse[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__ValidateCustomerResponse); + for (int i = 0; i < n; i++) + ((_interswitch__ValidateCustomerResponse*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__ValidateCustomerResponse*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ValidateCustomerResponse(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__ValidateCustomerResponse %p -> %p\n", q, p)); + *(_interswitch__ValidateCustomerResponse*)p = *(_interswitch__ValidateCustomerResponse*)q; +} + +void _interswitch__ValidateCustomer::soap_default(struct soap *soap) +{ + this->soap = soap; + this->_interswitch__ValidateCustomer::xmlParams = NULL; + /* transient soap skipped */ +} + +void _interswitch__ValidateCustomer::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_PointerTostd__string(soap, &this->_interswitch__ValidateCustomer::xmlParams); + /* transient soap skipped */ +} + +int _interswitch__ValidateCustomer::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out__interswitch__ValidateCustomer(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ValidateCustomer(struct soap *soap, const char *tag, int id, const _interswitch__ValidateCustomer *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch__interswitch__ValidateCustomer), type)) + return soap->error; + if (soap_out_PointerTostd__string(soap, "interswitch:xmlParams", -1, &(a->_interswitch__ValidateCustomer::xmlParams), "")) + return soap->error; + /* transient soap skipped */ + return soap_element_end_out(soap, tag); +} + +void *_interswitch__ValidateCustomer::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in__interswitch__ValidateCustomer(soap, tag, this, type); +} + +SOAP_FMAC3 _interswitch__ValidateCustomer * SOAP_FMAC4 soap_in__interswitch__ValidateCustomer(struct soap *soap, const char *tag, _interswitch__ValidateCustomer *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 0, NULL)) + return NULL; + a = (_interswitch__ValidateCustomer *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch__interswitch__ValidateCustomer, sizeof(_interswitch__ValidateCustomer), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch__interswitch__ValidateCustomer) + { soap_revert(soap); + *soap->id = '\0'; + return (_interswitch__ValidateCustomer *)a->soap_in(soap, tag, type); + } + } + size_t soap_flag_xmlParams1 = 1; + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_xmlParams1 && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_PointerTostd__string(soap, "interswitch:xmlParams", &(a->_interswitch__ValidateCustomer::xmlParams), "xsd:string")) + { soap_flag_xmlParams1--; + continue; + } + /* transient soap skipped */ + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (_interswitch__ValidateCustomer *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch__interswitch__ValidateCustomer, 0, sizeof(_interswitch__ValidateCustomer), 0, soap_copy__interswitch__ValidateCustomer); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int _interswitch__ValidateCustomer::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch__interswitch__ValidateCustomer); + if (this->soap_out(soap, tag?tag:"interswitch:ValidateCustomer", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *_interswitch__ValidateCustomer::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get__interswitch__ValidateCustomer(soap, this, tag, type); +} + +SOAP_FMAC3 _interswitch__ValidateCustomer * SOAP_FMAC4 soap_get__interswitch__ValidateCustomer(struct soap *soap, _interswitch__ValidateCustomer *p, const char *tag, const char *type) +{ + if ((p = soap_in__interswitch__ValidateCustomer(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 _interswitch__ValidateCustomer * SOAP_FMAC2 soap_instantiate__interswitch__ValidateCustomer(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate__interswitch__ValidateCustomer(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch__interswitch__ValidateCustomer, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(_interswitch__ValidateCustomer); + if (size) + *size = sizeof(_interswitch__ValidateCustomer); + ((_interswitch__ValidateCustomer*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(_interswitch__ValidateCustomer[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(_interswitch__ValidateCustomer); + for (int i = 0; i < n; i++) + ((_interswitch__ValidateCustomer*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (_interswitch__ValidateCustomer*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ValidateCustomer(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying _interswitch__ValidateCustomer %p -> %p\n", q, p)); + *(_interswitch__ValidateCustomer*)p = *(_interswitch__ValidateCustomer*)q; +} + +void xsd__unsignedShort::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_unsignedShort(soap, &this->xsd__unsignedShort::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__unsignedShort::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + /* transient soap skipped */ +} + +int xsd__unsignedShort::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__unsignedShort(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__unsignedShort(struct soap *soap, const char *tag, int id, const xsd__unsignedShort *a, const char *type) +{ + return soap_out_unsignedShort(soap, tag, id, &(a->xsd__unsignedShort::__item), "xsd:unsignedShort"); +} + +void *xsd__unsignedShort::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__unsignedShort(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__unsignedShort * SOAP_FMAC4 soap_in_xsd__unsignedShort(struct soap *soap, const char *tag, xsd__unsignedShort *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__unsignedShort *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__unsignedShort, sizeof(xsd__unsignedShort), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__unsignedShort) + return (xsd__unsignedShort *)a->soap_in(soap, tag, type); + } + if (!soap_in_unsignedShort(soap, tag, &(a->xsd__unsignedShort::__item), "xsd:unsignedShort")) + return NULL; + return a; +} + +int xsd__unsignedShort::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__unsignedShort); + if (this->soap_out(soap, tag?tag:"xsd:unsignedShort", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__unsignedShort::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__unsignedShort(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__unsignedShort * SOAP_FMAC4 soap_get_xsd__unsignedShort(struct soap *soap, xsd__unsignedShort *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__unsignedShort(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__unsignedShort * SOAP_FMAC2 soap_instantiate_xsd__unsignedShort(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__unsignedShort(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__unsignedShort, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__unsignedShort); + if (size) + *size = sizeof(xsd__unsignedShort); + ((xsd__unsignedShort*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__unsignedShort[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__unsignedShort); + for (int i = 0; i < n; i++) + ((xsd__unsignedShort*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__unsignedShort*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__unsignedShort(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__unsignedShort %p -> %p\n", q, p)); + *(xsd__unsignedShort*)p = *(xsd__unsignedShort*)q; +} + +void xsd__unsignedLong::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_unsignedLONG64(soap, &this->xsd__unsignedLong::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__unsignedLong::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + /* transient soap skipped */ +} + +int xsd__unsignedLong::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__unsignedLong(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__unsignedLong(struct soap *soap, const char *tag, int id, const xsd__unsignedLong *a, const char *type) +{ + return soap_out_unsignedLONG64(soap, tag, id, &(a->xsd__unsignedLong::__item), "xsd:unsignedLong"); +} + +void *xsd__unsignedLong::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__unsignedLong(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__unsignedLong * SOAP_FMAC4 soap_in_xsd__unsignedLong(struct soap *soap, const char *tag, xsd__unsignedLong *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__unsignedLong *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__unsignedLong, sizeof(xsd__unsignedLong), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__unsignedLong) + return (xsd__unsignedLong *)a->soap_in(soap, tag, type); + } + if (!soap_in_unsignedLONG64(soap, tag, &(a->xsd__unsignedLong::__item), "xsd:unsignedLong")) + return NULL; + return a; +} + +int xsd__unsignedLong::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__unsignedLong); + if (this->soap_out(soap, tag?tag:"xsd:unsignedLong", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__unsignedLong::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__unsignedLong(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__unsignedLong * SOAP_FMAC4 soap_get_xsd__unsignedLong(struct soap *soap, xsd__unsignedLong *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__unsignedLong(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__unsignedLong * SOAP_FMAC2 soap_instantiate_xsd__unsignedLong(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__unsignedLong(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__unsignedLong, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__unsignedLong); + if (size) + *size = sizeof(xsd__unsignedLong); + ((xsd__unsignedLong*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__unsignedLong[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__unsignedLong); + for (int i = 0; i < n; i++) + ((xsd__unsignedLong*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__unsignedLong*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__unsignedLong(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__unsignedLong %p -> %p\n", q, p)); + *(xsd__unsignedLong*)p = *(xsd__unsignedLong*)q; +} + +void xsd__unsignedInt::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_unsignedInt(soap, &this->xsd__unsignedInt::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__unsignedInt::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + /* transient soap skipped */ +} + +int xsd__unsignedInt::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__unsignedInt(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__unsignedInt(struct soap *soap, const char *tag, int id, const xsd__unsignedInt *a, const char *type) +{ + return soap_out_unsignedInt(soap, tag, id, &(a->xsd__unsignedInt::__item), "xsd:unsignedInt"); +} + +void *xsd__unsignedInt::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__unsignedInt(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__unsignedInt * SOAP_FMAC4 soap_in_xsd__unsignedInt(struct soap *soap, const char *tag, xsd__unsignedInt *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__unsignedInt *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__unsignedInt, sizeof(xsd__unsignedInt), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__unsignedInt) + return (xsd__unsignedInt *)a->soap_in(soap, tag, type); + } + if (!soap_in_unsignedInt(soap, tag, &(a->xsd__unsignedInt::__item), "xsd:unsignedInt")) + return NULL; + return a; +} + +int xsd__unsignedInt::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__unsignedInt); + if (this->soap_out(soap, tag?tag:"xsd:unsignedInt", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__unsignedInt::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__unsignedInt(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__unsignedInt * SOAP_FMAC4 soap_get_xsd__unsignedInt(struct soap *soap, xsd__unsignedInt *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__unsignedInt(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__unsignedInt * SOAP_FMAC2 soap_instantiate_xsd__unsignedInt(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__unsignedInt(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__unsignedInt, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__unsignedInt); + if (size) + *size = sizeof(xsd__unsignedInt); + ((xsd__unsignedInt*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__unsignedInt[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__unsignedInt); + for (int i = 0; i < n; i++) + ((xsd__unsignedInt*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__unsignedInt*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__unsignedInt(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__unsignedInt %p -> %p\n", q, p)); + *(xsd__unsignedInt*)p = *(xsd__unsignedInt*)q; +} + +void xsd__unsignedByte_::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_xsd__unsignedByte(soap, &this->xsd__unsignedByte_::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__unsignedByte_::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + /* transient soap skipped */ +} + +int xsd__unsignedByte_::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__unsignedByte_(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__unsignedByte_(struct soap *soap, const char *tag, int id, const xsd__unsignedByte_ *a, const char *type) +{ + return soap_out_xsd__unsignedByte(soap, tag, id, &(a->xsd__unsignedByte_::__item), "xsd:unsignedByte"); +} + +void *xsd__unsignedByte_::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__unsignedByte_(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__unsignedByte_ * SOAP_FMAC4 soap_in_xsd__unsignedByte_(struct soap *soap, const char *tag, xsd__unsignedByte_ *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__unsignedByte_ *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__unsignedByte_, sizeof(xsd__unsignedByte_), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__unsignedByte_) + return (xsd__unsignedByte_ *)a->soap_in(soap, tag, type); + } + if (!soap_in_xsd__unsignedByte(soap, tag, &(a->xsd__unsignedByte_::__item), "xsd:unsignedByte")) + return NULL; + return a; +} + +int xsd__unsignedByte_::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__unsignedByte_); + if (this->soap_out(soap, tag?tag:"xsd:unsignedByte", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__unsignedByte_::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__unsignedByte_(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__unsignedByte_ * SOAP_FMAC4 soap_get_xsd__unsignedByte_(struct soap *soap, xsd__unsignedByte_ *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__unsignedByte_(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__unsignedByte_ * SOAP_FMAC2 soap_instantiate_xsd__unsignedByte_(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__unsignedByte_(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__unsignedByte_, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__unsignedByte_); + if (size) + *size = sizeof(xsd__unsignedByte_); + ((xsd__unsignedByte_*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__unsignedByte_[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__unsignedByte_); + for (int i = 0; i < n; i++) + ((xsd__unsignedByte_*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__unsignedByte_*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__unsignedByte_(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__unsignedByte_ %p -> %p\n", q, p)); + *(xsd__unsignedByte_*)p = *(xsd__unsignedByte_*)q; +} + +void xsd__string::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_std__string(soap, &this->xsd__string::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__string::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_embedded(soap, &this->xsd__string::__item, SOAP_TYPE_interswitch_std__string); + soap_serialize_std__string(soap, &this->xsd__string::__item); + /* transient soap skipped */ +} + +int xsd__string::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__string(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__string(struct soap *soap, const char *tag, int id, const xsd__string *a, const char *type) +{ + return soap_out_std__string(soap, tag, id, &(a->xsd__string::__item), "xsd:string"); +} + +void *xsd__string::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__string(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__string * SOAP_FMAC4 soap_in_xsd__string(struct soap *soap, const char *tag, xsd__string *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__string *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__string, sizeof(xsd__string), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__string) + return (xsd__string *)a->soap_in(soap, tag, type); + } + if (!soap_in_std__string(soap, tag, &(a->xsd__string::__item), "xsd:string")) + return NULL; + return a; +} + +int xsd__string::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__string); + if (this->soap_out(soap, tag?tag:"xsd:string", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__string::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__string(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__string * SOAP_FMAC4 soap_get_xsd__string(struct soap *soap, xsd__string *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__string(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__string * SOAP_FMAC2 soap_instantiate_xsd__string(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__string(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__string, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__string); + if (size) + *size = sizeof(xsd__string); + ((xsd__string*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__string[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__string); + for (int i = 0; i < n; i++) + ((xsd__string*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__string*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__string(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__string %p -> %p\n", q, p)); + *(xsd__string*)p = *(xsd__string*)q; +} + +void xsd__short::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_short(soap, &this->xsd__short::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__short::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + /* transient soap skipped */ +} + +int xsd__short::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__short(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__short(struct soap *soap, const char *tag, int id, const xsd__short *a, const char *type) +{ + return soap_out_short(soap, tag, id, &(a->xsd__short::__item), "xsd:short"); +} + +void *xsd__short::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__short(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__short * SOAP_FMAC4 soap_in_xsd__short(struct soap *soap, const char *tag, xsd__short *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__short *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__short, sizeof(xsd__short), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__short) + return (xsd__short *)a->soap_in(soap, tag, type); + } + if (!soap_in_short(soap, tag, &(a->xsd__short::__item), "xsd:short")) + return NULL; + return a; +} + +int xsd__short::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__short); + if (this->soap_out(soap, tag?tag:"xsd:short", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__short::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__short(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__short * SOAP_FMAC4 soap_get_xsd__short(struct soap *soap, xsd__short *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__short(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__short * SOAP_FMAC2 soap_instantiate_xsd__short(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__short(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__short, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__short); + if (size) + *size = sizeof(xsd__short); + ((xsd__short*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__short[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__short); + for (int i = 0; i < n; i++) + ((xsd__short*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__short*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__short(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__short %p -> %p\n", q, p)); + *(xsd__short*)p = *(xsd__short*)q; +} + +void xsd__long::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_LONG64(soap, &this->xsd__long::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__long::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + /* transient soap skipped */ +} + +int xsd__long::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__long(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__long(struct soap *soap, const char *tag, int id, const xsd__long *a, const char *type) +{ + return soap_out_LONG64(soap, tag, id, &(a->xsd__long::__item), "xsd:long"); +} + +void *xsd__long::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__long(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__long * SOAP_FMAC4 soap_in_xsd__long(struct soap *soap, const char *tag, xsd__long *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__long *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__long, sizeof(xsd__long), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__long) + return (xsd__long *)a->soap_in(soap, tag, type); + } + if (!soap_in_LONG64(soap, tag, &(a->xsd__long::__item), "xsd:long")) + return NULL; + return a; +} + +int xsd__long::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__long); + if (this->soap_out(soap, tag?tag:"xsd:long", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__long::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__long(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__long * SOAP_FMAC4 soap_get_xsd__long(struct soap *soap, xsd__long *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__long(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__long * SOAP_FMAC2 soap_instantiate_xsd__long(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__long(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__long, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__long); + if (size) + *size = sizeof(xsd__long); + ((xsd__long*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__long[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__long); + for (int i = 0; i < n; i++) + ((xsd__long*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__long*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__long(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__long %p -> %p\n", q, p)); + *(xsd__long*)p = *(xsd__long*)q; +} + +void xsd__int::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_int(soap, &this->xsd__int::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__int::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + /* transient soap skipped */ +} + +int xsd__int::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__int(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__int(struct soap *soap, const char *tag, int id, const xsd__int *a, const char *type) +{ + return soap_out_int(soap, tag, id, &(a->xsd__int::__item), "xsd:int"); +} + +void *xsd__int::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__int(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__int * SOAP_FMAC4 soap_in_xsd__int(struct soap *soap, const char *tag, xsd__int *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__int *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__int, sizeof(xsd__int), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__int) + return (xsd__int *)a->soap_in(soap, tag, type); + } + if (!soap_in_int(soap, tag, &(a->xsd__int::__item), "xsd:int")) + return NULL; + return a; +} + +int xsd__int::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__int); + if (this->soap_out(soap, tag?tag:"xsd:int", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__int::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__int(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__int * SOAP_FMAC4 soap_get_xsd__int(struct soap *soap, xsd__int *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__int(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__int * SOAP_FMAC2 soap_instantiate_xsd__int(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__int(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__int, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__int); + if (size) + *size = sizeof(xsd__int); + ((xsd__int*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__int[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__int); + for (int i = 0; i < n; i++) + ((xsd__int*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__int*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__int(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__int %p -> %p\n", q, p)); + *(xsd__int*)p = *(xsd__int*)q; +} + +void xsd__float::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_float(soap, &this->xsd__float::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__float::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + /* transient soap skipped */ +} + +int xsd__float::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__float(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__float(struct soap *soap, const char *tag, int id, const xsd__float *a, const char *type) +{ + return soap_out_float(soap, tag, id, &(a->xsd__float::__item), "xsd:float"); +} + +void *xsd__float::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__float(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__float * SOAP_FMAC4 soap_in_xsd__float(struct soap *soap, const char *tag, xsd__float *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__float *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__float, sizeof(xsd__float), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__float) + return (xsd__float *)a->soap_in(soap, tag, type); + } + if (!soap_in_float(soap, tag, &(a->xsd__float::__item), "xsd:float")) + return NULL; + return a; +} + +int xsd__float::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__float); + if (this->soap_out(soap, tag?tag:"xsd:float", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__float::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__float(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__float * SOAP_FMAC4 soap_get_xsd__float(struct soap *soap, xsd__float *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__float(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__float * SOAP_FMAC2 soap_instantiate_xsd__float(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__float(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__float, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__float); + if (size) + *size = sizeof(xsd__float); + ((xsd__float*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__float[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__float); + for (int i = 0; i < n; i++) + ((xsd__float*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__float*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__float(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__float %p -> %p\n", q, p)); + *(xsd__float*)p = *(xsd__float*)q; +} + +void xsd__duration_::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_xsd__duration(soap, &this->xsd__duration_::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__duration_::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_xsd__duration(soap, &this->xsd__duration_::__item); + /* transient soap skipped */ +} + +int xsd__duration_::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__duration_(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__duration_(struct soap *soap, const char *tag, int id, const xsd__duration_ *a, const char *type) +{ + return soap_out_xsd__duration(soap, tag, id, &(a->xsd__duration_::__item), "xsd:duration"); +} + +void *xsd__duration_::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__duration_(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__duration_ * SOAP_FMAC4 soap_in_xsd__duration_(struct soap *soap, const char *tag, xsd__duration_ *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__duration_ *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__duration_, sizeof(xsd__duration_), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__duration_) + return (xsd__duration_ *)a->soap_in(soap, tag, type); + } + if (!soap_in_xsd__duration(soap, tag, &(a->xsd__duration_::__item), "xsd:duration")) + return NULL; + return a; +} + +int xsd__duration_::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__duration_); + if (this->soap_out(soap, tag?tag:"xsd:duration", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__duration_::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__duration_(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__duration_ * SOAP_FMAC4 soap_get_xsd__duration_(struct soap *soap, xsd__duration_ *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__duration_(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__duration_ * SOAP_FMAC2 soap_instantiate_xsd__duration_(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__duration_(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__duration_, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__duration_); + if (size) + *size = sizeof(xsd__duration_); + ((xsd__duration_*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__duration_[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__duration_); + for (int i = 0; i < n; i++) + ((xsd__duration_*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__duration_*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__duration_(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__duration_ %p -> %p\n", q, p)); + *(xsd__duration_*)p = *(xsd__duration_*)q; +} +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__duration(struct soap *soap, const char *tag, int id, const std::string *s, const char *type) +{ + if ((soap->mode & SOAP_C_NILSTRING) && s->empty()) + return soap_element_null(soap, tag, id, type); + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, s, SOAP_TYPE_interswitch_xsd__duration), type) || soap_string_out(soap, s->c_str(), 0) || soap_element_end_out(soap, tag)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_xsd__duration(struct soap *soap, const char *tag, std::string *s, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!s) + s = soap_new_std__string(soap, -1); + if (soap->null) + if (s) + s->erase(); + if (soap->body && !*soap->href) + { char *t; + s = (std::string*)soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_interswitch_xsd__duration, sizeof(std::string), soap->type, soap->arrayType); + if (s) + { if ((t = soap_string_in(soap, 1, -1, -1))) + s->assign(t); + else + return NULL; + } + } + else + s = (std::string*)soap_id_forward(soap, soap->href, soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_interswitch_xsd__duration, sizeof(std::string), soap->type, soap->arrayType), 0, SOAP_TYPE_interswitch_xsd__duration, 0, sizeof(std::string), 0, soap_copy_xsd__duration); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + return s; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__duration(struct soap *soap, const std::string *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__duration); + if (soap_out_xsd__duration(soap, tag?tag:"xsd:duration", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_xsd__duration(struct soap *soap, std::string *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__duration(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void xsd__double::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_double(soap, &this->xsd__double::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__double::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + /* transient soap skipped */ +} + +int xsd__double::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__double(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__double(struct soap *soap, const char *tag, int id, const xsd__double *a, const char *type) +{ + return soap_out_double(soap, tag, id, &(a->xsd__double::__item), "xsd:double"); +} + +void *xsd__double::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__double(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__double * SOAP_FMAC4 soap_in_xsd__double(struct soap *soap, const char *tag, xsd__double *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__double *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__double, sizeof(xsd__double), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__double) + return (xsd__double *)a->soap_in(soap, tag, type); + } + if (!soap_in_double(soap, tag, &(a->xsd__double::__item), "xsd:double")) + return NULL; + return a; +} + +int xsd__double::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__double); + if (this->soap_out(soap, tag?tag:"xsd:double", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__double::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__double(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__double * SOAP_FMAC4 soap_get_xsd__double(struct soap *soap, xsd__double *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__double(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__double * SOAP_FMAC2 soap_instantiate_xsd__double(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__double(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__double, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__double); + if (size) + *size = sizeof(xsd__double); + ((xsd__double*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__double[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__double); + for (int i = 0; i < n; i++) + ((xsd__double*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__double*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__double(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__double %p -> %p\n", q, p)); + *(xsd__double*)p = *(xsd__double*)q; +} + +void xsd__decimal_::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_xsd__decimal(soap, &this->xsd__decimal_::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__decimal_::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_xsd__decimal(soap, &this->xsd__decimal_::__item); + /* transient soap skipped */ +} + +int xsd__decimal_::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__decimal_(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__decimal_(struct soap *soap, const char *tag, int id, const xsd__decimal_ *a, const char *type) +{ + return soap_out_xsd__decimal(soap, tag, id, &(a->xsd__decimal_::__item), "xsd:decimal"); +} + +void *xsd__decimal_::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__decimal_(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__decimal_ * SOAP_FMAC4 soap_in_xsd__decimal_(struct soap *soap, const char *tag, xsd__decimal_ *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__decimal_ *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__decimal_, sizeof(xsd__decimal_), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__decimal_) + return (xsd__decimal_ *)a->soap_in(soap, tag, type); + } + if (!soap_in_xsd__decimal(soap, tag, &(a->xsd__decimal_::__item), "xsd:decimal")) + return NULL; + return a; +} + +int xsd__decimal_::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__decimal_); + if (this->soap_out(soap, tag?tag:"xsd:decimal", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__decimal_::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__decimal_(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__decimal_ * SOAP_FMAC4 soap_get_xsd__decimal_(struct soap *soap, xsd__decimal_ *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__decimal_(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__decimal_ * SOAP_FMAC2 soap_instantiate_xsd__decimal_(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__decimal_(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__decimal_, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__decimal_); + if (size) + *size = sizeof(xsd__decimal_); + ((xsd__decimal_*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__decimal_[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__decimal_); + for (int i = 0; i < n; i++) + ((xsd__decimal_*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__decimal_*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__decimal_(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__decimal_ %p -> %p\n", q, p)); + *(xsd__decimal_*)p = *(xsd__decimal_*)q; +} +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__decimal(struct soap *soap, const char *tag, int id, const std::string *s, const char *type) +{ + if ((soap->mode & SOAP_C_NILSTRING) && s->empty()) + return soap_element_null(soap, tag, id, type); + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, s, SOAP_TYPE_interswitch_xsd__decimal), type) || soap_string_out(soap, s->c_str(), 0) || soap_element_end_out(soap, tag)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_xsd__decimal(struct soap *soap, const char *tag, std::string *s, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!s) + s = soap_new_std__string(soap, -1); + if (soap->null) + if (s) + s->erase(); + if (soap->body && !*soap->href) + { char *t; + s = (std::string*)soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_interswitch_xsd__decimal, sizeof(std::string), soap->type, soap->arrayType); + if (s) + { if ((t = soap_string_in(soap, 1, -1, -1))) + s->assign(t); + else + return NULL; + } + } + else + s = (std::string*)soap_id_forward(soap, soap->href, soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_interswitch_xsd__decimal, sizeof(std::string), soap->type, soap->arrayType), 0, SOAP_TYPE_interswitch_xsd__decimal, 0, sizeof(std::string), 0, soap_copy_xsd__decimal); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + return s; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__decimal(struct soap *soap, const std::string *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__decimal); + if (soap_out_xsd__decimal(soap, tag?tag:"xsd:decimal", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_xsd__decimal(struct soap *soap, std::string *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__decimal(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void xsd__dateTime::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_time(soap, &this->xsd__dateTime::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__dateTime::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + /* transient soap skipped */ +} + +int xsd__dateTime::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__dateTime(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__dateTime(struct soap *soap, const char *tag, int id, const xsd__dateTime *a, const char *type) +{ + return soap_out_time(soap, tag, id, &(a->xsd__dateTime::__item), "xsd:dateTime"); +} + +void *xsd__dateTime::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__dateTime(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__dateTime * SOAP_FMAC4 soap_in_xsd__dateTime(struct soap *soap, const char *tag, xsd__dateTime *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__dateTime *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__dateTime, sizeof(xsd__dateTime), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__dateTime) + return (xsd__dateTime *)a->soap_in(soap, tag, type); + } + if (!soap_in_time(soap, tag, &(a->xsd__dateTime::__item), "xsd:dateTime")) + return NULL; + return a; +} + +int xsd__dateTime::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__dateTime); + if (this->soap_out(soap, tag?tag:"xsd:dateTime", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__dateTime::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__dateTime(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__dateTime * SOAP_FMAC4 soap_get_xsd__dateTime(struct soap *soap, xsd__dateTime *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__dateTime(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__dateTime * SOAP_FMAC2 soap_instantiate_xsd__dateTime(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__dateTime(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__dateTime, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__dateTime); + if (size) + *size = sizeof(xsd__dateTime); + ((xsd__dateTime*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__dateTime[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__dateTime); + for (int i = 0; i < n; i++) + ((xsd__dateTime*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__dateTime*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__dateTime(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__dateTime %p -> %p\n", q, p)); + *(xsd__dateTime*)p = *(xsd__dateTime*)q; +} + +void xsd__byte_::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_xsd__byte(soap, &this->xsd__byte_::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__byte_::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + /* transient soap skipped */ +} + +int xsd__byte_::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__byte_(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__byte_(struct soap *soap, const char *tag, int id, const xsd__byte_ *a, const char *type) +{ + return soap_out_xsd__byte(soap, tag, id, &(a->xsd__byte_::__item), "xsd:byte"); +} + +void *xsd__byte_::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__byte_(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__byte_ * SOAP_FMAC4 soap_in_xsd__byte_(struct soap *soap, const char *tag, xsd__byte_ *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__byte_ *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__byte_, sizeof(xsd__byte_), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__byte_) + return (xsd__byte_ *)a->soap_in(soap, tag, type); + } + if (!soap_in_xsd__byte(soap, tag, &(a->xsd__byte_::__item), "xsd:byte")) + return NULL; + return a; +} + +int xsd__byte_::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__byte_); + if (this->soap_out(soap, tag?tag:"xsd:byte", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__byte_::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__byte_(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__byte_ * SOAP_FMAC4 soap_get_xsd__byte_(struct soap *soap, xsd__byte_ *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__byte_(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__byte_ * SOAP_FMAC2 soap_instantiate_xsd__byte_(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__byte_(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__byte_, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__byte_); + if (size) + *size = sizeof(xsd__byte_); + ((xsd__byte_*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__byte_[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__byte_); + for (int i = 0; i < n; i++) + ((xsd__byte_*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__byte_*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__byte_(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__byte_ %p -> %p\n", q, p)); + *(xsd__byte_*)p = *(xsd__byte_*)q; +} + +void xsd__boolean::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_bool(soap, &this->xsd__boolean::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__boolean::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + /* transient soap skipped */ +} + +int xsd__boolean::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__boolean(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__boolean(struct soap *soap, const char *tag, int id, const xsd__boolean *a, const char *type) +{ + return soap_out_bool(soap, tag, id, &(a->xsd__boolean::__item), "xsd:boolean"); +} + +void *xsd__boolean::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__boolean(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__boolean * SOAP_FMAC4 soap_in_xsd__boolean(struct soap *soap, const char *tag, xsd__boolean *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__boolean *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__boolean, sizeof(xsd__boolean), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__boolean) + return (xsd__boolean *)a->soap_in(soap, tag, type); + } + if (!soap_in_bool(soap, tag, &(a->xsd__boolean::__item), "xsd:boolean")) + return NULL; + return a; +} + +int xsd__boolean::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__boolean); + if (this->soap_out(soap, tag?tag:"xsd:boolean", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__boolean::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__boolean(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__boolean * SOAP_FMAC4 soap_get_xsd__boolean(struct soap *soap, xsd__boolean *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__boolean(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__boolean * SOAP_FMAC2 soap_instantiate_xsd__boolean(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__boolean(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__boolean, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__boolean); + if (size) + *size = sizeof(xsd__boolean); + ((xsd__boolean*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__boolean[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__boolean); + for (int i = 0; i < n; i++) + ((xsd__boolean*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__boolean*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__boolean(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__boolean %p -> %p\n", q, p)); + *(xsd__boolean*)p = *(xsd__boolean*)q; +} + +void xsd__base64Binary_::soap_default(struct soap *soap) +{ + this->soap = soap; + this->xsd__base64Binary_::__item.xsd__base64Binary::soap_default(soap); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__base64Binary_::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + this->xsd__base64Binary_::__item.soap_serialize(soap); + /* transient soap skipped */ +} + +int xsd__base64Binary_::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__base64Binary_(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__base64Binary_(struct soap *soap, const char *tag, int id, const xsd__base64Binary_ *a, const char *type) +{ + return (a->xsd__base64Binary_::__item).soap_out(soap, tag, id, "xsd:base64Binary"); +} + +void *xsd__base64Binary_::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__base64Binary_(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__base64Binary_ * SOAP_FMAC4 soap_in_xsd__base64Binary_(struct soap *soap, const char *tag, xsd__base64Binary_ *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__base64Binary_ *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__base64Binary_, sizeof(xsd__base64Binary_), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__base64Binary_) + return (xsd__base64Binary_ *)a->soap_in(soap, tag, type); + } + if (!(a->xsd__base64Binary_::__item).soap_in(soap, tag, "xsd:base64Binary")) + return NULL; + return a; +} + +int xsd__base64Binary_::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__base64Binary_); + if (this->soap_out(soap, tag?tag:"xsd:base64Binary", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__base64Binary_::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__base64Binary_(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__base64Binary_ * SOAP_FMAC4 soap_get_xsd__base64Binary_(struct soap *soap, xsd__base64Binary_ *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__base64Binary_(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__base64Binary_ * SOAP_FMAC2 soap_instantiate_xsd__base64Binary_(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__base64Binary_(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__base64Binary_, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__base64Binary_); + if (size) + *size = sizeof(xsd__base64Binary_); + ((xsd__base64Binary_*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__base64Binary_[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__base64Binary_); + for (int i = 0; i < n; i++) + ((xsd__base64Binary_*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__base64Binary_*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__base64Binary_(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__base64Binary_ %p -> %p\n", q, p)); + *(xsd__base64Binary_*)p = *(xsd__base64Binary_*)q; +} + +void xsd__base64Binary::soap_default(struct soap *soap) +{ + this->soap = soap; + this->__size = 0; + this->__ptr = NULL; + this->id = NULL; + this->type = NULL; + this->options = NULL; +} + +void xsd__base64Binary::soap_serialize(struct soap *soap) const +{ + if (this->__ptr && !soap_array_reference(soap, this, (struct soap_array*)&this->__ptr, 1, SOAP_TYPE_interswitch_xsd__base64Binary)) + if (this->id || this->type) + soap->mode |= SOAP_ENC_DIME; +} + +int xsd__base64Binary::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ return soap_out_xsd__base64Binary(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__base64Binary(struct soap *soap, const char *tag, int id, const xsd__base64Binary *a, const char *type) +{ +#ifndef WITH_LEANER + id = soap_attachment(soap, tag, id, a, (struct soap_array*)&a->__ptr, a->id, a->type, a->options, 1, type, SOAP_TYPE_interswitch_xsd__base64Binary); +#else + id = soap_element_id(soap, tag, id, a, (struct soap_array*)&a->__ptr, 1, type, SOAP_TYPE_interswitch_xsd__base64Binary); +#endif + if (id < 0) + return soap->error; + if (soap_element_begin_out(soap, tag, id, type)) + return soap->error; + if (soap_putbase64(soap, a->__ptr, a->__size)) + return soap->error; + return soap_element_end_out(soap, tag); +} + +void *xsd__base64Binary::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__base64Binary(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__base64Binary * SOAP_FMAC4 soap_in_xsd__base64Binary(struct soap *soap, const char *tag, xsd__base64Binary *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (*soap->type && soap_match_tag(soap, soap->type, type) && soap_match_tag(soap, soap->type, ":base64Binary") && soap_match_tag(soap, soap->type, ":base64")) + { soap->error = SOAP_TYPE; + return NULL; + } + a = (xsd__base64Binary *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__base64Binary, sizeof(xsd__base64Binary), soap->type, soap->arrayType); + if (!a) + return NULL; + if (soap->alloced) + a->soap_default(soap); + if (soap->body && !*soap->href) + { + a->__ptr = soap_getbase64(soap, &a->__size, 0); +#ifndef WITH_LEANER + if (soap_xop_forward(soap, &a->__ptr, &a->__size, &a->id, &a->type, &a->options)) + return NULL; +#endif + if ((!a->__ptr && soap->error) || soap_element_end_in(soap, tag)) + return NULL; + } + else + { +#ifndef WITH_LEANER + if (*soap->href != '#') + { if (soap_dime_forward(soap, &a->__ptr, &a->__size, &a->id, &a->type, &a->options)) + return NULL; + } + else +#endif + a = (xsd__base64Binary *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch_xsd__base64Binary, 0, sizeof(xsd__base64Binary), 0, soap_copy_xsd__base64Binary); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +int xsd__base64Binary::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, (struct soap_array*)&this->__ptr, 1, tag, SOAP_TYPE_interswitch_xsd__base64Binary); + if (this->soap_out(soap, tag?tag:"xsd:base64Binary", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__base64Binary::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__base64Binary(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__base64Binary * SOAP_FMAC4 soap_get_xsd__base64Binary(struct soap *soap, xsd__base64Binary *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__base64Binary(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__base64Binary * SOAP_FMAC2 soap_instantiate_xsd__base64Binary(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__base64Binary(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__base64Binary, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__base64Binary); + if (size) + *size = sizeof(xsd__base64Binary); + ((xsd__base64Binary*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__base64Binary[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__base64Binary); + for (int i = 0; i < n; i++) + ((xsd__base64Binary*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__base64Binary*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__base64Binary(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__base64Binary %p -> %p\n", q, p)); + *(xsd__base64Binary*)p = *(xsd__base64Binary*)q; +} + +void xsd__anyURI_::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_xsd__anyURI(soap, &this->xsd__anyURI_::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__anyURI_::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_xsd__anyURI(soap, &this->xsd__anyURI_::__item); + /* transient soap skipped */ +} + +int xsd__anyURI_::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__anyURI_(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__anyURI_(struct soap *soap, const char *tag, int id, const xsd__anyURI_ *a, const char *type) +{ + return soap_out_xsd__anyURI(soap, tag, id, &(a->xsd__anyURI_::__item), "xsd:anyURI"); +} + +void *xsd__anyURI_::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__anyURI_(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__anyURI_ * SOAP_FMAC4 soap_in_xsd__anyURI_(struct soap *soap, const char *tag, xsd__anyURI_ *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__anyURI_ *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__anyURI_, sizeof(xsd__anyURI_), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__anyURI_) + return (xsd__anyURI_ *)a->soap_in(soap, tag, type); + } + if (!soap_in_xsd__anyURI(soap, tag, &(a->xsd__anyURI_::__item), "xsd:anyURI")) + return NULL; + return a; +} + +int xsd__anyURI_::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__anyURI_); + if (this->soap_out(soap, tag?tag:"xsd:anyURI", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__anyURI_::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__anyURI_(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__anyURI_ * SOAP_FMAC4 soap_get_xsd__anyURI_(struct soap *soap, xsd__anyURI_ *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__anyURI_(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__anyURI_ * SOAP_FMAC2 soap_instantiate_xsd__anyURI_(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__anyURI_(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__anyURI_, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__anyURI_); + if (size) + *size = sizeof(xsd__anyURI_); + ((xsd__anyURI_*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__anyURI_[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__anyURI_); + for (int i = 0; i < n; i++) + ((xsd__anyURI_*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__anyURI_*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__anyURI_(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__anyURI_ %p -> %p\n", q, p)); + *(xsd__anyURI_*)p = *(xsd__anyURI_*)q; +} +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__anyURI(struct soap *soap, const char *tag, int id, const std::string *s, const char *type) +{ + if ((soap->mode & SOAP_C_NILSTRING) && s->empty()) + return soap_element_null(soap, tag, id, type); + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, s, SOAP_TYPE_interswitch_xsd__anyURI), type) || soap_string_out(soap, s->c_str(), 0) || soap_element_end_out(soap, tag)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_xsd__anyURI(struct soap *soap, const char *tag, std::string *s, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!s) + s = soap_new_std__string(soap, -1); + if (soap->null) + if (s) + s->erase(); + if (soap->body && !*soap->href) + { char *t; + s = (std::string*)soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_interswitch_xsd__anyURI, sizeof(std::string), soap->type, soap->arrayType); + if (s) + { if ((t = soap_string_in(soap, 1, -1, -1))) + s->assign(t); + else + return NULL; + } + } + else + s = (std::string*)soap_id_forward(soap, soap->href, soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_interswitch_xsd__anyURI, sizeof(std::string), soap->type, soap->arrayType), 0, SOAP_TYPE_interswitch_xsd__anyURI, 0, sizeof(std::string), 0, soap_copy_xsd__anyURI); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + return s; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__anyURI(struct soap *soap, const std::string *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__anyURI); + if (soap_out_xsd__anyURI(soap, tag?tag:"xsd:anyURI", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_xsd__anyURI(struct soap *soap, std::string *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__anyURI(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void xsd__QName_::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_xsd__QName(soap, &this->xsd__QName_::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__QName_::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_xsd__QName(soap, &this->xsd__QName_::__item); + /* transient soap skipped */ +} + +int xsd__QName_::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__QName_(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__QName_(struct soap *soap, const char *tag, int id, const xsd__QName_ *a, const char *type) +{ + std::string soap_tmp___item(soap_QName2s(soap, a->__item.c_str())); + return soap_out_xsd__QName(soap, tag, id, &soap_tmp___item, "xsd:QName"); +} + +void *xsd__QName_::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__QName_(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__QName_ * SOAP_FMAC4 soap_in_xsd__QName_(struct soap *soap, const char *tag, xsd__QName_ *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__QName_ *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__QName_, sizeof(xsd__QName_), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__QName_) + return (xsd__QName_ *)a->soap_in(soap, tag, type); + } + if (!soap_in_xsd__QName(soap, tag, &(a->xsd__QName_::__item), "xsd:QName")) + return NULL; + return a; +} + +int xsd__QName_::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__QName_); + if (this->soap_out(soap, tag?tag:"xsd:QName", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__QName_::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__QName_(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__QName_ * SOAP_FMAC4 soap_get_xsd__QName_(struct soap *soap, xsd__QName_ *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__QName_(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__QName_ * SOAP_FMAC2 soap_instantiate_xsd__QName_(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__QName_(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__QName_, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__QName_); + if (size) + *size = sizeof(xsd__QName_); + ((xsd__QName_*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__QName_[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__QName_); + for (int i = 0; i < n; i++) + ((xsd__QName_*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__QName_*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__QName_(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__QName_ %p -> %p\n", q, p)); + *(xsd__QName_*)p = *(xsd__QName_*)q; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__QName(struct soap *soap, const char *tag, int id, const xsd__QName *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch_xsd__QName), type)) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC1 std::string * SOAP_FMAC2 soap_in_xsd__QName(struct soap *soap, const char *tag, std::string *s, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, type)) + return NULL; + if (!s) + s = soap_new_std__string(soap, -1); + if (soap->null) + if (s) + s->erase(); + if (soap->body && !*soap->href) + { char *t; + s = (std::string*)soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_interswitch_xsd__QName, sizeof(std::string), soap->type, soap->arrayType); + if (s) + { if ((t = soap_string_in(soap, 2, -1, -1))) + s->assign(t); + else + return NULL; + } + } + else + s = (std::string*)soap_id_forward(soap, soap->href, soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_interswitch_xsd__QName, sizeof(std::string), soap->type, soap->arrayType), 0, SOAP_TYPE_interswitch_xsd__QName, 0, sizeof(std::string), 0, soap_copy_xsd__QName); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + return s; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__QName(struct soap *soap, const xsd__QName *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__QName); + if (soap_out_xsd__QName(soap, tag?tag:"xsd:QName", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 xsd__QName * SOAP_FMAC4 soap_get_xsd__QName(struct soap *soap, xsd__QName *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__QName(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__QName * SOAP_FMAC2 soap_instantiate_xsd__QName(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__QName(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__QName, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__QName); + if (size) + *size = sizeof(xsd__QName); + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__QName[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__QName); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__QName*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__QName(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__QName %p -> %p\n", q, p)); + *(xsd__QName*)p = *(xsd__QName*)q; +} + +void xsd__IDREF_::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_xsd__IDREF(soap, &this->xsd__IDREF_::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__IDREF_::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_xsd__IDREF(soap, &this->xsd__IDREF_::__item); + /* transient soap skipped */ +} + +int xsd__IDREF_::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__IDREF_(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__IDREF_(struct soap *soap, const char *tag, int id, const xsd__IDREF_ *a, const char *type) +{ + return soap_out_xsd__IDREF(soap, tag, id, &(a->xsd__IDREF_::__item), "xsd:IDREF"); +} + +void *xsd__IDREF_::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__IDREF_(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__IDREF_ * SOAP_FMAC4 soap_in_xsd__IDREF_(struct soap *soap, const char *tag, xsd__IDREF_ *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__IDREF_ *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__IDREF_, sizeof(xsd__IDREF_), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__IDREF_) + return (xsd__IDREF_ *)a->soap_in(soap, tag, type); + } + if (!soap_in_xsd__IDREF(soap, tag, &(a->xsd__IDREF_::__item), "xsd:IDREF")) + return NULL; + return a; +} + +int xsd__IDREF_::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__IDREF_); + if (this->soap_out(soap, tag?tag:"xsd:IDREF", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__IDREF_::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__IDREF_(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__IDREF_ * SOAP_FMAC4 soap_get_xsd__IDREF_(struct soap *soap, xsd__IDREF_ *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__IDREF_(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__IDREF_ * SOAP_FMAC2 soap_instantiate_xsd__IDREF_(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__IDREF_(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__IDREF_, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__IDREF_); + if (size) + *size = sizeof(xsd__IDREF_); + ((xsd__IDREF_*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__IDREF_[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__IDREF_); + for (int i = 0; i < n; i++) + ((xsd__IDREF_*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__IDREF_*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__IDREF_(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__IDREF_ %p -> %p\n", q, p)); + *(xsd__IDREF_*)p = *(xsd__IDREF_*)q; +} +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__IDREF(struct soap *soap, const char *tag, int id, const std::string *s, const char *type) +{ + if ((soap->mode & SOAP_C_NILSTRING) && s->empty()) + return soap_element_null(soap, tag, id, type); + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, s, SOAP_TYPE_interswitch_xsd__IDREF), type) || soap_string_out(soap, s->c_str(), 0) || soap_element_end_out(soap, tag)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_xsd__IDREF(struct soap *soap, const char *tag, std::string *s, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!s) + s = soap_new_std__string(soap, -1); + if (soap->null) + if (s) + s->erase(); + if (soap->body && !*soap->href) + { char *t; + s = (std::string*)soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_interswitch_xsd__IDREF, sizeof(std::string), soap->type, soap->arrayType); + if (s) + { if ((t = soap_string_in(soap, 1, -1, -1))) + s->assign(t); + else + return NULL; + } + } + else + s = (std::string*)soap_id_forward(soap, soap->href, soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_interswitch_xsd__IDREF, sizeof(std::string), soap->type, soap->arrayType), 0, SOAP_TYPE_interswitch_xsd__IDREF, 0, sizeof(std::string), 0, soap_copy_xsd__IDREF); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + return s; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__IDREF(struct soap *soap, const std::string *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__IDREF); + if (soap_out_xsd__IDREF(soap, tag?tag:"xsd:IDREF", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_xsd__IDREF(struct soap *soap, std::string *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__IDREF(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +void xsd__ID_::soap_default(struct soap *soap) +{ + this->soap = soap; + soap_default_xsd__ID(soap, &this->xsd__ID_::__item); + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__ID_::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + soap_serialize_xsd__ID(soap, &this->xsd__ID_::__item); + /* transient soap skipped */ +} + +int xsd__ID_::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__ID_(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__ID_(struct soap *soap, const char *tag, int id, const xsd__ID_ *a, const char *type) +{ + return soap_out_xsd__ID(soap, tag, id, &(a->xsd__ID_::__item), "xsd:ID"); +} + +void *xsd__ID_::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__ID_(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__ID_ * SOAP_FMAC4 soap_in_xsd__ID_(struct soap *soap, const char *tag, xsd__ID_ *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__ID_ *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__ID_, sizeof(xsd__ID_), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__ID_) + return (xsd__ID_ *)a->soap_in(soap, tag, type); + } + if (!soap_in_xsd__ID(soap, tag, &(a->xsd__ID_::__item), "xsd:ID")) + return NULL; + return a; +} + +int xsd__ID_::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__ID_); + if (this->soap_out(soap, tag?tag:"xsd:ID", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__ID_::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__ID_(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__ID_ * SOAP_FMAC4 soap_get_xsd__ID_(struct soap *soap, xsd__ID_ *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__ID_(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__ID_ * SOAP_FMAC2 soap_instantiate_xsd__ID_(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__ID_(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__ID_, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__ID_); + if (size) + *size = sizeof(xsd__ID_); + ((xsd__ID_*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__ID_[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__ID_); + for (int i = 0; i < n; i++) + ((xsd__ID_*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__ID_*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__ID_(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__ID_ %p -> %p\n", q, p)); + *(xsd__ID_*)p = *(xsd__ID_*)q; +} +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__ID(struct soap *soap, const char *tag, int id, const std::string *s, const char *type) +{ + if ((soap->mode & SOAP_C_NILSTRING) && s->empty()) + return soap_element_null(soap, tag, id, type); + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, s, SOAP_TYPE_interswitch_xsd__ID), type) || soap_string_out(soap, s->c_str(), 0) || soap_element_end_out(soap, tag)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_xsd__ID(struct soap *soap, const char *tag, std::string *s, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!s) + s = soap_new_std__string(soap, -1); + if (soap->null) + if (s) + s->erase(); + if (soap->body && !*soap->href) + { char *t; + s = (std::string*)soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_interswitch_xsd__ID, sizeof(std::string), soap->type, soap->arrayType); + if (s) + { if ((t = soap_string_in(soap, 1, -1, -1))) + s->assign(t); + else + return NULL; + } + } + else + s = (std::string*)soap_id_forward(soap, soap->href, soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_interswitch_xsd__ID, sizeof(std::string), soap->type, soap->arrayType), 0, SOAP_TYPE_interswitch_xsd__ID, 0, sizeof(std::string), 0, soap_copy_xsd__ID); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + return s; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__ID(struct soap *soap, const std::string *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__ID); + if (soap_out_xsd__ID(soap, tag?tag:"xsd:ID", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_xsd__ID(struct soap *soap, std::string *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__ID(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_std__string(struct soap *soap, std::string *p) +{ + (void)soap; /* appease -Wall -Werror */ + p->erase(); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__string(struct soap *soap, const std::string *p) +{ (void)soap; (void)p; /* appease -Wall -Werror */ +} +SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__string(struct soap *soap, const char *tag, int id, const std::string *s, const char *type) +{ + if ((soap->mode & SOAP_C_NILSTRING) && s->empty()) + return soap_element_null(soap, tag, id, type); + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, s, SOAP_TYPE_interswitch_std__string), type) || soap_string_out(soap, s->c_str(), 0) || soap_element_end_out(soap, tag)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_std__string(struct soap *soap, const char *tag, std::string *s, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!s) + s = soap_new_std__string(soap, -1); + if (soap->null) + if (s) + s->erase(); + if (soap->body && !*soap->href) + { char *t; + s = (std::string*)soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_interswitch_std__string, sizeof(std::string), soap->type, soap->arrayType); + if (s) + { if ((t = soap_string_in(soap, 1, -1, -1))) + s->assign(t); + else + return NULL; + } + } + else + s = (std::string*)soap_id_forward(soap, soap->href, soap_class_id_enter(soap, soap->id, s, SOAP_TYPE_interswitch_std__string, sizeof(std::string), soap->type, soap->arrayType), 0, SOAP_TYPE_interswitch_std__string, 0, sizeof(std::string), 0, soap_copy_std__string); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + return s; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__string(struct soap *soap, const std::string *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_std__string); + if (soap_out_std__string(soap, tag?tag:"string", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_std__string(struct soap *soap, std::string *p, const char *tag, const char *type) +{ + if ((p = soap_in_std__string(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 std::string * SOAP_FMAC2 soap_instantiate_std__string(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_std__string(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_std__string, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(std::string); + if (size) + *size = sizeof(std::string); + } + else + { cp->ptr = (void*)SOAP_NEW(std::string[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(std::string); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (std::string*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_std__string(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying std::string %p -> %p\n", q, p)); + *(std::string*)p = *(std::string*)q; +} + +void xsd__anyType::soap_default(struct soap *soap) +{ + this->soap = soap; + this->xsd__anyType::__item = NULL; + /* transient soap skipped */ +} + +void xsd__anyType::soap_serialize(struct soap *soap) const +{ + (void)soap; /* appease -Wall -Werror */ + /* transient soap skipped */ +} + +int xsd__anyType::soap_out(struct soap *soap, const char *tag, int id, const char *type) const +{ + return soap_out_xsd__anyType(soap, tag, id, this, type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__anyType(struct soap *soap, const char *tag, int id, const xsd__anyType *a, const char *type) +{ + return soap_outliteral(soap, tag, &(a->xsd__anyType::__item), NULL); +} + +void *xsd__anyType::soap_in(struct soap *soap, const char *tag, const char *type) +{ return soap_in_xsd__anyType(soap, tag, this, type); +} + +SOAP_FMAC3 xsd__anyType * SOAP_FMAC4 soap_in_xsd__anyType(struct soap *soap, const char *tag, xsd__anyType *a, const char *type) +{ + (void)type; /* appease -Wall -Werror */ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!(a = (xsd__anyType *)soap_class_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_xsd__anyType, sizeof(xsd__anyType), soap->type, soap->arrayType))) + { soap->error = SOAP_TAG_MISMATCH; + return NULL; + } + soap_revert(soap); + *soap->id = '\0'; + if (soap->alloced) + { a->soap_default(soap); + if (soap->clist->type != SOAP_TYPE_interswitch_xsd__anyType) + return (xsd__anyType *)a->soap_in(soap, tag, type); + } + if (!soap_inliteral(soap, tag, &(a->xsd__anyType::__item))) + return NULL; + return a; +} + +int xsd__anyType::soap_put(struct soap *soap, const char *tag, const char *type) const +{ + register int id = soap_embed(soap, (void*)this, NULL, 0, tag, SOAP_TYPE_interswitch_xsd__anyType); + if (this->soap_out(soap, tag?tag:"xsd:anyType", id, type)) + return soap->error; + return soap_putindependent(soap); +} + +void *xsd__anyType::soap_get(struct soap *soap, const char *tag, const char *type) +{ + return soap_get_xsd__anyType(soap, this, tag, type); +} + +SOAP_FMAC3 xsd__anyType * SOAP_FMAC4 soap_get_xsd__anyType(struct soap *soap, xsd__anyType *p, const char *tag, const char *type) +{ + if ((p = soap_in_xsd__anyType(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 xsd__anyType * SOAP_FMAC2 soap_instantiate_xsd__anyType(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_xsd__anyType(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_xsd__anyType, n, soap_fdelete); + if (!cp) + return NULL; + if (type && !soap_match_tag(soap, type, "xsd:ID")) + { cp->type = SOAP_TYPE_interswitch_xsd__ID_; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__ID_); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__ID_); + ((xsd__ID_*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__ID_[n]); + if (size) + *size = n * sizeof(xsd__ID_); + for (int i = 0; i < n; i++) + ((xsd__ID_*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__ID_*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:IDREF")) + { cp->type = SOAP_TYPE_interswitch_xsd__IDREF_; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__IDREF_); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__IDREF_); + ((xsd__IDREF_*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__IDREF_[n]); + if (size) + *size = n * sizeof(xsd__IDREF_); + for (int i = 0; i < n; i++) + ((xsd__IDREF_*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__IDREF_*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:QName")) + { cp->type = SOAP_TYPE_interswitch_xsd__QName_; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__QName_); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__QName_); + ((xsd__QName_*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__QName_[n]); + if (size) + *size = n * sizeof(xsd__QName_); + for (int i = 0; i < n; i++) + ((xsd__QName_*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__QName_*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:anyURI")) + { cp->type = SOAP_TYPE_interswitch_xsd__anyURI_; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__anyURI_); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__anyURI_); + ((xsd__anyURI_*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__anyURI_[n]); + if (size) + *size = n * sizeof(xsd__anyURI_); + for (int i = 0; i < n; i++) + ((xsd__anyURI_*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__anyURI_*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:base64Binary")) + { cp->type = SOAP_TYPE_interswitch_xsd__base64Binary_; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__base64Binary_); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__base64Binary_); + ((xsd__base64Binary_*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__base64Binary_[n]); + if (size) + *size = n * sizeof(xsd__base64Binary_); + for (int i = 0; i < n; i++) + ((xsd__base64Binary_*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__base64Binary_*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:boolean")) + { cp->type = SOAP_TYPE_interswitch_xsd__boolean; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__boolean); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__boolean); + ((xsd__boolean*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__boolean[n]); + if (size) + *size = n * sizeof(xsd__boolean); + for (int i = 0; i < n; i++) + ((xsd__boolean*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__boolean*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:byte")) + { cp->type = SOAP_TYPE_interswitch_xsd__byte_; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__byte_); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__byte_); + ((xsd__byte_*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__byte_[n]); + if (size) + *size = n * sizeof(xsd__byte_); + for (int i = 0; i < n; i++) + ((xsd__byte_*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__byte_*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:dateTime")) + { cp->type = SOAP_TYPE_interswitch_xsd__dateTime; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__dateTime); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__dateTime); + ((xsd__dateTime*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__dateTime[n]); + if (size) + *size = n * sizeof(xsd__dateTime); + for (int i = 0; i < n; i++) + ((xsd__dateTime*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__dateTime*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:decimal")) + { cp->type = SOAP_TYPE_interswitch_xsd__decimal_; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__decimal_); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__decimal_); + ((xsd__decimal_*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__decimal_[n]); + if (size) + *size = n * sizeof(xsd__decimal_); + for (int i = 0; i < n; i++) + ((xsd__decimal_*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__decimal_*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:double")) + { cp->type = SOAP_TYPE_interswitch_xsd__double; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__double); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__double); + ((xsd__double*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__double[n]); + if (size) + *size = n * sizeof(xsd__double); + for (int i = 0; i < n; i++) + ((xsd__double*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__double*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:duration")) + { cp->type = SOAP_TYPE_interswitch_xsd__duration_; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__duration_); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__duration_); + ((xsd__duration_*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__duration_[n]); + if (size) + *size = n * sizeof(xsd__duration_); + for (int i = 0; i < n; i++) + ((xsd__duration_*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__duration_*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:float")) + { cp->type = SOAP_TYPE_interswitch_xsd__float; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__float); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__float); + ((xsd__float*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__float[n]); + if (size) + *size = n * sizeof(xsd__float); + for (int i = 0; i < n; i++) + ((xsd__float*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__float*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:int")) + { cp->type = SOAP_TYPE_interswitch_xsd__int; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__int); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__int); + ((xsd__int*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__int[n]); + if (size) + *size = n * sizeof(xsd__int); + for (int i = 0; i < n; i++) + ((xsd__int*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__int*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:long")) + { cp->type = SOAP_TYPE_interswitch_xsd__long; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__long); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__long); + ((xsd__long*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__long[n]); + if (size) + *size = n * sizeof(xsd__long); + for (int i = 0; i < n; i++) + ((xsd__long*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__long*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:short")) + { cp->type = SOAP_TYPE_interswitch_xsd__short; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__short); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__short); + ((xsd__short*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__short[n]); + if (size) + *size = n * sizeof(xsd__short); + for (int i = 0; i < n; i++) + ((xsd__short*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__short*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:string")) + { cp->type = SOAP_TYPE_interswitch_xsd__string; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__string); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__string); + ((xsd__string*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__string[n]); + if (size) + *size = n * sizeof(xsd__string); + for (int i = 0; i < n; i++) + ((xsd__string*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__string*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:unsignedByte")) + { cp->type = SOAP_TYPE_interswitch_xsd__unsignedByte_; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__unsignedByte_); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__unsignedByte_); + ((xsd__unsignedByte_*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__unsignedByte_[n]); + if (size) + *size = n * sizeof(xsd__unsignedByte_); + for (int i = 0; i < n; i++) + ((xsd__unsignedByte_*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__unsignedByte_*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:unsignedInt")) + { cp->type = SOAP_TYPE_interswitch_xsd__unsignedInt; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__unsignedInt); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__unsignedInt); + ((xsd__unsignedInt*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__unsignedInt[n]); + if (size) + *size = n * sizeof(xsd__unsignedInt); + for (int i = 0; i < n; i++) + ((xsd__unsignedInt*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__unsignedInt*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:unsignedLong")) + { cp->type = SOAP_TYPE_interswitch_xsd__unsignedLong; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__unsignedLong); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__unsignedLong); + ((xsd__unsignedLong*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__unsignedLong[n]); + if (size) + *size = n * sizeof(xsd__unsignedLong); + for (int i = 0; i < n; i++) + ((xsd__unsignedLong*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__unsignedLong*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "xsd:unsignedShort")) + { cp->type = SOAP_TYPE_interswitch_xsd__unsignedShort; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__unsignedShort); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(xsd__unsignedShort); + ((xsd__unsignedShort*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__unsignedShort[n]); + if (size) + *size = n * sizeof(xsd__unsignedShort); + for (int i = 0; i < n; i++) + ((xsd__unsignedShort*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__unsignedShort*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "interswitch2:char")) + { cp->type = SOAP_TYPE_interswitch_interswitch2__char__; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(interswitch2__char__); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(interswitch2__char__); + ((interswitch2__char__*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(interswitch2__char__[n]); + if (size) + *size = n * sizeof(interswitch2__char__); + for (int i = 0; i < n; i++) + ((interswitch2__char__*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (interswitch2__char__*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "interswitch2:duration")) + { cp->type = SOAP_TYPE_interswitch_interswitch2__duration__; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(interswitch2__duration__); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(interswitch2__duration__); + ((interswitch2__duration__*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(interswitch2__duration__[n]); + if (size) + *size = n * sizeof(interswitch2__duration__); + for (int i = 0; i < n; i++) + ((interswitch2__duration__*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (interswitch2__duration__*)cp->ptr; + } + if (type && !soap_match_tag(soap, type, "interswitch2:guid")) + { cp->type = SOAP_TYPE_interswitch_interswitch2__guid__; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(interswitch2__guid__); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = sizeof(interswitch2__guid__); + ((interswitch2__guid__*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(interswitch2__guid__[n]); + if (size) + *size = n * sizeof(interswitch2__guid__); + for (int i = 0; i < n; i++) + ((interswitch2__guid__*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (interswitch2__guid__*)cp->ptr; + } + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(xsd__anyType); + if (size) + *size = sizeof(xsd__anyType); + ((xsd__anyType*)cp->ptr)->soap = soap; + } + else + { cp->ptr = (void*)SOAP_NEW(xsd__anyType[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(xsd__anyType); + for (int i = 0; i < n; i++) + ((xsd__anyType*)cp->ptr)[i].soap = soap; + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (xsd__anyType*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__anyType(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying xsd__anyType %p -> %p\n", q, p)); + *(xsd__anyType*)p = *(xsd__anyType*)q; +} + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Fault(struct soap *soap, struct SOAP_ENV__Fault *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default__QName(soap, &a->faultcode); + soap_default_string(soap, &a->faultstring); + soap_default_string(soap, &a->faultactor); + a->detail = NULL; + a->SOAP_ENV__Code = NULL; + a->SOAP_ENV__Reason = NULL; + soap_default_string(soap, &a->SOAP_ENV__Node); + soap_default_string(soap, &a->SOAP_ENV__Role); + a->SOAP_ENV__Detail = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Fault(struct soap *soap, const struct SOAP_ENV__Fault *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize__QName(soap, &a->faultcode); + soap_serialize_string(soap, &a->faultstring); + soap_serialize_string(soap, &a->faultactor); + soap_serialize_PointerToSOAP_ENV__Detail(soap, &a->detail); + soap_serialize_PointerToSOAP_ENV__Code(soap, &a->SOAP_ENV__Code); + soap_serialize_PointerToSOAP_ENV__Reason(soap, &a->SOAP_ENV__Reason); + soap_serialize_string(soap, &a->SOAP_ENV__Node); + soap_serialize_string(soap, &a->SOAP_ENV__Role); + soap_serialize_PointerToSOAP_ENV__Detail(soap, &a->SOAP_ENV__Detail); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Fault(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Fault *a, const char *type) +{ + const char *soap_tmp_faultcode = soap_QName2s(soap, a->faultcode); + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch_SOAP_ENV__Fault), type)) + return soap->error; + if (soap_out__QName(soap, "faultcode", -1, (char*const*)&soap_tmp_faultcode, "")) + return soap->error; + if (soap_out_string(soap, "faultstring", -1, &a->faultstring, "")) + return soap->error; + if (soap_out_string(soap, "faultactor", -1, &a->faultactor, "")) + return soap->error; + if (soap_out_PointerToSOAP_ENV__Detail(soap, "detail", -1, &a->detail, "")) + return soap->error; + if (soap_out_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Code", -1, &a->SOAP_ENV__Code, "")) + return soap->error; + if (soap_out_PointerToSOAP_ENV__Reason(soap, "SOAP-ENV:Reason", -1, &a->SOAP_ENV__Reason, "")) + return soap->error; + if (soap_out_string(soap, "SOAP-ENV:Node", -1, &a->SOAP_ENV__Node, "")) + return soap->error; + if (soap_out_string(soap, "SOAP-ENV:Role", -1, &a->SOAP_ENV__Role, "")) + return soap->error; + if (soap_out_PointerToSOAP_ENV__Detail(soap, "SOAP-ENV:Detail", -1, &a->SOAP_ENV__Detail, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_in_SOAP_ENV__Fault(struct soap *soap, const char *tag, struct SOAP_ENV__Fault *a, const char *type) +{ + size_t soap_flag_faultcode = 1; + size_t soap_flag_faultstring = 1; + size_t soap_flag_faultactor = 1; + size_t soap_flag_detail = 1; + size_t soap_flag_SOAP_ENV__Code = 1; + size_t soap_flag_SOAP_ENV__Reason = 1; + size_t soap_flag_SOAP_ENV__Node = 1; + size_t soap_flag_SOAP_ENV__Role = 1; + size_t soap_flag_SOAP_ENV__Detail = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct SOAP_ENV__Fault *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_SOAP_ENV__Fault, sizeof(struct SOAP_ENV__Fault), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default_SOAP_ENV__Fault(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_faultcode && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in__QName(soap, "faultcode", &a->faultcode, "")) + { soap_flag_faultcode--; + continue; + } + if (soap_flag_faultstring && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_string(soap, "faultstring", &a->faultstring, "xsd:string")) + { soap_flag_faultstring--; + continue; + } + if (soap_flag_faultactor && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_string(soap, "faultactor", &a->faultactor, "xsd:string")) + { soap_flag_faultactor--; + continue; + } + if (soap_flag_detail && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerToSOAP_ENV__Detail(soap, "detail", &a->detail, "")) + { soap_flag_detail--; + continue; + } + if (soap_flag_SOAP_ENV__Code && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Code", &a->SOAP_ENV__Code, "")) + { soap_flag_SOAP_ENV__Code--; + continue; + } + if (soap_flag_SOAP_ENV__Reason && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerToSOAP_ENV__Reason(soap, "SOAP-ENV:Reason", &a->SOAP_ENV__Reason, "")) + { soap_flag_SOAP_ENV__Reason--; + continue; + } + if (soap_flag_SOAP_ENV__Node && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_string(soap, "SOAP-ENV:Node", &a->SOAP_ENV__Node, "xsd:string")) + { soap_flag_SOAP_ENV__Node--; + continue; + } + if (soap_flag_SOAP_ENV__Role && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_string(soap, "SOAP-ENV:Role", &a->SOAP_ENV__Role, "xsd:string")) + { soap_flag_SOAP_ENV__Role--; + continue; + } + if (soap_flag_SOAP_ENV__Detail && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerToSOAP_ENV__Detail(soap, "SOAP-ENV:Detail", &a->SOAP_ENV__Detail, "")) + { soap_flag_SOAP_ENV__Detail--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct SOAP_ENV__Fault *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch_SOAP_ENV__Fault, 0, sizeof(struct SOAP_ENV__Fault), 0, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Fault(struct soap *soap, const struct SOAP_ENV__Fault *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_SOAP_ENV__Fault); + if (soap_out_SOAP_ENV__Fault(soap, tag?tag:"SOAP-ENV:Fault", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_get_SOAP_ENV__Fault(struct soap *soap, struct SOAP_ENV__Fault *p, const char *tag, const char *type) +{ + if ((p = soap_in_SOAP_ENV__Fault(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct SOAP_ENV__Fault * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Fault(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Fault(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_SOAP_ENV__Fault, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Fault); + if (size) + *size = sizeof(struct SOAP_ENV__Fault); + } + else + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Fault[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct SOAP_ENV__Fault); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct SOAP_ENV__Fault*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Fault(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Fault %p -> %p\n", q, p)); + *(struct SOAP_ENV__Fault*)p = *(struct SOAP_ENV__Fault*)q; +} + +#endif + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default_string(soap, &a->SOAP_ENV__Text); +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Reason(struct soap *soap, const struct SOAP_ENV__Reason *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_string(soap, &a->SOAP_ENV__Text); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Reason(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Reason *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch_SOAP_ENV__Reason), type)) + return soap->error; + if (soap->lang) + soap_set_attr(soap, "xml:lang", soap->lang); + if (soap_out_string(soap, "SOAP-ENV:Text", -1, &a->SOAP_ENV__Text, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_in_SOAP_ENV__Reason(struct soap *soap, const char *tag, struct SOAP_ENV__Reason *a, const char *type) +{ + size_t soap_flag_SOAP_ENV__Text = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct SOAP_ENV__Reason *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_SOAP_ENV__Reason, sizeof(struct SOAP_ENV__Reason), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default_SOAP_ENV__Reason(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_SOAP_ENV__Text && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in_string(soap, "SOAP-ENV:Text", &a->SOAP_ENV__Text, "xsd:string")) + { soap_flag_SOAP_ENV__Text--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct SOAP_ENV__Reason *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch_SOAP_ENV__Reason, 0, sizeof(struct SOAP_ENV__Reason), 0, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Reason(struct soap *soap, const struct SOAP_ENV__Reason *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_SOAP_ENV__Reason); + if (soap_out_SOAP_ENV__Reason(soap, tag?tag:"SOAP-ENV:Reason", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_get_SOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *p, const char *tag, const char *type) +{ + if ((p = soap_in_SOAP_ENV__Reason(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct SOAP_ENV__Reason * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Reason(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Reason(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_SOAP_ENV__Reason, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Reason); + if (size) + *size = sizeof(struct SOAP_ENV__Reason); + } + else + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Reason[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct SOAP_ENV__Reason); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct SOAP_ENV__Reason*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Reason(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Reason %p -> %p\n", q, p)); + *(struct SOAP_ENV__Reason*)p = *(struct SOAP_ENV__Reason*)q; +} + +#endif + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->__type = 0; + a->fault = NULL; + a->__any = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Detail(struct soap *soap, const struct SOAP_ENV__Detail *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_markelement(soap, a->fault, a->__type); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Detail(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Detail *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch_SOAP_ENV__Detail), type)) + return soap->error; + if (soap_putelement(soap, a->fault, "fault", -1, a->__type)) + return soap->error; + soap_outliteral(soap, "-any", &a->__any, NULL); + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_in_SOAP_ENV__Detail(struct soap *soap, const char *tag, struct SOAP_ENV__Detail *a, const char *type) +{ + size_t soap_flag_fault = 1; + size_t soap_flag___any = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct SOAP_ENV__Detail *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_SOAP_ENV__Detail, sizeof(struct SOAP_ENV__Detail), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default_SOAP_ENV__Detail(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_fault && soap->error == SOAP_TAG_MISMATCH) + if ((a->fault = soap_getelement(soap, &a->__type))) + { soap_flag_fault = 0; + continue; + } + if (soap_flag___any && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_inliteral(soap, "-any", &a->__any)) + { soap_flag___any--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct SOAP_ENV__Detail *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch_SOAP_ENV__Detail, 0, sizeof(struct SOAP_ENV__Detail), 0, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Detail(struct soap *soap, const struct SOAP_ENV__Detail *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_SOAP_ENV__Detail); + if (soap_out_SOAP_ENV__Detail(soap, tag?tag:"SOAP-ENV:Detail", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_get_SOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *p, const char *tag, const char *type) +{ + if ((p = soap_in_SOAP_ENV__Detail(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct SOAP_ENV__Detail * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Detail(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Detail(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_SOAP_ENV__Detail, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Detail); + if (size) + *size = sizeof(struct SOAP_ENV__Detail); + } + else + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Detail[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct SOAP_ENV__Detail); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct SOAP_ENV__Detail*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Detail(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Detail %p -> %p\n", q, p)); + *(struct SOAP_ENV__Detail*)p = *(struct SOAP_ENV__Detail*)q; +} + +#endif + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_default__QName(soap, &a->SOAP_ENV__Value); + a->SOAP_ENV__Subcode = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Code(struct soap *soap, const struct SOAP_ENV__Code *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize__QName(soap, &a->SOAP_ENV__Value); + soap_serialize_PointerToSOAP_ENV__Code(soap, &a->SOAP_ENV__Subcode); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Code(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Code *a, const char *type) +{ + const char *soap_tmp_SOAP_ENV__Value = soap_QName2s(soap, a->SOAP_ENV__Value); + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch_SOAP_ENV__Code), type)) + return soap->error; + if (soap_out__QName(soap, "SOAP-ENV:Value", -1, (char*const*)&soap_tmp_SOAP_ENV__Value, "")) + return soap->error; + if (soap_out_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Subcode", -1, &a->SOAP_ENV__Subcode, "")) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_in_SOAP_ENV__Code(struct soap *soap, const char *tag, struct SOAP_ENV__Code *a, const char *type) +{ + size_t soap_flag_SOAP_ENV__Value = 1; + size_t soap_flag_SOAP_ENV__Subcode = 1; + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct SOAP_ENV__Code *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_SOAP_ENV__Code, sizeof(struct SOAP_ENV__Code), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default_SOAP_ENV__Code(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_SOAP_ENV__Value && (soap->error == SOAP_TAG_MISMATCH || soap->error == SOAP_NO_TAG)) + if (soap_in__QName(soap, "SOAP-ENV:Value", &a->SOAP_ENV__Value, "")) + { soap_flag_SOAP_ENV__Value--; + continue; + } + if (soap_flag_SOAP_ENV__Subcode && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerToSOAP_ENV__Code(soap, "SOAP-ENV:Subcode", &a->SOAP_ENV__Subcode, "")) + { soap_flag_SOAP_ENV__Subcode--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct SOAP_ENV__Code *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch_SOAP_ENV__Code, 0, sizeof(struct SOAP_ENV__Code), 0, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Code(struct soap *soap, const struct SOAP_ENV__Code *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_SOAP_ENV__Code); + if (soap_out_SOAP_ENV__Code(soap, tag?tag:"SOAP-ENV:Code", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_get_SOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *p, const char *tag, const char *type) +{ + if ((p = soap_in_SOAP_ENV__Code(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct SOAP_ENV__Code * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Code(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Code(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_SOAP_ENV__Code, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Code); + if (size) + *size = sizeof(struct SOAP_ENV__Code); + } + else + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Code[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct SOAP_ENV__Code); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct SOAP_ENV__Code*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Code(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Code %p -> %p\n", q, p)); + *(struct SOAP_ENV__Code*)p = *(struct SOAP_ENV__Code*)q; +} + +#endif + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Header(struct soap *soap, struct SOAP_ENV__Header *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Header(struct soap *soap, const struct SOAP_ENV__Header *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Header(struct soap *soap, const char *tag, int id, const struct SOAP_ENV__Header *a, const char *type) +{ + if (soap_element_begin_out(soap, tag, soap_embedded_id(soap, id, a, SOAP_TYPE_interswitch_SOAP_ENV__Header), type)) + return soap->error; + return soap_element_end_out(soap, tag); +} + +SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_in_SOAP_ENV__Header(struct soap *soap, const char *tag, struct SOAP_ENV__Header *a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 0, type)) + return NULL; + a = (struct SOAP_ENV__Header *)soap_id_enter(soap, soap->id, a, SOAP_TYPE_interswitch_SOAP_ENV__Header, sizeof(struct SOAP_ENV__Header), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default_SOAP_ENV__Header(soap, a); + if (soap->body && !*soap->href) + { + for (;;) + { soap->error = SOAP_TAG_MISMATCH; + if (soap->error == SOAP_TAG_MISMATCH) + soap->error = soap_ignore_element(soap); + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + if (soap_element_end_in(soap, tag)) + return NULL; + } + else + { a = (struct SOAP_ENV__Header *)soap_id_forward(soap, soap->href, (void*)a, 0, SOAP_TYPE_interswitch_SOAP_ENV__Header, 0, sizeof(struct SOAP_ENV__Header), 0, NULL); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Header(struct soap *soap, const struct SOAP_ENV__Header *a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_SOAP_ENV__Header); + if (soap_out_SOAP_ENV__Header(soap, tag?tag:"SOAP-ENV:Header", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_get_SOAP_ENV__Header(struct soap *soap, struct SOAP_ENV__Header *p, const char *tag, const char *type) +{ + if ((p = soap_in_SOAP_ENV__Header(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct SOAP_ENV__Header * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Header(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate_SOAP_ENV__Header(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch_SOAP_ENV__Header, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Header); + if (size) + *size = sizeof(struct SOAP_ENV__Header); + } + else + { cp->ptr = (void*)SOAP_NEW(struct SOAP_ENV__Header[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct SOAP_ENV__Header); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct SOAP_ENV__Header*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Header(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct SOAP_ENV__Header %p -> %p\n", q, p)); + *(struct SOAP_ENV__Header*)p = *(struct SOAP_ENV__Header*)q; +} + +#endif + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__VerifyBiller(struct soap *soap, struct __interswitch__VerifyBiller *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__VerifyBiller = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__VerifyBiller(struct soap *soap, const struct __interswitch__VerifyBiller *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__VerifyBiller(soap, &a->interswitch__VerifyBiller); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__VerifyBiller(struct soap *soap, const char *tag, int id, const struct __interswitch__VerifyBiller *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__VerifyBiller(soap, "interswitch:VerifyBiller", -1, &a->interswitch__VerifyBiller, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__VerifyBiller * SOAP_FMAC4 soap_in___interswitch__VerifyBiller(struct soap *soap, const char *tag, struct __interswitch__VerifyBiller *a, const char *type) +{ + size_t soap_flag_interswitch__VerifyBiller = 1; + short soap_flag; + a = (struct __interswitch__VerifyBiller *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__VerifyBiller, sizeof(struct __interswitch__VerifyBiller), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__VerifyBiller(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__VerifyBiller && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__VerifyBiller(soap, "interswitch:VerifyBiller", &a->interswitch__VerifyBiller, "")) + { soap_flag_interswitch__VerifyBiller--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__VerifyBiller(struct soap *soap, const struct __interswitch__VerifyBiller *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__VerifyBiller(soap, tag?tag:"-interswitch:VerifyBiller", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__VerifyBiller * SOAP_FMAC4 soap_get___interswitch__VerifyBiller(struct soap *soap, struct __interswitch__VerifyBiller *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__VerifyBiller(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__VerifyBiller * SOAP_FMAC2 soap_instantiate___interswitch__VerifyBiller(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__VerifyBiller(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__VerifyBiller, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__VerifyBiller); + if (size) + *size = sizeof(struct __interswitch__VerifyBiller); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__VerifyBiller[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__VerifyBiller); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__VerifyBiller*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__VerifyBiller(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__VerifyBiller %p -> %p\n", q, p)); + *(struct __interswitch__VerifyBiller*)p = *(struct __interswitch__VerifyBiller*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__CreateBiller(struct soap *soap, struct __interswitch__CreateBiller *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__CreateBiller = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__CreateBiller(struct soap *soap, const struct __interswitch__CreateBiller *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__CreateBiller(soap, &a->interswitch__CreateBiller); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__CreateBiller(struct soap *soap, const char *tag, int id, const struct __interswitch__CreateBiller *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__CreateBiller(soap, "interswitch:CreateBiller", -1, &a->interswitch__CreateBiller, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__CreateBiller * SOAP_FMAC4 soap_in___interswitch__CreateBiller(struct soap *soap, const char *tag, struct __interswitch__CreateBiller *a, const char *type) +{ + size_t soap_flag_interswitch__CreateBiller = 1; + short soap_flag; + a = (struct __interswitch__CreateBiller *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__CreateBiller, sizeof(struct __interswitch__CreateBiller), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__CreateBiller(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__CreateBiller && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__CreateBiller(soap, "interswitch:CreateBiller", &a->interswitch__CreateBiller, "")) + { soap_flag_interswitch__CreateBiller--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__CreateBiller(struct soap *soap, const struct __interswitch__CreateBiller *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__CreateBiller(soap, tag?tag:"-interswitch:CreateBiller", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__CreateBiller * SOAP_FMAC4 soap_get___interswitch__CreateBiller(struct soap *soap, struct __interswitch__CreateBiller *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__CreateBiller(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__CreateBiller * SOAP_FMAC2 soap_instantiate___interswitch__CreateBiller(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__CreateBiller(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__CreateBiller, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__CreateBiller); + if (size) + *size = sizeof(struct __interswitch__CreateBiller); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__CreateBiller[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__CreateBiller); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__CreateBiller*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__CreateBiller(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__CreateBiller %p -> %p\n", q, p)); + *(struct __interswitch__CreateBiller*)p = *(struct __interswitch__CreateBiller*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__DoCustomProcessing(struct soap *soap, struct __interswitch__DoCustomProcessing *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__DoCustomProcessing = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__DoCustomProcessing(struct soap *soap, const struct __interswitch__DoCustomProcessing *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__DoCustomProcessing(soap, &a->interswitch__DoCustomProcessing); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__DoCustomProcessing(struct soap *soap, const char *tag, int id, const struct __interswitch__DoCustomProcessing *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__DoCustomProcessing(soap, "interswitch:DoCustomProcessing", -1, &a->interswitch__DoCustomProcessing, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__DoCustomProcessing * SOAP_FMAC4 soap_in___interswitch__DoCustomProcessing(struct soap *soap, const char *tag, struct __interswitch__DoCustomProcessing *a, const char *type) +{ + size_t soap_flag_interswitch__DoCustomProcessing = 1; + short soap_flag; + a = (struct __interswitch__DoCustomProcessing *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__DoCustomProcessing, sizeof(struct __interswitch__DoCustomProcessing), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__DoCustomProcessing(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__DoCustomProcessing && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__DoCustomProcessing(soap, "interswitch:DoCustomProcessing", &a->interswitch__DoCustomProcessing, "")) + { soap_flag_interswitch__DoCustomProcessing--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__DoCustomProcessing(struct soap *soap, const struct __interswitch__DoCustomProcessing *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__DoCustomProcessing(soap, tag?tag:"-interswitch:DoCustomProcessing", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__DoCustomProcessing * SOAP_FMAC4 soap_get___interswitch__DoCustomProcessing(struct soap *soap, struct __interswitch__DoCustomProcessing *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__DoCustomProcessing(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__DoCustomProcessing * SOAP_FMAC2 soap_instantiate___interswitch__DoCustomProcessing(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__DoCustomProcessing(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__DoCustomProcessing, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__DoCustomProcessing); + if (size) + *size = sizeof(struct __interswitch__DoCustomProcessing); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__DoCustomProcessing[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__DoCustomProcessing); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__DoCustomProcessing*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__DoCustomProcessing(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__DoCustomProcessing %p -> %p\n", q, p)); + *(struct __interswitch__DoCustomProcessing*)p = *(struct __interswitch__DoCustomProcessing*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__ResendActivationToken(struct soap *soap, struct __interswitch__ResendActivationToken *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__ResendActivationToken = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__ResendActivationToken(struct soap *soap, const struct __interswitch__ResendActivationToken *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__ResendActivationToken(soap, &a->interswitch__ResendActivationToken); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__ResendActivationToken(struct soap *soap, const char *tag, int id, const struct __interswitch__ResendActivationToken *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__ResendActivationToken(soap, "interswitch:ResendActivationToken", -1, &a->interswitch__ResendActivationToken, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__ResendActivationToken * SOAP_FMAC4 soap_in___interswitch__ResendActivationToken(struct soap *soap, const char *tag, struct __interswitch__ResendActivationToken *a, const char *type) +{ + size_t soap_flag_interswitch__ResendActivationToken = 1; + short soap_flag; + a = (struct __interswitch__ResendActivationToken *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__ResendActivationToken, sizeof(struct __interswitch__ResendActivationToken), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__ResendActivationToken(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__ResendActivationToken && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__ResendActivationToken(soap, "interswitch:ResendActivationToken", &a->interswitch__ResendActivationToken, "")) + { soap_flag_interswitch__ResendActivationToken--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__ResendActivationToken(struct soap *soap, const struct __interswitch__ResendActivationToken *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__ResendActivationToken(soap, tag?tag:"-interswitch:ResendActivationToken", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__ResendActivationToken * SOAP_FMAC4 soap_get___interswitch__ResendActivationToken(struct soap *soap, struct __interswitch__ResendActivationToken *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__ResendActivationToken(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__ResendActivationToken * SOAP_FMAC2 soap_instantiate___interswitch__ResendActivationToken(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__ResendActivationToken(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__ResendActivationToken, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__ResendActivationToken); + if (size) + *size = sizeof(struct __interswitch__ResendActivationToken); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__ResendActivationToken[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__ResendActivationToken); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__ResendActivationToken*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__ResendActivationToken(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__ResendActivationToken %p -> %p\n", q, p)); + *(struct __interswitch__ResendActivationToken*)p = *(struct __interswitch__ResendActivationToken*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__EditCustomerBillerAccount(struct soap *soap, struct __interswitch__EditCustomerBillerAccount *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__EditCustomerBillerAccount = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__EditCustomerBillerAccount(struct soap *soap, const struct __interswitch__EditCustomerBillerAccount *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__EditCustomerBillerAccount(soap, &a->interswitch__EditCustomerBillerAccount); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__EditCustomerBillerAccount(struct soap *soap, const char *tag, int id, const struct __interswitch__EditCustomerBillerAccount *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__EditCustomerBillerAccount(soap, "interswitch:EditCustomerBillerAccount", -1, &a->interswitch__EditCustomerBillerAccount, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__EditCustomerBillerAccount * SOAP_FMAC4 soap_in___interswitch__EditCustomerBillerAccount(struct soap *soap, const char *tag, struct __interswitch__EditCustomerBillerAccount *a, const char *type) +{ + size_t soap_flag_interswitch__EditCustomerBillerAccount = 1; + short soap_flag; + a = (struct __interswitch__EditCustomerBillerAccount *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__EditCustomerBillerAccount, sizeof(struct __interswitch__EditCustomerBillerAccount), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__EditCustomerBillerAccount(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__EditCustomerBillerAccount && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__EditCustomerBillerAccount(soap, "interswitch:EditCustomerBillerAccount", &a->interswitch__EditCustomerBillerAccount, "")) + { soap_flag_interswitch__EditCustomerBillerAccount--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__EditCustomerBillerAccount(struct soap *soap, const struct __interswitch__EditCustomerBillerAccount *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__EditCustomerBillerAccount(soap, tag?tag:"-interswitch:EditCustomerBillerAccount", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__EditCustomerBillerAccount * SOAP_FMAC4 soap_get___interswitch__EditCustomerBillerAccount(struct soap *soap, struct __interswitch__EditCustomerBillerAccount *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__EditCustomerBillerAccount(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__EditCustomerBillerAccount * SOAP_FMAC2 soap_instantiate___interswitch__EditCustomerBillerAccount(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__EditCustomerBillerAccount(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__EditCustomerBillerAccount, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__EditCustomerBillerAccount); + if (size) + *size = sizeof(struct __interswitch__EditCustomerBillerAccount); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__EditCustomerBillerAccount[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__EditCustomerBillerAccount); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__EditCustomerBillerAccount*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__EditCustomerBillerAccount(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__EditCustomerBillerAccount %p -> %p\n", q, p)); + *(struct __interswitch__EditCustomerBillerAccount*)p = *(struct __interswitch__EditCustomerBillerAccount*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetBillersCollectionsAccount(struct soap *soap, struct __interswitch__GetBillersCollectionsAccount *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__GetBillersCollectionsAccount = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetBillersCollectionsAccount(struct soap *soap, const struct __interswitch__GetBillersCollectionsAccount *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__GetBillersCollectionsAccount(soap, &a->interswitch__GetBillersCollectionsAccount); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetBillersCollectionsAccount(struct soap *soap, const char *tag, int id, const struct __interswitch__GetBillersCollectionsAccount *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__GetBillersCollectionsAccount(soap, "interswitch:GetBillersCollectionsAccount", -1, &a->interswitch__GetBillersCollectionsAccount, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetBillersCollectionsAccount * SOAP_FMAC4 soap_in___interswitch__GetBillersCollectionsAccount(struct soap *soap, const char *tag, struct __interswitch__GetBillersCollectionsAccount *a, const char *type) +{ + size_t soap_flag_interswitch__GetBillersCollectionsAccount = 1; + short soap_flag; + a = (struct __interswitch__GetBillersCollectionsAccount *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__GetBillersCollectionsAccount, sizeof(struct __interswitch__GetBillersCollectionsAccount), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__GetBillersCollectionsAccount(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__GetBillersCollectionsAccount && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__GetBillersCollectionsAccount(soap, "interswitch:GetBillersCollectionsAccount", &a->interswitch__GetBillersCollectionsAccount, "")) + { soap_flag_interswitch__GetBillersCollectionsAccount--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetBillersCollectionsAccount(struct soap *soap, const struct __interswitch__GetBillersCollectionsAccount *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__GetBillersCollectionsAccount(soap, tag?tag:"-interswitch:GetBillersCollectionsAccount", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetBillersCollectionsAccount * SOAP_FMAC4 soap_get___interswitch__GetBillersCollectionsAccount(struct soap *soap, struct __interswitch__GetBillersCollectionsAccount *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__GetBillersCollectionsAccount(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__GetBillersCollectionsAccount * SOAP_FMAC2 soap_instantiate___interswitch__GetBillersCollectionsAccount(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__GetBillersCollectionsAccount(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__GetBillersCollectionsAccount, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetBillersCollectionsAccount); + if (size) + *size = sizeof(struct __interswitch__GetBillersCollectionsAccount); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetBillersCollectionsAccount[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__GetBillersCollectionsAccount); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__GetBillersCollectionsAccount*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetBillersCollectionsAccount(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__GetBillersCollectionsAccount %p -> %p\n", q, p)); + *(struct __interswitch__GetBillersCollectionsAccount*)p = *(struct __interswitch__GetBillersCollectionsAccount*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetCollectionsAccount(struct soap *soap, struct __interswitch__GetCollectionsAccount *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__GetCollectionsAccount = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetCollectionsAccount(struct soap *soap, const struct __interswitch__GetCollectionsAccount *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__GetCollectionsAccount(soap, &a->interswitch__GetCollectionsAccount); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetCollectionsAccount(struct soap *soap, const char *tag, int id, const struct __interswitch__GetCollectionsAccount *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__GetCollectionsAccount(soap, "interswitch:GetCollectionsAccount", -1, &a->interswitch__GetCollectionsAccount, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetCollectionsAccount * SOAP_FMAC4 soap_in___interswitch__GetCollectionsAccount(struct soap *soap, const char *tag, struct __interswitch__GetCollectionsAccount *a, const char *type) +{ + size_t soap_flag_interswitch__GetCollectionsAccount = 1; + short soap_flag; + a = (struct __interswitch__GetCollectionsAccount *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__GetCollectionsAccount, sizeof(struct __interswitch__GetCollectionsAccount), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__GetCollectionsAccount(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__GetCollectionsAccount && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__GetCollectionsAccount(soap, "interswitch:GetCollectionsAccount", &a->interswitch__GetCollectionsAccount, "")) + { soap_flag_interswitch__GetCollectionsAccount--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetCollectionsAccount(struct soap *soap, const struct __interswitch__GetCollectionsAccount *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__GetCollectionsAccount(soap, tag?tag:"-interswitch:GetCollectionsAccount", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetCollectionsAccount * SOAP_FMAC4 soap_get___interswitch__GetCollectionsAccount(struct soap *soap, struct __interswitch__GetCollectionsAccount *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__GetCollectionsAccount(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__GetCollectionsAccount * SOAP_FMAC2 soap_instantiate___interswitch__GetCollectionsAccount(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__GetCollectionsAccount(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__GetCollectionsAccount, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetCollectionsAccount); + if (size) + *size = sizeof(struct __interswitch__GetCollectionsAccount); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetCollectionsAccount[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__GetCollectionsAccount); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__GetCollectionsAccount*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetCollectionsAccount(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__GetCollectionsAccount %p -> %p\n", q, p)); + *(struct __interswitch__GetCollectionsAccount*)p = *(struct __interswitch__GetCollectionsAccount*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__AddBillerCustomer(struct soap *soap, struct __interswitch__AddBillerCustomer *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__AddBillerCustomer = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__AddBillerCustomer(struct soap *soap, const struct __interswitch__AddBillerCustomer *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__AddBillerCustomer(soap, &a->interswitch__AddBillerCustomer); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__AddBillerCustomer(struct soap *soap, const char *tag, int id, const struct __interswitch__AddBillerCustomer *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__AddBillerCustomer(soap, "interswitch:AddBillerCustomer", -1, &a->interswitch__AddBillerCustomer, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__AddBillerCustomer * SOAP_FMAC4 soap_in___interswitch__AddBillerCustomer(struct soap *soap, const char *tag, struct __interswitch__AddBillerCustomer *a, const char *type) +{ + size_t soap_flag_interswitch__AddBillerCustomer = 1; + short soap_flag; + a = (struct __interswitch__AddBillerCustomer *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__AddBillerCustomer, sizeof(struct __interswitch__AddBillerCustomer), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__AddBillerCustomer(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__AddBillerCustomer && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__AddBillerCustomer(soap, "interswitch:AddBillerCustomer", &a->interswitch__AddBillerCustomer, "")) + { soap_flag_interswitch__AddBillerCustomer--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__AddBillerCustomer(struct soap *soap, const struct __interswitch__AddBillerCustomer *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__AddBillerCustomer(soap, tag?tag:"-interswitch:AddBillerCustomer", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__AddBillerCustomer * SOAP_FMAC4 soap_get___interswitch__AddBillerCustomer(struct soap *soap, struct __interswitch__AddBillerCustomer *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__AddBillerCustomer(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__AddBillerCustomer * SOAP_FMAC2 soap_instantiate___interswitch__AddBillerCustomer(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__AddBillerCustomer(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__AddBillerCustomer, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__AddBillerCustomer); + if (size) + *size = sizeof(struct __interswitch__AddBillerCustomer); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__AddBillerCustomer[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__AddBillerCustomer); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__AddBillerCustomer*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__AddBillerCustomer(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__AddBillerCustomer %p -> %p\n", q, p)); + *(struct __interswitch__AddBillerCustomer*)p = *(struct __interswitch__AddBillerCustomer*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetCustomerPayments(struct soap *soap, struct __interswitch__GetCustomerPayments *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__GetCustomerPayments = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetCustomerPayments(struct soap *soap, const struct __interswitch__GetCustomerPayments *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__GetCustomerPayments(soap, &a->interswitch__GetCustomerPayments); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetCustomerPayments(struct soap *soap, const char *tag, int id, const struct __interswitch__GetCustomerPayments *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__GetCustomerPayments(soap, "interswitch:GetCustomerPayments", -1, &a->interswitch__GetCustomerPayments, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetCustomerPayments * SOAP_FMAC4 soap_in___interswitch__GetCustomerPayments(struct soap *soap, const char *tag, struct __interswitch__GetCustomerPayments *a, const char *type) +{ + size_t soap_flag_interswitch__GetCustomerPayments = 1; + short soap_flag; + a = (struct __interswitch__GetCustomerPayments *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__GetCustomerPayments, sizeof(struct __interswitch__GetCustomerPayments), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__GetCustomerPayments(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__GetCustomerPayments && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__GetCustomerPayments(soap, "interswitch:GetCustomerPayments", &a->interswitch__GetCustomerPayments, "")) + { soap_flag_interswitch__GetCustomerPayments--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetCustomerPayments(struct soap *soap, const struct __interswitch__GetCustomerPayments *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__GetCustomerPayments(soap, tag?tag:"-interswitch:GetCustomerPayments", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetCustomerPayments * SOAP_FMAC4 soap_get___interswitch__GetCustomerPayments(struct soap *soap, struct __interswitch__GetCustomerPayments *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__GetCustomerPayments(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__GetCustomerPayments * SOAP_FMAC2 soap_instantiate___interswitch__GetCustomerPayments(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__GetCustomerPayments(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__GetCustomerPayments, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetCustomerPayments); + if (size) + *size = sizeof(struct __interswitch__GetCustomerPayments); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetCustomerPayments[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__GetCustomerPayments); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__GetCustomerPayments*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetCustomerPayments(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__GetCustomerPayments %p -> %p\n", q, p)); + *(struct __interswitch__GetCustomerPayments*)p = *(struct __interswitch__GetCustomerPayments*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetCustomerBillerAccounts(struct soap *soap, struct __interswitch__GetCustomerBillerAccounts *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__GetCustomerBillerAccounts = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetCustomerBillerAccounts(struct soap *soap, const struct __interswitch__GetCustomerBillerAccounts *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__GetCustomerBillerAccounts(soap, &a->interswitch__GetCustomerBillerAccounts); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetCustomerBillerAccounts(struct soap *soap, const char *tag, int id, const struct __interswitch__GetCustomerBillerAccounts *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__GetCustomerBillerAccounts(soap, "interswitch:GetCustomerBillerAccounts", -1, &a->interswitch__GetCustomerBillerAccounts, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetCustomerBillerAccounts * SOAP_FMAC4 soap_in___interswitch__GetCustomerBillerAccounts(struct soap *soap, const char *tag, struct __interswitch__GetCustomerBillerAccounts *a, const char *type) +{ + size_t soap_flag_interswitch__GetCustomerBillerAccounts = 1; + short soap_flag; + a = (struct __interswitch__GetCustomerBillerAccounts *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__GetCustomerBillerAccounts, sizeof(struct __interswitch__GetCustomerBillerAccounts), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__GetCustomerBillerAccounts(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__GetCustomerBillerAccounts && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__GetCustomerBillerAccounts(soap, "interswitch:GetCustomerBillerAccounts", &a->interswitch__GetCustomerBillerAccounts, "")) + { soap_flag_interswitch__GetCustomerBillerAccounts--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetCustomerBillerAccounts(struct soap *soap, const struct __interswitch__GetCustomerBillerAccounts *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__GetCustomerBillerAccounts(soap, tag?tag:"-interswitch:GetCustomerBillerAccounts", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetCustomerBillerAccounts * SOAP_FMAC4 soap_get___interswitch__GetCustomerBillerAccounts(struct soap *soap, struct __interswitch__GetCustomerBillerAccounts *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__GetCustomerBillerAccounts(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__GetCustomerBillerAccounts * SOAP_FMAC2 soap_instantiate___interswitch__GetCustomerBillerAccounts(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__GetCustomerBillerAccounts(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__GetCustomerBillerAccounts, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetCustomerBillerAccounts); + if (size) + *size = sizeof(struct __interswitch__GetCustomerBillerAccounts); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetCustomerBillerAccounts[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__GetCustomerBillerAccounts); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__GetCustomerBillerAccounts*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetCustomerBillerAccounts(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__GetCustomerBillerAccounts %p -> %p\n", q, p)); + *(struct __interswitch__GetCustomerBillerAccounts*)p = *(struct __interswitch__GetCustomerBillerAccounts*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__AddCustomerBillerAccount(struct soap *soap, struct __interswitch__AddCustomerBillerAccount *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__AddCustomerBillerAccount = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__AddCustomerBillerAccount(struct soap *soap, const struct __interswitch__AddCustomerBillerAccount *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__AddCustomerBillerAccount(soap, &a->interswitch__AddCustomerBillerAccount); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__AddCustomerBillerAccount(struct soap *soap, const char *tag, int id, const struct __interswitch__AddCustomerBillerAccount *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__AddCustomerBillerAccount(soap, "interswitch:AddCustomerBillerAccount", -1, &a->interswitch__AddCustomerBillerAccount, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__AddCustomerBillerAccount * SOAP_FMAC4 soap_in___interswitch__AddCustomerBillerAccount(struct soap *soap, const char *tag, struct __interswitch__AddCustomerBillerAccount *a, const char *type) +{ + size_t soap_flag_interswitch__AddCustomerBillerAccount = 1; + short soap_flag; + a = (struct __interswitch__AddCustomerBillerAccount *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__AddCustomerBillerAccount, sizeof(struct __interswitch__AddCustomerBillerAccount), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__AddCustomerBillerAccount(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__AddCustomerBillerAccount && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__AddCustomerBillerAccount(soap, "interswitch:AddCustomerBillerAccount", &a->interswitch__AddCustomerBillerAccount, "")) + { soap_flag_interswitch__AddCustomerBillerAccount--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__AddCustomerBillerAccount(struct soap *soap, const struct __interswitch__AddCustomerBillerAccount *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__AddCustomerBillerAccount(soap, tag?tag:"-interswitch:AddCustomerBillerAccount", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__AddCustomerBillerAccount * SOAP_FMAC4 soap_get___interswitch__AddCustomerBillerAccount(struct soap *soap, struct __interswitch__AddCustomerBillerAccount *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__AddCustomerBillerAccount(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__AddCustomerBillerAccount * SOAP_FMAC2 soap_instantiate___interswitch__AddCustomerBillerAccount(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__AddCustomerBillerAccount(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__AddCustomerBillerAccount, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__AddCustomerBillerAccount); + if (size) + *size = sizeof(struct __interswitch__AddCustomerBillerAccount); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__AddCustomerBillerAccount[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__AddCustomerBillerAccount); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__AddCustomerBillerAccount*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__AddCustomerBillerAccount(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__AddCustomerBillerAccount %p -> %p\n", q, p)); + *(struct __interswitch__AddCustomerBillerAccount*)p = *(struct __interswitch__AddCustomerBillerAccount*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__SendPayments(struct soap *soap, struct __interswitch__SendPayments *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__SendPayments = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__SendPayments(struct soap *soap, const struct __interswitch__SendPayments *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__SendPayments(soap, &a->interswitch__SendPayments); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__SendPayments(struct soap *soap, const char *tag, int id, const struct __interswitch__SendPayments *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__SendPayments(soap, "interswitch:SendPayments", -1, &a->interswitch__SendPayments, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__SendPayments * SOAP_FMAC4 soap_in___interswitch__SendPayments(struct soap *soap, const char *tag, struct __interswitch__SendPayments *a, const char *type) +{ + size_t soap_flag_interswitch__SendPayments = 1; + short soap_flag; + a = (struct __interswitch__SendPayments *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__SendPayments, sizeof(struct __interswitch__SendPayments), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__SendPayments(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__SendPayments && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__SendPayments(soap, "interswitch:SendPayments", &a->interswitch__SendPayments, "")) + { soap_flag_interswitch__SendPayments--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__SendPayments(struct soap *soap, const struct __interswitch__SendPayments *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__SendPayments(soap, tag?tag:"-interswitch:SendPayments", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__SendPayments * SOAP_FMAC4 soap_get___interswitch__SendPayments(struct soap *soap, struct __interswitch__SendPayments *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__SendPayments(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__SendPayments * SOAP_FMAC2 soap_instantiate___interswitch__SendPayments(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__SendPayments(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__SendPayments, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__SendPayments); + if (size) + *size = sizeof(struct __interswitch__SendPayments); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__SendPayments[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__SendPayments); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__SendPayments*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__SendPayments(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__SendPayments %p -> %p\n", q, p)); + *(struct __interswitch__SendPayments*)p = *(struct __interswitch__SendPayments*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__SendBillPaymentAdvice(struct soap *soap, struct __interswitch__SendBillPaymentAdvice *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__SendBillPaymentAdvice = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__SendBillPaymentAdvice(struct soap *soap, const struct __interswitch__SendBillPaymentAdvice *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__SendBillPaymentAdvice(soap, &a->interswitch__SendBillPaymentAdvice); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__SendBillPaymentAdvice(struct soap *soap, const char *tag, int id, const struct __interswitch__SendBillPaymentAdvice *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__SendBillPaymentAdvice(soap, "interswitch:SendBillPaymentAdvice", -1, &a->interswitch__SendBillPaymentAdvice, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__SendBillPaymentAdvice * SOAP_FMAC4 soap_in___interswitch__SendBillPaymentAdvice(struct soap *soap, const char *tag, struct __interswitch__SendBillPaymentAdvice *a, const char *type) +{ + size_t soap_flag_interswitch__SendBillPaymentAdvice = 1; + short soap_flag; + a = (struct __interswitch__SendBillPaymentAdvice *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__SendBillPaymentAdvice, sizeof(struct __interswitch__SendBillPaymentAdvice), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__SendBillPaymentAdvice(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__SendBillPaymentAdvice && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__SendBillPaymentAdvice(soap, "interswitch:SendBillPaymentAdvice", &a->interswitch__SendBillPaymentAdvice, "")) + { soap_flag_interswitch__SendBillPaymentAdvice--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__SendBillPaymentAdvice(struct soap *soap, const struct __interswitch__SendBillPaymentAdvice *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__SendBillPaymentAdvice(soap, tag?tag:"-interswitch:SendBillPaymentAdvice", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__SendBillPaymentAdvice * SOAP_FMAC4 soap_get___interswitch__SendBillPaymentAdvice(struct soap *soap, struct __interswitch__SendBillPaymentAdvice *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__SendBillPaymentAdvice(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__SendBillPaymentAdvice * SOAP_FMAC2 soap_instantiate___interswitch__SendBillPaymentAdvice(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__SendBillPaymentAdvice(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__SendBillPaymentAdvice, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__SendBillPaymentAdvice); + if (size) + *size = sizeof(struct __interswitch__SendBillPaymentAdvice); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__SendBillPaymentAdvice[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__SendBillPaymentAdvice); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__SendBillPaymentAdvice*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__SendBillPaymentAdvice(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__SendBillPaymentAdvice %p -> %p\n", q, p)); + *(struct __interswitch__SendBillPaymentAdvice*)p = *(struct __interswitch__SendBillPaymentAdvice*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__AuthenticateCustomer(struct soap *soap, struct __interswitch__AuthenticateCustomer *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__AuthenticateCustomer = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__AuthenticateCustomer(struct soap *soap, const struct __interswitch__AuthenticateCustomer *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__AuthenticateCustomer(soap, &a->interswitch__AuthenticateCustomer); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__AuthenticateCustomer(struct soap *soap, const char *tag, int id, const struct __interswitch__AuthenticateCustomer *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__AuthenticateCustomer(soap, "interswitch:AuthenticateCustomer", -1, &a->interswitch__AuthenticateCustomer, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__AuthenticateCustomer * SOAP_FMAC4 soap_in___interswitch__AuthenticateCustomer(struct soap *soap, const char *tag, struct __interswitch__AuthenticateCustomer *a, const char *type) +{ + size_t soap_flag_interswitch__AuthenticateCustomer = 1; + short soap_flag; + a = (struct __interswitch__AuthenticateCustomer *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__AuthenticateCustomer, sizeof(struct __interswitch__AuthenticateCustomer), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__AuthenticateCustomer(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__AuthenticateCustomer && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__AuthenticateCustomer(soap, "interswitch:AuthenticateCustomer", &a->interswitch__AuthenticateCustomer, "")) + { soap_flag_interswitch__AuthenticateCustomer--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__AuthenticateCustomer(struct soap *soap, const struct __interswitch__AuthenticateCustomer *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__AuthenticateCustomer(soap, tag?tag:"-interswitch:AuthenticateCustomer", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__AuthenticateCustomer * SOAP_FMAC4 soap_get___interswitch__AuthenticateCustomer(struct soap *soap, struct __interswitch__AuthenticateCustomer *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__AuthenticateCustomer(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__AuthenticateCustomer * SOAP_FMAC2 soap_instantiate___interswitch__AuthenticateCustomer(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__AuthenticateCustomer(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__AuthenticateCustomer, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__AuthenticateCustomer); + if (size) + *size = sizeof(struct __interswitch__AuthenticateCustomer); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__AuthenticateCustomer[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__AuthenticateCustomer); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__AuthenticateCustomer*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__AuthenticateCustomer(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__AuthenticateCustomer %p -> %p\n", q, p)); + *(struct __interswitch__AuthenticateCustomer*)p = *(struct __interswitch__AuthenticateCustomer*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__DoBillPaymentInquiry(struct soap *soap, struct __interswitch__DoBillPaymentInquiry *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__DoBillPaymentInquiry = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__DoBillPaymentInquiry(struct soap *soap, const struct __interswitch__DoBillPaymentInquiry *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__DoBillPaymentInquiry(soap, &a->interswitch__DoBillPaymentInquiry); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__DoBillPaymentInquiry(struct soap *soap, const char *tag, int id, const struct __interswitch__DoBillPaymentInquiry *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__DoBillPaymentInquiry(soap, "interswitch:DoBillPaymentInquiry", -1, &a->interswitch__DoBillPaymentInquiry, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__DoBillPaymentInquiry * SOAP_FMAC4 soap_in___interswitch__DoBillPaymentInquiry(struct soap *soap, const char *tag, struct __interswitch__DoBillPaymentInquiry *a, const char *type) +{ + size_t soap_flag_interswitch__DoBillPaymentInquiry = 1; + short soap_flag; + a = (struct __interswitch__DoBillPaymentInquiry *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__DoBillPaymentInquiry, sizeof(struct __interswitch__DoBillPaymentInquiry), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__DoBillPaymentInquiry(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__DoBillPaymentInquiry && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__DoBillPaymentInquiry(soap, "interswitch:DoBillPaymentInquiry", &a->interswitch__DoBillPaymentInquiry, "")) + { soap_flag_interswitch__DoBillPaymentInquiry--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__DoBillPaymentInquiry(struct soap *soap, const struct __interswitch__DoBillPaymentInquiry *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__DoBillPaymentInquiry(soap, tag?tag:"-interswitch:DoBillPaymentInquiry", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__DoBillPaymentInquiry * SOAP_FMAC4 soap_get___interswitch__DoBillPaymentInquiry(struct soap *soap, struct __interswitch__DoBillPaymentInquiry *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__DoBillPaymentInquiry(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__DoBillPaymentInquiry * SOAP_FMAC2 soap_instantiate___interswitch__DoBillPaymentInquiry(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__DoBillPaymentInquiry(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__DoBillPaymentInquiry, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__DoBillPaymentInquiry); + if (size) + *size = sizeof(struct __interswitch__DoBillPaymentInquiry); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__DoBillPaymentInquiry[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__DoBillPaymentInquiry); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__DoBillPaymentInquiry*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__DoBillPaymentInquiry(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__DoBillPaymentInquiry %p -> %p\n", q, p)); + *(struct __interswitch__DoBillPaymentInquiry*)p = *(struct __interswitch__DoBillPaymentInquiry*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetBillerCategories(struct soap *soap, struct __interswitch__GetBillerCategories *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__GetBillerCategories = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetBillerCategories(struct soap *soap, const struct __interswitch__GetBillerCategories *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__GetBillerCategories(soap, &a->interswitch__GetBillerCategories); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetBillerCategories(struct soap *soap, const char *tag, int id, const struct __interswitch__GetBillerCategories *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__GetBillerCategories(soap, "interswitch:GetBillerCategories", -1, &a->interswitch__GetBillerCategories, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetBillerCategories * SOAP_FMAC4 soap_in___interswitch__GetBillerCategories(struct soap *soap, const char *tag, struct __interswitch__GetBillerCategories *a, const char *type) +{ + size_t soap_flag_interswitch__GetBillerCategories = 1; + short soap_flag; + a = (struct __interswitch__GetBillerCategories *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__GetBillerCategories, sizeof(struct __interswitch__GetBillerCategories), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__GetBillerCategories(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__GetBillerCategories && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__GetBillerCategories(soap, "interswitch:GetBillerCategories", &a->interswitch__GetBillerCategories, "")) + { soap_flag_interswitch__GetBillerCategories--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetBillerCategories(struct soap *soap, const struct __interswitch__GetBillerCategories *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__GetBillerCategories(soap, tag?tag:"-interswitch:GetBillerCategories", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetBillerCategories * SOAP_FMAC4 soap_get___interswitch__GetBillerCategories(struct soap *soap, struct __interswitch__GetBillerCategories *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__GetBillerCategories(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__GetBillerCategories * SOAP_FMAC2 soap_instantiate___interswitch__GetBillerCategories(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__GetBillerCategories(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__GetBillerCategories, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetBillerCategories); + if (size) + *size = sizeof(struct __interswitch__GetBillerCategories); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetBillerCategories[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__GetBillerCategories); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__GetBillerCategories*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetBillerCategories(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__GetBillerCategories %p -> %p\n", q, p)); + *(struct __interswitch__GetBillerCategories*)p = *(struct __interswitch__GetBillerCategories*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetBillerPaymentItems(struct soap *soap, struct __interswitch__GetBillerPaymentItems *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__GetBillerPaymentItems = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetBillerPaymentItems(struct soap *soap, const struct __interswitch__GetBillerPaymentItems *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__GetBillerPaymentItems(soap, &a->interswitch__GetBillerPaymentItems); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetBillerPaymentItems(struct soap *soap, const char *tag, int id, const struct __interswitch__GetBillerPaymentItems *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__GetBillerPaymentItems(soap, "interswitch:GetBillerPaymentItems", -1, &a->interswitch__GetBillerPaymentItems, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetBillerPaymentItems * SOAP_FMAC4 soap_in___interswitch__GetBillerPaymentItems(struct soap *soap, const char *tag, struct __interswitch__GetBillerPaymentItems *a, const char *type) +{ + size_t soap_flag_interswitch__GetBillerPaymentItems = 1; + short soap_flag; + a = (struct __interswitch__GetBillerPaymentItems *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__GetBillerPaymentItems, sizeof(struct __interswitch__GetBillerPaymentItems), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__GetBillerPaymentItems(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__GetBillerPaymentItems && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__GetBillerPaymentItems(soap, "interswitch:GetBillerPaymentItems", &a->interswitch__GetBillerPaymentItems, "")) + { soap_flag_interswitch__GetBillerPaymentItems--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetBillerPaymentItems(struct soap *soap, const struct __interswitch__GetBillerPaymentItems *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__GetBillerPaymentItems(soap, tag?tag:"-interswitch:GetBillerPaymentItems", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetBillerPaymentItems * SOAP_FMAC4 soap_get___interswitch__GetBillerPaymentItems(struct soap *soap, struct __interswitch__GetBillerPaymentItems *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__GetBillerPaymentItems(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__GetBillerPaymentItems * SOAP_FMAC2 soap_instantiate___interswitch__GetBillerPaymentItems(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__GetBillerPaymentItems(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__GetBillerPaymentItems, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetBillerPaymentItems); + if (size) + *size = sizeof(struct __interswitch__GetBillerPaymentItems); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetBillerPaymentItems[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__GetBillerPaymentItems); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__GetBillerPaymentItems*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetBillerPaymentItems(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__GetBillerPaymentItems %p -> %p\n", q, p)); + *(struct __interswitch__GetBillerPaymentItems*)p = *(struct __interswitch__GetBillerPaymentItems*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetFeaturedBillers(struct soap *soap, struct __interswitch__GetFeaturedBillers *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__GetFeaturedBillers = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetFeaturedBillers(struct soap *soap, const struct __interswitch__GetFeaturedBillers *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__GetFeaturedBillers(soap, &a->interswitch__GetFeaturedBillers); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetFeaturedBillers(struct soap *soap, const char *tag, int id, const struct __interswitch__GetFeaturedBillers *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__GetFeaturedBillers(soap, "interswitch:GetFeaturedBillers", -1, &a->interswitch__GetFeaturedBillers, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetFeaturedBillers * SOAP_FMAC4 soap_in___interswitch__GetFeaturedBillers(struct soap *soap, const char *tag, struct __interswitch__GetFeaturedBillers *a, const char *type) +{ + size_t soap_flag_interswitch__GetFeaturedBillers = 1; + short soap_flag; + a = (struct __interswitch__GetFeaturedBillers *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__GetFeaturedBillers, sizeof(struct __interswitch__GetFeaturedBillers), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__GetFeaturedBillers(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__GetFeaturedBillers && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__GetFeaturedBillers(soap, "interswitch:GetFeaturedBillers", &a->interswitch__GetFeaturedBillers, "")) + { soap_flag_interswitch__GetFeaturedBillers--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetFeaturedBillers(struct soap *soap, const struct __interswitch__GetFeaturedBillers *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__GetFeaturedBillers(soap, tag?tag:"-interswitch:GetFeaturedBillers", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetFeaturedBillers * SOAP_FMAC4 soap_get___interswitch__GetFeaturedBillers(struct soap *soap, struct __interswitch__GetFeaturedBillers *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__GetFeaturedBillers(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__GetFeaturedBillers * SOAP_FMAC2 soap_instantiate___interswitch__GetFeaturedBillers(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__GetFeaturedBillers(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__GetFeaturedBillers, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetFeaturedBillers); + if (size) + *size = sizeof(struct __interswitch__GetFeaturedBillers); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetFeaturedBillers[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__GetFeaturedBillers); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__GetFeaturedBillers*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetFeaturedBillers(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__GetFeaturedBillers %p -> %p\n", q, p)); + *(struct __interswitch__GetFeaturedBillers*)p = *(struct __interswitch__GetFeaturedBillers*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetLatestBillers(struct soap *soap, struct __interswitch__GetLatestBillers *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__GetLatestBillers = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetLatestBillers(struct soap *soap, const struct __interswitch__GetLatestBillers *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__GetLatestBillers(soap, &a->interswitch__GetLatestBillers); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetLatestBillers(struct soap *soap, const char *tag, int id, const struct __interswitch__GetLatestBillers *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__GetLatestBillers(soap, "interswitch:GetLatestBillers", -1, &a->interswitch__GetLatestBillers, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetLatestBillers * SOAP_FMAC4 soap_in___interswitch__GetLatestBillers(struct soap *soap, const char *tag, struct __interswitch__GetLatestBillers *a, const char *type) +{ + size_t soap_flag_interswitch__GetLatestBillers = 1; + short soap_flag; + a = (struct __interswitch__GetLatestBillers *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__GetLatestBillers, sizeof(struct __interswitch__GetLatestBillers), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__GetLatestBillers(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__GetLatestBillers && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__GetLatestBillers(soap, "interswitch:GetLatestBillers", &a->interswitch__GetLatestBillers, "")) + { soap_flag_interswitch__GetLatestBillers--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetLatestBillers(struct soap *soap, const struct __interswitch__GetLatestBillers *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__GetLatestBillers(soap, tag?tag:"-interswitch:GetLatestBillers", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetLatestBillers * SOAP_FMAC4 soap_get___interswitch__GetLatestBillers(struct soap *soap, struct __interswitch__GetLatestBillers *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__GetLatestBillers(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__GetLatestBillers * SOAP_FMAC2 soap_instantiate___interswitch__GetLatestBillers(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__GetLatestBillers(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__GetLatestBillers, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetLatestBillers); + if (size) + *size = sizeof(struct __interswitch__GetLatestBillers); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetLatestBillers[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__GetLatestBillers); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__GetLatestBillers*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetLatestBillers(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__GetLatestBillers %p -> %p\n", q, p)); + *(struct __interswitch__GetLatestBillers*)p = *(struct __interswitch__GetLatestBillers*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetBillers(struct soap *soap, struct __interswitch__GetBillers *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__GetBillers = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetBillers(struct soap *soap, const struct __interswitch__GetBillers *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__GetBillers(soap, &a->interswitch__GetBillers); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetBillers(struct soap *soap, const char *tag, int id, const struct __interswitch__GetBillers *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__GetBillers(soap, "interswitch:GetBillers", -1, &a->interswitch__GetBillers, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetBillers * SOAP_FMAC4 soap_in___interswitch__GetBillers(struct soap *soap, const char *tag, struct __interswitch__GetBillers *a, const char *type) +{ + size_t soap_flag_interswitch__GetBillers = 1; + short soap_flag; + a = (struct __interswitch__GetBillers *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__GetBillers, sizeof(struct __interswitch__GetBillers), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__GetBillers(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__GetBillers && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__GetBillers(soap, "interswitch:GetBillers", &a->interswitch__GetBillers, "")) + { soap_flag_interswitch__GetBillers--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetBillers(struct soap *soap, const struct __interswitch__GetBillers *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__GetBillers(soap, tag?tag:"-interswitch:GetBillers", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetBillers * SOAP_FMAC4 soap_get___interswitch__GetBillers(struct soap *soap, struct __interswitch__GetBillers *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__GetBillers(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__GetBillers * SOAP_FMAC2 soap_instantiate___interswitch__GetBillers(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__GetBillers(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__GetBillers, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetBillers); + if (size) + *size = sizeof(struct __interswitch__GetBillers); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetBillers[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__GetBillers); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__GetBillers*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetBillers(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__GetBillers %p -> %p\n", q, p)); + *(struct __interswitch__GetBillers*)p = *(struct __interswitch__GetBillers*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetUser(struct soap *soap, struct __interswitch__GetUser *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__GetUser = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetUser(struct soap *soap, const struct __interswitch__GetUser *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__GetUser(soap, &a->interswitch__GetUser); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetUser(struct soap *soap, const char *tag, int id, const struct __interswitch__GetUser *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__GetUser(soap, "interswitch:GetUser", -1, &a->interswitch__GetUser, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetUser * SOAP_FMAC4 soap_in___interswitch__GetUser(struct soap *soap, const char *tag, struct __interswitch__GetUser *a, const char *type) +{ + size_t soap_flag_interswitch__GetUser = 1; + short soap_flag; + a = (struct __interswitch__GetUser *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__GetUser, sizeof(struct __interswitch__GetUser), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__GetUser(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__GetUser && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__GetUser(soap, "interswitch:GetUser", &a->interswitch__GetUser, "")) + { soap_flag_interswitch__GetUser--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetUser(struct soap *soap, const struct __interswitch__GetUser *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__GetUser(soap, tag?tag:"-interswitch:GetUser", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetUser * SOAP_FMAC4 soap_get___interswitch__GetUser(struct soap *soap, struct __interswitch__GetUser *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__GetUser(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__GetUser * SOAP_FMAC2 soap_instantiate___interswitch__GetUser(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__GetUser(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__GetUser, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetUser); + if (size) + *size = sizeof(struct __interswitch__GetUser); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetUser[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__GetUser); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__GetUser*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetUser(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__GetUser %p -> %p\n", q, p)); + *(struct __interswitch__GetUser*)p = *(struct __interswitch__GetUser*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__AuthenticateUserSecurityToken(struct soap *soap, struct __interswitch__AuthenticateUserSecurityToken *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__AuthenticateUserSecurityToken = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__AuthenticateUserSecurityToken(struct soap *soap, const struct __interswitch__AuthenticateUserSecurityToken *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__AuthenticateUserSecurityToken(soap, &a->interswitch__AuthenticateUserSecurityToken); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__AuthenticateUserSecurityToken(struct soap *soap, const char *tag, int id, const struct __interswitch__AuthenticateUserSecurityToken *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__AuthenticateUserSecurityToken(soap, "interswitch:AuthenticateUserSecurityToken", -1, &a->interswitch__AuthenticateUserSecurityToken, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__AuthenticateUserSecurityToken * SOAP_FMAC4 soap_in___interswitch__AuthenticateUserSecurityToken(struct soap *soap, const char *tag, struct __interswitch__AuthenticateUserSecurityToken *a, const char *type) +{ + size_t soap_flag_interswitch__AuthenticateUserSecurityToken = 1; + short soap_flag; + a = (struct __interswitch__AuthenticateUserSecurityToken *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__AuthenticateUserSecurityToken, sizeof(struct __interswitch__AuthenticateUserSecurityToken), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__AuthenticateUserSecurityToken(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__AuthenticateUserSecurityToken && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__AuthenticateUserSecurityToken(soap, "interswitch:AuthenticateUserSecurityToken", &a->interswitch__AuthenticateUserSecurityToken, "")) + { soap_flag_interswitch__AuthenticateUserSecurityToken--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__AuthenticateUserSecurityToken(struct soap *soap, const struct __interswitch__AuthenticateUserSecurityToken *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__AuthenticateUserSecurityToken(soap, tag?tag:"-interswitch:AuthenticateUserSecurityToken", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__AuthenticateUserSecurityToken * SOAP_FMAC4 soap_get___interswitch__AuthenticateUserSecurityToken(struct soap *soap, struct __interswitch__AuthenticateUserSecurityToken *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__AuthenticateUserSecurityToken(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__AuthenticateUserSecurityToken * SOAP_FMAC2 soap_instantiate___interswitch__AuthenticateUserSecurityToken(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__AuthenticateUserSecurityToken(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__AuthenticateUserSecurityToken, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__AuthenticateUserSecurityToken); + if (size) + *size = sizeof(struct __interswitch__AuthenticateUserSecurityToken); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__AuthenticateUserSecurityToken[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__AuthenticateUserSecurityToken); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__AuthenticateUserSecurityToken*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__AuthenticateUserSecurityToken(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__AuthenticateUserSecurityToken %p -> %p\n", q, p)); + *(struct __interswitch__AuthenticateUserSecurityToken*)p = *(struct __interswitch__AuthenticateUserSecurityToken*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__AuthenticateUser(struct soap *soap, struct __interswitch__AuthenticateUser *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__AuthenticateUser = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__AuthenticateUser(struct soap *soap, const struct __interswitch__AuthenticateUser *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__AuthenticateUser(soap, &a->interswitch__AuthenticateUser); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__AuthenticateUser(struct soap *soap, const char *tag, int id, const struct __interswitch__AuthenticateUser *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__AuthenticateUser(soap, "interswitch:AuthenticateUser", -1, &a->interswitch__AuthenticateUser, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__AuthenticateUser * SOAP_FMAC4 soap_in___interswitch__AuthenticateUser(struct soap *soap, const char *tag, struct __interswitch__AuthenticateUser *a, const char *type) +{ + size_t soap_flag_interswitch__AuthenticateUser = 1; + short soap_flag; + a = (struct __interswitch__AuthenticateUser *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__AuthenticateUser, sizeof(struct __interswitch__AuthenticateUser), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__AuthenticateUser(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__AuthenticateUser && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__AuthenticateUser(soap, "interswitch:AuthenticateUser", &a->interswitch__AuthenticateUser, "")) + { soap_flag_interswitch__AuthenticateUser--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__AuthenticateUser(struct soap *soap, const struct __interswitch__AuthenticateUser *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__AuthenticateUser(soap, tag?tag:"-interswitch:AuthenticateUser", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__AuthenticateUser * SOAP_FMAC4 soap_get___interswitch__AuthenticateUser(struct soap *soap, struct __interswitch__AuthenticateUser *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__AuthenticateUser(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__AuthenticateUser * SOAP_FMAC2 soap_instantiate___interswitch__AuthenticateUser(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__AuthenticateUser(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__AuthenticateUser, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__AuthenticateUser); + if (size) + *size = sizeof(struct __interswitch__AuthenticateUser); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__AuthenticateUser[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__AuthenticateUser); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__AuthenticateUser*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__AuthenticateUser(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__AuthenticateUser %p -> %p\n", q, p)); + *(struct __interswitch__AuthenticateUser*)p = *(struct __interswitch__AuthenticateUser*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__ResetPassword(struct soap *soap, struct __interswitch__ResetPassword *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__ResetPassword = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__ResetPassword(struct soap *soap, const struct __interswitch__ResetPassword *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__ResetPassword(soap, &a->interswitch__ResetPassword); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__ResetPassword(struct soap *soap, const char *tag, int id, const struct __interswitch__ResetPassword *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__ResetPassword(soap, "interswitch:ResetPassword", -1, &a->interswitch__ResetPassword, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__ResetPassword * SOAP_FMAC4 soap_in___interswitch__ResetPassword(struct soap *soap, const char *tag, struct __interswitch__ResetPassword *a, const char *type) +{ + size_t soap_flag_interswitch__ResetPassword = 1; + short soap_flag; + a = (struct __interswitch__ResetPassword *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__ResetPassword, sizeof(struct __interswitch__ResetPassword), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__ResetPassword(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__ResetPassword && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__ResetPassword(soap, "interswitch:ResetPassword", &a->interswitch__ResetPassword, "")) + { soap_flag_interswitch__ResetPassword--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__ResetPassword(struct soap *soap, const struct __interswitch__ResetPassword *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__ResetPassword(soap, tag?tag:"-interswitch:ResetPassword", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__ResetPassword * SOAP_FMAC4 soap_get___interswitch__ResetPassword(struct soap *soap, struct __interswitch__ResetPassword *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__ResetPassword(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__ResetPassword * SOAP_FMAC2 soap_instantiate___interswitch__ResetPassword(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__ResetPassword(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__ResetPassword, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__ResetPassword); + if (size) + *size = sizeof(struct __interswitch__ResetPassword); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__ResetPassword[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__ResetPassword); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__ResetPassword*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__ResetPassword(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__ResetPassword %p -> %p\n", q, p)); + *(struct __interswitch__ResetPassword*)p = *(struct __interswitch__ResetPassword*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__ChangePassword(struct soap *soap, struct __interswitch__ChangePassword *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__ChangePassword = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__ChangePassword(struct soap *soap, const struct __interswitch__ChangePassword *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__ChangePassword(soap, &a->interswitch__ChangePassword); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__ChangePassword(struct soap *soap, const char *tag, int id, const struct __interswitch__ChangePassword *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__ChangePassword(soap, "interswitch:ChangePassword", -1, &a->interswitch__ChangePassword, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__ChangePassword * SOAP_FMAC4 soap_in___interswitch__ChangePassword(struct soap *soap, const char *tag, struct __interswitch__ChangePassword *a, const char *type) +{ + size_t soap_flag_interswitch__ChangePassword = 1; + short soap_flag; + a = (struct __interswitch__ChangePassword *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__ChangePassword, sizeof(struct __interswitch__ChangePassword), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__ChangePassword(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__ChangePassword && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__ChangePassword(soap, "interswitch:ChangePassword", &a->interswitch__ChangePassword, "")) + { soap_flag_interswitch__ChangePassword--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__ChangePassword(struct soap *soap, const struct __interswitch__ChangePassword *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__ChangePassword(soap, tag?tag:"-interswitch:ChangePassword", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__ChangePassword * SOAP_FMAC4 soap_get___interswitch__ChangePassword(struct soap *soap, struct __interswitch__ChangePassword *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__ChangePassword(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__ChangePassword * SOAP_FMAC2 soap_instantiate___interswitch__ChangePassword(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__ChangePassword(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__ChangePassword, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__ChangePassword); + if (size) + *size = sizeof(struct __interswitch__ChangePassword); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__ChangePassword[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__ChangePassword); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__ChangePassword*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__ChangePassword(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__ChangePassword %p -> %p\n", q, p)); + *(struct __interswitch__ChangePassword*)p = *(struct __interswitch__ChangePassword*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__UpdateUser(struct soap *soap, struct __interswitch__UpdateUser *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__UpdateUser = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__UpdateUser(struct soap *soap, const struct __interswitch__UpdateUser *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__UpdateUser(soap, &a->interswitch__UpdateUser); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__UpdateUser(struct soap *soap, const char *tag, int id, const struct __interswitch__UpdateUser *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__UpdateUser(soap, "interswitch:UpdateUser", -1, &a->interswitch__UpdateUser, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__UpdateUser * SOAP_FMAC4 soap_in___interswitch__UpdateUser(struct soap *soap, const char *tag, struct __interswitch__UpdateUser *a, const char *type) +{ + size_t soap_flag_interswitch__UpdateUser = 1; + short soap_flag; + a = (struct __interswitch__UpdateUser *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__UpdateUser, sizeof(struct __interswitch__UpdateUser), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__UpdateUser(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__UpdateUser && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__UpdateUser(soap, "interswitch:UpdateUser", &a->interswitch__UpdateUser, "")) + { soap_flag_interswitch__UpdateUser--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__UpdateUser(struct soap *soap, const struct __interswitch__UpdateUser *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__UpdateUser(soap, tag?tag:"-interswitch:UpdateUser", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__UpdateUser * SOAP_FMAC4 soap_get___interswitch__UpdateUser(struct soap *soap, struct __interswitch__UpdateUser *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__UpdateUser(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__UpdateUser * SOAP_FMAC2 soap_instantiate___interswitch__UpdateUser(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__UpdateUser(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__UpdateUser, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__UpdateUser); + if (size) + *size = sizeof(struct __interswitch__UpdateUser); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__UpdateUser[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__UpdateUser); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__UpdateUser*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__UpdateUser(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__UpdateUser %p -> %p\n", q, p)); + *(struct __interswitch__UpdateUser*)p = *(struct __interswitch__UpdateUser*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__ActivateUser(struct soap *soap, struct __interswitch__ActivateUser *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__ActivateUser = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__ActivateUser(struct soap *soap, const struct __interswitch__ActivateUser *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__ActivateUser(soap, &a->interswitch__ActivateUser); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__ActivateUser(struct soap *soap, const char *tag, int id, const struct __interswitch__ActivateUser *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__ActivateUser(soap, "interswitch:ActivateUser", -1, &a->interswitch__ActivateUser, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__ActivateUser * SOAP_FMAC4 soap_in___interswitch__ActivateUser(struct soap *soap, const char *tag, struct __interswitch__ActivateUser *a, const char *type) +{ + size_t soap_flag_interswitch__ActivateUser = 1; + short soap_flag; + a = (struct __interswitch__ActivateUser *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__ActivateUser, sizeof(struct __interswitch__ActivateUser), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__ActivateUser(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__ActivateUser && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__ActivateUser(soap, "interswitch:ActivateUser", &a->interswitch__ActivateUser, "")) + { soap_flag_interswitch__ActivateUser--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__ActivateUser(struct soap *soap, const struct __interswitch__ActivateUser *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__ActivateUser(soap, tag?tag:"-interswitch:ActivateUser", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__ActivateUser * SOAP_FMAC4 soap_get___interswitch__ActivateUser(struct soap *soap, struct __interswitch__ActivateUser *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__ActivateUser(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__ActivateUser * SOAP_FMAC2 soap_instantiate___interswitch__ActivateUser(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__ActivateUser(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__ActivateUser, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__ActivateUser); + if (size) + *size = sizeof(struct __interswitch__ActivateUser); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__ActivateUser[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__ActivateUser); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__ActivateUser*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__ActivateUser(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__ActivateUser %p -> %p\n", q, p)); + *(struct __interswitch__ActivateUser*)p = *(struct __interswitch__ActivateUser*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__CreateUser(struct soap *soap, struct __interswitch__CreateUser *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__CreateUser = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__CreateUser(struct soap *soap, const struct __interswitch__CreateUser *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__CreateUser(soap, &a->interswitch__CreateUser); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__CreateUser(struct soap *soap, const char *tag, int id, const struct __interswitch__CreateUser *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__CreateUser(soap, "interswitch:CreateUser", -1, &a->interswitch__CreateUser, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__CreateUser * SOAP_FMAC4 soap_in___interswitch__CreateUser(struct soap *soap, const char *tag, struct __interswitch__CreateUser *a, const char *type) +{ + size_t soap_flag_interswitch__CreateUser = 1; + short soap_flag; + a = (struct __interswitch__CreateUser *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__CreateUser, sizeof(struct __interswitch__CreateUser), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__CreateUser(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__CreateUser && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__CreateUser(soap, "interswitch:CreateUser", &a->interswitch__CreateUser, "")) + { soap_flag_interswitch__CreateUser--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__CreateUser(struct soap *soap, const struct __interswitch__CreateUser *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__CreateUser(soap, tag?tag:"-interswitch:CreateUser", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__CreateUser * SOAP_FMAC4 soap_get___interswitch__CreateUser(struct soap *soap, struct __interswitch__CreateUser *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__CreateUser(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__CreateUser * SOAP_FMAC2 soap_instantiate___interswitch__CreateUser(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__CreateUser(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__CreateUser, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__CreateUser); + if (size) + *size = sizeof(struct __interswitch__CreateUser); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__CreateUser[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__CreateUser); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__CreateUser*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__CreateUser(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__CreateUser %p -> %p\n", q, p)); + *(struct __interswitch__CreateUser*)p = *(struct __interswitch__CreateUser*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetSystemSettings(struct soap *soap, struct __interswitch__GetSystemSettings *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__GetSystemSettings = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetSystemSettings(struct soap *soap, const struct __interswitch__GetSystemSettings *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__GetSystemSettings(soap, &a->interswitch__GetSystemSettings); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetSystemSettings(struct soap *soap, const char *tag, int id, const struct __interswitch__GetSystemSettings *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__GetSystemSettings(soap, "interswitch:GetSystemSettings", -1, &a->interswitch__GetSystemSettings, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetSystemSettings * SOAP_FMAC4 soap_in___interswitch__GetSystemSettings(struct soap *soap, const char *tag, struct __interswitch__GetSystemSettings *a, const char *type) +{ + size_t soap_flag_interswitch__GetSystemSettings = 1; + short soap_flag; + a = (struct __interswitch__GetSystemSettings *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__GetSystemSettings, sizeof(struct __interswitch__GetSystemSettings), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__GetSystemSettings(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__GetSystemSettings && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__GetSystemSettings(soap, "interswitch:GetSystemSettings", &a->interswitch__GetSystemSettings, "")) + { soap_flag_interswitch__GetSystemSettings--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetSystemSettings(struct soap *soap, const struct __interswitch__GetSystemSettings *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__GetSystemSettings(soap, tag?tag:"-interswitch:GetSystemSettings", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__GetSystemSettings * SOAP_FMAC4 soap_get___interswitch__GetSystemSettings(struct soap *soap, struct __interswitch__GetSystemSettings *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__GetSystemSettings(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__GetSystemSettings * SOAP_FMAC2 soap_instantiate___interswitch__GetSystemSettings(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__GetSystemSettings(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__GetSystemSettings, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetSystemSettings); + if (size) + *size = sizeof(struct __interswitch__GetSystemSettings); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__GetSystemSettings[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__GetSystemSettings); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__GetSystemSettings*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetSystemSettings(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__GetSystemSettings %p -> %p\n", q, p)); + *(struct __interswitch__GetSystemSettings*)p = *(struct __interswitch__GetSystemSettings*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__QueryTransaction(struct soap *soap, struct __interswitch__QueryTransaction *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__QueryTransaction = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__QueryTransaction(struct soap *soap, const struct __interswitch__QueryTransaction *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__QueryTransaction(soap, &a->interswitch__QueryTransaction); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__QueryTransaction(struct soap *soap, const char *tag, int id, const struct __interswitch__QueryTransaction *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__QueryTransaction(soap, "interswitch:QueryTransaction", -1, &a->interswitch__QueryTransaction, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__QueryTransaction * SOAP_FMAC4 soap_in___interswitch__QueryTransaction(struct soap *soap, const char *tag, struct __interswitch__QueryTransaction *a, const char *type) +{ + size_t soap_flag_interswitch__QueryTransaction = 1; + short soap_flag; + a = (struct __interswitch__QueryTransaction *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__QueryTransaction, sizeof(struct __interswitch__QueryTransaction), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__QueryTransaction(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__QueryTransaction && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__QueryTransaction(soap, "interswitch:QueryTransaction", &a->interswitch__QueryTransaction, "")) + { soap_flag_interswitch__QueryTransaction--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__QueryTransaction(struct soap *soap, const struct __interswitch__QueryTransaction *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__QueryTransaction(soap, tag?tag:"-interswitch:QueryTransaction", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__QueryTransaction * SOAP_FMAC4 soap_get___interswitch__QueryTransaction(struct soap *soap, struct __interswitch__QueryTransaction *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__QueryTransaction(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__QueryTransaction * SOAP_FMAC2 soap_instantiate___interswitch__QueryTransaction(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__QueryTransaction(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__QueryTransaction, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__QueryTransaction); + if (size) + *size = sizeof(struct __interswitch__QueryTransaction); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__QueryTransaction[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__QueryTransaction); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__QueryTransaction*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__QueryTransaction(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__QueryTransaction %p -> %p\n", q, p)); + *(struct __interswitch__QueryTransaction*)p = *(struct __interswitch__QueryTransaction*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__StatusCheck(struct soap *soap, struct __interswitch__StatusCheck *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__StatusCheck = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__StatusCheck(struct soap *soap, const struct __interswitch__StatusCheck *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__StatusCheck(soap, &a->interswitch__StatusCheck); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__StatusCheck(struct soap *soap, const char *tag, int id, const struct __interswitch__StatusCheck *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__StatusCheck(soap, "interswitch:StatusCheck", -1, &a->interswitch__StatusCheck, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__StatusCheck * SOAP_FMAC4 soap_in___interswitch__StatusCheck(struct soap *soap, const char *tag, struct __interswitch__StatusCheck *a, const char *type) +{ + size_t soap_flag_interswitch__StatusCheck = 1; + short soap_flag; + a = (struct __interswitch__StatusCheck *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__StatusCheck, sizeof(struct __interswitch__StatusCheck), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__StatusCheck(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__StatusCheck && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__StatusCheck(soap, "interswitch:StatusCheck", &a->interswitch__StatusCheck, "")) + { soap_flag_interswitch__StatusCheck--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__StatusCheck(struct soap *soap, const struct __interswitch__StatusCheck *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__StatusCheck(soap, tag?tag:"-interswitch:StatusCheck", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__StatusCheck * SOAP_FMAC4 soap_get___interswitch__StatusCheck(struct soap *soap, struct __interswitch__StatusCheck *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__StatusCheck(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__StatusCheck * SOAP_FMAC2 soap_instantiate___interswitch__StatusCheck(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__StatusCheck(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__StatusCheck, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__StatusCheck); + if (size) + *size = sizeof(struct __interswitch__StatusCheck); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__StatusCheck[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__StatusCheck); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__StatusCheck*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__StatusCheck(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__StatusCheck %p -> %p\n", q, p)); + *(struct __interswitch__StatusCheck*)p = *(struct __interswitch__StatusCheck*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__ReverseCashOut(struct soap *soap, struct __interswitch__ReverseCashOut *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__ReverseCashOut = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__ReverseCashOut(struct soap *soap, const struct __interswitch__ReverseCashOut *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__ReverseCashOut(soap, &a->interswitch__ReverseCashOut); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__ReverseCashOut(struct soap *soap, const char *tag, int id, const struct __interswitch__ReverseCashOut *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__ReverseCashOut(soap, "interswitch:ReverseCashOut", -1, &a->interswitch__ReverseCashOut, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__ReverseCashOut * SOAP_FMAC4 soap_in___interswitch__ReverseCashOut(struct soap *soap, const char *tag, struct __interswitch__ReverseCashOut *a, const char *type) +{ + size_t soap_flag_interswitch__ReverseCashOut = 1; + short soap_flag; + a = (struct __interswitch__ReverseCashOut *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__ReverseCashOut, sizeof(struct __interswitch__ReverseCashOut), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__ReverseCashOut(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__ReverseCashOut && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__ReverseCashOut(soap, "interswitch:ReverseCashOut", &a->interswitch__ReverseCashOut, "")) + { soap_flag_interswitch__ReverseCashOut--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__ReverseCashOut(struct soap *soap, const struct __interswitch__ReverseCashOut *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__ReverseCashOut(soap, tag?tag:"-interswitch:ReverseCashOut", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__ReverseCashOut * SOAP_FMAC4 soap_get___interswitch__ReverseCashOut(struct soap *soap, struct __interswitch__ReverseCashOut *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__ReverseCashOut(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__ReverseCashOut * SOAP_FMAC2 soap_instantiate___interswitch__ReverseCashOut(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__ReverseCashOut(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__ReverseCashOut, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__ReverseCashOut); + if (size) + *size = sizeof(struct __interswitch__ReverseCashOut); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__ReverseCashOut[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__ReverseCashOut); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__ReverseCashOut*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__ReverseCashOut(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__ReverseCashOut %p -> %p\n", q, p)); + *(struct __interswitch__ReverseCashOut*)p = *(struct __interswitch__ReverseCashOut*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__AuthoriseAccountCashOut(struct soap *soap, struct __interswitch__AuthoriseAccountCashOut *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__AuthoriseAccountCashOut = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__AuthoriseAccountCashOut(struct soap *soap, const struct __interswitch__AuthoriseAccountCashOut *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__AuthoriseAccountCashOut(soap, &a->interswitch__AuthoriseAccountCashOut); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__AuthoriseAccountCashOut(struct soap *soap, const char *tag, int id, const struct __interswitch__AuthoriseAccountCashOut *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__AuthoriseAccountCashOut(soap, "interswitch:AuthoriseAccountCashOut", -1, &a->interswitch__AuthoriseAccountCashOut, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__AuthoriseAccountCashOut * SOAP_FMAC4 soap_in___interswitch__AuthoriseAccountCashOut(struct soap *soap, const char *tag, struct __interswitch__AuthoriseAccountCashOut *a, const char *type) +{ + size_t soap_flag_interswitch__AuthoriseAccountCashOut = 1; + short soap_flag; + a = (struct __interswitch__AuthoriseAccountCashOut *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__AuthoriseAccountCashOut, sizeof(struct __interswitch__AuthoriseAccountCashOut), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__AuthoriseAccountCashOut(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__AuthoriseAccountCashOut && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__AuthoriseAccountCashOut(soap, "interswitch:AuthoriseAccountCashOut", &a->interswitch__AuthoriseAccountCashOut, "")) + { soap_flag_interswitch__AuthoriseAccountCashOut--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__AuthoriseAccountCashOut(struct soap *soap, const struct __interswitch__AuthoriseAccountCashOut *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__AuthoriseAccountCashOut(soap, tag?tag:"-interswitch:AuthoriseAccountCashOut", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__AuthoriseAccountCashOut * SOAP_FMAC4 soap_get___interswitch__AuthoriseAccountCashOut(struct soap *soap, struct __interswitch__AuthoriseAccountCashOut *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__AuthoriseAccountCashOut(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__AuthoriseAccountCashOut * SOAP_FMAC2 soap_instantiate___interswitch__AuthoriseAccountCashOut(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__AuthoriseAccountCashOut(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__AuthoriseAccountCashOut, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__AuthoriseAccountCashOut); + if (size) + *size = sizeof(struct __interswitch__AuthoriseAccountCashOut); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__AuthoriseAccountCashOut[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__AuthoriseAccountCashOut); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__AuthoriseAccountCashOut*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__AuthoriseAccountCashOut(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__AuthoriseAccountCashOut %p -> %p\n", q, p)); + *(struct __interswitch__AuthoriseAccountCashOut*)p = *(struct __interswitch__AuthoriseAccountCashOut*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__AuthoriseCashOut(struct soap *soap, struct __interswitch__AuthoriseCashOut *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__AuthoriseCashOut = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__AuthoriseCashOut(struct soap *soap, const struct __interswitch__AuthoriseCashOut *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__AuthoriseCashOut(soap, &a->interswitch__AuthoriseCashOut); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__AuthoriseCashOut(struct soap *soap, const char *tag, int id, const struct __interswitch__AuthoriseCashOut *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__AuthoriseCashOut(soap, "interswitch:AuthoriseCashOut", -1, &a->interswitch__AuthoriseCashOut, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__AuthoriseCashOut * SOAP_FMAC4 soap_in___interswitch__AuthoriseCashOut(struct soap *soap, const char *tag, struct __interswitch__AuthoriseCashOut *a, const char *type) +{ + size_t soap_flag_interswitch__AuthoriseCashOut = 1; + short soap_flag; + a = (struct __interswitch__AuthoriseCashOut *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__AuthoriseCashOut, sizeof(struct __interswitch__AuthoriseCashOut), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__AuthoriseCashOut(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__AuthoriseCashOut && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__AuthoriseCashOut(soap, "interswitch:AuthoriseCashOut", &a->interswitch__AuthoriseCashOut, "")) + { soap_flag_interswitch__AuthoriseCashOut--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__AuthoriseCashOut(struct soap *soap, const struct __interswitch__AuthoriseCashOut *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__AuthoriseCashOut(soap, tag?tag:"-interswitch:AuthoriseCashOut", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__AuthoriseCashOut * SOAP_FMAC4 soap_get___interswitch__AuthoriseCashOut(struct soap *soap, struct __interswitch__AuthoriseCashOut *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__AuthoriseCashOut(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__AuthoriseCashOut * SOAP_FMAC2 soap_instantiate___interswitch__AuthoriseCashOut(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__AuthoriseCashOut(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__AuthoriseCashOut, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__AuthoriseCashOut); + if (size) + *size = sizeof(struct __interswitch__AuthoriseCashOut); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__AuthoriseCashOut[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__AuthoriseCashOut); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__AuthoriseCashOut*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__AuthoriseCashOut(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__AuthoriseCashOut %p -> %p\n", q, p)); + *(struct __interswitch__AuthoriseCashOut*)p = *(struct __interswitch__AuthoriseCashOut*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__QueryTransfer(struct soap *soap, struct __interswitch__QueryTransfer *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__QueryTransfer = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__QueryTransfer(struct soap *soap, const struct __interswitch__QueryTransfer *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__QueryTransfer(soap, &a->interswitch__QueryTransfer); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__QueryTransfer(struct soap *soap, const char *tag, int id, const struct __interswitch__QueryTransfer *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__QueryTransfer(soap, "interswitch:QueryTransfer", -1, &a->interswitch__QueryTransfer, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__QueryTransfer * SOAP_FMAC4 soap_in___interswitch__QueryTransfer(struct soap *soap, const char *tag, struct __interswitch__QueryTransfer *a, const char *type) +{ + size_t soap_flag_interswitch__QueryTransfer = 1; + short soap_flag; + a = (struct __interswitch__QueryTransfer *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__QueryTransfer, sizeof(struct __interswitch__QueryTransfer), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__QueryTransfer(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__QueryTransfer && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__QueryTransfer(soap, "interswitch:QueryTransfer", &a->interswitch__QueryTransfer, "")) + { soap_flag_interswitch__QueryTransfer--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__QueryTransfer(struct soap *soap, const struct __interswitch__QueryTransfer *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__QueryTransfer(soap, tag?tag:"-interswitch:QueryTransfer", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__QueryTransfer * SOAP_FMAC4 soap_get___interswitch__QueryTransfer(struct soap *soap, struct __interswitch__QueryTransfer *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__QueryTransfer(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__QueryTransfer * SOAP_FMAC2 soap_instantiate___interswitch__QueryTransfer(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__QueryTransfer(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__QueryTransfer, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__QueryTransfer); + if (size) + *size = sizeof(struct __interswitch__QueryTransfer); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__QueryTransfer[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__QueryTransfer); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__QueryTransfer*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__QueryTransfer(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__QueryTransfer %p -> %p\n", q, p)); + *(struct __interswitch__QueryTransfer*)p = *(struct __interswitch__QueryTransfer*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__SendSessionKey(struct soap *soap, struct __interswitch__SendSessionKey *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__SendSessionKey = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__SendSessionKey(struct soap *soap, const struct __interswitch__SendSessionKey *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__SendSessionKey(soap, &a->interswitch__SendSessionKey); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__SendSessionKey(struct soap *soap, const char *tag, int id, const struct __interswitch__SendSessionKey *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__SendSessionKey(soap, "interswitch:SendSessionKey", -1, &a->interswitch__SendSessionKey, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__SendSessionKey * SOAP_FMAC4 soap_in___interswitch__SendSessionKey(struct soap *soap, const char *tag, struct __interswitch__SendSessionKey *a, const char *type) +{ + size_t soap_flag_interswitch__SendSessionKey = 1; + short soap_flag; + a = (struct __interswitch__SendSessionKey *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__SendSessionKey, sizeof(struct __interswitch__SendSessionKey), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__SendSessionKey(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__SendSessionKey && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__SendSessionKey(soap, "interswitch:SendSessionKey", &a->interswitch__SendSessionKey, "")) + { soap_flag_interswitch__SendSessionKey--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__SendSessionKey(struct soap *soap, const struct __interswitch__SendSessionKey *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__SendSessionKey(soap, tag?tag:"-interswitch:SendSessionKey", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__SendSessionKey * SOAP_FMAC4 soap_get___interswitch__SendSessionKey(struct soap *soap, struct __interswitch__SendSessionKey *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__SendSessionKey(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__SendSessionKey * SOAP_FMAC2 soap_instantiate___interswitch__SendSessionKey(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__SendSessionKey(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__SendSessionKey, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__SendSessionKey); + if (size) + *size = sizeof(struct __interswitch__SendSessionKey); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__SendSessionKey[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__SendSessionKey); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__SendSessionKey*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__SendSessionKey(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__SendSessionKey %p -> %p\n", q, p)); + *(struct __interswitch__SendSessionKey*)p = *(struct __interswitch__SendSessionKey*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__CancelTransfer(struct soap *soap, struct __interswitch__CancelTransfer *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__CancelTransfer = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__CancelTransfer(struct soap *soap, const struct __interswitch__CancelTransfer *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__CancelTransfer(soap, &a->interswitch__CancelTransfer); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__CancelTransfer(struct soap *soap, const char *tag, int id, const struct __interswitch__CancelTransfer *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__CancelTransfer(soap, "interswitch:CancelTransfer", -1, &a->interswitch__CancelTransfer, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__CancelTransfer * SOAP_FMAC4 soap_in___interswitch__CancelTransfer(struct soap *soap, const char *tag, struct __interswitch__CancelTransfer *a, const char *type) +{ + size_t soap_flag_interswitch__CancelTransfer = 1; + short soap_flag; + a = (struct __interswitch__CancelTransfer *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__CancelTransfer, sizeof(struct __interswitch__CancelTransfer), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__CancelTransfer(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__CancelTransfer && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__CancelTransfer(soap, "interswitch:CancelTransfer", &a->interswitch__CancelTransfer, "")) + { soap_flag_interswitch__CancelTransfer--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__CancelTransfer(struct soap *soap, const struct __interswitch__CancelTransfer *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__CancelTransfer(soap, tag?tag:"-interswitch:CancelTransfer", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__CancelTransfer * SOAP_FMAC4 soap_get___interswitch__CancelTransfer(struct soap *soap, struct __interswitch__CancelTransfer *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__CancelTransfer(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__CancelTransfer * SOAP_FMAC2 soap_instantiate___interswitch__CancelTransfer(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__CancelTransfer(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__CancelTransfer, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__CancelTransfer); + if (size) + *size = sizeof(struct __interswitch__CancelTransfer); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__CancelTransfer[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__CancelTransfer); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__CancelTransfer*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__CancelTransfer(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__CancelTransfer %p -> %p\n", q, p)); + *(struct __interswitch__CancelTransfer*)p = *(struct __interswitch__CancelTransfer*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__DoTransfer(struct soap *soap, struct __interswitch__DoTransfer *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__DoTransfer = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__DoTransfer(struct soap *soap, const struct __interswitch__DoTransfer *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__DoTransfer(soap, &a->interswitch__DoTransfer); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__DoTransfer(struct soap *soap, const char *tag, int id, const struct __interswitch__DoTransfer *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__DoTransfer(soap, "interswitch:DoTransfer", -1, &a->interswitch__DoTransfer, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__DoTransfer * SOAP_FMAC4 soap_in___interswitch__DoTransfer(struct soap *soap, const char *tag, struct __interswitch__DoTransfer *a, const char *type) +{ + size_t soap_flag_interswitch__DoTransfer = 1; + short soap_flag; + a = (struct __interswitch__DoTransfer *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__DoTransfer, sizeof(struct __interswitch__DoTransfer), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__DoTransfer(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__DoTransfer && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__DoTransfer(soap, "interswitch:DoTransfer", &a->interswitch__DoTransfer, "")) + { soap_flag_interswitch__DoTransfer--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__DoTransfer(struct soap *soap, const struct __interswitch__DoTransfer *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__DoTransfer(soap, tag?tag:"-interswitch:DoTransfer", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__DoTransfer * SOAP_FMAC4 soap_get___interswitch__DoTransfer(struct soap *soap, struct __interswitch__DoTransfer *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__DoTransfer(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__DoTransfer * SOAP_FMAC2 soap_instantiate___interswitch__DoTransfer(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__DoTransfer(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__DoTransfer, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__DoTransfer); + if (size) + *size = sizeof(struct __interswitch__DoTransfer); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__DoTransfer[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__DoTransfer); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__DoTransfer*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__DoTransfer(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__DoTransfer %p -> %p\n", q, p)); + *(struct __interswitch__DoTransfer*)p = *(struct __interswitch__DoTransfer*)q; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__ValidateCustomer(struct soap *soap, struct __interswitch__ValidateCustomer *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + a->interswitch__ValidateCustomer = NULL; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__ValidateCustomer(struct soap *soap, const struct __interswitch__ValidateCustomer *a) +{ + (void)soap; (void)a; /* appease -Wall -Werror */ + soap_serialize_PointerTo_interswitch__ValidateCustomer(soap, &a->interswitch__ValidateCustomer); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__ValidateCustomer(struct soap *soap, const char *tag, int id, const struct __interswitch__ValidateCustomer *a, const char *type) +{ + if (soap_out_PointerTo_interswitch__ValidateCustomer(soap, "interswitch:ValidateCustomer", -1, &a->interswitch__ValidateCustomer, "")) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__ValidateCustomer * SOAP_FMAC4 soap_in___interswitch__ValidateCustomer(struct soap *soap, const char *tag, struct __interswitch__ValidateCustomer *a, const char *type) +{ + size_t soap_flag_interswitch__ValidateCustomer = 1; + short soap_flag; + a = (struct __interswitch__ValidateCustomer *)soap_id_enter(soap, "", a, SOAP_TYPE_interswitch___interswitch__ValidateCustomer, sizeof(struct __interswitch__ValidateCustomer), 0, NULL, NULL, NULL); + if (!a) + return NULL; + soap_default___interswitch__ValidateCustomer(soap, a); + for (soap_flag = 0;; soap_flag = 1) + { soap->error = SOAP_TAG_MISMATCH; + if (soap_flag_interswitch__ValidateCustomer && soap->error == SOAP_TAG_MISMATCH) + if (soap_in_PointerTo_interswitch__ValidateCustomer(soap, "interswitch:ValidateCustomer", &a->interswitch__ValidateCustomer, "")) + { soap_flag_interswitch__ValidateCustomer--; + continue; + } + if (soap->error == SOAP_TAG_MISMATCH) + if (soap_flag) + { soap->error = SOAP_OK; + break; + } + if (soap->error == SOAP_NO_TAG) + break; + if (soap->error) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__ValidateCustomer(struct soap *soap, const struct __interswitch__ValidateCustomer *a, const char *tag, const char *type) +{ + register int id = 0; + if (soap_out___interswitch__ValidateCustomer(soap, tag?tag:"-interswitch:ValidateCustomer", id, a, type)) + return soap->error; + return SOAP_OK; +} + +SOAP_FMAC3 struct __interswitch__ValidateCustomer * SOAP_FMAC4 soap_get___interswitch__ValidateCustomer(struct soap *soap, struct __interswitch__ValidateCustomer *p, const char *tag, const char *type) +{ + if ((p = soap_in___interswitch__ValidateCustomer(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC1 struct __interswitch__ValidateCustomer * SOAP_FMAC2 soap_instantiate___interswitch__ValidateCustomer(struct soap *soap, int n, const char *type, const char *arrayType, size_t *size) +{ + (void)type; (void)arrayType; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "soap_instantiate___interswitch__ValidateCustomer(%d, %s, %s)\n", n, type?type:"", arrayType?arrayType:"")); + struct soap_clist *cp = soap_link(soap, NULL, SOAP_TYPE_interswitch___interswitch__ValidateCustomer, n, soap_fdelete); + if (!cp) + return NULL; + if (n < 0) + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__ValidateCustomer); + if (size) + *size = sizeof(struct __interswitch__ValidateCustomer); + } + else + { cp->ptr = (void*)SOAP_NEW(struct __interswitch__ValidateCustomer[n]); + if (!cp->ptr) + { soap->error = SOAP_EOM; + return NULL; + } + if (size) + *size = n * sizeof(struct __interswitch__ValidateCustomer); + } + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Instantiated location=%p\n", cp->ptr)); + return (struct __interswitch__ValidateCustomer*)cp->ptr; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__ValidateCustomer(struct soap *soap, int st, int tt, void *p, size_t len, const void *q, size_t n) +{ + (void)soap; (void)st; (void)len; (void)n; /* appease -Wall -Werror */ + DBGLOG(TEST, SOAP_MESSAGE(fdebug, "Copying struct __interswitch__ValidateCustomer %p -> %p\n", q, p)); + *(struct __interswitch__ValidateCustomer*)p = *(struct __interswitch__ValidateCustomer*)q; +} + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch_SOAP_ENV__Reason)) + soap_serialize_SOAP_ENV__Reason(soap, *a); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Reason(struct soap *soap, const char *tag, int id, struct SOAP_ENV__Reason *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch_SOAP_ENV__Reason); + if (id < 0) + return soap->error; + return soap_out_SOAP_ENV__Reason(soap, tag, id, *a, type); +} + +SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Reason(struct soap *soap, const char *tag, struct SOAP_ENV__Reason **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (struct SOAP_ENV__Reason **)soap_malloc(soap, sizeof(struct SOAP_ENV__Reason *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = soap_in_SOAP_ENV__Reason(soap, tag, *a, type))) + return NULL; + } + else + { a = (struct SOAP_ENV__Reason **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch_SOAP_ENV__Reason, sizeof(struct SOAP_ENV__Reason), 0); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerToSOAP_ENV__Reason); + if (soap_out_PointerToSOAP_ENV__Reason(soap, tag?tag:"SOAP-ENV:Reason", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Reason(struct soap *soap, struct SOAP_ENV__Reason **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerToSOAP_ENV__Reason(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +#endif + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch_SOAP_ENV__Detail)) + soap_serialize_SOAP_ENV__Detail(soap, *a); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Detail(struct soap *soap, const char *tag, int id, struct SOAP_ENV__Detail *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch_SOAP_ENV__Detail); + if (id < 0) + return soap->error; + return soap_out_SOAP_ENV__Detail(soap, tag, id, *a, type); +} + +SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Detail(struct soap *soap, const char *tag, struct SOAP_ENV__Detail **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (struct SOAP_ENV__Detail **)soap_malloc(soap, sizeof(struct SOAP_ENV__Detail *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = soap_in_SOAP_ENV__Detail(soap, tag, *a, type))) + return NULL; + } + else + { a = (struct SOAP_ENV__Detail **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch_SOAP_ENV__Detail, sizeof(struct SOAP_ENV__Detail), 0); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerToSOAP_ENV__Detail); + if (soap_out_PointerToSOAP_ENV__Detail(soap, tag?tag:"SOAP-ENV:Detail", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Detail(struct soap *soap, struct SOAP_ENV__Detail **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerToSOAP_ENV__Detail(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +#endif + +#ifndef WITH_NOGLOBAL + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch_SOAP_ENV__Code)) + soap_serialize_SOAP_ENV__Code(soap, *a); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Code(struct soap *soap, const char *tag, int id, struct SOAP_ENV__Code *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch_SOAP_ENV__Code); + if (id < 0) + return soap->error; + return soap_out_SOAP_ENV__Code(soap, tag, id, *a, type); +} + +SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Code(struct soap *soap, const char *tag, struct SOAP_ENV__Code **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (struct SOAP_ENV__Code **)soap_malloc(soap, sizeof(struct SOAP_ENV__Code *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = soap_in_SOAP_ENV__Code(soap, tag, *a, type))) + return NULL; + } + else + { a = (struct SOAP_ENV__Code **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch_SOAP_ENV__Code, sizeof(struct SOAP_ENV__Code), 0); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerToSOAP_ENV__Code); + if (soap_out_PointerToSOAP_ENV__Code(soap, tag?tag:"SOAP-ENV:Code", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Code(struct soap *soap, struct SOAP_ENV__Code **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerToSOAP_ENV__Code(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +#endif + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__VerifyBillerResponse(struct soap *soap, _interswitch__VerifyBillerResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__VerifyBillerResponse(struct soap *soap, const char *tag, int id, _interswitch__VerifyBillerResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__VerifyBillerResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__VerifyBillerResponse(struct soap *soap, const char *tag, _interswitch__VerifyBillerResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__VerifyBillerResponse **)soap_malloc(soap, sizeof(_interswitch__VerifyBillerResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__VerifyBillerResponse *)soap_instantiate__interswitch__VerifyBillerResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__VerifyBillerResponse ** p = (_interswitch__VerifyBillerResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse, sizeof(_interswitch__VerifyBillerResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__VerifyBillerResponse(struct soap *soap, _interswitch__VerifyBillerResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__VerifyBillerResponse); + if (soap_out_PointerTo_interswitch__VerifyBillerResponse(soap, tag?tag:"interswitch:VerifyBillerResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__VerifyBillerResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__VerifyBillerResponse(struct soap *soap, _interswitch__VerifyBillerResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__VerifyBillerResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__VerifyBiller(struct soap *soap, _interswitch__VerifyBiller *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__VerifyBiller)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__VerifyBiller(struct soap *soap, const char *tag, int id, _interswitch__VerifyBiller *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__VerifyBiller); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__VerifyBiller ** SOAP_FMAC4 soap_in_PointerTo_interswitch__VerifyBiller(struct soap *soap, const char *tag, _interswitch__VerifyBiller **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__VerifyBiller **)soap_malloc(soap, sizeof(_interswitch__VerifyBiller *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__VerifyBiller *)soap_instantiate__interswitch__VerifyBiller(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__VerifyBiller ** p = (_interswitch__VerifyBiller **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__VerifyBiller, sizeof(_interswitch__VerifyBiller), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__VerifyBiller(struct soap *soap, _interswitch__VerifyBiller *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__VerifyBiller); + if (soap_out_PointerTo_interswitch__VerifyBiller(soap, tag?tag:"interswitch:VerifyBiller", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__VerifyBiller ** SOAP_FMAC4 soap_get_PointerTo_interswitch__VerifyBiller(struct soap *soap, _interswitch__VerifyBiller **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__VerifyBiller(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__CreateBillerResponse(struct soap *soap, _interswitch__CreateBillerResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__CreateBillerResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__CreateBillerResponse(struct soap *soap, const char *tag, int id, _interswitch__CreateBillerResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__CreateBillerResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__CreateBillerResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__CreateBillerResponse(struct soap *soap, const char *tag, _interswitch__CreateBillerResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__CreateBillerResponse **)soap_malloc(soap, sizeof(_interswitch__CreateBillerResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__CreateBillerResponse *)soap_instantiate__interswitch__CreateBillerResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__CreateBillerResponse ** p = (_interswitch__CreateBillerResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__CreateBillerResponse, sizeof(_interswitch__CreateBillerResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__CreateBillerResponse(struct soap *soap, _interswitch__CreateBillerResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__CreateBillerResponse); + if (soap_out_PointerTo_interswitch__CreateBillerResponse(soap, tag?tag:"interswitch:CreateBillerResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__CreateBillerResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__CreateBillerResponse(struct soap *soap, _interswitch__CreateBillerResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__CreateBillerResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__CreateBiller(struct soap *soap, _interswitch__CreateBiller *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__CreateBiller)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__CreateBiller(struct soap *soap, const char *tag, int id, _interswitch__CreateBiller *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__CreateBiller); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__CreateBiller ** SOAP_FMAC4 soap_in_PointerTo_interswitch__CreateBiller(struct soap *soap, const char *tag, _interswitch__CreateBiller **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__CreateBiller **)soap_malloc(soap, sizeof(_interswitch__CreateBiller *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__CreateBiller *)soap_instantiate__interswitch__CreateBiller(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__CreateBiller ** p = (_interswitch__CreateBiller **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__CreateBiller, sizeof(_interswitch__CreateBiller), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__CreateBiller(struct soap *soap, _interswitch__CreateBiller *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__CreateBiller); + if (soap_out_PointerTo_interswitch__CreateBiller(soap, tag?tag:"interswitch:CreateBiller", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__CreateBiller ** SOAP_FMAC4 soap_get_PointerTo_interswitch__CreateBiller(struct soap *soap, _interswitch__CreateBiller **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__CreateBiller(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__DoCustomProcessingResponse(struct soap *soap, _interswitch__DoCustomProcessingResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__DoCustomProcessingResponse(struct soap *soap, const char *tag, int id, _interswitch__DoCustomProcessingResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__DoCustomProcessingResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__DoCustomProcessingResponse(struct soap *soap, const char *tag, _interswitch__DoCustomProcessingResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__DoCustomProcessingResponse **)soap_malloc(soap, sizeof(_interswitch__DoCustomProcessingResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__DoCustomProcessingResponse *)soap_instantiate__interswitch__DoCustomProcessingResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__DoCustomProcessingResponse ** p = (_interswitch__DoCustomProcessingResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse, sizeof(_interswitch__DoCustomProcessingResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__DoCustomProcessingResponse(struct soap *soap, _interswitch__DoCustomProcessingResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__DoCustomProcessingResponse); + if (soap_out_PointerTo_interswitch__DoCustomProcessingResponse(soap, tag?tag:"interswitch:DoCustomProcessingResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__DoCustomProcessingResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__DoCustomProcessingResponse(struct soap *soap, _interswitch__DoCustomProcessingResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__DoCustomProcessingResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__DoCustomProcessing(struct soap *soap, _interswitch__DoCustomProcessing *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__DoCustomProcessing)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__DoCustomProcessing(struct soap *soap, const char *tag, int id, _interswitch__DoCustomProcessing *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__DoCustomProcessing); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__DoCustomProcessing ** SOAP_FMAC4 soap_in_PointerTo_interswitch__DoCustomProcessing(struct soap *soap, const char *tag, _interswitch__DoCustomProcessing **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__DoCustomProcessing **)soap_malloc(soap, sizeof(_interswitch__DoCustomProcessing *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__DoCustomProcessing *)soap_instantiate__interswitch__DoCustomProcessing(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__DoCustomProcessing ** p = (_interswitch__DoCustomProcessing **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__DoCustomProcessing, sizeof(_interswitch__DoCustomProcessing), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__DoCustomProcessing(struct soap *soap, _interswitch__DoCustomProcessing *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__DoCustomProcessing); + if (soap_out_PointerTo_interswitch__DoCustomProcessing(soap, tag?tag:"interswitch:DoCustomProcessing", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__DoCustomProcessing ** SOAP_FMAC4 soap_get_PointerTo_interswitch__DoCustomProcessing(struct soap *soap, _interswitch__DoCustomProcessing **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__DoCustomProcessing(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ResendActivationTokenResponse(struct soap *soap, _interswitch__ResendActivationTokenResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ResendActivationTokenResponse(struct soap *soap, const char *tag, int id, _interswitch__ResendActivationTokenResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__ResendActivationTokenResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ResendActivationTokenResponse(struct soap *soap, const char *tag, _interswitch__ResendActivationTokenResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__ResendActivationTokenResponse **)soap_malloc(soap, sizeof(_interswitch__ResendActivationTokenResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__ResendActivationTokenResponse *)soap_instantiate__interswitch__ResendActivationTokenResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__ResendActivationTokenResponse ** p = (_interswitch__ResendActivationTokenResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse, sizeof(_interswitch__ResendActivationTokenResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ResendActivationTokenResponse(struct soap *soap, _interswitch__ResendActivationTokenResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__ResendActivationTokenResponse); + if (soap_out_PointerTo_interswitch__ResendActivationTokenResponse(soap, tag?tag:"interswitch:ResendActivationTokenResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__ResendActivationTokenResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ResendActivationTokenResponse(struct soap *soap, _interswitch__ResendActivationTokenResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__ResendActivationTokenResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ResendActivationToken(struct soap *soap, _interswitch__ResendActivationToken *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__ResendActivationToken)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ResendActivationToken(struct soap *soap, const char *tag, int id, _interswitch__ResendActivationToken *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__ResendActivationToken); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__ResendActivationToken ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ResendActivationToken(struct soap *soap, const char *tag, _interswitch__ResendActivationToken **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__ResendActivationToken **)soap_malloc(soap, sizeof(_interswitch__ResendActivationToken *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__ResendActivationToken *)soap_instantiate__interswitch__ResendActivationToken(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__ResendActivationToken ** p = (_interswitch__ResendActivationToken **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__ResendActivationToken, sizeof(_interswitch__ResendActivationToken), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ResendActivationToken(struct soap *soap, _interswitch__ResendActivationToken *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__ResendActivationToken); + if (soap_out_PointerTo_interswitch__ResendActivationToken(soap, tag?tag:"interswitch:ResendActivationToken", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__ResendActivationToken ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ResendActivationToken(struct soap *soap, _interswitch__ResendActivationToken **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__ResendActivationToken(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__EditCustomerBillerAccountResponse(struct soap *soap, _interswitch__EditCustomerBillerAccountResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__EditCustomerBillerAccountResponse(struct soap *soap, const char *tag, int id, _interswitch__EditCustomerBillerAccountResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__EditCustomerBillerAccountResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__EditCustomerBillerAccountResponse(struct soap *soap, const char *tag, _interswitch__EditCustomerBillerAccountResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__EditCustomerBillerAccountResponse **)soap_malloc(soap, sizeof(_interswitch__EditCustomerBillerAccountResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__EditCustomerBillerAccountResponse *)soap_instantiate__interswitch__EditCustomerBillerAccountResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__EditCustomerBillerAccountResponse ** p = (_interswitch__EditCustomerBillerAccountResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse, sizeof(_interswitch__EditCustomerBillerAccountResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__EditCustomerBillerAccountResponse(struct soap *soap, _interswitch__EditCustomerBillerAccountResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__EditCustomerBillerAccountResponse); + if (soap_out_PointerTo_interswitch__EditCustomerBillerAccountResponse(soap, tag?tag:"interswitch:EditCustomerBillerAccountResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__EditCustomerBillerAccountResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__EditCustomerBillerAccountResponse(struct soap *soap, _interswitch__EditCustomerBillerAccountResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__EditCustomerBillerAccountResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__EditCustomerBillerAccount(struct soap *soap, _interswitch__EditCustomerBillerAccount *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__EditCustomerBillerAccount(struct soap *soap, const char *tag, int id, _interswitch__EditCustomerBillerAccount *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__EditCustomerBillerAccount ** SOAP_FMAC4 soap_in_PointerTo_interswitch__EditCustomerBillerAccount(struct soap *soap, const char *tag, _interswitch__EditCustomerBillerAccount **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__EditCustomerBillerAccount **)soap_malloc(soap, sizeof(_interswitch__EditCustomerBillerAccount *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__EditCustomerBillerAccount *)soap_instantiate__interswitch__EditCustomerBillerAccount(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__EditCustomerBillerAccount ** p = (_interswitch__EditCustomerBillerAccount **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount, sizeof(_interswitch__EditCustomerBillerAccount), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__EditCustomerBillerAccount(struct soap *soap, _interswitch__EditCustomerBillerAccount *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__EditCustomerBillerAccount); + if (soap_out_PointerTo_interswitch__EditCustomerBillerAccount(soap, tag?tag:"interswitch:EditCustomerBillerAccount", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__EditCustomerBillerAccount ** SOAP_FMAC4 soap_get_PointerTo_interswitch__EditCustomerBillerAccount(struct soap *soap, _interswitch__EditCustomerBillerAccount **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__EditCustomerBillerAccount(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetBillersCollectionsAccountResponse(struct soap *soap, _interswitch__GetBillersCollectionsAccountResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetBillersCollectionsAccountResponse(struct soap *soap, const char *tag, int id, _interswitch__GetBillersCollectionsAccountResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetBillersCollectionsAccountResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetBillersCollectionsAccountResponse(struct soap *soap, const char *tag, _interswitch__GetBillersCollectionsAccountResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetBillersCollectionsAccountResponse **)soap_malloc(soap, sizeof(_interswitch__GetBillersCollectionsAccountResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetBillersCollectionsAccountResponse *)soap_instantiate__interswitch__GetBillersCollectionsAccountResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetBillersCollectionsAccountResponse ** p = (_interswitch__GetBillersCollectionsAccountResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse, sizeof(_interswitch__GetBillersCollectionsAccountResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetBillersCollectionsAccountResponse(struct soap *soap, _interswitch__GetBillersCollectionsAccountResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillersCollectionsAccountResponse); + if (soap_out_PointerTo_interswitch__GetBillersCollectionsAccountResponse(soap, tag?tag:"interswitch:GetBillersCollectionsAccountResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetBillersCollectionsAccountResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetBillersCollectionsAccountResponse(struct soap *soap, _interswitch__GetBillersCollectionsAccountResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetBillersCollectionsAccountResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetBillersCollectionsAccount(struct soap *soap, _interswitch__GetBillersCollectionsAccount *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetBillersCollectionsAccount(struct soap *soap, const char *tag, int id, _interswitch__GetBillersCollectionsAccount *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetBillersCollectionsAccount ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetBillersCollectionsAccount(struct soap *soap, const char *tag, _interswitch__GetBillersCollectionsAccount **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetBillersCollectionsAccount **)soap_malloc(soap, sizeof(_interswitch__GetBillersCollectionsAccount *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetBillersCollectionsAccount *)soap_instantiate__interswitch__GetBillersCollectionsAccount(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetBillersCollectionsAccount ** p = (_interswitch__GetBillersCollectionsAccount **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount, sizeof(_interswitch__GetBillersCollectionsAccount), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetBillersCollectionsAccount(struct soap *soap, _interswitch__GetBillersCollectionsAccount *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillersCollectionsAccount); + if (soap_out_PointerTo_interswitch__GetBillersCollectionsAccount(soap, tag?tag:"interswitch:GetBillersCollectionsAccount", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetBillersCollectionsAccount ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetBillersCollectionsAccount(struct soap *soap, _interswitch__GetBillersCollectionsAccount **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetBillersCollectionsAccount(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetCollectionsAccountResponse(struct soap *soap, _interswitch__GetCollectionsAccountResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetCollectionsAccountResponse(struct soap *soap, const char *tag, int id, _interswitch__GetCollectionsAccountResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetCollectionsAccountResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetCollectionsAccountResponse(struct soap *soap, const char *tag, _interswitch__GetCollectionsAccountResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetCollectionsAccountResponse **)soap_malloc(soap, sizeof(_interswitch__GetCollectionsAccountResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetCollectionsAccountResponse *)soap_instantiate__interswitch__GetCollectionsAccountResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetCollectionsAccountResponse ** p = (_interswitch__GetCollectionsAccountResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse, sizeof(_interswitch__GetCollectionsAccountResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetCollectionsAccountResponse(struct soap *soap, _interswitch__GetCollectionsAccountResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetCollectionsAccountResponse); + if (soap_out_PointerTo_interswitch__GetCollectionsAccountResponse(soap, tag?tag:"interswitch:GetCollectionsAccountResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetCollectionsAccountResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetCollectionsAccountResponse(struct soap *soap, _interswitch__GetCollectionsAccountResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetCollectionsAccountResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetCollectionsAccount(struct soap *soap, _interswitch__GetCollectionsAccount *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetCollectionsAccount(struct soap *soap, const char *tag, int id, _interswitch__GetCollectionsAccount *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetCollectionsAccount ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetCollectionsAccount(struct soap *soap, const char *tag, _interswitch__GetCollectionsAccount **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetCollectionsAccount **)soap_malloc(soap, sizeof(_interswitch__GetCollectionsAccount *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetCollectionsAccount *)soap_instantiate__interswitch__GetCollectionsAccount(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetCollectionsAccount ** p = (_interswitch__GetCollectionsAccount **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount, sizeof(_interswitch__GetCollectionsAccount), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetCollectionsAccount(struct soap *soap, _interswitch__GetCollectionsAccount *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetCollectionsAccount); + if (soap_out_PointerTo_interswitch__GetCollectionsAccount(soap, tag?tag:"interswitch:GetCollectionsAccount", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetCollectionsAccount ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetCollectionsAccount(struct soap *soap, _interswitch__GetCollectionsAccount **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetCollectionsAccount(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AddBillerCustomerResponse(struct soap *soap, _interswitch__AddBillerCustomerResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AddBillerCustomerResponse(struct soap *soap, const char *tag, int id, _interswitch__AddBillerCustomerResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__AddBillerCustomerResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AddBillerCustomerResponse(struct soap *soap, const char *tag, _interswitch__AddBillerCustomerResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__AddBillerCustomerResponse **)soap_malloc(soap, sizeof(_interswitch__AddBillerCustomerResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__AddBillerCustomerResponse *)soap_instantiate__interswitch__AddBillerCustomerResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__AddBillerCustomerResponse ** p = (_interswitch__AddBillerCustomerResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse, sizeof(_interswitch__AddBillerCustomerResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AddBillerCustomerResponse(struct soap *soap, _interswitch__AddBillerCustomerResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__AddBillerCustomerResponse); + if (soap_out_PointerTo_interswitch__AddBillerCustomerResponse(soap, tag?tag:"interswitch:AddBillerCustomerResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__AddBillerCustomerResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AddBillerCustomerResponse(struct soap *soap, _interswitch__AddBillerCustomerResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__AddBillerCustomerResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AddBillerCustomer(struct soap *soap, _interswitch__AddBillerCustomer *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__AddBillerCustomer)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AddBillerCustomer(struct soap *soap, const char *tag, int id, _interswitch__AddBillerCustomer *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__AddBillerCustomer); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__AddBillerCustomer ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AddBillerCustomer(struct soap *soap, const char *tag, _interswitch__AddBillerCustomer **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__AddBillerCustomer **)soap_malloc(soap, sizeof(_interswitch__AddBillerCustomer *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__AddBillerCustomer *)soap_instantiate__interswitch__AddBillerCustomer(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__AddBillerCustomer ** p = (_interswitch__AddBillerCustomer **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__AddBillerCustomer, sizeof(_interswitch__AddBillerCustomer), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AddBillerCustomer(struct soap *soap, _interswitch__AddBillerCustomer *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__AddBillerCustomer); + if (soap_out_PointerTo_interswitch__AddBillerCustomer(soap, tag?tag:"interswitch:AddBillerCustomer", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__AddBillerCustomer ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AddBillerCustomer(struct soap *soap, _interswitch__AddBillerCustomer **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__AddBillerCustomer(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetCustomerPaymentsResponse(struct soap *soap, _interswitch__GetCustomerPaymentsResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetCustomerPaymentsResponse(struct soap *soap, const char *tag, int id, _interswitch__GetCustomerPaymentsResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetCustomerPaymentsResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetCustomerPaymentsResponse(struct soap *soap, const char *tag, _interswitch__GetCustomerPaymentsResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetCustomerPaymentsResponse **)soap_malloc(soap, sizeof(_interswitch__GetCustomerPaymentsResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetCustomerPaymentsResponse *)soap_instantiate__interswitch__GetCustomerPaymentsResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetCustomerPaymentsResponse ** p = (_interswitch__GetCustomerPaymentsResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse, sizeof(_interswitch__GetCustomerPaymentsResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetCustomerPaymentsResponse(struct soap *soap, _interswitch__GetCustomerPaymentsResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerPaymentsResponse); + if (soap_out_PointerTo_interswitch__GetCustomerPaymentsResponse(soap, tag?tag:"interswitch:GetCustomerPaymentsResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetCustomerPaymentsResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetCustomerPaymentsResponse(struct soap *soap, _interswitch__GetCustomerPaymentsResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetCustomerPaymentsResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetCustomerPayments(struct soap *soap, _interswitch__GetCustomerPayments *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetCustomerPayments)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetCustomerPayments(struct soap *soap, const char *tag, int id, _interswitch__GetCustomerPayments *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetCustomerPayments); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetCustomerPayments ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetCustomerPayments(struct soap *soap, const char *tag, _interswitch__GetCustomerPayments **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetCustomerPayments **)soap_malloc(soap, sizeof(_interswitch__GetCustomerPayments *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetCustomerPayments *)soap_instantiate__interswitch__GetCustomerPayments(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetCustomerPayments ** p = (_interswitch__GetCustomerPayments **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetCustomerPayments, sizeof(_interswitch__GetCustomerPayments), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetCustomerPayments(struct soap *soap, _interswitch__GetCustomerPayments *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerPayments); + if (soap_out_PointerTo_interswitch__GetCustomerPayments(soap, tag?tag:"interswitch:GetCustomerPayments", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetCustomerPayments ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetCustomerPayments(struct soap *soap, _interswitch__GetCustomerPayments **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetCustomerPayments(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetCustomerBillerAccountsResponse(struct soap *soap, _interswitch__GetCustomerBillerAccountsResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetCustomerBillerAccountsResponse(struct soap *soap, const char *tag, int id, _interswitch__GetCustomerBillerAccountsResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetCustomerBillerAccountsResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetCustomerBillerAccountsResponse(struct soap *soap, const char *tag, _interswitch__GetCustomerBillerAccountsResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetCustomerBillerAccountsResponse **)soap_malloc(soap, sizeof(_interswitch__GetCustomerBillerAccountsResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetCustomerBillerAccountsResponse *)soap_instantiate__interswitch__GetCustomerBillerAccountsResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetCustomerBillerAccountsResponse ** p = (_interswitch__GetCustomerBillerAccountsResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse, sizeof(_interswitch__GetCustomerBillerAccountsResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetCustomerBillerAccountsResponse(struct soap *soap, _interswitch__GetCustomerBillerAccountsResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerBillerAccountsResponse); + if (soap_out_PointerTo_interswitch__GetCustomerBillerAccountsResponse(soap, tag?tag:"interswitch:GetCustomerBillerAccountsResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetCustomerBillerAccountsResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetCustomerBillerAccountsResponse(struct soap *soap, _interswitch__GetCustomerBillerAccountsResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetCustomerBillerAccountsResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetCustomerBillerAccounts(struct soap *soap, _interswitch__GetCustomerBillerAccounts *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetCustomerBillerAccounts(struct soap *soap, const char *tag, int id, _interswitch__GetCustomerBillerAccounts *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetCustomerBillerAccounts ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetCustomerBillerAccounts(struct soap *soap, const char *tag, _interswitch__GetCustomerBillerAccounts **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetCustomerBillerAccounts **)soap_malloc(soap, sizeof(_interswitch__GetCustomerBillerAccounts *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetCustomerBillerAccounts *)soap_instantiate__interswitch__GetCustomerBillerAccounts(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetCustomerBillerAccounts ** p = (_interswitch__GetCustomerBillerAccounts **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts, sizeof(_interswitch__GetCustomerBillerAccounts), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetCustomerBillerAccounts(struct soap *soap, _interswitch__GetCustomerBillerAccounts *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerBillerAccounts); + if (soap_out_PointerTo_interswitch__GetCustomerBillerAccounts(soap, tag?tag:"interswitch:GetCustomerBillerAccounts", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetCustomerBillerAccounts ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetCustomerBillerAccounts(struct soap *soap, _interswitch__GetCustomerBillerAccounts **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetCustomerBillerAccounts(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AddCustomerBillerAccountResponse(struct soap *soap, _interswitch__AddCustomerBillerAccountResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AddCustomerBillerAccountResponse(struct soap *soap, const char *tag, int id, _interswitch__AddCustomerBillerAccountResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__AddCustomerBillerAccountResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AddCustomerBillerAccountResponse(struct soap *soap, const char *tag, _interswitch__AddCustomerBillerAccountResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__AddCustomerBillerAccountResponse **)soap_malloc(soap, sizeof(_interswitch__AddCustomerBillerAccountResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__AddCustomerBillerAccountResponse *)soap_instantiate__interswitch__AddCustomerBillerAccountResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__AddCustomerBillerAccountResponse ** p = (_interswitch__AddCustomerBillerAccountResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse, sizeof(_interswitch__AddCustomerBillerAccountResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AddCustomerBillerAccountResponse(struct soap *soap, _interswitch__AddCustomerBillerAccountResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__AddCustomerBillerAccountResponse); + if (soap_out_PointerTo_interswitch__AddCustomerBillerAccountResponse(soap, tag?tag:"interswitch:AddCustomerBillerAccountResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__AddCustomerBillerAccountResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AddCustomerBillerAccountResponse(struct soap *soap, _interswitch__AddCustomerBillerAccountResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__AddCustomerBillerAccountResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AddCustomerBillerAccount(struct soap *soap, _interswitch__AddCustomerBillerAccount *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AddCustomerBillerAccount(struct soap *soap, const char *tag, int id, _interswitch__AddCustomerBillerAccount *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__AddCustomerBillerAccount ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AddCustomerBillerAccount(struct soap *soap, const char *tag, _interswitch__AddCustomerBillerAccount **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__AddCustomerBillerAccount **)soap_malloc(soap, sizeof(_interswitch__AddCustomerBillerAccount *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__AddCustomerBillerAccount *)soap_instantiate__interswitch__AddCustomerBillerAccount(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__AddCustomerBillerAccount ** p = (_interswitch__AddCustomerBillerAccount **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount, sizeof(_interswitch__AddCustomerBillerAccount), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AddCustomerBillerAccount(struct soap *soap, _interswitch__AddCustomerBillerAccount *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__AddCustomerBillerAccount); + if (soap_out_PointerTo_interswitch__AddCustomerBillerAccount(soap, tag?tag:"interswitch:AddCustomerBillerAccount", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__AddCustomerBillerAccount ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AddCustomerBillerAccount(struct soap *soap, _interswitch__AddCustomerBillerAccount **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__AddCustomerBillerAccount(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__SendPaymentsResponse(struct soap *soap, _interswitch__SendPaymentsResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__SendPaymentsResponse(struct soap *soap, const char *tag, int id, _interswitch__SendPaymentsResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__SendPaymentsResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__SendPaymentsResponse(struct soap *soap, const char *tag, _interswitch__SendPaymentsResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__SendPaymentsResponse **)soap_malloc(soap, sizeof(_interswitch__SendPaymentsResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__SendPaymentsResponse *)soap_instantiate__interswitch__SendPaymentsResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__SendPaymentsResponse ** p = (_interswitch__SendPaymentsResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse, sizeof(_interswitch__SendPaymentsResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__SendPaymentsResponse(struct soap *soap, _interswitch__SendPaymentsResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__SendPaymentsResponse); + if (soap_out_PointerTo_interswitch__SendPaymentsResponse(soap, tag?tag:"interswitch:SendPaymentsResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__SendPaymentsResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__SendPaymentsResponse(struct soap *soap, _interswitch__SendPaymentsResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__SendPaymentsResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__SendPayments(struct soap *soap, _interswitch__SendPayments *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__SendPayments)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__SendPayments(struct soap *soap, const char *tag, int id, _interswitch__SendPayments *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__SendPayments); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__SendPayments ** SOAP_FMAC4 soap_in_PointerTo_interswitch__SendPayments(struct soap *soap, const char *tag, _interswitch__SendPayments **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__SendPayments **)soap_malloc(soap, sizeof(_interswitch__SendPayments *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__SendPayments *)soap_instantiate__interswitch__SendPayments(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__SendPayments ** p = (_interswitch__SendPayments **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__SendPayments, sizeof(_interswitch__SendPayments), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__SendPayments(struct soap *soap, _interswitch__SendPayments *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__SendPayments); + if (soap_out_PointerTo_interswitch__SendPayments(soap, tag?tag:"interswitch:SendPayments", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__SendPayments ** SOAP_FMAC4 soap_get_PointerTo_interswitch__SendPayments(struct soap *soap, _interswitch__SendPayments **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__SendPayments(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__SendBillPaymentAdviceResponse(struct soap *soap, _interswitch__SendBillPaymentAdviceResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__SendBillPaymentAdviceResponse(struct soap *soap, const char *tag, int id, _interswitch__SendBillPaymentAdviceResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__SendBillPaymentAdviceResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__SendBillPaymentAdviceResponse(struct soap *soap, const char *tag, _interswitch__SendBillPaymentAdviceResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__SendBillPaymentAdviceResponse **)soap_malloc(soap, sizeof(_interswitch__SendBillPaymentAdviceResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__SendBillPaymentAdviceResponse *)soap_instantiate__interswitch__SendBillPaymentAdviceResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__SendBillPaymentAdviceResponse ** p = (_interswitch__SendBillPaymentAdviceResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse, sizeof(_interswitch__SendBillPaymentAdviceResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__SendBillPaymentAdviceResponse(struct soap *soap, _interswitch__SendBillPaymentAdviceResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__SendBillPaymentAdviceResponse); + if (soap_out_PointerTo_interswitch__SendBillPaymentAdviceResponse(soap, tag?tag:"interswitch:SendBillPaymentAdviceResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__SendBillPaymentAdviceResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__SendBillPaymentAdviceResponse(struct soap *soap, _interswitch__SendBillPaymentAdviceResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__SendBillPaymentAdviceResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__SendBillPaymentAdvice(struct soap *soap, _interswitch__SendBillPaymentAdvice *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__SendBillPaymentAdvice(struct soap *soap, const char *tag, int id, _interswitch__SendBillPaymentAdvice *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__SendBillPaymentAdvice ** SOAP_FMAC4 soap_in_PointerTo_interswitch__SendBillPaymentAdvice(struct soap *soap, const char *tag, _interswitch__SendBillPaymentAdvice **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__SendBillPaymentAdvice **)soap_malloc(soap, sizeof(_interswitch__SendBillPaymentAdvice *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__SendBillPaymentAdvice *)soap_instantiate__interswitch__SendBillPaymentAdvice(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__SendBillPaymentAdvice ** p = (_interswitch__SendBillPaymentAdvice **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice, sizeof(_interswitch__SendBillPaymentAdvice), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__SendBillPaymentAdvice(struct soap *soap, _interswitch__SendBillPaymentAdvice *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__SendBillPaymentAdvice); + if (soap_out_PointerTo_interswitch__SendBillPaymentAdvice(soap, tag?tag:"interswitch:SendBillPaymentAdvice", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__SendBillPaymentAdvice ** SOAP_FMAC4 soap_get_PointerTo_interswitch__SendBillPaymentAdvice(struct soap *soap, _interswitch__SendBillPaymentAdvice **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__SendBillPaymentAdvice(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthenticateCustomerResponse(struct soap *soap, _interswitch__AuthenticateCustomerResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthenticateCustomerResponse(struct soap *soap, const char *tag, int id, _interswitch__AuthenticateCustomerResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__AuthenticateCustomerResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthenticateCustomerResponse(struct soap *soap, const char *tag, _interswitch__AuthenticateCustomerResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__AuthenticateCustomerResponse **)soap_malloc(soap, sizeof(_interswitch__AuthenticateCustomerResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__AuthenticateCustomerResponse *)soap_instantiate__interswitch__AuthenticateCustomerResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__AuthenticateCustomerResponse ** p = (_interswitch__AuthenticateCustomerResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse, sizeof(_interswitch__AuthenticateCustomerResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthenticateCustomerResponse(struct soap *soap, _interswitch__AuthenticateCustomerResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateCustomerResponse); + if (soap_out_PointerTo_interswitch__AuthenticateCustomerResponse(soap, tag?tag:"interswitch:AuthenticateCustomerResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__AuthenticateCustomerResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthenticateCustomerResponse(struct soap *soap, _interswitch__AuthenticateCustomerResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__AuthenticateCustomerResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthenticateCustomer(struct soap *soap, _interswitch__AuthenticateCustomer *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthenticateCustomer(struct soap *soap, const char *tag, int id, _interswitch__AuthenticateCustomer *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__AuthenticateCustomer ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthenticateCustomer(struct soap *soap, const char *tag, _interswitch__AuthenticateCustomer **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__AuthenticateCustomer **)soap_malloc(soap, sizeof(_interswitch__AuthenticateCustomer *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__AuthenticateCustomer *)soap_instantiate__interswitch__AuthenticateCustomer(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__AuthenticateCustomer ** p = (_interswitch__AuthenticateCustomer **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer, sizeof(_interswitch__AuthenticateCustomer), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthenticateCustomer(struct soap *soap, _interswitch__AuthenticateCustomer *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateCustomer); + if (soap_out_PointerTo_interswitch__AuthenticateCustomer(soap, tag?tag:"interswitch:AuthenticateCustomer", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__AuthenticateCustomer ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthenticateCustomer(struct soap *soap, _interswitch__AuthenticateCustomer **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__AuthenticateCustomer(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__DoBillPaymentInquiryResponse(struct soap *soap, _interswitch__DoBillPaymentInquiryResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__DoBillPaymentInquiryResponse(struct soap *soap, const char *tag, int id, _interswitch__DoBillPaymentInquiryResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__DoBillPaymentInquiryResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__DoBillPaymentInquiryResponse(struct soap *soap, const char *tag, _interswitch__DoBillPaymentInquiryResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__DoBillPaymentInquiryResponse **)soap_malloc(soap, sizeof(_interswitch__DoBillPaymentInquiryResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__DoBillPaymentInquiryResponse *)soap_instantiate__interswitch__DoBillPaymentInquiryResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__DoBillPaymentInquiryResponse ** p = (_interswitch__DoBillPaymentInquiryResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse, sizeof(_interswitch__DoBillPaymentInquiryResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__DoBillPaymentInquiryResponse(struct soap *soap, _interswitch__DoBillPaymentInquiryResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__DoBillPaymentInquiryResponse); + if (soap_out_PointerTo_interswitch__DoBillPaymentInquiryResponse(soap, tag?tag:"interswitch:DoBillPaymentInquiryResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__DoBillPaymentInquiryResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__DoBillPaymentInquiryResponse(struct soap *soap, _interswitch__DoBillPaymentInquiryResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__DoBillPaymentInquiryResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__DoBillPaymentInquiry(struct soap *soap, _interswitch__DoBillPaymentInquiry *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__DoBillPaymentInquiry(struct soap *soap, const char *tag, int id, _interswitch__DoBillPaymentInquiry *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__DoBillPaymentInquiry ** SOAP_FMAC4 soap_in_PointerTo_interswitch__DoBillPaymentInquiry(struct soap *soap, const char *tag, _interswitch__DoBillPaymentInquiry **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__DoBillPaymentInquiry **)soap_malloc(soap, sizeof(_interswitch__DoBillPaymentInquiry *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__DoBillPaymentInquiry *)soap_instantiate__interswitch__DoBillPaymentInquiry(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__DoBillPaymentInquiry ** p = (_interswitch__DoBillPaymentInquiry **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry, sizeof(_interswitch__DoBillPaymentInquiry), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__DoBillPaymentInquiry(struct soap *soap, _interswitch__DoBillPaymentInquiry *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__DoBillPaymentInquiry); + if (soap_out_PointerTo_interswitch__DoBillPaymentInquiry(soap, tag?tag:"interswitch:DoBillPaymentInquiry", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__DoBillPaymentInquiry ** SOAP_FMAC4 soap_get_PointerTo_interswitch__DoBillPaymentInquiry(struct soap *soap, _interswitch__DoBillPaymentInquiry **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__DoBillPaymentInquiry(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetBillerCategoriesResponse(struct soap *soap, _interswitch__GetBillerCategoriesResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetBillerCategoriesResponse(struct soap *soap, const char *tag, int id, _interswitch__GetBillerCategoriesResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetBillerCategoriesResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetBillerCategoriesResponse(struct soap *soap, const char *tag, _interswitch__GetBillerCategoriesResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetBillerCategoriesResponse **)soap_malloc(soap, sizeof(_interswitch__GetBillerCategoriesResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetBillerCategoriesResponse *)soap_instantiate__interswitch__GetBillerCategoriesResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetBillerCategoriesResponse ** p = (_interswitch__GetBillerCategoriesResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse, sizeof(_interswitch__GetBillerCategoriesResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetBillerCategoriesResponse(struct soap *soap, _interswitch__GetBillerCategoriesResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerCategoriesResponse); + if (soap_out_PointerTo_interswitch__GetBillerCategoriesResponse(soap, tag?tag:"interswitch:GetBillerCategoriesResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetBillerCategoriesResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetBillerCategoriesResponse(struct soap *soap, _interswitch__GetBillerCategoriesResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetBillerCategoriesResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetBillerCategories(struct soap *soap, _interswitch__GetBillerCategories *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetBillerCategories)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetBillerCategories(struct soap *soap, const char *tag, int id, _interswitch__GetBillerCategories *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetBillerCategories); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetBillerCategories ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetBillerCategories(struct soap *soap, const char *tag, _interswitch__GetBillerCategories **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetBillerCategories **)soap_malloc(soap, sizeof(_interswitch__GetBillerCategories *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetBillerCategories *)soap_instantiate__interswitch__GetBillerCategories(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetBillerCategories ** p = (_interswitch__GetBillerCategories **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetBillerCategories, sizeof(_interswitch__GetBillerCategories), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetBillerCategories(struct soap *soap, _interswitch__GetBillerCategories *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerCategories); + if (soap_out_PointerTo_interswitch__GetBillerCategories(soap, tag?tag:"interswitch:GetBillerCategories", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetBillerCategories ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetBillerCategories(struct soap *soap, _interswitch__GetBillerCategories **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetBillerCategories(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetBillerPaymentItemsResponse(struct soap *soap, _interswitch__GetBillerPaymentItemsResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetBillerPaymentItemsResponse(struct soap *soap, const char *tag, int id, _interswitch__GetBillerPaymentItemsResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetBillerPaymentItemsResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetBillerPaymentItemsResponse(struct soap *soap, const char *tag, _interswitch__GetBillerPaymentItemsResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetBillerPaymentItemsResponse **)soap_malloc(soap, sizeof(_interswitch__GetBillerPaymentItemsResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetBillerPaymentItemsResponse *)soap_instantiate__interswitch__GetBillerPaymentItemsResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetBillerPaymentItemsResponse ** p = (_interswitch__GetBillerPaymentItemsResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse, sizeof(_interswitch__GetBillerPaymentItemsResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetBillerPaymentItemsResponse(struct soap *soap, _interswitch__GetBillerPaymentItemsResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerPaymentItemsResponse); + if (soap_out_PointerTo_interswitch__GetBillerPaymentItemsResponse(soap, tag?tag:"interswitch:GetBillerPaymentItemsResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetBillerPaymentItemsResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetBillerPaymentItemsResponse(struct soap *soap, _interswitch__GetBillerPaymentItemsResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetBillerPaymentItemsResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetBillerPaymentItems(struct soap *soap, _interswitch__GetBillerPaymentItems *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetBillerPaymentItems(struct soap *soap, const char *tag, int id, _interswitch__GetBillerPaymentItems *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetBillerPaymentItems ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetBillerPaymentItems(struct soap *soap, const char *tag, _interswitch__GetBillerPaymentItems **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetBillerPaymentItems **)soap_malloc(soap, sizeof(_interswitch__GetBillerPaymentItems *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetBillerPaymentItems *)soap_instantiate__interswitch__GetBillerPaymentItems(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetBillerPaymentItems ** p = (_interswitch__GetBillerPaymentItems **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems, sizeof(_interswitch__GetBillerPaymentItems), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetBillerPaymentItems(struct soap *soap, _interswitch__GetBillerPaymentItems *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerPaymentItems); + if (soap_out_PointerTo_interswitch__GetBillerPaymentItems(soap, tag?tag:"interswitch:GetBillerPaymentItems", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetBillerPaymentItems ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetBillerPaymentItems(struct soap *soap, _interswitch__GetBillerPaymentItems **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetBillerPaymentItems(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetFeaturedBillersResponse(struct soap *soap, _interswitch__GetFeaturedBillersResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetFeaturedBillersResponse(struct soap *soap, const char *tag, int id, _interswitch__GetFeaturedBillersResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetFeaturedBillersResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetFeaturedBillersResponse(struct soap *soap, const char *tag, _interswitch__GetFeaturedBillersResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetFeaturedBillersResponse **)soap_malloc(soap, sizeof(_interswitch__GetFeaturedBillersResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetFeaturedBillersResponse *)soap_instantiate__interswitch__GetFeaturedBillersResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetFeaturedBillersResponse ** p = (_interswitch__GetFeaturedBillersResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse, sizeof(_interswitch__GetFeaturedBillersResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetFeaturedBillersResponse(struct soap *soap, _interswitch__GetFeaturedBillersResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetFeaturedBillersResponse); + if (soap_out_PointerTo_interswitch__GetFeaturedBillersResponse(soap, tag?tag:"interswitch:GetFeaturedBillersResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetFeaturedBillersResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetFeaturedBillersResponse(struct soap *soap, _interswitch__GetFeaturedBillersResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetFeaturedBillersResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetFeaturedBillers(struct soap *soap, _interswitch__GetFeaturedBillers *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetFeaturedBillers(struct soap *soap, const char *tag, int id, _interswitch__GetFeaturedBillers *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetFeaturedBillers ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetFeaturedBillers(struct soap *soap, const char *tag, _interswitch__GetFeaturedBillers **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetFeaturedBillers **)soap_malloc(soap, sizeof(_interswitch__GetFeaturedBillers *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetFeaturedBillers *)soap_instantiate__interswitch__GetFeaturedBillers(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetFeaturedBillers ** p = (_interswitch__GetFeaturedBillers **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers, sizeof(_interswitch__GetFeaturedBillers), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetFeaturedBillers(struct soap *soap, _interswitch__GetFeaturedBillers *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetFeaturedBillers); + if (soap_out_PointerTo_interswitch__GetFeaturedBillers(soap, tag?tag:"interswitch:GetFeaturedBillers", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetFeaturedBillers ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetFeaturedBillers(struct soap *soap, _interswitch__GetFeaturedBillers **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetFeaturedBillers(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetLatestBillersResponse(struct soap *soap, _interswitch__GetLatestBillersResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetLatestBillersResponse(struct soap *soap, const char *tag, int id, _interswitch__GetLatestBillersResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetLatestBillersResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetLatestBillersResponse(struct soap *soap, const char *tag, _interswitch__GetLatestBillersResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetLatestBillersResponse **)soap_malloc(soap, sizeof(_interswitch__GetLatestBillersResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetLatestBillersResponse *)soap_instantiate__interswitch__GetLatestBillersResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetLatestBillersResponse ** p = (_interswitch__GetLatestBillersResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse, sizeof(_interswitch__GetLatestBillersResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetLatestBillersResponse(struct soap *soap, _interswitch__GetLatestBillersResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetLatestBillersResponse); + if (soap_out_PointerTo_interswitch__GetLatestBillersResponse(soap, tag?tag:"interswitch:GetLatestBillersResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetLatestBillersResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetLatestBillersResponse(struct soap *soap, _interswitch__GetLatestBillersResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetLatestBillersResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetLatestBillers(struct soap *soap, _interswitch__GetLatestBillers *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetLatestBillers)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetLatestBillers(struct soap *soap, const char *tag, int id, _interswitch__GetLatestBillers *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetLatestBillers); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetLatestBillers ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetLatestBillers(struct soap *soap, const char *tag, _interswitch__GetLatestBillers **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetLatestBillers **)soap_malloc(soap, sizeof(_interswitch__GetLatestBillers *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetLatestBillers *)soap_instantiate__interswitch__GetLatestBillers(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetLatestBillers ** p = (_interswitch__GetLatestBillers **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetLatestBillers, sizeof(_interswitch__GetLatestBillers), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetLatestBillers(struct soap *soap, _interswitch__GetLatestBillers *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetLatestBillers); + if (soap_out_PointerTo_interswitch__GetLatestBillers(soap, tag?tag:"interswitch:GetLatestBillers", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetLatestBillers ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetLatestBillers(struct soap *soap, _interswitch__GetLatestBillers **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetLatestBillers(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetBillersResponse(struct soap *soap, _interswitch__GetBillersResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetBillersResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetBillersResponse(struct soap *soap, const char *tag, int id, _interswitch__GetBillersResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetBillersResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetBillersResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetBillersResponse(struct soap *soap, const char *tag, _interswitch__GetBillersResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetBillersResponse **)soap_malloc(soap, sizeof(_interswitch__GetBillersResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetBillersResponse *)soap_instantiate__interswitch__GetBillersResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetBillersResponse ** p = (_interswitch__GetBillersResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetBillersResponse, sizeof(_interswitch__GetBillersResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetBillersResponse(struct soap *soap, _interswitch__GetBillersResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillersResponse); + if (soap_out_PointerTo_interswitch__GetBillersResponse(soap, tag?tag:"interswitch:GetBillersResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetBillersResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetBillersResponse(struct soap *soap, _interswitch__GetBillersResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetBillersResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetBillers(struct soap *soap, _interswitch__GetBillers *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetBillers)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetBillers(struct soap *soap, const char *tag, int id, _interswitch__GetBillers *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetBillers); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetBillers ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetBillers(struct soap *soap, const char *tag, _interswitch__GetBillers **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetBillers **)soap_malloc(soap, sizeof(_interswitch__GetBillers *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetBillers *)soap_instantiate__interswitch__GetBillers(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetBillers ** p = (_interswitch__GetBillers **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetBillers, sizeof(_interswitch__GetBillers), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetBillers(struct soap *soap, _interswitch__GetBillers *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillers); + if (soap_out_PointerTo_interswitch__GetBillers(soap, tag?tag:"interswitch:GetBillers", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetBillers ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetBillers(struct soap *soap, _interswitch__GetBillers **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetBillers(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetUserResponse(struct soap *soap, _interswitch__GetUserResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetUserResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetUserResponse(struct soap *soap, const char *tag, int id, _interswitch__GetUserResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetUserResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetUserResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetUserResponse(struct soap *soap, const char *tag, _interswitch__GetUserResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetUserResponse **)soap_malloc(soap, sizeof(_interswitch__GetUserResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetUserResponse *)soap_instantiate__interswitch__GetUserResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetUserResponse ** p = (_interswitch__GetUserResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetUserResponse, sizeof(_interswitch__GetUserResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetUserResponse(struct soap *soap, _interswitch__GetUserResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetUserResponse); + if (soap_out_PointerTo_interswitch__GetUserResponse(soap, tag?tag:"interswitch:GetUserResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetUserResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetUserResponse(struct soap *soap, _interswitch__GetUserResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetUserResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetUser(struct soap *soap, _interswitch__GetUser *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetUser)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetUser(struct soap *soap, const char *tag, int id, _interswitch__GetUser *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetUser); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetUser ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetUser(struct soap *soap, const char *tag, _interswitch__GetUser **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetUser **)soap_malloc(soap, sizeof(_interswitch__GetUser *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetUser *)soap_instantiate__interswitch__GetUser(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetUser ** p = (_interswitch__GetUser **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetUser, sizeof(_interswitch__GetUser), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetUser(struct soap *soap, _interswitch__GetUser *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetUser); + if (soap_out_PointerTo_interswitch__GetUser(soap, tag?tag:"interswitch:GetUser", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetUser ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetUser(struct soap *soap, _interswitch__GetUser **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetUser(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(struct soap *soap, _interswitch__AuthenticateUserSecurityTokenResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(struct soap *soap, const char *tag, int id, _interswitch__AuthenticateUserSecurityTokenResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__AuthenticateUserSecurityTokenResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(struct soap *soap, const char *tag, _interswitch__AuthenticateUserSecurityTokenResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__AuthenticateUserSecurityTokenResponse **)soap_malloc(soap, sizeof(_interswitch__AuthenticateUserSecurityTokenResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__AuthenticateUserSecurityTokenResponse *)soap_instantiate__interswitch__AuthenticateUserSecurityTokenResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__AuthenticateUserSecurityTokenResponse ** p = (_interswitch__AuthenticateUserSecurityTokenResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse, sizeof(_interswitch__AuthenticateUserSecurityTokenResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(struct soap *soap, _interswitch__AuthenticateUserSecurityTokenResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse); + if (soap_out_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(soap, tag?tag:"interswitch:AuthenticateUserSecurityTokenResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__AuthenticateUserSecurityTokenResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(struct soap *soap, _interswitch__AuthenticateUserSecurityTokenResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthenticateUserSecurityToken(struct soap *soap, _interswitch__AuthenticateUserSecurityToken *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthenticateUserSecurityToken(struct soap *soap, const char *tag, int id, _interswitch__AuthenticateUserSecurityToken *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__AuthenticateUserSecurityToken ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthenticateUserSecurityToken(struct soap *soap, const char *tag, _interswitch__AuthenticateUserSecurityToken **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__AuthenticateUserSecurityToken **)soap_malloc(soap, sizeof(_interswitch__AuthenticateUserSecurityToken *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__AuthenticateUserSecurityToken *)soap_instantiate__interswitch__AuthenticateUserSecurityToken(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__AuthenticateUserSecurityToken ** p = (_interswitch__AuthenticateUserSecurityToken **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken, sizeof(_interswitch__AuthenticateUserSecurityToken), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthenticateUserSecurityToken(struct soap *soap, _interswitch__AuthenticateUserSecurityToken *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUserSecurityToken); + if (soap_out_PointerTo_interswitch__AuthenticateUserSecurityToken(soap, tag?tag:"interswitch:AuthenticateUserSecurityToken", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__AuthenticateUserSecurityToken ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthenticateUserSecurityToken(struct soap *soap, _interswitch__AuthenticateUserSecurityToken **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__AuthenticateUserSecurityToken(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthenticateUserResponse(struct soap *soap, _interswitch__AuthenticateUserResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthenticateUserResponse(struct soap *soap, const char *tag, int id, _interswitch__AuthenticateUserResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__AuthenticateUserResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthenticateUserResponse(struct soap *soap, const char *tag, _interswitch__AuthenticateUserResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__AuthenticateUserResponse **)soap_malloc(soap, sizeof(_interswitch__AuthenticateUserResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__AuthenticateUserResponse *)soap_instantiate__interswitch__AuthenticateUserResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__AuthenticateUserResponse ** p = (_interswitch__AuthenticateUserResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse, sizeof(_interswitch__AuthenticateUserResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthenticateUserResponse(struct soap *soap, _interswitch__AuthenticateUserResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUserResponse); + if (soap_out_PointerTo_interswitch__AuthenticateUserResponse(soap, tag?tag:"interswitch:AuthenticateUserResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__AuthenticateUserResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthenticateUserResponse(struct soap *soap, _interswitch__AuthenticateUserResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__AuthenticateUserResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthenticateUser(struct soap *soap, _interswitch__AuthenticateUser *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__AuthenticateUser)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthenticateUser(struct soap *soap, const char *tag, int id, _interswitch__AuthenticateUser *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__AuthenticateUser); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__AuthenticateUser ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthenticateUser(struct soap *soap, const char *tag, _interswitch__AuthenticateUser **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__AuthenticateUser **)soap_malloc(soap, sizeof(_interswitch__AuthenticateUser *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__AuthenticateUser *)soap_instantiate__interswitch__AuthenticateUser(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__AuthenticateUser ** p = (_interswitch__AuthenticateUser **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__AuthenticateUser, sizeof(_interswitch__AuthenticateUser), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthenticateUser(struct soap *soap, _interswitch__AuthenticateUser *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUser); + if (soap_out_PointerTo_interswitch__AuthenticateUser(soap, tag?tag:"interswitch:AuthenticateUser", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__AuthenticateUser ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthenticateUser(struct soap *soap, _interswitch__AuthenticateUser **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__AuthenticateUser(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ResetPasswordResponse(struct soap *soap, _interswitch__ResetPasswordResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ResetPasswordResponse(struct soap *soap, const char *tag, int id, _interswitch__ResetPasswordResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__ResetPasswordResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ResetPasswordResponse(struct soap *soap, const char *tag, _interswitch__ResetPasswordResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__ResetPasswordResponse **)soap_malloc(soap, sizeof(_interswitch__ResetPasswordResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__ResetPasswordResponse *)soap_instantiate__interswitch__ResetPasswordResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__ResetPasswordResponse ** p = (_interswitch__ResetPasswordResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse, sizeof(_interswitch__ResetPasswordResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ResetPasswordResponse(struct soap *soap, _interswitch__ResetPasswordResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__ResetPasswordResponse); + if (soap_out_PointerTo_interswitch__ResetPasswordResponse(soap, tag?tag:"interswitch:ResetPasswordResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__ResetPasswordResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ResetPasswordResponse(struct soap *soap, _interswitch__ResetPasswordResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__ResetPasswordResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ResetPassword(struct soap *soap, _interswitch__ResetPassword *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__ResetPassword)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ResetPassword(struct soap *soap, const char *tag, int id, _interswitch__ResetPassword *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__ResetPassword); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__ResetPassword ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ResetPassword(struct soap *soap, const char *tag, _interswitch__ResetPassword **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__ResetPassword **)soap_malloc(soap, sizeof(_interswitch__ResetPassword *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__ResetPassword *)soap_instantiate__interswitch__ResetPassword(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__ResetPassword ** p = (_interswitch__ResetPassword **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__ResetPassword, sizeof(_interswitch__ResetPassword), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ResetPassword(struct soap *soap, _interswitch__ResetPassword *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__ResetPassword); + if (soap_out_PointerTo_interswitch__ResetPassword(soap, tag?tag:"interswitch:ResetPassword", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__ResetPassword ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ResetPassword(struct soap *soap, _interswitch__ResetPassword **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__ResetPassword(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ChangePasswordResponse(struct soap *soap, _interswitch__ChangePasswordResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ChangePasswordResponse(struct soap *soap, const char *tag, int id, _interswitch__ChangePasswordResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__ChangePasswordResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ChangePasswordResponse(struct soap *soap, const char *tag, _interswitch__ChangePasswordResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__ChangePasswordResponse **)soap_malloc(soap, sizeof(_interswitch__ChangePasswordResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__ChangePasswordResponse *)soap_instantiate__interswitch__ChangePasswordResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__ChangePasswordResponse ** p = (_interswitch__ChangePasswordResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse, sizeof(_interswitch__ChangePasswordResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ChangePasswordResponse(struct soap *soap, _interswitch__ChangePasswordResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__ChangePasswordResponse); + if (soap_out_PointerTo_interswitch__ChangePasswordResponse(soap, tag?tag:"interswitch:ChangePasswordResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__ChangePasswordResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ChangePasswordResponse(struct soap *soap, _interswitch__ChangePasswordResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__ChangePasswordResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ChangePassword(struct soap *soap, _interswitch__ChangePassword *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__ChangePassword)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ChangePassword(struct soap *soap, const char *tag, int id, _interswitch__ChangePassword *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__ChangePassword); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__ChangePassword ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ChangePassword(struct soap *soap, const char *tag, _interswitch__ChangePassword **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__ChangePassword **)soap_malloc(soap, sizeof(_interswitch__ChangePassword *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__ChangePassword *)soap_instantiate__interswitch__ChangePassword(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__ChangePassword ** p = (_interswitch__ChangePassword **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__ChangePassword, sizeof(_interswitch__ChangePassword), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ChangePassword(struct soap *soap, _interswitch__ChangePassword *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__ChangePassword); + if (soap_out_PointerTo_interswitch__ChangePassword(soap, tag?tag:"interswitch:ChangePassword", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__ChangePassword ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ChangePassword(struct soap *soap, _interswitch__ChangePassword **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__ChangePassword(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__UpdateUserResponse(struct soap *soap, _interswitch__UpdateUserResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__UpdateUserResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__UpdateUserResponse(struct soap *soap, const char *tag, int id, _interswitch__UpdateUserResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__UpdateUserResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__UpdateUserResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__UpdateUserResponse(struct soap *soap, const char *tag, _interswitch__UpdateUserResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__UpdateUserResponse **)soap_malloc(soap, sizeof(_interswitch__UpdateUserResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__UpdateUserResponse *)soap_instantiate__interswitch__UpdateUserResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__UpdateUserResponse ** p = (_interswitch__UpdateUserResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__UpdateUserResponse, sizeof(_interswitch__UpdateUserResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__UpdateUserResponse(struct soap *soap, _interswitch__UpdateUserResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__UpdateUserResponse); + if (soap_out_PointerTo_interswitch__UpdateUserResponse(soap, tag?tag:"interswitch:UpdateUserResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__UpdateUserResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__UpdateUserResponse(struct soap *soap, _interswitch__UpdateUserResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__UpdateUserResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__UpdateUser(struct soap *soap, _interswitch__UpdateUser *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__UpdateUser)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__UpdateUser(struct soap *soap, const char *tag, int id, _interswitch__UpdateUser *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__UpdateUser); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__UpdateUser ** SOAP_FMAC4 soap_in_PointerTo_interswitch__UpdateUser(struct soap *soap, const char *tag, _interswitch__UpdateUser **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__UpdateUser **)soap_malloc(soap, sizeof(_interswitch__UpdateUser *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__UpdateUser *)soap_instantiate__interswitch__UpdateUser(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__UpdateUser ** p = (_interswitch__UpdateUser **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__UpdateUser, sizeof(_interswitch__UpdateUser), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__UpdateUser(struct soap *soap, _interswitch__UpdateUser *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__UpdateUser); + if (soap_out_PointerTo_interswitch__UpdateUser(soap, tag?tag:"interswitch:UpdateUser", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__UpdateUser ** SOAP_FMAC4 soap_get_PointerTo_interswitch__UpdateUser(struct soap *soap, _interswitch__UpdateUser **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__UpdateUser(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ActivateUserResponse(struct soap *soap, _interswitch__ActivateUserResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__ActivateUserResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ActivateUserResponse(struct soap *soap, const char *tag, int id, _interswitch__ActivateUserResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__ActivateUserResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__ActivateUserResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ActivateUserResponse(struct soap *soap, const char *tag, _interswitch__ActivateUserResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__ActivateUserResponse **)soap_malloc(soap, sizeof(_interswitch__ActivateUserResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__ActivateUserResponse *)soap_instantiate__interswitch__ActivateUserResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__ActivateUserResponse ** p = (_interswitch__ActivateUserResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__ActivateUserResponse, sizeof(_interswitch__ActivateUserResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ActivateUserResponse(struct soap *soap, _interswitch__ActivateUserResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__ActivateUserResponse); + if (soap_out_PointerTo_interswitch__ActivateUserResponse(soap, tag?tag:"interswitch:ActivateUserResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__ActivateUserResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ActivateUserResponse(struct soap *soap, _interswitch__ActivateUserResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__ActivateUserResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ActivateUser(struct soap *soap, _interswitch__ActivateUser *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__ActivateUser)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ActivateUser(struct soap *soap, const char *tag, int id, _interswitch__ActivateUser *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__ActivateUser); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__ActivateUser ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ActivateUser(struct soap *soap, const char *tag, _interswitch__ActivateUser **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__ActivateUser **)soap_malloc(soap, sizeof(_interswitch__ActivateUser *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__ActivateUser *)soap_instantiate__interswitch__ActivateUser(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__ActivateUser ** p = (_interswitch__ActivateUser **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__ActivateUser, sizeof(_interswitch__ActivateUser), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ActivateUser(struct soap *soap, _interswitch__ActivateUser *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__ActivateUser); + if (soap_out_PointerTo_interswitch__ActivateUser(soap, tag?tag:"interswitch:ActivateUser", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__ActivateUser ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ActivateUser(struct soap *soap, _interswitch__ActivateUser **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__ActivateUser(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__CreateUserResponse(struct soap *soap, _interswitch__CreateUserResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__CreateUserResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__CreateUserResponse(struct soap *soap, const char *tag, int id, _interswitch__CreateUserResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__CreateUserResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__CreateUserResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__CreateUserResponse(struct soap *soap, const char *tag, _interswitch__CreateUserResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__CreateUserResponse **)soap_malloc(soap, sizeof(_interswitch__CreateUserResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__CreateUserResponse *)soap_instantiate__interswitch__CreateUserResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__CreateUserResponse ** p = (_interswitch__CreateUserResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__CreateUserResponse, sizeof(_interswitch__CreateUserResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__CreateUserResponse(struct soap *soap, _interswitch__CreateUserResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__CreateUserResponse); + if (soap_out_PointerTo_interswitch__CreateUserResponse(soap, tag?tag:"interswitch:CreateUserResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__CreateUserResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__CreateUserResponse(struct soap *soap, _interswitch__CreateUserResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__CreateUserResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__CreateUser(struct soap *soap, _interswitch__CreateUser *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__CreateUser)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__CreateUser(struct soap *soap, const char *tag, int id, _interswitch__CreateUser *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__CreateUser); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__CreateUser ** SOAP_FMAC4 soap_in_PointerTo_interswitch__CreateUser(struct soap *soap, const char *tag, _interswitch__CreateUser **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__CreateUser **)soap_malloc(soap, sizeof(_interswitch__CreateUser *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__CreateUser *)soap_instantiate__interswitch__CreateUser(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__CreateUser ** p = (_interswitch__CreateUser **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__CreateUser, sizeof(_interswitch__CreateUser), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__CreateUser(struct soap *soap, _interswitch__CreateUser *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__CreateUser); + if (soap_out_PointerTo_interswitch__CreateUser(soap, tag?tag:"interswitch:CreateUser", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__CreateUser ** SOAP_FMAC4 soap_get_PointerTo_interswitch__CreateUser(struct soap *soap, _interswitch__CreateUser **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__CreateUser(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetSystemSettingsResponse(struct soap *soap, _interswitch__GetSystemSettingsResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetSystemSettingsResponse(struct soap *soap, const char *tag, int id, _interswitch__GetSystemSettingsResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetSystemSettingsResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetSystemSettingsResponse(struct soap *soap, const char *tag, _interswitch__GetSystemSettingsResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetSystemSettingsResponse **)soap_malloc(soap, sizeof(_interswitch__GetSystemSettingsResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetSystemSettingsResponse *)soap_instantiate__interswitch__GetSystemSettingsResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetSystemSettingsResponse ** p = (_interswitch__GetSystemSettingsResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse, sizeof(_interswitch__GetSystemSettingsResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetSystemSettingsResponse(struct soap *soap, _interswitch__GetSystemSettingsResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetSystemSettingsResponse); + if (soap_out_PointerTo_interswitch__GetSystemSettingsResponse(soap, tag?tag:"interswitch:GetSystemSettingsResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetSystemSettingsResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetSystemSettingsResponse(struct soap *soap, _interswitch__GetSystemSettingsResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetSystemSettingsResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetSystemSettings(struct soap *soap, _interswitch__GetSystemSettings *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__GetSystemSettings)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetSystemSettings(struct soap *soap, const char *tag, int id, _interswitch__GetSystemSettings *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__GetSystemSettings); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__GetSystemSettings ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetSystemSettings(struct soap *soap, const char *tag, _interswitch__GetSystemSettings **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__GetSystemSettings **)soap_malloc(soap, sizeof(_interswitch__GetSystemSettings *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__GetSystemSettings *)soap_instantiate__interswitch__GetSystemSettings(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__GetSystemSettings ** p = (_interswitch__GetSystemSettings **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__GetSystemSettings, sizeof(_interswitch__GetSystemSettings), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetSystemSettings(struct soap *soap, _interswitch__GetSystemSettings *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__GetSystemSettings); + if (soap_out_PointerTo_interswitch__GetSystemSettings(soap, tag?tag:"interswitch:GetSystemSettings", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__GetSystemSettings ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetSystemSettings(struct soap *soap, _interswitch__GetSystemSettings **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__GetSystemSettings(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__QueryTransactionResponse(struct soap *soap, _interswitch__QueryTransactionResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__QueryTransactionResponse(struct soap *soap, const char *tag, int id, _interswitch__QueryTransactionResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__QueryTransactionResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__QueryTransactionResponse(struct soap *soap, const char *tag, _interswitch__QueryTransactionResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__QueryTransactionResponse **)soap_malloc(soap, sizeof(_interswitch__QueryTransactionResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__QueryTransactionResponse *)soap_instantiate__interswitch__QueryTransactionResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__QueryTransactionResponse ** p = (_interswitch__QueryTransactionResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse, sizeof(_interswitch__QueryTransactionResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__QueryTransactionResponse(struct soap *soap, _interswitch__QueryTransactionResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransactionResponse); + if (soap_out_PointerTo_interswitch__QueryTransactionResponse(soap, tag?tag:"interswitch:QueryTransactionResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__QueryTransactionResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__QueryTransactionResponse(struct soap *soap, _interswitch__QueryTransactionResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__QueryTransactionResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__QueryTransaction(struct soap *soap, _interswitch__QueryTransaction *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__QueryTransaction)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__QueryTransaction(struct soap *soap, const char *tag, int id, _interswitch__QueryTransaction *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__QueryTransaction); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__QueryTransaction ** SOAP_FMAC4 soap_in_PointerTo_interswitch__QueryTransaction(struct soap *soap, const char *tag, _interswitch__QueryTransaction **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__QueryTransaction **)soap_malloc(soap, sizeof(_interswitch__QueryTransaction *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__QueryTransaction *)soap_instantiate__interswitch__QueryTransaction(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__QueryTransaction ** p = (_interswitch__QueryTransaction **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__QueryTransaction, sizeof(_interswitch__QueryTransaction), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__QueryTransaction(struct soap *soap, _interswitch__QueryTransaction *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransaction); + if (soap_out_PointerTo_interswitch__QueryTransaction(soap, tag?tag:"interswitch:QueryTransaction", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__QueryTransaction ** SOAP_FMAC4 soap_get_PointerTo_interswitch__QueryTransaction(struct soap *soap, _interswitch__QueryTransaction **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__QueryTransaction(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__StatusCheckResponse(struct soap *soap, _interswitch__StatusCheckResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__StatusCheckResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__StatusCheckResponse(struct soap *soap, const char *tag, int id, _interswitch__StatusCheckResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__StatusCheckResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__StatusCheckResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__StatusCheckResponse(struct soap *soap, const char *tag, _interswitch__StatusCheckResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__StatusCheckResponse **)soap_malloc(soap, sizeof(_interswitch__StatusCheckResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__StatusCheckResponse *)soap_instantiate__interswitch__StatusCheckResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__StatusCheckResponse ** p = (_interswitch__StatusCheckResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__StatusCheckResponse, sizeof(_interswitch__StatusCheckResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__StatusCheckResponse(struct soap *soap, _interswitch__StatusCheckResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__StatusCheckResponse); + if (soap_out_PointerTo_interswitch__StatusCheckResponse(soap, tag?tag:"interswitch:StatusCheckResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__StatusCheckResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__StatusCheckResponse(struct soap *soap, _interswitch__StatusCheckResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__StatusCheckResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__StatusCheck(struct soap *soap, _interswitch__StatusCheck *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__StatusCheck)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__StatusCheck(struct soap *soap, const char *tag, int id, _interswitch__StatusCheck *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__StatusCheck); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__StatusCheck ** SOAP_FMAC4 soap_in_PointerTo_interswitch__StatusCheck(struct soap *soap, const char *tag, _interswitch__StatusCheck **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__StatusCheck **)soap_malloc(soap, sizeof(_interswitch__StatusCheck *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__StatusCheck *)soap_instantiate__interswitch__StatusCheck(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__StatusCheck ** p = (_interswitch__StatusCheck **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__StatusCheck, sizeof(_interswitch__StatusCheck), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__StatusCheck(struct soap *soap, _interswitch__StatusCheck *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__StatusCheck); + if (soap_out_PointerTo_interswitch__StatusCheck(soap, tag?tag:"interswitch:StatusCheck", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__StatusCheck ** SOAP_FMAC4 soap_get_PointerTo_interswitch__StatusCheck(struct soap *soap, _interswitch__StatusCheck **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__StatusCheck(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ReverseCashOutResponse(struct soap *soap, _interswitch__ReverseCashOutResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ReverseCashOutResponse(struct soap *soap, const char *tag, int id, _interswitch__ReverseCashOutResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__ReverseCashOutResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ReverseCashOutResponse(struct soap *soap, const char *tag, _interswitch__ReverseCashOutResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__ReverseCashOutResponse **)soap_malloc(soap, sizeof(_interswitch__ReverseCashOutResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__ReverseCashOutResponse *)soap_instantiate__interswitch__ReverseCashOutResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__ReverseCashOutResponse ** p = (_interswitch__ReverseCashOutResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse, sizeof(_interswitch__ReverseCashOutResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ReverseCashOutResponse(struct soap *soap, _interswitch__ReverseCashOutResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__ReverseCashOutResponse); + if (soap_out_PointerTo_interswitch__ReverseCashOutResponse(soap, tag?tag:"interswitch:ReverseCashOutResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__ReverseCashOutResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ReverseCashOutResponse(struct soap *soap, _interswitch__ReverseCashOutResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__ReverseCashOutResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ReverseCashOut(struct soap *soap, _interswitch__ReverseCashOut *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__ReverseCashOut)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ReverseCashOut(struct soap *soap, const char *tag, int id, _interswitch__ReverseCashOut *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__ReverseCashOut); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__ReverseCashOut ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ReverseCashOut(struct soap *soap, const char *tag, _interswitch__ReverseCashOut **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__ReverseCashOut **)soap_malloc(soap, sizeof(_interswitch__ReverseCashOut *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__ReverseCashOut *)soap_instantiate__interswitch__ReverseCashOut(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__ReverseCashOut ** p = (_interswitch__ReverseCashOut **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__ReverseCashOut, sizeof(_interswitch__ReverseCashOut), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ReverseCashOut(struct soap *soap, _interswitch__ReverseCashOut *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__ReverseCashOut); + if (soap_out_PointerTo_interswitch__ReverseCashOut(soap, tag?tag:"interswitch:ReverseCashOut", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__ReverseCashOut ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ReverseCashOut(struct soap *soap, _interswitch__ReverseCashOut **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__ReverseCashOut(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthoriseAccountCashOutResponse(struct soap *soap, _interswitch__AuthoriseAccountCashOutResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthoriseAccountCashOutResponse(struct soap *soap, const char *tag, int id, _interswitch__AuthoriseAccountCashOutResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__AuthoriseAccountCashOutResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthoriseAccountCashOutResponse(struct soap *soap, const char *tag, _interswitch__AuthoriseAccountCashOutResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__AuthoriseAccountCashOutResponse **)soap_malloc(soap, sizeof(_interswitch__AuthoriseAccountCashOutResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__AuthoriseAccountCashOutResponse *)soap_instantiate__interswitch__AuthoriseAccountCashOutResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__AuthoriseAccountCashOutResponse ** p = (_interswitch__AuthoriseAccountCashOutResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse, sizeof(_interswitch__AuthoriseAccountCashOutResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthoriseAccountCashOutResponse(struct soap *soap, _interswitch__AuthoriseAccountCashOutResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseAccountCashOutResponse); + if (soap_out_PointerTo_interswitch__AuthoriseAccountCashOutResponse(soap, tag?tag:"interswitch:AuthoriseAccountCashOutResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__AuthoriseAccountCashOutResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthoriseAccountCashOutResponse(struct soap *soap, _interswitch__AuthoriseAccountCashOutResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__AuthoriseAccountCashOutResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthoriseAccountCashOut(struct soap *soap, _interswitch__AuthoriseAccountCashOut *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthoriseAccountCashOut(struct soap *soap, const char *tag, int id, _interswitch__AuthoriseAccountCashOut *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__AuthoriseAccountCashOut ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthoriseAccountCashOut(struct soap *soap, const char *tag, _interswitch__AuthoriseAccountCashOut **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__AuthoriseAccountCashOut **)soap_malloc(soap, sizeof(_interswitch__AuthoriseAccountCashOut *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__AuthoriseAccountCashOut *)soap_instantiate__interswitch__AuthoriseAccountCashOut(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__AuthoriseAccountCashOut ** p = (_interswitch__AuthoriseAccountCashOut **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut, sizeof(_interswitch__AuthoriseAccountCashOut), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthoriseAccountCashOut(struct soap *soap, _interswitch__AuthoriseAccountCashOut *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseAccountCashOut); + if (soap_out_PointerTo_interswitch__AuthoriseAccountCashOut(soap, tag?tag:"interswitch:AuthoriseAccountCashOut", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__AuthoriseAccountCashOut ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthoriseAccountCashOut(struct soap *soap, _interswitch__AuthoriseAccountCashOut **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__AuthoriseAccountCashOut(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthoriseCashOutResponse(struct soap *soap, _interswitch__AuthoriseCashOutResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthoriseCashOutResponse(struct soap *soap, const char *tag, int id, _interswitch__AuthoriseCashOutResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__AuthoriseCashOutResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthoriseCashOutResponse(struct soap *soap, const char *tag, _interswitch__AuthoriseCashOutResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__AuthoriseCashOutResponse **)soap_malloc(soap, sizeof(_interswitch__AuthoriseCashOutResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__AuthoriseCashOutResponse *)soap_instantiate__interswitch__AuthoriseCashOutResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__AuthoriseCashOutResponse ** p = (_interswitch__AuthoriseCashOutResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse, sizeof(_interswitch__AuthoriseCashOutResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthoriseCashOutResponse(struct soap *soap, _interswitch__AuthoriseCashOutResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseCashOutResponse); + if (soap_out_PointerTo_interswitch__AuthoriseCashOutResponse(soap, tag?tag:"interswitch:AuthoriseCashOutResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__AuthoriseCashOutResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthoriseCashOutResponse(struct soap *soap, _interswitch__AuthoriseCashOutResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__AuthoriseCashOutResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthoriseCashOut(struct soap *soap, _interswitch__AuthoriseCashOut *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthoriseCashOut(struct soap *soap, const char *tag, int id, _interswitch__AuthoriseCashOut *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__AuthoriseCashOut ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthoriseCashOut(struct soap *soap, const char *tag, _interswitch__AuthoriseCashOut **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__AuthoriseCashOut **)soap_malloc(soap, sizeof(_interswitch__AuthoriseCashOut *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__AuthoriseCashOut *)soap_instantiate__interswitch__AuthoriseCashOut(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__AuthoriseCashOut ** p = (_interswitch__AuthoriseCashOut **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut, sizeof(_interswitch__AuthoriseCashOut), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthoriseCashOut(struct soap *soap, _interswitch__AuthoriseCashOut *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseCashOut); + if (soap_out_PointerTo_interswitch__AuthoriseCashOut(soap, tag?tag:"interswitch:AuthoriseCashOut", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__AuthoriseCashOut ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthoriseCashOut(struct soap *soap, _interswitch__AuthoriseCashOut **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__AuthoriseCashOut(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__QueryTransferResponse(struct soap *soap, _interswitch__QueryTransferResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__QueryTransferResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__QueryTransferResponse(struct soap *soap, const char *tag, int id, _interswitch__QueryTransferResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__QueryTransferResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__QueryTransferResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__QueryTransferResponse(struct soap *soap, const char *tag, _interswitch__QueryTransferResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__QueryTransferResponse **)soap_malloc(soap, sizeof(_interswitch__QueryTransferResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__QueryTransferResponse *)soap_instantiate__interswitch__QueryTransferResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__QueryTransferResponse ** p = (_interswitch__QueryTransferResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__QueryTransferResponse, sizeof(_interswitch__QueryTransferResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__QueryTransferResponse(struct soap *soap, _interswitch__QueryTransferResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransferResponse); + if (soap_out_PointerTo_interswitch__QueryTransferResponse(soap, tag?tag:"interswitch:QueryTransferResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__QueryTransferResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__QueryTransferResponse(struct soap *soap, _interswitch__QueryTransferResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__QueryTransferResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__QueryTransfer(struct soap *soap, _interswitch__QueryTransfer *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__QueryTransfer)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__QueryTransfer(struct soap *soap, const char *tag, int id, _interswitch__QueryTransfer *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__QueryTransfer); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__QueryTransfer ** SOAP_FMAC4 soap_in_PointerTo_interswitch__QueryTransfer(struct soap *soap, const char *tag, _interswitch__QueryTransfer **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__QueryTransfer **)soap_malloc(soap, sizeof(_interswitch__QueryTransfer *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__QueryTransfer *)soap_instantiate__interswitch__QueryTransfer(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__QueryTransfer ** p = (_interswitch__QueryTransfer **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__QueryTransfer, sizeof(_interswitch__QueryTransfer), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__QueryTransfer(struct soap *soap, _interswitch__QueryTransfer *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransfer); + if (soap_out_PointerTo_interswitch__QueryTransfer(soap, tag?tag:"interswitch:QueryTransfer", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__QueryTransfer ** SOAP_FMAC4 soap_get_PointerTo_interswitch__QueryTransfer(struct soap *soap, _interswitch__QueryTransfer **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__QueryTransfer(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__SendSessionKeyResponse(struct soap *soap, _interswitch__SendSessionKeyResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__SendSessionKeyResponse(struct soap *soap, const char *tag, int id, _interswitch__SendSessionKeyResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__SendSessionKeyResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__SendSessionKeyResponse(struct soap *soap, const char *tag, _interswitch__SendSessionKeyResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__SendSessionKeyResponse **)soap_malloc(soap, sizeof(_interswitch__SendSessionKeyResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__SendSessionKeyResponse *)soap_instantiate__interswitch__SendSessionKeyResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__SendSessionKeyResponse ** p = (_interswitch__SendSessionKeyResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse, sizeof(_interswitch__SendSessionKeyResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__SendSessionKeyResponse(struct soap *soap, _interswitch__SendSessionKeyResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__SendSessionKeyResponse); + if (soap_out_PointerTo_interswitch__SendSessionKeyResponse(soap, tag?tag:"interswitch:SendSessionKeyResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__SendSessionKeyResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__SendSessionKeyResponse(struct soap *soap, _interswitch__SendSessionKeyResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__SendSessionKeyResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__SendSessionKey(struct soap *soap, _interswitch__SendSessionKey *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__SendSessionKey)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__SendSessionKey(struct soap *soap, const char *tag, int id, _interswitch__SendSessionKey *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__SendSessionKey); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__SendSessionKey ** SOAP_FMAC4 soap_in_PointerTo_interswitch__SendSessionKey(struct soap *soap, const char *tag, _interswitch__SendSessionKey **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__SendSessionKey **)soap_malloc(soap, sizeof(_interswitch__SendSessionKey *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__SendSessionKey *)soap_instantiate__interswitch__SendSessionKey(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__SendSessionKey ** p = (_interswitch__SendSessionKey **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__SendSessionKey, sizeof(_interswitch__SendSessionKey), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__SendSessionKey(struct soap *soap, _interswitch__SendSessionKey *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__SendSessionKey); + if (soap_out_PointerTo_interswitch__SendSessionKey(soap, tag?tag:"interswitch:SendSessionKey", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__SendSessionKey ** SOAP_FMAC4 soap_get_PointerTo_interswitch__SendSessionKey(struct soap *soap, _interswitch__SendSessionKey **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__SendSessionKey(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__CancelTransferResponse(struct soap *soap, _interswitch__CancelTransferResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__CancelTransferResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__CancelTransferResponse(struct soap *soap, const char *tag, int id, _interswitch__CancelTransferResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__CancelTransferResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__CancelTransferResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__CancelTransferResponse(struct soap *soap, const char *tag, _interswitch__CancelTransferResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__CancelTransferResponse **)soap_malloc(soap, sizeof(_interswitch__CancelTransferResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__CancelTransferResponse *)soap_instantiate__interswitch__CancelTransferResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__CancelTransferResponse ** p = (_interswitch__CancelTransferResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__CancelTransferResponse, sizeof(_interswitch__CancelTransferResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__CancelTransferResponse(struct soap *soap, _interswitch__CancelTransferResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__CancelTransferResponse); + if (soap_out_PointerTo_interswitch__CancelTransferResponse(soap, tag?tag:"interswitch:CancelTransferResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__CancelTransferResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__CancelTransferResponse(struct soap *soap, _interswitch__CancelTransferResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__CancelTransferResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__CancelTransfer(struct soap *soap, _interswitch__CancelTransfer *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__CancelTransfer)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__CancelTransfer(struct soap *soap, const char *tag, int id, _interswitch__CancelTransfer *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__CancelTransfer); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__CancelTransfer ** SOAP_FMAC4 soap_in_PointerTo_interswitch__CancelTransfer(struct soap *soap, const char *tag, _interswitch__CancelTransfer **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__CancelTransfer **)soap_malloc(soap, sizeof(_interswitch__CancelTransfer *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__CancelTransfer *)soap_instantiate__interswitch__CancelTransfer(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__CancelTransfer ** p = (_interswitch__CancelTransfer **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__CancelTransfer, sizeof(_interswitch__CancelTransfer), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__CancelTransfer(struct soap *soap, _interswitch__CancelTransfer *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__CancelTransfer); + if (soap_out_PointerTo_interswitch__CancelTransfer(soap, tag?tag:"interswitch:CancelTransfer", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__CancelTransfer ** SOAP_FMAC4 soap_get_PointerTo_interswitch__CancelTransfer(struct soap *soap, _interswitch__CancelTransfer **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__CancelTransfer(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__DoTransferResponse(struct soap *soap, _interswitch__DoTransferResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__DoTransferResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__DoTransferResponse(struct soap *soap, const char *tag, int id, _interswitch__DoTransferResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__DoTransferResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__DoTransferResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__DoTransferResponse(struct soap *soap, const char *tag, _interswitch__DoTransferResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__DoTransferResponse **)soap_malloc(soap, sizeof(_interswitch__DoTransferResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__DoTransferResponse *)soap_instantiate__interswitch__DoTransferResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__DoTransferResponse ** p = (_interswitch__DoTransferResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__DoTransferResponse, sizeof(_interswitch__DoTransferResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__DoTransferResponse(struct soap *soap, _interswitch__DoTransferResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__DoTransferResponse); + if (soap_out_PointerTo_interswitch__DoTransferResponse(soap, tag?tag:"interswitch:DoTransferResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__DoTransferResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__DoTransferResponse(struct soap *soap, _interswitch__DoTransferResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__DoTransferResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__DoTransfer(struct soap *soap, _interswitch__DoTransfer *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__DoTransfer)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__DoTransfer(struct soap *soap, const char *tag, int id, _interswitch__DoTransfer *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__DoTransfer); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__DoTransfer ** SOAP_FMAC4 soap_in_PointerTo_interswitch__DoTransfer(struct soap *soap, const char *tag, _interswitch__DoTransfer **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__DoTransfer **)soap_malloc(soap, sizeof(_interswitch__DoTransfer *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__DoTransfer *)soap_instantiate__interswitch__DoTransfer(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__DoTransfer ** p = (_interswitch__DoTransfer **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__DoTransfer, sizeof(_interswitch__DoTransfer), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__DoTransfer(struct soap *soap, _interswitch__DoTransfer *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__DoTransfer); + if (soap_out_PointerTo_interswitch__DoTransfer(soap, tag?tag:"interswitch:DoTransfer", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__DoTransfer ** SOAP_FMAC4 soap_get_PointerTo_interswitch__DoTransfer(struct soap *soap, _interswitch__DoTransfer **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__DoTransfer(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ValidateCustomerResponse(struct soap *soap, _interswitch__ValidateCustomerResponse *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ValidateCustomerResponse(struct soap *soap, const char *tag, int id, _interswitch__ValidateCustomerResponse *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__ValidateCustomerResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ValidateCustomerResponse(struct soap *soap, const char *tag, _interswitch__ValidateCustomerResponse **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__ValidateCustomerResponse **)soap_malloc(soap, sizeof(_interswitch__ValidateCustomerResponse *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__ValidateCustomerResponse *)soap_instantiate__interswitch__ValidateCustomerResponse(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__ValidateCustomerResponse ** p = (_interswitch__ValidateCustomerResponse **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse, sizeof(_interswitch__ValidateCustomerResponse), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ValidateCustomerResponse(struct soap *soap, _interswitch__ValidateCustomerResponse *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__ValidateCustomerResponse); + if (soap_out_PointerTo_interswitch__ValidateCustomerResponse(soap, tag?tag:"interswitch:ValidateCustomerResponse", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__ValidateCustomerResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ValidateCustomerResponse(struct soap *soap, _interswitch__ValidateCustomerResponse **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__ValidateCustomerResponse(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ValidateCustomer(struct soap *soap, _interswitch__ValidateCustomer *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch__interswitch__ValidateCustomer)) + (*a)->soap_serialize(soap); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ValidateCustomer(struct soap *soap, const char *tag, int id, _interswitch__ValidateCustomer *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch__interswitch__ValidateCustomer); + if (id < 0) + return soap->error; + return (*a)->soap_out(soap, tag, id, type); +} + +SOAP_FMAC3 _interswitch__ValidateCustomer ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ValidateCustomer(struct soap *soap, const char *tag, _interswitch__ValidateCustomer **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (_interswitch__ValidateCustomer **)soap_malloc(soap, sizeof(_interswitch__ValidateCustomer *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = (_interswitch__ValidateCustomer *)soap_instantiate__interswitch__ValidateCustomer(soap, -1, soap->type, soap->arrayType, NULL))) + return NULL; + (*a)->soap_default(soap); + if (!(*a)->soap_in(soap, tag, NULL)) + return NULL; + } + else + { _interswitch__ValidateCustomer ** p = (_interswitch__ValidateCustomer **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch__interswitch__ValidateCustomer, sizeof(_interswitch__ValidateCustomer), 0); + a = p; + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ValidateCustomer(struct soap *soap, _interswitch__ValidateCustomer *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTo_interswitch__ValidateCustomer); + if (soap_out_PointerTo_interswitch__ValidateCustomer(soap, tag?tag:"interswitch:ValidateCustomer", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 _interswitch__ValidateCustomer ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ValidateCustomer(struct soap *soap, _interswitch__ValidateCustomer **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTo_interswitch__ValidateCustomer(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTostd__string(struct soap *soap, std::string *const*a) +{ + if (!soap_reference(soap, *a, SOAP_TYPE_interswitch_std__string)) + soap_serialize_std__string(soap, *a); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTostd__string(struct soap *soap, const char *tag, int id, std::string *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch_std__string); + if (id < 0) + return soap->error; + return soap_out_std__string(soap, tag, id, *a, type); +} + +SOAP_FMAC3 std::string ** SOAP_FMAC4 soap_in_PointerTostd__string(struct soap *soap, const char *tag, std::string **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (std::string **)soap_malloc(soap, sizeof(std::string *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = soap_in_std__string(soap, tag, *a, type))) + return NULL; + } + else + { a = (std::string **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch_std__string, sizeof(std::string), 0); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTostd__string(struct soap *soap, std::string *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTostd__string); + if (soap_out_PointerTostd__string(soap, tag?tag:"string", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 std::string ** SOAP_FMAC4 soap_get_PointerTostd__string(struct soap *soap, std::string **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTostd__string(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTounsignedByte(struct soap *soap, unsigned char *const*a) +{ + soap_reference(soap, *a, SOAP_TYPE_interswitch_unsignedByte); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTounsignedByte(struct soap *soap, const char *tag, int id, unsigned char *const*a, const char *type) +{ + id = soap_element_id(soap, tag, id, *a, NULL, 0, type, SOAP_TYPE_interswitch_unsignedByte); + if (id < 0) + return soap->error; + return soap_out_unsignedByte(soap, tag, id, *a, type); +} + +SOAP_FMAC3 unsigned char ** SOAP_FMAC4 soap_in_PointerTounsignedByte(struct soap *soap, const char *tag, unsigned char **a, const char *type) +{ + if (soap_element_begin_in(soap, tag, 1, NULL)) + return NULL; + if (!a) + if (!(a = (unsigned char **)soap_malloc(soap, sizeof(unsigned char *)))) + return NULL; + *a = NULL; + if (!soap->null && *soap->href != '#') + { soap_revert(soap); + if (!(*a = soap_in_unsignedByte(soap, tag, *a, type))) + return NULL; + } + else + { a = (unsigned char **)soap_id_lookup(soap, soap->href, (void**)a, SOAP_TYPE_interswitch_unsignedByte, sizeof(unsigned char), 0); + if (soap->body && soap_element_end_in(soap, tag)) + return NULL; + } + return a; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTounsignedByte(struct soap *soap, unsigned char *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_PointerTounsignedByte); + if (soap_out_PointerTounsignedByte(soap, tag?tag:"unsignedByte", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 unsigned char ** SOAP_FMAC4 soap_get_PointerTounsignedByte(struct soap *soap, unsigned char **p, const char *tag, const char *type) +{ + if ((p = soap_in_PointerTounsignedByte(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__QName(struct soap *soap, const char *tag, int id, char *const*a, const char *type) +{ + return soap_outstring(soap, tag, id, a, type, SOAP_TYPE_interswitch__QName); +} + +SOAP_FMAC3 char * * SOAP_FMAC4 soap_in__QName(struct soap *soap, const char *tag, char **a, const char *type) +{ char **p; + p = soap_instring(soap, tag, a, type, SOAP_TYPE_interswitch__QName, 2, -1, -1); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put__QName(struct soap *soap, char *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch__QName); + if (soap_out__QName(soap, tag?tag:"byte", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 char ** SOAP_FMAC4 soap_get__QName(struct soap *soap, char **p, const char *tag, const char *type) +{ + if ((p = soap_in__QName(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_default_string(struct soap *soap, char **a) +{ + (void)soap; /* appease -Wall -Werror */ +#ifdef SOAP_DEFAULT_string + *a = SOAP_DEFAULT_string; +#else + *a = (char *)0; +#endif +} + +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_string(struct soap *soap, char *const*a) +{ + soap_reference(soap, *a, SOAP_TYPE_interswitch_string); +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_string(struct soap *soap, const char *tag, int id, char *const*a, const char *type) +{ + return soap_outstring(soap, tag, id, a, type, SOAP_TYPE_interswitch_string); +} + +SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_string(struct soap *soap, const char *tag, char **a, const char *type) +{ char **p; + p = soap_instring(soap, tag, a, type, SOAP_TYPE_interswitch_string, 1, -1, -1); + return p; +} + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_string(struct soap *soap, char *const*a, const char *tag, const char *type) +{ + register int id = soap_embed(soap, (void*)a, NULL, 0, tag, SOAP_TYPE_interswitch_string); + if (soap_out_string(soap, tag?tag:"byte", id, a, type)) + return soap->error; + return soap_putindependent(soap); +} + +SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_string(struct soap *soap, char **p, const char *tag, const char *type) +{ + if ((p = soap_in_string(soap, tag, p, type))) + if (soap_getindependent(soap)) + return NULL; + return p; +} + +} // namespace interswitch + + +#if defined(__BORLANDC__) +#pragma option pop +#pragma option pop +#endif + +/* End of interswitchC.cpp */ diff --git a/coregrade/src/shared_tool/soap/interswitchH.h b/coregrade/src/shared_tool/soap/interswitchH.h new file mode 100644 index 0000000..7fd5837 --- /dev/null +++ b/coregrade/src/shared_tool/soap/interswitchH.h @@ -0,0 +1,5242 @@ +/* interswitchH.h + Generated by gSOAP 2.7.16 from QuickTellerService.h + Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. + This part of the software is released under one of the following licenses: + GPL, the gSOAP public license, or Genivia's license for commercial use. +*/ + +#ifndef interswitchH_H +#define interswitchH_H +#include "interswitchStub.h" + +namespace interswitch { +#ifndef WITH_NOIDREF +SOAP_FMAC3 void SOAP_FMAC4 soap_markelement(struct soap*, const void*, int); +SOAP_FMAC3 int SOAP_FMAC4 soap_putelement(struct soap*, const void*, const char*, int, int); +SOAP_FMAC3 void *SOAP_FMAC4 soap_getelement(struct soap*, int*); +SOAP_FMAC3 int SOAP_FMAC4 soap_putindependent(struct soap*); +SOAP_FMAC3 int SOAP_FMAC4 soap_getindependent(struct soap*); +#endif +SOAP_FMAC3 int SOAP_FMAC4 soap_ignore_element(struct soap*); + +SOAP_FMAC3 void * SOAP_FMAC4 soap_instantiate(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 int SOAP_FMAC4 soap_fdelete(struct soap_clist*); +SOAP_FMAC3 void* SOAP_FMAC4 soap_class_id_enter(struct soap*, const char*, void*, int, size_t, const char*, const char*); + +SOAP_FMAC3 void* SOAP_FMAC4 soap_container_id_forward(struct soap*, const char*, void*, size_t, int, int, size_t, unsigned int); + +SOAP_FMAC3 void SOAP_FMAC4 soap_container_insert(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__byte +#define SOAP_TYPE_interswitch_xsd__byte (26) +#endif + +#define soap_default_xsd__byte(soap, a) soap_default_byte(soap, a) + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__byte(struct soap*, const char*, int, const char *, const char*); +SOAP_FMAC3 char * SOAP_FMAC4 soap_in_xsd__byte(struct soap*, const char*, char *, const char*); + +#define soap_write_xsd__byte(soap, data) ( soap_begin_send(soap) || interswitch::soap_put_xsd__byte(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__byte(struct soap*, const char *, const char*, const char*); + +#define soap_read_xsd__byte(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__byte(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 char * SOAP_FMAC4 soap_get_xsd__byte(struct soap*, char *, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_byte +#define SOAP_TYPE_interswitch_byte (3) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_byte(struct soap*, char *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_byte(struct soap*, const char*, int, const char *, const char*); +SOAP_FMAC3 char * SOAP_FMAC4 soap_in_byte(struct soap*, const char*, char *, const char*); + +#define soap_write_byte(soap, data) ( soap_begin_send(soap) || interswitch::soap_put_byte(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_byte(struct soap*, const char *, const char*, const char*); + +#define soap_read_byte(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_byte(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 char * SOAP_FMAC4 soap_get_byte(struct soap*, char *, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_short +#define SOAP_TYPE_interswitch_short (42) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_short(struct soap*, short *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_short(struct soap*, const char*, int, const short *, const char*); +SOAP_FMAC3 short * SOAP_FMAC4 soap_in_short(struct soap*, const char*, short *, const char*); + +#define soap_write_short(soap, data) ( soap_begin_send(soap) || interswitch::soap_put_short(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_short(struct soap*, const short *, const char*, const char*); + +#define soap_read_short(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_short(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 short * SOAP_FMAC4 soap_get_short(struct soap*, short *, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_interswitch2__char +#define SOAP_TYPE_interswitch_interswitch2__char (129) +#endif + +#define soap_default_interswitch2__char(soap, a) soap_default_int(soap, a) + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_interswitch2__char(struct soap*, const char*, int, const int *, const char*); +SOAP_FMAC3 int * SOAP_FMAC4 soap_in_interswitch2__char(struct soap*, const char*, int *, const char*); + +#define soap_write_interswitch2__char(soap, data) ( soap_begin_send(soap) || interswitch::soap_put_interswitch2__char(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_interswitch2__char(struct soap*, const int *, const char*, const char*); + +#define soap_read_interswitch2__char(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_interswitch2__char(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 int * SOAP_FMAC4 soap_get_interswitch2__char(struct soap*, int *, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_int +#define SOAP_TYPE_interswitch_int (1) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_int(struct soap*, int *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_int(struct soap*, const char*, int, const int *, const char*); +SOAP_FMAC3 int * SOAP_FMAC4 soap_in_int(struct soap*, const char*, int *, const char*); + +#define soap_write_int(soap, data) ( soap_begin_send(soap) || interswitch::soap_put_int(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_int(struct soap*, const int *, const char*, const char*); + +#define soap_read_int(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_int(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 int * SOAP_FMAC4 soap_get_int(struct soap*, int *, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_LONG64 +#define SOAP_TYPE_interswitch_LONG64 (40) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_LONG64(struct soap*, LONG64 *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_LONG64(struct soap*, const char*, int, const LONG64 *, const char*); +SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_in_LONG64(struct soap*, const char*, LONG64 *, const char*); + +#define soap_write_LONG64(soap, data) ( soap_begin_send(soap) || interswitch::soap_put_LONG64(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_LONG64(struct soap*, const LONG64 *, const char*, const char*); + +#define soap_read_LONG64(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_LONG64(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 LONG64 * SOAP_FMAC4 soap_get_LONG64(struct soap*, LONG64 *, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_float +#define SOAP_TYPE_interswitch_float (37) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_float(struct soap*, float *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_float(struct soap*, const char*, int, const float *, const char*); +SOAP_FMAC3 float * SOAP_FMAC4 soap_in_float(struct soap*, const char*, float *, const char*); + +#define soap_write_float(soap, data) ( soap_begin_send(soap) || interswitch::soap_put_float(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_float(struct soap*, const float *, const char*, const char*); + +#define soap_read_float(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_float(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 float * SOAP_FMAC4 soap_get_float(struct soap*, float *, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_double +#define SOAP_TYPE_interswitch_double (33) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_double(struct soap*, double *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_double(struct soap*, const char*, int, const double *, const char*); +SOAP_FMAC3 double * SOAP_FMAC4 soap_in_double(struct soap*, const char*, double *, const char*); + +#define soap_write_double(soap, data) ( soap_begin_send(soap) || interswitch::soap_put_double(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_double(struct soap*, const double *, const char*, const char*); + +#define soap_read_double(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_double(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 double * SOAP_FMAC4 soap_get_double(struct soap*, double *, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_xsd__unsignedByte +#define SOAP_TYPE_interswitch_xsd__unsignedByte (44) +#endif + +#define soap_default_xsd__unsignedByte(soap, a) soap_default_unsignedByte(soap, a) + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__unsignedByte(struct soap*, const char*, int, const unsigned char *, const char*); +SOAP_FMAC3 unsigned char * SOAP_FMAC4 soap_in_xsd__unsignedByte(struct soap*, const char*, unsigned char *, const char*); + +#define soap_write_xsd__unsignedByte(soap, data) ( soap_begin_send(soap) || interswitch::soap_put_xsd__unsignedByte(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__unsignedByte(struct soap*, const unsigned char *, const char*, const char*); + +#define soap_read_xsd__unsignedByte(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__unsignedByte(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 unsigned char * SOAP_FMAC4 soap_get_xsd__unsignedByte(struct soap*, unsigned char *, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_unsignedByte +#define SOAP_TYPE_interswitch_unsignedByte (21) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_unsignedByte(struct soap*, unsigned char *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_unsignedByte(struct soap*, const char*, int, const unsigned char *, const char*); +SOAP_FMAC3 unsigned char * SOAP_FMAC4 soap_in_unsignedByte(struct soap*, const char*, unsigned char *, const char*); + +#define soap_write_unsignedByte(soap, data) ( soap_begin_send(soap) || interswitch::soap_put_unsignedByte(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_unsignedByte(struct soap*, const unsigned char *, const char*, const char*); + +#define soap_read_unsignedByte(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_unsignedByte(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 unsigned char * SOAP_FMAC4 soap_get_unsignedByte(struct soap*, unsigned char *, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_unsignedShort +#define SOAP_TYPE_interswitch_unsignedShort (50) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_unsignedShort(struct soap*, unsigned short *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_unsignedShort(struct soap*, const char*, int, const unsigned short *, const char*); +SOAP_FMAC3 unsigned short * SOAP_FMAC4 soap_in_unsignedShort(struct soap*, const char*, unsigned short *, const char*); + +#define soap_write_unsignedShort(soap, data) ( soap_begin_send(soap) || interswitch::soap_put_unsignedShort(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_unsignedShort(struct soap*, const unsigned short *, const char*, const char*); + +#define soap_read_unsignedShort(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_unsignedShort(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 unsigned short * SOAP_FMAC4 soap_get_unsignedShort(struct soap*, unsigned short *, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_unsignedInt +#define SOAP_TYPE_interswitch_unsignedInt (20) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_unsignedInt(struct soap*, unsigned int *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_unsignedInt(struct soap*, const char*, int, const unsigned int *, const char*); +SOAP_FMAC3 unsigned int * SOAP_FMAC4 soap_in_unsignedInt(struct soap*, const char*, unsigned int *, const char*); + +#define soap_write_unsignedInt(soap, data) ( soap_begin_send(soap) || interswitch::soap_put_unsignedInt(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_unsignedInt(struct soap*, const unsigned int *, const char*, const char*); + +#define soap_read_unsignedInt(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_unsignedInt(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 unsigned int * SOAP_FMAC4 soap_get_unsignedInt(struct soap*, unsigned int *, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_unsignedLONG64 +#define SOAP_TYPE_interswitch_unsignedLONG64 (48) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_unsignedLONG64(struct soap*, ULONG64 *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_unsignedLONG64(struct soap*, const char*, int, const ULONG64 *, const char*); +SOAP_FMAC3 ULONG64 * SOAP_FMAC4 soap_in_unsignedLONG64(struct soap*, const char*, ULONG64 *, const char*); + +#define soap_write_unsignedLONG64(soap, data) ( soap_begin_send(soap) || interswitch::soap_put_unsignedLONG64(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_unsignedLONG64(struct soap*, const ULONG64 *, const char*, const char*); + +#define soap_read_unsignedLONG64(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_unsignedLONG64(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 ULONG64 * SOAP_FMAC4 soap_get_unsignedLONG64(struct soap*, ULONG64 *, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_time +#define SOAP_TYPE_interswitch_time (29) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_time(struct soap*, time_t *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_time(struct soap*, const char*, int, const time_t *, const char*); +SOAP_FMAC3 time_t * SOAP_FMAC4 soap_in_time(struct soap*, const char*, time_t *, const char*); + +#define soap_write_time(soap, data) ( soap_begin_send(soap) || interswitch::soap_put_time(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_time(struct soap*, const time_t *, const char*, const char*); + +#define soap_read_time(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_time(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 time_t * SOAP_FMAC4 soap_get_time(struct soap*, time_t *, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_bool +#define SOAP_TYPE_interswitch_bool (25) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_bool(struct soap*, bool *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_bool(struct soap*, const char*, int, const bool *, const char*); + +SOAP_FMAC3S const char* SOAP_FMAC4S soap_bool2s(struct soap*, bool); +SOAP_FMAC3 bool * SOAP_FMAC4 soap_in_bool(struct soap*, const char*, bool *, const char*); + +SOAP_FMAC3S int SOAP_FMAC4S soap_s2bool(struct soap*, const char*, bool *); + +#define soap_write_bool(soap, data) ( soap_begin_send(soap) || interswitch::soap_put_bool(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_bool(struct soap*, const bool *, const char*, const char*); + +#define soap_read_bool(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_bool(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 bool * SOAP_FMAC4 soap_get_bool(struct soap*, bool *, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_interswitch2__guid__ +#define SOAP_TYPE_interswitch_interswitch2__guid__ (134) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_interswitch2__guid__(struct soap*, const char*, int, const interswitch2__guid__ *, const char*); +SOAP_FMAC3 interswitch2__guid__ * SOAP_FMAC4 soap_in_interswitch2__guid__(struct soap*, const char*, interswitch2__guid__ *, const char*); + +#define soap_write_interswitch2__guid__(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_interswitch2__guid__(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_interswitch2__guid__(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 interswitch2__guid__ * SOAP_FMAC4 soap_get_interswitch2__guid__(struct soap*, interswitch2__guid__ *, const char*, const char*); + +#define soap_new_interswitch2__guid__(soap, n) soap_instantiate_interswitch2__guid__(soap, n, NULL, NULL, NULL) + + +#define soap_delete_interswitch2__guid__(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 interswitch2__guid__ * SOAP_FMAC2 soap_instantiate_interswitch2__guid__(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_interswitch2__guid__(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_interswitch2__guid +#define SOAP_TYPE_interswitch_interswitch2__guid (133) +#endif + +#define soap_default_interswitch2__guid(soap, a) soap_default_std__string(soap, a) + + +#define soap_serialize_interswitch2__guid(soap, a) soap_serialize_std__string(soap, a) + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_interswitch2__guid(struct soap*, const char*, int, const std::string*, const char*); +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_interswitch2__guid(struct soap*, const char*, std::string*, const char*); + +#define soap_write_interswitch2__guid(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_interswitch2__guid(struct soap*, const std::string *, const char*, const char*); + +#define soap_read_interswitch2__guid(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_interswitch2__guid(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_interswitch2__guid(struct soap*, std::string *, const char*, const char*); + +#define soap_new_interswitch2__guid(soap, n) soap_instantiate_interswitch2__guid(soap, n, NULL, NULL, NULL) + + +#define soap_delete_interswitch2__guid(soap, p) soap_delete(soap, p) + + +#define soap_instantiate_interswitch2__guid soap_instantiate_std__string + + +#define soap_copy_interswitch2__guid soap_copy_std__string + +#ifndef SOAP_TYPE_interswitch_interswitch2__duration__ +#define SOAP_TYPE_interswitch_interswitch2__duration__ (132) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_interswitch2__duration__(struct soap*, const char*, int, const interswitch2__duration__ *, const char*); +SOAP_FMAC3 interswitch2__duration__ * SOAP_FMAC4 soap_in_interswitch2__duration__(struct soap*, const char*, interswitch2__duration__ *, const char*); + +#define soap_write_interswitch2__duration__(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_interswitch2__duration__(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_interswitch2__duration__(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 interswitch2__duration__ * SOAP_FMAC4 soap_get_interswitch2__duration__(struct soap*, interswitch2__duration__ *, const char*, const char*); + +#define soap_new_interswitch2__duration__(soap, n) soap_instantiate_interswitch2__duration__(soap, n, NULL, NULL, NULL) + + +#define soap_delete_interswitch2__duration__(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 interswitch2__duration__ * SOAP_FMAC2 soap_instantiate_interswitch2__duration__(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_interswitch2__duration__(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_interswitch2__duration +#define SOAP_TYPE_interswitch_interswitch2__duration (131) +#endif + +#define soap_default_interswitch2__duration(soap, a) soap_default_std__string(soap, a) + + +#define soap_serialize_interswitch2__duration(soap, a) soap_serialize_std__string(soap, a) + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_interswitch2__duration(struct soap*, const char*, int, const std::string*, const char*); +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_interswitch2__duration(struct soap*, const char*, std::string*, const char*); + +#define soap_write_interswitch2__duration(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_interswitch2__duration(struct soap*, const std::string *, const char*, const char*); + +#define soap_read_interswitch2__duration(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_interswitch2__duration(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_interswitch2__duration(struct soap*, std::string *, const char*, const char*); + +#define soap_new_interswitch2__duration(soap, n) soap_instantiate_interswitch2__duration(soap, n, NULL, NULL, NULL) + + +#define soap_delete_interswitch2__duration(soap, p) soap_delete(soap, p) + + +#define soap_instantiate_interswitch2__duration soap_instantiate_std__string + + +#define soap_copy_interswitch2__duration soap_copy_std__string + +#ifndef SOAP_TYPE_interswitch_interswitch2__char__ +#define SOAP_TYPE_interswitch_interswitch2__char__ (130) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_interswitch2__char__(struct soap*, const char*, int, const interswitch2__char__ *, const char*); +SOAP_FMAC3 interswitch2__char__ * SOAP_FMAC4 soap_in_interswitch2__char__(struct soap*, const char*, interswitch2__char__ *, const char*); + +#define soap_write_interswitch2__char__(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_interswitch2__char__(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_interswitch2__char__(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 interswitch2__char__ * SOAP_FMAC4 soap_get_interswitch2__char__(struct soap*, interswitch2__char__ *, const char*, const char*); + +#define soap_new_interswitch2__char__(soap, n) soap_instantiate_interswitch2__char__(soap, n, NULL, NULL, NULL) + + +#define soap_delete_interswitch2__char__(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 interswitch2__char__ * SOAP_FMAC2 soap_instantiate_interswitch2__char__(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_interswitch2__char__(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse +#define SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse (128) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__VerifyBillerResponse(struct soap*, const char*, int, const _interswitch__VerifyBillerResponse *, const char*); +SOAP_FMAC3 _interswitch__VerifyBillerResponse * SOAP_FMAC4 soap_in__interswitch__VerifyBillerResponse(struct soap*, const char*, _interswitch__VerifyBillerResponse *, const char*); + +#define soap_write__interswitch__VerifyBillerResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__VerifyBillerResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__VerifyBillerResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__VerifyBillerResponse * SOAP_FMAC4 soap_get__interswitch__VerifyBillerResponse(struct soap*, _interswitch__VerifyBillerResponse *, const char*, const char*); + +#define soap_new__interswitch__VerifyBillerResponse(soap, n) soap_instantiate__interswitch__VerifyBillerResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__VerifyBillerResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__VerifyBillerResponse * SOAP_FMAC2 soap_instantiate__interswitch__VerifyBillerResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__VerifyBillerResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__VerifyBiller +#define SOAP_TYPE_interswitch__interswitch__VerifyBiller (127) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__VerifyBiller(struct soap*, const char*, int, const _interswitch__VerifyBiller *, const char*); +SOAP_FMAC3 _interswitch__VerifyBiller * SOAP_FMAC4 soap_in__interswitch__VerifyBiller(struct soap*, const char*, _interswitch__VerifyBiller *, const char*); + +#define soap_write__interswitch__VerifyBiller(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__VerifyBiller(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__VerifyBiller(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__VerifyBiller * SOAP_FMAC4 soap_get__interswitch__VerifyBiller(struct soap*, _interswitch__VerifyBiller *, const char*, const char*); + +#define soap_new__interswitch__VerifyBiller(soap, n) soap_instantiate__interswitch__VerifyBiller(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__VerifyBiller(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__VerifyBiller * SOAP_FMAC2 soap_instantiate__interswitch__VerifyBiller(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__VerifyBiller(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__CreateBillerResponse +#define SOAP_TYPE_interswitch__interswitch__CreateBillerResponse (126) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__CreateBillerResponse(struct soap*, const char*, int, const _interswitch__CreateBillerResponse *, const char*); +SOAP_FMAC3 _interswitch__CreateBillerResponse * SOAP_FMAC4 soap_in__interswitch__CreateBillerResponse(struct soap*, const char*, _interswitch__CreateBillerResponse *, const char*); + +#define soap_write__interswitch__CreateBillerResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__CreateBillerResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__CreateBillerResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__CreateBillerResponse * SOAP_FMAC4 soap_get__interswitch__CreateBillerResponse(struct soap*, _interswitch__CreateBillerResponse *, const char*, const char*); + +#define soap_new__interswitch__CreateBillerResponse(soap, n) soap_instantiate__interswitch__CreateBillerResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__CreateBillerResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__CreateBillerResponse * SOAP_FMAC2 soap_instantiate__interswitch__CreateBillerResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__CreateBillerResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__CreateBiller +#define SOAP_TYPE_interswitch__interswitch__CreateBiller (125) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__CreateBiller(struct soap*, const char*, int, const _interswitch__CreateBiller *, const char*); +SOAP_FMAC3 _interswitch__CreateBiller * SOAP_FMAC4 soap_in__interswitch__CreateBiller(struct soap*, const char*, _interswitch__CreateBiller *, const char*); + +#define soap_write__interswitch__CreateBiller(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__CreateBiller(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__CreateBiller(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__CreateBiller * SOAP_FMAC4 soap_get__interswitch__CreateBiller(struct soap*, _interswitch__CreateBiller *, const char*, const char*); + +#define soap_new__interswitch__CreateBiller(soap, n) soap_instantiate__interswitch__CreateBiller(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__CreateBiller(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__CreateBiller * SOAP_FMAC2 soap_instantiate__interswitch__CreateBiller(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__CreateBiller(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse +#define SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse (124) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__DoCustomProcessingResponse(struct soap*, const char*, int, const _interswitch__DoCustomProcessingResponse *, const char*); +SOAP_FMAC3 _interswitch__DoCustomProcessingResponse * SOAP_FMAC4 soap_in__interswitch__DoCustomProcessingResponse(struct soap*, const char*, _interswitch__DoCustomProcessingResponse *, const char*); + +#define soap_write__interswitch__DoCustomProcessingResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__DoCustomProcessingResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__DoCustomProcessingResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__DoCustomProcessingResponse * SOAP_FMAC4 soap_get__interswitch__DoCustomProcessingResponse(struct soap*, _interswitch__DoCustomProcessingResponse *, const char*, const char*); + +#define soap_new__interswitch__DoCustomProcessingResponse(soap, n) soap_instantiate__interswitch__DoCustomProcessingResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__DoCustomProcessingResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__DoCustomProcessingResponse * SOAP_FMAC2 soap_instantiate__interswitch__DoCustomProcessingResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__DoCustomProcessingResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__DoCustomProcessing +#define SOAP_TYPE_interswitch__interswitch__DoCustomProcessing (123) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__DoCustomProcessing(struct soap*, const char*, int, const _interswitch__DoCustomProcessing *, const char*); +SOAP_FMAC3 _interswitch__DoCustomProcessing * SOAP_FMAC4 soap_in__interswitch__DoCustomProcessing(struct soap*, const char*, _interswitch__DoCustomProcessing *, const char*); + +#define soap_write__interswitch__DoCustomProcessing(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__DoCustomProcessing(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__DoCustomProcessing(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__DoCustomProcessing * SOAP_FMAC4 soap_get__interswitch__DoCustomProcessing(struct soap*, _interswitch__DoCustomProcessing *, const char*, const char*); + +#define soap_new__interswitch__DoCustomProcessing(soap, n) soap_instantiate__interswitch__DoCustomProcessing(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__DoCustomProcessing(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__DoCustomProcessing * SOAP_FMAC2 soap_instantiate__interswitch__DoCustomProcessing(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__DoCustomProcessing(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse +#define SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse (122) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ResendActivationTokenResponse(struct soap*, const char*, int, const _interswitch__ResendActivationTokenResponse *, const char*); +SOAP_FMAC3 _interswitch__ResendActivationTokenResponse * SOAP_FMAC4 soap_in__interswitch__ResendActivationTokenResponse(struct soap*, const char*, _interswitch__ResendActivationTokenResponse *, const char*); + +#define soap_write__interswitch__ResendActivationTokenResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__ResendActivationTokenResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__ResendActivationTokenResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ResendActivationTokenResponse * SOAP_FMAC4 soap_get__interswitch__ResendActivationTokenResponse(struct soap*, _interswitch__ResendActivationTokenResponse *, const char*, const char*); + +#define soap_new__interswitch__ResendActivationTokenResponse(soap, n) soap_instantiate__interswitch__ResendActivationTokenResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__ResendActivationTokenResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__ResendActivationTokenResponse * SOAP_FMAC2 soap_instantiate__interswitch__ResendActivationTokenResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ResendActivationTokenResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__ResendActivationToken +#define SOAP_TYPE_interswitch__interswitch__ResendActivationToken (121) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ResendActivationToken(struct soap*, const char*, int, const _interswitch__ResendActivationToken *, const char*); +SOAP_FMAC3 _interswitch__ResendActivationToken * SOAP_FMAC4 soap_in__interswitch__ResendActivationToken(struct soap*, const char*, _interswitch__ResendActivationToken *, const char*); + +#define soap_write__interswitch__ResendActivationToken(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__ResendActivationToken(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__ResendActivationToken(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ResendActivationToken * SOAP_FMAC4 soap_get__interswitch__ResendActivationToken(struct soap*, _interswitch__ResendActivationToken *, const char*, const char*); + +#define soap_new__interswitch__ResendActivationToken(soap, n) soap_instantiate__interswitch__ResendActivationToken(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__ResendActivationToken(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__ResendActivationToken * SOAP_FMAC2 soap_instantiate__interswitch__ResendActivationToken(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ResendActivationToken(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse +#define SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse (120) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__EditCustomerBillerAccountResponse(struct soap*, const char*, int, const _interswitch__EditCustomerBillerAccountResponse *, const char*); +SOAP_FMAC3 _interswitch__EditCustomerBillerAccountResponse * SOAP_FMAC4 soap_in__interswitch__EditCustomerBillerAccountResponse(struct soap*, const char*, _interswitch__EditCustomerBillerAccountResponse *, const char*); + +#define soap_write__interswitch__EditCustomerBillerAccountResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__EditCustomerBillerAccountResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__EditCustomerBillerAccountResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__EditCustomerBillerAccountResponse * SOAP_FMAC4 soap_get__interswitch__EditCustomerBillerAccountResponse(struct soap*, _interswitch__EditCustomerBillerAccountResponse *, const char*, const char*); + +#define soap_new__interswitch__EditCustomerBillerAccountResponse(soap, n) soap_instantiate__interswitch__EditCustomerBillerAccountResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__EditCustomerBillerAccountResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__EditCustomerBillerAccountResponse * SOAP_FMAC2 soap_instantiate__interswitch__EditCustomerBillerAccountResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__EditCustomerBillerAccountResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount +#define SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount (119) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__EditCustomerBillerAccount(struct soap*, const char*, int, const _interswitch__EditCustomerBillerAccount *, const char*); +SOAP_FMAC3 _interswitch__EditCustomerBillerAccount * SOAP_FMAC4 soap_in__interswitch__EditCustomerBillerAccount(struct soap*, const char*, _interswitch__EditCustomerBillerAccount *, const char*); + +#define soap_write__interswitch__EditCustomerBillerAccount(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__EditCustomerBillerAccount(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__EditCustomerBillerAccount(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__EditCustomerBillerAccount * SOAP_FMAC4 soap_get__interswitch__EditCustomerBillerAccount(struct soap*, _interswitch__EditCustomerBillerAccount *, const char*, const char*); + +#define soap_new__interswitch__EditCustomerBillerAccount(soap, n) soap_instantiate__interswitch__EditCustomerBillerAccount(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__EditCustomerBillerAccount(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__EditCustomerBillerAccount * SOAP_FMAC2 soap_instantiate__interswitch__EditCustomerBillerAccount(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__EditCustomerBillerAccount(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse +#define SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse (118) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetBillersCollectionsAccountResponse(struct soap*, const char*, int, const _interswitch__GetBillersCollectionsAccountResponse *, const char*); +SOAP_FMAC3 _interswitch__GetBillersCollectionsAccountResponse * SOAP_FMAC4 soap_in__interswitch__GetBillersCollectionsAccountResponse(struct soap*, const char*, _interswitch__GetBillersCollectionsAccountResponse *, const char*); + +#define soap_write__interswitch__GetBillersCollectionsAccountResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetBillersCollectionsAccountResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetBillersCollectionsAccountResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetBillersCollectionsAccountResponse * SOAP_FMAC4 soap_get__interswitch__GetBillersCollectionsAccountResponse(struct soap*, _interswitch__GetBillersCollectionsAccountResponse *, const char*, const char*); + +#define soap_new__interswitch__GetBillersCollectionsAccountResponse(soap, n) soap_instantiate__interswitch__GetBillersCollectionsAccountResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetBillersCollectionsAccountResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetBillersCollectionsAccountResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetBillersCollectionsAccountResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetBillersCollectionsAccountResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount +#define SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount (117) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetBillersCollectionsAccount(struct soap*, const char*, int, const _interswitch__GetBillersCollectionsAccount *, const char*); +SOAP_FMAC3 _interswitch__GetBillersCollectionsAccount * SOAP_FMAC4 soap_in__interswitch__GetBillersCollectionsAccount(struct soap*, const char*, _interswitch__GetBillersCollectionsAccount *, const char*); + +#define soap_write__interswitch__GetBillersCollectionsAccount(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetBillersCollectionsAccount(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetBillersCollectionsAccount(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetBillersCollectionsAccount * SOAP_FMAC4 soap_get__interswitch__GetBillersCollectionsAccount(struct soap*, _interswitch__GetBillersCollectionsAccount *, const char*, const char*); + +#define soap_new__interswitch__GetBillersCollectionsAccount(soap, n) soap_instantiate__interswitch__GetBillersCollectionsAccount(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetBillersCollectionsAccount(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetBillersCollectionsAccount * SOAP_FMAC2 soap_instantiate__interswitch__GetBillersCollectionsAccount(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetBillersCollectionsAccount(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse +#define SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse (116) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetCollectionsAccountResponse(struct soap*, const char*, int, const _interswitch__GetCollectionsAccountResponse *, const char*); +SOAP_FMAC3 _interswitch__GetCollectionsAccountResponse * SOAP_FMAC4 soap_in__interswitch__GetCollectionsAccountResponse(struct soap*, const char*, _interswitch__GetCollectionsAccountResponse *, const char*); + +#define soap_write__interswitch__GetCollectionsAccountResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetCollectionsAccountResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetCollectionsAccountResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetCollectionsAccountResponse * SOAP_FMAC4 soap_get__interswitch__GetCollectionsAccountResponse(struct soap*, _interswitch__GetCollectionsAccountResponse *, const char*, const char*); + +#define soap_new__interswitch__GetCollectionsAccountResponse(soap, n) soap_instantiate__interswitch__GetCollectionsAccountResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetCollectionsAccountResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetCollectionsAccountResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetCollectionsAccountResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetCollectionsAccountResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount +#define SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount (115) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetCollectionsAccount(struct soap*, const char*, int, const _interswitch__GetCollectionsAccount *, const char*); +SOAP_FMAC3 _interswitch__GetCollectionsAccount * SOAP_FMAC4 soap_in__interswitch__GetCollectionsAccount(struct soap*, const char*, _interswitch__GetCollectionsAccount *, const char*); + +#define soap_write__interswitch__GetCollectionsAccount(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetCollectionsAccount(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetCollectionsAccount(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetCollectionsAccount * SOAP_FMAC4 soap_get__interswitch__GetCollectionsAccount(struct soap*, _interswitch__GetCollectionsAccount *, const char*, const char*); + +#define soap_new__interswitch__GetCollectionsAccount(soap, n) soap_instantiate__interswitch__GetCollectionsAccount(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetCollectionsAccount(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetCollectionsAccount * SOAP_FMAC2 soap_instantiate__interswitch__GetCollectionsAccount(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetCollectionsAccount(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse +#define SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse (114) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AddBillerCustomerResponse(struct soap*, const char*, int, const _interswitch__AddBillerCustomerResponse *, const char*); +SOAP_FMAC3 _interswitch__AddBillerCustomerResponse * SOAP_FMAC4 soap_in__interswitch__AddBillerCustomerResponse(struct soap*, const char*, _interswitch__AddBillerCustomerResponse *, const char*); + +#define soap_write__interswitch__AddBillerCustomerResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__AddBillerCustomerResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__AddBillerCustomerResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AddBillerCustomerResponse * SOAP_FMAC4 soap_get__interswitch__AddBillerCustomerResponse(struct soap*, _interswitch__AddBillerCustomerResponse *, const char*, const char*); + +#define soap_new__interswitch__AddBillerCustomerResponse(soap, n) soap_instantiate__interswitch__AddBillerCustomerResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__AddBillerCustomerResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__AddBillerCustomerResponse * SOAP_FMAC2 soap_instantiate__interswitch__AddBillerCustomerResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AddBillerCustomerResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__AddBillerCustomer +#define SOAP_TYPE_interswitch__interswitch__AddBillerCustomer (113) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AddBillerCustomer(struct soap*, const char*, int, const _interswitch__AddBillerCustomer *, const char*); +SOAP_FMAC3 _interswitch__AddBillerCustomer * SOAP_FMAC4 soap_in__interswitch__AddBillerCustomer(struct soap*, const char*, _interswitch__AddBillerCustomer *, const char*); + +#define soap_write__interswitch__AddBillerCustomer(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__AddBillerCustomer(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__AddBillerCustomer(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AddBillerCustomer * SOAP_FMAC4 soap_get__interswitch__AddBillerCustomer(struct soap*, _interswitch__AddBillerCustomer *, const char*, const char*); + +#define soap_new__interswitch__AddBillerCustomer(soap, n) soap_instantiate__interswitch__AddBillerCustomer(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__AddBillerCustomer(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__AddBillerCustomer * SOAP_FMAC2 soap_instantiate__interswitch__AddBillerCustomer(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AddBillerCustomer(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse +#define SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse (112) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetCustomerPaymentsResponse(struct soap*, const char*, int, const _interswitch__GetCustomerPaymentsResponse *, const char*); +SOAP_FMAC3 _interswitch__GetCustomerPaymentsResponse * SOAP_FMAC4 soap_in__interswitch__GetCustomerPaymentsResponse(struct soap*, const char*, _interswitch__GetCustomerPaymentsResponse *, const char*); + +#define soap_write__interswitch__GetCustomerPaymentsResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetCustomerPaymentsResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetCustomerPaymentsResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetCustomerPaymentsResponse * SOAP_FMAC4 soap_get__interswitch__GetCustomerPaymentsResponse(struct soap*, _interswitch__GetCustomerPaymentsResponse *, const char*, const char*); + +#define soap_new__interswitch__GetCustomerPaymentsResponse(soap, n) soap_instantiate__interswitch__GetCustomerPaymentsResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetCustomerPaymentsResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetCustomerPaymentsResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetCustomerPaymentsResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetCustomerPaymentsResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetCustomerPayments +#define SOAP_TYPE_interswitch__interswitch__GetCustomerPayments (111) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetCustomerPayments(struct soap*, const char*, int, const _interswitch__GetCustomerPayments *, const char*); +SOAP_FMAC3 _interswitch__GetCustomerPayments * SOAP_FMAC4 soap_in__interswitch__GetCustomerPayments(struct soap*, const char*, _interswitch__GetCustomerPayments *, const char*); + +#define soap_write__interswitch__GetCustomerPayments(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetCustomerPayments(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetCustomerPayments(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetCustomerPayments * SOAP_FMAC4 soap_get__interswitch__GetCustomerPayments(struct soap*, _interswitch__GetCustomerPayments *, const char*, const char*); + +#define soap_new__interswitch__GetCustomerPayments(soap, n) soap_instantiate__interswitch__GetCustomerPayments(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetCustomerPayments(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetCustomerPayments * SOAP_FMAC2 soap_instantiate__interswitch__GetCustomerPayments(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetCustomerPayments(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse +#define SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse (110) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetCustomerBillerAccountsResponse(struct soap*, const char*, int, const _interswitch__GetCustomerBillerAccountsResponse *, const char*); +SOAP_FMAC3 _interswitch__GetCustomerBillerAccountsResponse * SOAP_FMAC4 soap_in__interswitch__GetCustomerBillerAccountsResponse(struct soap*, const char*, _interswitch__GetCustomerBillerAccountsResponse *, const char*); + +#define soap_write__interswitch__GetCustomerBillerAccountsResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetCustomerBillerAccountsResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetCustomerBillerAccountsResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetCustomerBillerAccountsResponse * SOAP_FMAC4 soap_get__interswitch__GetCustomerBillerAccountsResponse(struct soap*, _interswitch__GetCustomerBillerAccountsResponse *, const char*, const char*); + +#define soap_new__interswitch__GetCustomerBillerAccountsResponse(soap, n) soap_instantiate__interswitch__GetCustomerBillerAccountsResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetCustomerBillerAccountsResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetCustomerBillerAccountsResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetCustomerBillerAccountsResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetCustomerBillerAccountsResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts +#define SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts (109) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetCustomerBillerAccounts(struct soap*, const char*, int, const _interswitch__GetCustomerBillerAccounts *, const char*); +SOAP_FMAC3 _interswitch__GetCustomerBillerAccounts * SOAP_FMAC4 soap_in__interswitch__GetCustomerBillerAccounts(struct soap*, const char*, _interswitch__GetCustomerBillerAccounts *, const char*); + +#define soap_write__interswitch__GetCustomerBillerAccounts(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetCustomerBillerAccounts(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetCustomerBillerAccounts(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetCustomerBillerAccounts * SOAP_FMAC4 soap_get__interswitch__GetCustomerBillerAccounts(struct soap*, _interswitch__GetCustomerBillerAccounts *, const char*, const char*); + +#define soap_new__interswitch__GetCustomerBillerAccounts(soap, n) soap_instantiate__interswitch__GetCustomerBillerAccounts(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetCustomerBillerAccounts(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetCustomerBillerAccounts * SOAP_FMAC2 soap_instantiate__interswitch__GetCustomerBillerAccounts(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetCustomerBillerAccounts(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse +#define SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse (108) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AddCustomerBillerAccountResponse(struct soap*, const char*, int, const _interswitch__AddCustomerBillerAccountResponse *, const char*); +SOAP_FMAC3 _interswitch__AddCustomerBillerAccountResponse * SOAP_FMAC4 soap_in__interswitch__AddCustomerBillerAccountResponse(struct soap*, const char*, _interswitch__AddCustomerBillerAccountResponse *, const char*); + +#define soap_write__interswitch__AddCustomerBillerAccountResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__AddCustomerBillerAccountResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__AddCustomerBillerAccountResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AddCustomerBillerAccountResponse * SOAP_FMAC4 soap_get__interswitch__AddCustomerBillerAccountResponse(struct soap*, _interswitch__AddCustomerBillerAccountResponse *, const char*, const char*); + +#define soap_new__interswitch__AddCustomerBillerAccountResponse(soap, n) soap_instantiate__interswitch__AddCustomerBillerAccountResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__AddCustomerBillerAccountResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__AddCustomerBillerAccountResponse * SOAP_FMAC2 soap_instantiate__interswitch__AddCustomerBillerAccountResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AddCustomerBillerAccountResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount +#define SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount (107) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AddCustomerBillerAccount(struct soap*, const char*, int, const _interswitch__AddCustomerBillerAccount *, const char*); +SOAP_FMAC3 _interswitch__AddCustomerBillerAccount * SOAP_FMAC4 soap_in__interswitch__AddCustomerBillerAccount(struct soap*, const char*, _interswitch__AddCustomerBillerAccount *, const char*); + +#define soap_write__interswitch__AddCustomerBillerAccount(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__AddCustomerBillerAccount(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__AddCustomerBillerAccount(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AddCustomerBillerAccount * SOAP_FMAC4 soap_get__interswitch__AddCustomerBillerAccount(struct soap*, _interswitch__AddCustomerBillerAccount *, const char*, const char*); + +#define soap_new__interswitch__AddCustomerBillerAccount(soap, n) soap_instantiate__interswitch__AddCustomerBillerAccount(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__AddCustomerBillerAccount(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__AddCustomerBillerAccount * SOAP_FMAC2 soap_instantiate__interswitch__AddCustomerBillerAccount(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AddCustomerBillerAccount(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse +#define SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse (106) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__SendPaymentsResponse(struct soap*, const char*, int, const _interswitch__SendPaymentsResponse *, const char*); +SOAP_FMAC3 _interswitch__SendPaymentsResponse * SOAP_FMAC4 soap_in__interswitch__SendPaymentsResponse(struct soap*, const char*, _interswitch__SendPaymentsResponse *, const char*); + +#define soap_write__interswitch__SendPaymentsResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__SendPaymentsResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__SendPaymentsResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__SendPaymentsResponse * SOAP_FMAC4 soap_get__interswitch__SendPaymentsResponse(struct soap*, _interswitch__SendPaymentsResponse *, const char*, const char*); + +#define soap_new__interswitch__SendPaymentsResponse(soap, n) soap_instantiate__interswitch__SendPaymentsResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__SendPaymentsResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__SendPaymentsResponse * SOAP_FMAC2 soap_instantiate__interswitch__SendPaymentsResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__SendPaymentsResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__SendPayments +#define SOAP_TYPE_interswitch__interswitch__SendPayments (105) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__SendPayments(struct soap*, const char*, int, const _interswitch__SendPayments *, const char*); +SOAP_FMAC3 _interswitch__SendPayments * SOAP_FMAC4 soap_in__interswitch__SendPayments(struct soap*, const char*, _interswitch__SendPayments *, const char*); + +#define soap_write__interswitch__SendPayments(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__SendPayments(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__SendPayments(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__SendPayments * SOAP_FMAC4 soap_get__interswitch__SendPayments(struct soap*, _interswitch__SendPayments *, const char*, const char*); + +#define soap_new__interswitch__SendPayments(soap, n) soap_instantiate__interswitch__SendPayments(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__SendPayments(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__SendPayments * SOAP_FMAC2 soap_instantiate__interswitch__SendPayments(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__SendPayments(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse +#define SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse (104) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__SendBillPaymentAdviceResponse(struct soap*, const char*, int, const _interswitch__SendBillPaymentAdviceResponse *, const char*); +SOAP_FMAC3 _interswitch__SendBillPaymentAdviceResponse * SOAP_FMAC4 soap_in__interswitch__SendBillPaymentAdviceResponse(struct soap*, const char*, _interswitch__SendBillPaymentAdviceResponse *, const char*); + +#define soap_write__interswitch__SendBillPaymentAdviceResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__SendBillPaymentAdviceResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__SendBillPaymentAdviceResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__SendBillPaymentAdviceResponse * SOAP_FMAC4 soap_get__interswitch__SendBillPaymentAdviceResponse(struct soap*, _interswitch__SendBillPaymentAdviceResponse *, const char*, const char*); + +#define soap_new__interswitch__SendBillPaymentAdviceResponse(soap, n) soap_instantiate__interswitch__SendBillPaymentAdviceResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__SendBillPaymentAdviceResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__SendBillPaymentAdviceResponse * SOAP_FMAC2 soap_instantiate__interswitch__SendBillPaymentAdviceResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__SendBillPaymentAdviceResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice +#define SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice (103) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__SendBillPaymentAdvice(struct soap*, const char*, int, const _interswitch__SendBillPaymentAdvice *, const char*); +SOAP_FMAC3 _interswitch__SendBillPaymentAdvice * SOAP_FMAC4 soap_in__interswitch__SendBillPaymentAdvice(struct soap*, const char*, _interswitch__SendBillPaymentAdvice *, const char*); + +#define soap_write__interswitch__SendBillPaymentAdvice(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__SendBillPaymentAdvice(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__SendBillPaymentAdvice(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__SendBillPaymentAdvice * SOAP_FMAC4 soap_get__interswitch__SendBillPaymentAdvice(struct soap*, _interswitch__SendBillPaymentAdvice *, const char*, const char*); + +#define soap_new__interswitch__SendBillPaymentAdvice(soap, n) soap_instantiate__interswitch__SendBillPaymentAdvice(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__SendBillPaymentAdvice(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__SendBillPaymentAdvice * SOAP_FMAC2 soap_instantiate__interswitch__SendBillPaymentAdvice(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__SendBillPaymentAdvice(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse +#define SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse (102) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthenticateCustomerResponse(struct soap*, const char*, int, const _interswitch__AuthenticateCustomerResponse *, const char*); +SOAP_FMAC3 _interswitch__AuthenticateCustomerResponse * SOAP_FMAC4 soap_in__interswitch__AuthenticateCustomerResponse(struct soap*, const char*, _interswitch__AuthenticateCustomerResponse *, const char*); + +#define soap_write__interswitch__AuthenticateCustomerResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__AuthenticateCustomerResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__AuthenticateCustomerResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthenticateCustomerResponse * SOAP_FMAC4 soap_get__interswitch__AuthenticateCustomerResponse(struct soap*, _interswitch__AuthenticateCustomerResponse *, const char*, const char*); + +#define soap_new__interswitch__AuthenticateCustomerResponse(soap, n) soap_instantiate__interswitch__AuthenticateCustomerResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__AuthenticateCustomerResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__AuthenticateCustomerResponse * SOAP_FMAC2 soap_instantiate__interswitch__AuthenticateCustomerResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthenticateCustomerResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer +#define SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer (101) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthenticateCustomer(struct soap*, const char*, int, const _interswitch__AuthenticateCustomer *, const char*); +SOAP_FMAC3 _interswitch__AuthenticateCustomer * SOAP_FMAC4 soap_in__interswitch__AuthenticateCustomer(struct soap*, const char*, _interswitch__AuthenticateCustomer *, const char*); + +#define soap_write__interswitch__AuthenticateCustomer(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__AuthenticateCustomer(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__AuthenticateCustomer(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthenticateCustomer * SOAP_FMAC4 soap_get__interswitch__AuthenticateCustomer(struct soap*, _interswitch__AuthenticateCustomer *, const char*, const char*); + +#define soap_new__interswitch__AuthenticateCustomer(soap, n) soap_instantiate__interswitch__AuthenticateCustomer(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__AuthenticateCustomer(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__AuthenticateCustomer * SOAP_FMAC2 soap_instantiate__interswitch__AuthenticateCustomer(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthenticateCustomer(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse +#define SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse (100) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__DoBillPaymentInquiryResponse(struct soap*, const char*, int, const _interswitch__DoBillPaymentInquiryResponse *, const char*); +SOAP_FMAC3 _interswitch__DoBillPaymentInquiryResponse * SOAP_FMAC4 soap_in__interswitch__DoBillPaymentInquiryResponse(struct soap*, const char*, _interswitch__DoBillPaymentInquiryResponse *, const char*); + +#define soap_write__interswitch__DoBillPaymentInquiryResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__DoBillPaymentInquiryResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__DoBillPaymentInquiryResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__DoBillPaymentInquiryResponse * SOAP_FMAC4 soap_get__interswitch__DoBillPaymentInquiryResponse(struct soap*, _interswitch__DoBillPaymentInquiryResponse *, const char*, const char*); + +#define soap_new__interswitch__DoBillPaymentInquiryResponse(soap, n) soap_instantiate__interswitch__DoBillPaymentInquiryResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__DoBillPaymentInquiryResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__DoBillPaymentInquiryResponse * SOAP_FMAC2 soap_instantiate__interswitch__DoBillPaymentInquiryResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__DoBillPaymentInquiryResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry +#define SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry (99) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__DoBillPaymentInquiry(struct soap*, const char*, int, const _interswitch__DoBillPaymentInquiry *, const char*); +SOAP_FMAC3 _interswitch__DoBillPaymentInquiry * SOAP_FMAC4 soap_in__interswitch__DoBillPaymentInquiry(struct soap*, const char*, _interswitch__DoBillPaymentInquiry *, const char*); + +#define soap_write__interswitch__DoBillPaymentInquiry(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__DoBillPaymentInquiry(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__DoBillPaymentInquiry(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__DoBillPaymentInquiry * SOAP_FMAC4 soap_get__interswitch__DoBillPaymentInquiry(struct soap*, _interswitch__DoBillPaymentInquiry *, const char*, const char*); + +#define soap_new__interswitch__DoBillPaymentInquiry(soap, n) soap_instantiate__interswitch__DoBillPaymentInquiry(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__DoBillPaymentInquiry(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__DoBillPaymentInquiry * SOAP_FMAC2 soap_instantiate__interswitch__DoBillPaymentInquiry(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__DoBillPaymentInquiry(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse +#define SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse (98) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetBillerCategoriesResponse(struct soap*, const char*, int, const _interswitch__GetBillerCategoriesResponse *, const char*); +SOAP_FMAC3 _interswitch__GetBillerCategoriesResponse * SOAP_FMAC4 soap_in__interswitch__GetBillerCategoriesResponse(struct soap*, const char*, _interswitch__GetBillerCategoriesResponse *, const char*); + +#define soap_write__interswitch__GetBillerCategoriesResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetBillerCategoriesResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetBillerCategoriesResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetBillerCategoriesResponse * SOAP_FMAC4 soap_get__interswitch__GetBillerCategoriesResponse(struct soap*, _interswitch__GetBillerCategoriesResponse *, const char*, const char*); + +#define soap_new__interswitch__GetBillerCategoriesResponse(soap, n) soap_instantiate__interswitch__GetBillerCategoriesResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetBillerCategoriesResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetBillerCategoriesResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetBillerCategoriesResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetBillerCategoriesResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetBillerCategories +#define SOAP_TYPE_interswitch__interswitch__GetBillerCategories (97) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetBillerCategories(struct soap*, const char*, int, const _interswitch__GetBillerCategories *, const char*); +SOAP_FMAC3 _interswitch__GetBillerCategories * SOAP_FMAC4 soap_in__interswitch__GetBillerCategories(struct soap*, const char*, _interswitch__GetBillerCategories *, const char*); + +#define soap_write__interswitch__GetBillerCategories(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetBillerCategories(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetBillerCategories(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetBillerCategories * SOAP_FMAC4 soap_get__interswitch__GetBillerCategories(struct soap*, _interswitch__GetBillerCategories *, const char*, const char*); + +#define soap_new__interswitch__GetBillerCategories(soap, n) soap_instantiate__interswitch__GetBillerCategories(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetBillerCategories(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetBillerCategories * SOAP_FMAC2 soap_instantiate__interswitch__GetBillerCategories(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetBillerCategories(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse +#define SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse (96) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetBillerPaymentItemsResponse(struct soap*, const char*, int, const _interswitch__GetBillerPaymentItemsResponse *, const char*); +SOAP_FMAC3 _interswitch__GetBillerPaymentItemsResponse * SOAP_FMAC4 soap_in__interswitch__GetBillerPaymentItemsResponse(struct soap*, const char*, _interswitch__GetBillerPaymentItemsResponse *, const char*); + +#define soap_write__interswitch__GetBillerPaymentItemsResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetBillerPaymentItemsResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetBillerPaymentItemsResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetBillerPaymentItemsResponse * SOAP_FMAC4 soap_get__interswitch__GetBillerPaymentItemsResponse(struct soap*, _interswitch__GetBillerPaymentItemsResponse *, const char*, const char*); + +#define soap_new__interswitch__GetBillerPaymentItemsResponse(soap, n) soap_instantiate__interswitch__GetBillerPaymentItemsResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetBillerPaymentItemsResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetBillerPaymentItemsResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetBillerPaymentItemsResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetBillerPaymentItemsResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems +#define SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems (95) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetBillerPaymentItems(struct soap*, const char*, int, const _interswitch__GetBillerPaymentItems *, const char*); +SOAP_FMAC3 _interswitch__GetBillerPaymentItems * SOAP_FMAC4 soap_in__interswitch__GetBillerPaymentItems(struct soap*, const char*, _interswitch__GetBillerPaymentItems *, const char*); + +#define soap_write__interswitch__GetBillerPaymentItems(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetBillerPaymentItems(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetBillerPaymentItems(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetBillerPaymentItems * SOAP_FMAC4 soap_get__interswitch__GetBillerPaymentItems(struct soap*, _interswitch__GetBillerPaymentItems *, const char*, const char*); + +#define soap_new__interswitch__GetBillerPaymentItems(soap, n) soap_instantiate__interswitch__GetBillerPaymentItems(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetBillerPaymentItems(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetBillerPaymentItems * SOAP_FMAC2 soap_instantiate__interswitch__GetBillerPaymentItems(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetBillerPaymentItems(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse +#define SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse (94) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetFeaturedBillersResponse(struct soap*, const char*, int, const _interswitch__GetFeaturedBillersResponse *, const char*); +SOAP_FMAC3 _interswitch__GetFeaturedBillersResponse * SOAP_FMAC4 soap_in__interswitch__GetFeaturedBillersResponse(struct soap*, const char*, _interswitch__GetFeaturedBillersResponse *, const char*); + +#define soap_write__interswitch__GetFeaturedBillersResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetFeaturedBillersResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetFeaturedBillersResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetFeaturedBillersResponse * SOAP_FMAC4 soap_get__interswitch__GetFeaturedBillersResponse(struct soap*, _interswitch__GetFeaturedBillersResponse *, const char*, const char*); + +#define soap_new__interswitch__GetFeaturedBillersResponse(soap, n) soap_instantiate__interswitch__GetFeaturedBillersResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetFeaturedBillersResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetFeaturedBillersResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetFeaturedBillersResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetFeaturedBillersResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers +#define SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers (93) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetFeaturedBillers(struct soap*, const char*, int, const _interswitch__GetFeaturedBillers *, const char*); +SOAP_FMAC3 _interswitch__GetFeaturedBillers * SOAP_FMAC4 soap_in__interswitch__GetFeaturedBillers(struct soap*, const char*, _interswitch__GetFeaturedBillers *, const char*); + +#define soap_write__interswitch__GetFeaturedBillers(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetFeaturedBillers(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetFeaturedBillers(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetFeaturedBillers * SOAP_FMAC4 soap_get__interswitch__GetFeaturedBillers(struct soap*, _interswitch__GetFeaturedBillers *, const char*, const char*); + +#define soap_new__interswitch__GetFeaturedBillers(soap, n) soap_instantiate__interswitch__GetFeaturedBillers(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetFeaturedBillers(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetFeaturedBillers * SOAP_FMAC2 soap_instantiate__interswitch__GetFeaturedBillers(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetFeaturedBillers(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse +#define SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse (92) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetLatestBillersResponse(struct soap*, const char*, int, const _interswitch__GetLatestBillersResponse *, const char*); +SOAP_FMAC3 _interswitch__GetLatestBillersResponse * SOAP_FMAC4 soap_in__interswitch__GetLatestBillersResponse(struct soap*, const char*, _interswitch__GetLatestBillersResponse *, const char*); + +#define soap_write__interswitch__GetLatestBillersResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetLatestBillersResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetLatestBillersResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetLatestBillersResponse * SOAP_FMAC4 soap_get__interswitch__GetLatestBillersResponse(struct soap*, _interswitch__GetLatestBillersResponse *, const char*, const char*); + +#define soap_new__interswitch__GetLatestBillersResponse(soap, n) soap_instantiate__interswitch__GetLatestBillersResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetLatestBillersResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetLatestBillersResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetLatestBillersResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetLatestBillersResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetLatestBillers +#define SOAP_TYPE_interswitch__interswitch__GetLatestBillers (91) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetLatestBillers(struct soap*, const char*, int, const _interswitch__GetLatestBillers *, const char*); +SOAP_FMAC3 _interswitch__GetLatestBillers * SOAP_FMAC4 soap_in__interswitch__GetLatestBillers(struct soap*, const char*, _interswitch__GetLatestBillers *, const char*); + +#define soap_write__interswitch__GetLatestBillers(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetLatestBillers(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetLatestBillers(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetLatestBillers * SOAP_FMAC4 soap_get__interswitch__GetLatestBillers(struct soap*, _interswitch__GetLatestBillers *, const char*, const char*); + +#define soap_new__interswitch__GetLatestBillers(soap, n) soap_instantiate__interswitch__GetLatestBillers(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetLatestBillers(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetLatestBillers * SOAP_FMAC2 soap_instantiate__interswitch__GetLatestBillers(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetLatestBillers(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetBillersResponse +#define SOAP_TYPE_interswitch__interswitch__GetBillersResponse (90) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetBillersResponse(struct soap*, const char*, int, const _interswitch__GetBillersResponse *, const char*); +SOAP_FMAC3 _interswitch__GetBillersResponse * SOAP_FMAC4 soap_in__interswitch__GetBillersResponse(struct soap*, const char*, _interswitch__GetBillersResponse *, const char*); + +#define soap_write__interswitch__GetBillersResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetBillersResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetBillersResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetBillersResponse * SOAP_FMAC4 soap_get__interswitch__GetBillersResponse(struct soap*, _interswitch__GetBillersResponse *, const char*, const char*); + +#define soap_new__interswitch__GetBillersResponse(soap, n) soap_instantiate__interswitch__GetBillersResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetBillersResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetBillersResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetBillersResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetBillersResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetBillers +#define SOAP_TYPE_interswitch__interswitch__GetBillers (89) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetBillers(struct soap*, const char*, int, const _interswitch__GetBillers *, const char*); +SOAP_FMAC3 _interswitch__GetBillers * SOAP_FMAC4 soap_in__interswitch__GetBillers(struct soap*, const char*, _interswitch__GetBillers *, const char*); + +#define soap_write__interswitch__GetBillers(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetBillers(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetBillers(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetBillers * SOAP_FMAC4 soap_get__interswitch__GetBillers(struct soap*, _interswitch__GetBillers *, const char*, const char*); + +#define soap_new__interswitch__GetBillers(soap, n) soap_instantiate__interswitch__GetBillers(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetBillers(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetBillers * SOAP_FMAC2 soap_instantiate__interswitch__GetBillers(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetBillers(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetUserResponse +#define SOAP_TYPE_interswitch__interswitch__GetUserResponse (88) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetUserResponse(struct soap*, const char*, int, const _interswitch__GetUserResponse *, const char*); +SOAP_FMAC3 _interswitch__GetUserResponse * SOAP_FMAC4 soap_in__interswitch__GetUserResponse(struct soap*, const char*, _interswitch__GetUserResponse *, const char*); + +#define soap_write__interswitch__GetUserResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetUserResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetUserResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetUserResponse * SOAP_FMAC4 soap_get__interswitch__GetUserResponse(struct soap*, _interswitch__GetUserResponse *, const char*, const char*); + +#define soap_new__interswitch__GetUserResponse(soap, n) soap_instantiate__interswitch__GetUserResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetUserResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetUserResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetUserResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetUserResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetUser +#define SOAP_TYPE_interswitch__interswitch__GetUser (87) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetUser(struct soap*, const char*, int, const _interswitch__GetUser *, const char*); +SOAP_FMAC3 _interswitch__GetUser * SOAP_FMAC4 soap_in__interswitch__GetUser(struct soap*, const char*, _interswitch__GetUser *, const char*); + +#define soap_write__interswitch__GetUser(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetUser(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetUser(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetUser * SOAP_FMAC4 soap_get__interswitch__GetUser(struct soap*, _interswitch__GetUser *, const char*, const char*); + +#define soap_new__interswitch__GetUser(soap, n) soap_instantiate__interswitch__GetUser(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetUser(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetUser * SOAP_FMAC2 soap_instantiate__interswitch__GetUser(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetUser(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse +#define SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse (86) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthenticateUserSecurityTokenResponse(struct soap*, const char*, int, const _interswitch__AuthenticateUserSecurityTokenResponse *, const char*); +SOAP_FMAC3 _interswitch__AuthenticateUserSecurityTokenResponse * SOAP_FMAC4 soap_in__interswitch__AuthenticateUserSecurityTokenResponse(struct soap*, const char*, _interswitch__AuthenticateUserSecurityTokenResponse *, const char*); + +#define soap_write__interswitch__AuthenticateUserSecurityTokenResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__AuthenticateUserSecurityTokenResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__AuthenticateUserSecurityTokenResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthenticateUserSecurityTokenResponse * SOAP_FMAC4 soap_get__interswitch__AuthenticateUserSecurityTokenResponse(struct soap*, _interswitch__AuthenticateUserSecurityTokenResponse *, const char*, const char*); + +#define soap_new__interswitch__AuthenticateUserSecurityTokenResponse(soap, n) soap_instantiate__interswitch__AuthenticateUserSecurityTokenResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__AuthenticateUserSecurityTokenResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__AuthenticateUserSecurityTokenResponse * SOAP_FMAC2 soap_instantiate__interswitch__AuthenticateUserSecurityTokenResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthenticateUserSecurityTokenResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken +#define SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken (85) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthenticateUserSecurityToken(struct soap*, const char*, int, const _interswitch__AuthenticateUserSecurityToken *, const char*); +SOAP_FMAC3 _interswitch__AuthenticateUserSecurityToken * SOAP_FMAC4 soap_in__interswitch__AuthenticateUserSecurityToken(struct soap*, const char*, _interswitch__AuthenticateUserSecurityToken *, const char*); + +#define soap_write__interswitch__AuthenticateUserSecurityToken(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__AuthenticateUserSecurityToken(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__AuthenticateUserSecurityToken(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthenticateUserSecurityToken * SOAP_FMAC4 soap_get__interswitch__AuthenticateUserSecurityToken(struct soap*, _interswitch__AuthenticateUserSecurityToken *, const char*, const char*); + +#define soap_new__interswitch__AuthenticateUserSecurityToken(soap, n) soap_instantiate__interswitch__AuthenticateUserSecurityToken(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__AuthenticateUserSecurityToken(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__AuthenticateUserSecurityToken * SOAP_FMAC2 soap_instantiate__interswitch__AuthenticateUserSecurityToken(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthenticateUserSecurityToken(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse +#define SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse (84) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthenticateUserResponse(struct soap*, const char*, int, const _interswitch__AuthenticateUserResponse *, const char*); +SOAP_FMAC3 _interswitch__AuthenticateUserResponse * SOAP_FMAC4 soap_in__interswitch__AuthenticateUserResponse(struct soap*, const char*, _interswitch__AuthenticateUserResponse *, const char*); + +#define soap_write__interswitch__AuthenticateUserResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__AuthenticateUserResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__AuthenticateUserResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthenticateUserResponse * SOAP_FMAC4 soap_get__interswitch__AuthenticateUserResponse(struct soap*, _interswitch__AuthenticateUserResponse *, const char*, const char*); + +#define soap_new__interswitch__AuthenticateUserResponse(soap, n) soap_instantiate__interswitch__AuthenticateUserResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__AuthenticateUserResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__AuthenticateUserResponse * SOAP_FMAC2 soap_instantiate__interswitch__AuthenticateUserResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthenticateUserResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthenticateUser +#define SOAP_TYPE_interswitch__interswitch__AuthenticateUser (83) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthenticateUser(struct soap*, const char*, int, const _interswitch__AuthenticateUser *, const char*); +SOAP_FMAC3 _interswitch__AuthenticateUser * SOAP_FMAC4 soap_in__interswitch__AuthenticateUser(struct soap*, const char*, _interswitch__AuthenticateUser *, const char*); + +#define soap_write__interswitch__AuthenticateUser(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__AuthenticateUser(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__AuthenticateUser(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthenticateUser * SOAP_FMAC4 soap_get__interswitch__AuthenticateUser(struct soap*, _interswitch__AuthenticateUser *, const char*, const char*); + +#define soap_new__interswitch__AuthenticateUser(soap, n) soap_instantiate__interswitch__AuthenticateUser(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__AuthenticateUser(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__AuthenticateUser * SOAP_FMAC2 soap_instantiate__interswitch__AuthenticateUser(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthenticateUser(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse +#define SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse (82) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ResetPasswordResponse(struct soap*, const char*, int, const _interswitch__ResetPasswordResponse *, const char*); +SOAP_FMAC3 _interswitch__ResetPasswordResponse * SOAP_FMAC4 soap_in__interswitch__ResetPasswordResponse(struct soap*, const char*, _interswitch__ResetPasswordResponse *, const char*); + +#define soap_write__interswitch__ResetPasswordResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__ResetPasswordResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__ResetPasswordResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ResetPasswordResponse * SOAP_FMAC4 soap_get__interswitch__ResetPasswordResponse(struct soap*, _interswitch__ResetPasswordResponse *, const char*, const char*); + +#define soap_new__interswitch__ResetPasswordResponse(soap, n) soap_instantiate__interswitch__ResetPasswordResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__ResetPasswordResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__ResetPasswordResponse * SOAP_FMAC2 soap_instantiate__interswitch__ResetPasswordResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ResetPasswordResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__ResetPassword +#define SOAP_TYPE_interswitch__interswitch__ResetPassword (81) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ResetPassword(struct soap*, const char*, int, const _interswitch__ResetPassword *, const char*); +SOAP_FMAC3 _interswitch__ResetPassword * SOAP_FMAC4 soap_in__interswitch__ResetPassword(struct soap*, const char*, _interswitch__ResetPassword *, const char*); + +#define soap_write__interswitch__ResetPassword(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__ResetPassword(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__ResetPassword(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ResetPassword * SOAP_FMAC4 soap_get__interswitch__ResetPassword(struct soap*, _interswitch__ResetPassword *, const char*, const char*); + +#define soap_new__interswitch__ResetPassword(soap, n) soap_instantiate__interswitch__ResetPassword(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__ResetPassword(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__ResetPassword * SOAP_FMAC2 soap_instantiate__interswitch__ResetPassword(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ResetPassword(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse +#define SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse (80) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ChangePasswordResponse(struct soap*, const char*, int, const _interswitch__ChangePasswordResponse *, const char*); +SOAP_FMAC3 _interswitch__ChangePasswordResponse * SOAP_FMAC4 soap_in__interswitch__ChangePasswordResponse(struct soap*, const char*, _interswitch__ChangePasswordResponse *, const char*); + +#define soap_write__interswitch__ChangePasswordResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__ChangePasswordResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__ChangePasswordResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ChangePasswordResponse * SOAP_FMAC4 soap_get__interswitch__ChangePasswordResponse(struct soap*, _interswitch__ChangePasswordResponse *, const char*, const char*); + +#define soap_new__interswitch__ChangePasswordResponse(soap, n) soap_instantiate__interswitch__ChangePasswordResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__ChangePasswordResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__ChangePasswordResponse * SOAP_FMAC2 soap_instantiate__interswitch__ChangePasswordResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ChangePasswordResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__ChangePassword +#define SOAP_TYPE_interswitch__interswitch__ChangePassword (79) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ChangePassword(struct soap*, const char*, int, const _interswitch__ChangePassword *, const char*); +SOAP_FMAC3 _interswitch__ChangePassword * SOAP_FMAC4 soap_in__interswitch__ChangePassword(struct soap*, const char*, _interswitch__ChangePassword *, const char*); + +#define soap_write__interswitch__ChangePassword(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__ChangePassword(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__ChangePassword(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ChangePassword * SOAP_FMAC4 soap_get__interswitch__ChangePassword(struct soap*, _interswitch__ChangePassword *, const char*, const char*); + +#define soap_new__interswitch__ChangePassword(soap, n) soap_instantiate__interswitch__ChangePassword(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__ChangePassword(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__ChangePassword * SOAP_FMAC2 soap_instantiate__interswitch__ChangePassword(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ChangePassword(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__UpdateUserResponse +#define SOAP_TYPE_interswitch__interswitch__UpdateUserResponse (78) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__UpdateUserResponse(struct soap*, const char*, int, const _interswitch__UpdateUserResponse *, const char*); +SOAP_FMAC3 _interswitch__UpdateUserResponse * SOAP_FMAC4 soap_in__interswitch__UpdateUserResponse(struct soap*, const char*, _interswitch__UpdateUserResponse *, const char*); + +#define soap_write__interswitch__UpdateUserResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__UpdateUserResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__UpdateUserResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__UpdateUserResponse * SOAP_FMAC4 soap_get__interswitch__UpdateUserResponse(struct soap*, _interswitch__UpdateUserResponse *, const char*, const char*); + +#define soap_new__interswitch__UpdateUserResponse(soap, n) soap_instantiate__interswitch__UpdateUserResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__UpdateUserResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__UpdateUserResponse * SOAP_FMAC2 soap_instantiate__interswitch__UpdateUserResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__UpdateUserResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__UpdateUser +#define SOAP_TYPE_interswitch__interswitch__UpdateUser (77) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__UpdateUser(struct soap*, const char*, int, const _interswitch__UpdateUser *, const char*); +SOAP_FMAC3 _interswitch__UpdateUser * SOAP_FMAC4 soap_in__interswitch__UpdateUser(struct soap*, const char*, _interswitch__UpdateUser *, const char*); + +#define soap_write__interswitch__UpdateUser(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__UpdateUser(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__UpdateUser(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__UpdateUser * SOAP_FMAC4 soap_get__interswitch__UpdateUser(struct soap*, _interswitch__UpdateUser *, const char*, const char*); + +#define soap_new__interswitch__UpdateUser(soap, n) soap_instantiate__interswitch__UpdateUser(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__UpdateUser(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__UpdateUser * SOAP_FMAC2 soap_instantiate__interswitch__UpdateUser(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__UpdateUser(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__ActivateUserResponse +#define SOAP_TYPE_interswitch__interswitch__ActivateUserResponse (76) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ActivateUserResponse(struct soap*, const char*, int, const _interswitch__ActivateUserResponse *, const char*); +SOAP_FMAC3 _interswitch__ActivateUserResponse * SOAP_FMAC4 soap_in__interswitch__ActivateUserResponse(struct soap*, const char*, _interswitch__ActivateUserResponse *, const char*); + +#define soap_write__interswitch__ActivateUserResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__ActivateUserResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__ActivateUserResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ActivateUserResponse * SOAP_FMAC4 soap_get__interswitch__ActivateUserResponse(struct soap*, _interswitch__ActivateUserResponse *, const char*, const char*); + +#define soap_new__interswitch__ActivateUserResponse(soap, n) soap_instantiate__interswitch__ActivateUserResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__ActivateUserResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__ActivateUserResponse * SOAP_FMAC2 soap_instantiate__interswitch__ActivateUserResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ActivateUserResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__ActivateUser +#define SOAP_TYPE_interswitch__interswitch__ActivateUser (75) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ActivateUser(struct soap*, const char*, int, const _interswitch__ActivateUser *, const char*); +SOAP_FMAC3 _interswitch__ActivateUser * SOAP_FMAC4 soap_in__interswitch__ActivateUser(struct soap*, const char*, _interswitch__ActivateUser *, const char*); + +#define soap_write__interswitch__ActivateUser(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__ActivateUser(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__ActivateUser(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ActivateUser * SOAP_FMAC4 soap_get__interswitch__ActivateUser(struct soap*, _interswitch__ActivateUser *, const char*, const char*); + +#define soap_new__interswitch__ActivateUser(soap, n) soap_instantiate__interswitch__ActivateUser(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__ActivateUser(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__ActivateUser * SOAP_FMAC2 soap_instantiate__interswitch__ActivateUser(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ActivateUser(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__CreateUserResponse +#define SOAP_TYPE_interswitch__interswitch__CreateUserResponse (74) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__CreateUserResponse(struct soap*, const char*, int, const _interswitch__CreateUserResponse *, const char*); +SOAP_FMAC3 _interswitch__CreateUserResponse * SOAP_FMAC4 soap_in__interswitch__CreateUserResponse(struct soap*, const char*, _interswitch__CreateUserResponse *, const char*); + +#define soap_write__interswitch__CreateUserResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__CreateUserResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__CreateUserResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__CreateUserResponse * SOAP_FMAC4 soap_get__interswitch__CreateUserResponse(struct soap*, _interswitch__CreateUserResponse *, const char*, const char*); + +#define soap_new__interswitch__CreateUserResponse(soap, n) soap_instantiate__interswitch__CreateUserResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__CreateUserResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__CreateUserResponse * SOAP_FMAC2 soap_instantiate__interswitch__CreateUserResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__CreateUserResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__CreateUser +#define SOAP_TYPE_interswitch__interswitch__CreateUser (73) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__CreateUser(struct soap*, const char*, int, const _interswitch__CreateUser *, const char*); +SOAP_FMAC3 _interswitch__CreateUser * SOAP_FMAC4 soap_in__interswitch__CreateUser(struct soap*, const char*, _interswitch__CreateUser *, const char*); + +#define soap_write__interswitch__CreateUser(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__CreateUser(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__CreateUser(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__CreateUser * SOAP_FMAC4 soap_get__interswitch__CreateUser(struct soap*, _interswitch__CreateUser *, const char*, const char*); + +#define soap_new__interswitch__CreateUser(soap, n) soap_instantiate__interswitch__CreateUser(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__CreateUser(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__CreateUser * SOAP_FMAC2 soap_instantiate__interswitch__CreateUser(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__CreateUser(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse +#define SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse (72) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetSystemSettingsResponse(struct soap*, const char*, int, const _interswitch__GetSystemSettingsResponse *, const char*); +SOAP_FMAC3 _interswitch__GetSystemSettingsResponse * SOAP_FMAC4 soap_in__interswitch__GetSystemSettingsResponse(struct soap*, const char*, _interswitch__GetSystemSettingsResponse *, const char*); + +#define soap_write__interswitch__GetSystemSettingsResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetSystemSettingsResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetSystemSettingsResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetSystemSettingsResponse * SOAP_FMAC4 soap_get__interswitch__GetSystemSettingsResponse(struct soap*, _interswitch__GetSystemSettingsResponse *, const char*, const char*); + +#define soap_new__interswitch__GetSystemSettingsResponse(soap, n) soap_instantiate__interswitch__GetSystemSettingsResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetSystemSettingsResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetSystemSettingsResponse * SOAP_FMAC2 soap_instantiate__interswitch__GetSystemSettingsResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetSystemSettingsResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__GetSystemSettings +#define SOAP_TYPE_interswitch__interswitch__GetSystemSettings (71) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__GetSystemSettings(struct soap*, const char*, int, const _interswitch__GetSystemSettings *, const char*); +SOAP_FMAC3 _interswitch__GetSystemSettings * SOAP_FMAC4 soap_in__interswitch__GetSystemSettings(struct soap*, const char*, _interswitch__GetSystemSettings *, const char*); + +#define soap_write__interswitch__GetSystemSettings(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__GetSystemSettings(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__GetSystemSettings(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetSystemSettings * SOAP_FMAC4 soap_get__interswitch__GetSystemSettings(struct soap*, _interswitch__GetSystemSettings *, const char*, const char*); + +#define soap_new__interswitch__GetSystemSettings(soap, n) soap_instantiate__interswitch__GetSystemSettings(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__GetSystemSettings(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__GetSystemSettings * SOAP_FMAC2 soap_instantiate__interswitch__GetSystemSettings(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__GetSystemSettings(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse +#define SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse (70) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__QueryTransactionResponse(struct soap*, const char*, int, const _interswitch__QueryTransactionResponse *, const char*); +SOAP_FMAC3 _interswitch__QueryTransactionResponse * SOAP_FMAC4 soap_in__interswitch__QueryTransactionResponse(struct soap*, const char*, _interswitch__QueryTransactionResponse *, const char*); + +#define soap_write__interswitch__QueryTransactionResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__QueryTransactionResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__QueryTransactionResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__QueryTransactionResponse * SOAP_FMAC4 soap_get__interswitch__QueryTransactionResponse(struct soap*, _interswitch__QueryTransactionResponse *, const char*, const char*); + +#define soap_new__interswitch__QueryTransactionResponse(soap, n) soap_instantiate__interswitch__QueryTransactionResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__QueryTransactionResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__QueryTransactionResponse * SOAP_FMAC2 soap_instantiate__interswitch__QueryTransactionResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__QueryTransactionResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__QueryTransaction +#define SOAP_TYPE_interswitch__interswitch__QueryTransaction (69) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__QueryTransaction(struct soap*, const char*, int, const _interswitch__QueryTransaction *, const char*); +SOAP_FMAC3 _interswitch__QueryTransaction * SOAP_FMAC4 soap_in__interswitch__QueryTransaction(struct soap*, const char*, _interswitch__QueryTransaction *, const char*); + +#define soap_write__interswitch__QueryTransaction(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__QueryTransaction(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__QueryTransaction(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__QueryTransaction * SOAP_FMAC4 soap_get__interswitch__QueryTransaction(struct soap*, _interswitch__QueryTransaction *, const char*, const char*); + +#define soap_new__interswitch__QueryTransaction(soap, n) soap_instantiate__interswitch__QueryTransaction(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__QueryTransaction(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__QueryTransaction * SOAP_FMAC2 soap_instantiate__interswitch__QueryTransaction(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__QueryTransaction(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__StatusCheckResponse +#define SOAP_TYPE_interswitch__interswitch__StatusCheckResponse (68) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__StatusCheckResponse(struct soap*, const char*, int, const _interswitch__StatusCheckResponse *, const char*); +SOAP_FMAC3 _interswitch__StatusCheckResponse * SOAP_FMAC4 soap_in__interswitch__StatusCheckResponse(struct soap*, const char*, _interswitch__StatusCheckResponse *, const char*); + +#define soap_write__interswitch__StatusCheckResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__StatusCheckResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__StatusCheckResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__StatusCheckResponse * SOAP_FMAC4 soap_get__interswitch__StatusCheckResponse(struct soap*, _interswitch__StatusCheckResponse *, const char*, const char*); + +#define soap_new__interswitch__StatusCheckResponse(soap, n) soap_instantiate__interswitch__StatusCheckResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__StatusCheckResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__StatusCheckResponse * SOAP_FMAC2 soap_instantiate__interswitch__StatusCheckResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__StatusCheckResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__StatusCheck +#define SOAP_TYPE_interswitch__interswitch__StatusCheck (67) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__StatusCheck(struct soap*, const char*, int, const _interswitch__StatusCheck *, const char*); +SOAP_FMAC3 _interswitch__StatusCheck * SOAP_FMAC4 soap_in__interswitch__StatusCheck(struct soap*, const char*, _interswitch__StatusCheck *, const char*); + +#define soap_write__interswitch__StatusCheck(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__StatusCheck(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__StatusCheck(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__StatusCheck * SOAP_FMAC4 soap_get__interswitch__StatusCheck(struct soap*, _interswitch__StatusCheck *, const char*, const char*); + +#define soap_new__interswitch__StatusCheck(soap, n) soap_instantiate__interswitch__StatusCheck(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__StatusCheck(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__StatusCheck * SOAP_FMAC2 soap_instantiate__interswitch__StatusCheck(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__StatusCheck(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse +#define SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse (66) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ReverseCashOutResponse(struct soap*, const char*, int, const _interswitch__ReverseCashOutResponse *, const char*); +SOAP_FMAC3 _interswitch__ReverseCashOutResponse * SOAP_FMAC4 soap_in__interswitch__ReverseCashOutResponse(struct soap*, const char*, _interswitch__ReverseCashOutResponse *, const char*); + +#define soap_write__interswitch__ReverseCashOutResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__ReverseCashOutResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__ReverseCashOutResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ReverseCashOutResponse * SOAP_FMAC4 soap_get__interswitch__ReverseCashOutResponse(struct soap*, _interswitch__ReverseCashOutResponse *, const char*, const char*); + +#define soap_new__interswitch__ReverseCashOutResponse(soap, n) soap_instantiate__interswitch__ReverseCashOutResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__ReverseCashOutResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__ReverseCashOutResponse * SOAP_FMAC2 soap_instantiate__interswitch__ReverseCashOutResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ReverseCashOutResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__ReverseCashOut +#define SOAP_TYPE_interswitch__interswitch__ReverseCashOut (65) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ReverseCashOut(struct soap*, const char*, int, const _interswitch__ReverseCashOut *, const char*); +SOAP_FMAC3 _interswitch__ReverseCashOut * SOAP_FMAC4 soap_in__interswitch__ReverseCashOut(struct soap*, const char*, _interswitch__ReverseCashOut *, const char*); + +#define soap_write__interswitch__ReverseCashOut(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__ReverseCashOut(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__ReverseCashOut(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ReverseCashOut * SOAP_FMAC4 soap_get__interswitch__ReverseCashOut(struct soap*, _interswitch__ReverseCashOut *, const char*, const char*); + +#define soap_new__interswitch__ReverseCashOut(soap, n) soap_instantiate__interswitch__ReverseCashOut(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__ReverseCashOut(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__ReverseCashOut * SOAP_FMAC2 soap_instantiate__interswitch__ReverseCashOut(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ReverseCashOut(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse +#define SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse (64) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthoriseAccountCashOutResponse(struct soap*, const char*, int, const _interswitch__AuthoriseAccountCashOutResponse *, const char*); +SOAP_FMAC3 _interswitch__AuthoriseAccountCashOutResponse * SOAP_FMAC4 soap_in__interswitch__AuthoriseAccountCashOutResponse(struct soap*, const char*, _interswitch__AuthoriseAccountCashOutResponse *, const char*); + +#define soap_write__interswitch__AuthoriseAccountCashOutResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__AuthoriseAccountCashOutResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__AuthoriseAccountCashOutResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthoriseAccountCashOutResponse * SOAP_FMAC4 soap_get__interswitch__AuthoriseAccountCashOutResponse(struct soap*, _interswitch__AuthoriseAccountCashOutResponse *, const char*, const char*); + +#define soap_new__interswitch__AuthoriseAccountCashOutResponse(soap, n) soap_instantiate__interswitch__AuthoriseAccountCashOutResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__AuthoriseAccountCashOutResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__AuthoriseAccountCashOutResponse * SOAP_FMAC2 soap_instantiate__interswitch__AuthoriseAccountCashOutResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthoriseAccountCashOutResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut +#define SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut (63) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthoriseAccountCashOut(struct soap*, const char*, int, const _interswitch__AuthoriseAccountCashOut *, const char*); +SOAP_FMAC3 _interswitch__AuthoriseAccountCashOut * SOAP_FMAC4 soap_in__interswitch__AuthoriseAccountCashOut(struct soap*, const char*, _interswitch__AuthoriseAccountCashOut *, const char*); + +#define soap_write__interswitch__AuthoriseAccountCashOut(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__AuthoriseAccountCashOut(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__AuthoriseAccountCashOut(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthoriseAccountCashOut * SOAP_FMAC4 soap_get__interswitch__AuthoriseAccountCashOut(struct soap*, _interswitch__AuthoriseAccountCashOut *, const char*, const char*); + +#define soap_new__interswitch__AuthoriseAccountCashOut(soap, n) soap_instantiate__interswitch__AuthoriseAccountCashOut(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__AuthoriseAccountCashOut(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__AuthoriseAccountCashOut * SOAP_FMAC2 soap_instantiate__interswitch__AuthoriseAccountCashOut(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthoriseAccountCashOut(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse +#define SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse (62) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthoriseCashOutResponse(struct soap*, const char*, int, const _interswitch__AuthoriseCashOutResponse *, const char*); +SOAP_FMAC3 _interswitch__AuthoriseCashOutResponse * SOAP_FMAC4 soap_in__interswitch__AuthoriseCashOutResponse(struct soap*, const char*, _interswitch__AuthoriseCashOutResponse *, const char*); + +#define soap_write__interswitch__AuthoriseCashOutResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__AuthoriseCashOutResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__AuthoriseCashOutResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthoriseCashOutResponse * SOAP_FMAC4 soap_get__interswitch__AuthoriseCashOutResponse(struct soap*, _interswitch__AuthoriseCashOutResponse *, const char*, const char*); + +#define soap_new__interswitch__AuthoriseCashOutResponse(soap, n) soap_instantiate__interswitch__AuthoriseCashOutResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__AuthoriseCashOutResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__AuthoriseCashOutResponse * SOAP_FMAC2 soap_instantiate__interswitch__AuthoriseCashOutResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthoriseCashOutResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut +#define SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut (61) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__AuthoriseCashOut(struct soap*, const char*, int, const _interswitch__AuthoriseCashOut *, const char*); +SOAP_FMAC3 _interswitch__AuthoriseCashOut * SOAP_FMAC4 soap_in__interswitch__AuthoriseCashOut(struct soap*, const char*, _interswitch__AuthoriseCashOut *, const char*); + +#define soap_write__interswitch__AuthoriseCashOut(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__AuthoriseCashOut(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__AuthoriseCashOut(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthoriseCashOut * SOAP_FMAC4 soap_get__interswitch__AuthoriseCashOut(struct soap*, _interswitch__AuthoriseCashOut *, const char*, const char*); + +#define soap_new__interswitch__AuthoriseCashOut(soap, n) soap_instantiate__interswitch__AuthoriseCashOut(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__AuthoriseCashOut(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__AuthoriseCashOut * SOAP_FMAC2 soap_instantiate__interswitch__AuthoriseCashOut(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__AuthoriseCashOut(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__QueryTransferResponse +#define SOAP_TYPE_interswitch__interswitch__QueryTransferResponse (60) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__QueryTransferResponse(struct soap*, const char*, int, const _interswitch__QueryTransferResponse *, const char*); +SOAP_FMAC3 _interswitch__QueryTransferResponse * SOAP_FMAC4 soap_in__interswitch__QueryTransferResponse(struct soap*, const char*, _interswitch__QueryTransferResponse *, const char*); + +#define soap_write__interswitch__QueryTransferResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__QueryTransferResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__QueryTransferResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__QueryTransferResponse * SOAP_FMAC4 soap_get__interswitch__QueryTransferResponse(struct soap*, _interswitch__QueryTransferResponse *, const char*, const char*); + +#define soap_new__interswitch__QueryTransferResponse(soap, n) soap_instantiate__interswitch__QueryTransferResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__QueryTransferResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__QueryTransferResponse * SOAP_FMAC2 soap_instantiate__interswitch__QueryTransferResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__QueryTransferResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__QueryTransfer +#define SOAP_TYPE_interswitch__interswitch__QueryTransfer (59) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__QueryTransfer(struct soap*, const char*, int, const _interswitch__QueryTransfer *, const char*); +SOAP_FMAC3 _interswitch__QueryTransfer * SOAP_FMAC4 soap_in__interswitch__QueryTransfer(struct soap*, const char*, _interswitch__QueryTransfer *, const char*); + +#define soap_write__interswitch__QueryTransfer(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__QueryTransfer(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__QueryTransfer(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__QueryTransfer * SOAP_FMAC4 soap_get__interswitch__QueryTransfer(struct soap*, _interswitch__QueryTransfer *, const char*, const char*); + +#define soap_new__interswitch__QueryTransfer(soap, n) soap_instantiate__interswitch__QueryTransfer(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__QueryTransfer(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__QueryTransfer * SOAP_FMAC2 soap_instantiate__interswitch__QueryTransfer(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__QueryTransfer(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse +#define SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse (58) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__SendSessionKeyResponse(struct soap*, const char*, int, const _interswitch__SendSessionKeyResponse *, const char*); +SOAP_FMAC3 _interswitch__SendSessionKeyResponse * SOAP_FMAC4 soap_in__interswitch__SendSessionKeyResponse(struct soap*, const char*, _interswitch__SendSessionKeyResponse *, const char*); + +#define soap_write__interswitch__SendSessionKeyResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__SendSessionKeyResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__SendSessionKeyResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__SendSessionKeyResponse * SOAP_FMAC4 soap_get__interswitch__SendSessionKeyResponse(struct soap*, _interswitch__SendSessionKeyResponse *, const char*, const char*); + +#define soap_new__interswitch__SendSessionKeyResponse(soap, n) soap_instantiate__interswitch__SendSessionKeyResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__SendSessionKeyResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__SendSessionKeyResponse * SOAP_FMAC2 soap_instantiate__interswitch__SendSessionKeyResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__SendSessionKeyResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__SendSessionKey +#define SOAP_TYPE_interswitch__interswitch__SendSessionKey (57) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__SendSessionKey(struct soap*, const char*, int, const _interswitch__SendSessionKey *, const char*); +SOAP_FMAC3 _interswitch__SendSessionKey * SOAP_FMAC4 soap_in__interswitch__SendSessionKey(struct soap*, const char*, _interswitch__SendSessionKey *, const char*); + +#define soap_write__interswitch__SendSessionKey(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__SendSessionKey(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__SendSessionKey(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__SendSessionKey * SOAP_FMAC4 soap_get__interswitch__SendSessionKey(struct soap*, _interswitch__SendSessionKey *, const char*, const char*); + +#define soap_new__interswitch__SendSessionKey(soap, n) soap_instantiate__interswitch__SendSessionKey(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__SendSessionKey(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__SendSessionKey * SOAP_FMAC2 soap_instantiate__interswitch__SendSessionKey(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__SendSessionKey(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__CancelTransferResponse +#define SOAP_TYPE_interswitch__interswitch__CancelTransferResponse (56) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__CancelTransferResponse(struct soap*, const char*, int, const _interswitch__CancelTransferResponse *, const char*); +SOAP_FMAC3 _interswitch__CancelTransferResponse * SOAP_FMAC4 soap_in__interswitch__CancelTransferResponse(struct soap*, const char*, _interswitch__CancelTransferResponse *, const char*); + +#define soap_write__interswitch__CancelTransferResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__CancelTransferResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__CancelTransferResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__CancelTransferResponse * SOAP_FMAC4 soap_get__interswitch__CancelTransferResponse(struct soap*, _interswitch__CancelTransferResponse *, const char*, const char*); + +#define soap_new__interswitch__CancelTransferResponse(soap, n) soap_instantiate__interswitch__CancelTransferResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__CancelTransferResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__CancelTransferResponse * SOAP_FMAC2 soap_instantiate__interswitch__CancelTransferResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__CancelTransferResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__CancelTransfer +#define SOAP_TYPE_interswitch__interswitch__CancelTransfer (55) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__CancelTransfer(struct soap*, const char*, int, const _interswitch__CancelTransfer *, const char*); +SOAP_FMAC3 _interswitch__CancelTransfer * SOAP_FMAC4 soap_in__interswitch__CancelTransfer(struct soap*, const char*, _interswitch__CancelTransfer *, const char*); + +#define soap_write__interswitch__CancelTransfer(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__CancelTransfer(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__CancelTransfer(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__CancelTransfer * SOAP_FMAC4 soap_get__interswitch__CancelTransfer(struct soap*, _interswitch__CancelTransfer *, const char*, const char*); + +#define soap_new__interswitch__CancelTransfer(soap, n) soap_instantiate__interswitch__CancelTransfer(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__CancelTransfer(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__CancelTransfer * SOAP_FMAC2 soap_instantiate__interswitch__CancelTransfer(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__CancelTransfer(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__DoTransferResponse +#define SOAP_TYPE_interswitch__interswitch__DoTransferResponse (54) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__DoTransferResponse(struct soap*, const char*, int, const _interswitch__DoTransferResponse *, const char*); +SOAP_FMAC3 _interswitch__DoTransferResponse * SOAP_FMAC4 soap_in__interswitch__DoTransferResponse(struct soap*, const char*, _interswitch__DoTransferResponse *, const char*); + +#define soap_write__interswitch__DoTransferResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__DoTransferResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__DoTransferResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__DoTransferResponse * SOAP_FMAC4 soap_get__interswitch__DoTransferResponse(struct soap*, _interswitch__DoTransferResponse *, const char*, const char*); + +#define soap_new__interswitch__DoTransferResponse(soap, n) soap_instantiate__interswitch__DoTransferResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__DoTransferResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__DoTransferResponse * SOAP_FMAC2 soap_instantiate__interswitch__DoTransferResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__DoTransferResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__DoTransfer +#define SOAP_TYPE_interswitch__interswitch__DoTransfer (53) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__DoTransfer(struct soap*, const char*, int, const _interswitch__DoTransfer *, const char*); +SOAP_FMAC3 _interswitch__DoTransfer * SOAP_FMAC4 soap_in__interswitch__DoTransfer(struct soap*, const char*, _interswitch__DoTransfer *, const char*); + +#define soap_write__interswitch__DoTransfer(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__DoTransfer(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__DoTransfer(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__DoTransfer * SOAP_FMAC4 soap_get__interswitch__DoTransfer(struct soap*, _interswitch__DoTransfer *, const char*, const char*); + +#define soap_new__interswitch__DoTransfer(soap, n) soap_instantiate__interswitch__DoTransfer(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__DoTransfer(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__DoTransfer * SOAP_FMAC2 soap_instantiate__interswitch__DoTransfer(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__DoTransfer(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse +#define SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse (52) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ValidateCustomerResponse(struct soap*, const char*, int, const _interswitch__ValidateCustomerResponse *, const char*); +SOAP_FMAC3 _interswitch__ValidateCustomerResponse * SOAP_FMAC4 soap_in__interswitch__ValidateCustomerResponse(struct soap*, const char*, _interswitch__ValidateCustomerResponse *, const char*); + +#define soap_write__interswitch__ValidateCustomerResponse(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__ValidateCustomerResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__ValidateCustomerResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ValidateCustomerResponse * SOAP_FMAC4 soap_get__interswitch__ValidateCustomerResponse(struct soap*, _interswitch__ValidateCustomerResponse *, const char*, const char*); + +#define soap_new__interswitch__ValidateCustomerResponse(soap, n) soap_instantiate__interswitch__ValidateCustomerResponse(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__ValidateCustomerResponse(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__ValidateCustomerResponse * SOAP_FMAC2 soap_instantiate__interswitch__ValidateCustomerResponse(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ValidateCustomerResponse(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch__interswitch__ValidateCustomer +#define SOAP_TYPE_interswitch__interswitch__ValidateCustomer (51) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__interswitch__ValidateCustomer(struct soap*, const char*, int, const _interswitch__ValidateCustomer *, const char*); +SOAP_FMAC3 _interswitch__ValidateCustomer * SOAP_FMAC4 soap_in__interswitch__ValidateCustomer(struct soap*, const char*, _interswitch__ValidateCustomer *, const char*); + +#define soap_write__interswitch__ValidateCustomer(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read__interswitch__ValidateCustomer(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__interswitch__ValidateCustomer(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ValidateCustomer * SOAP_FMAC4 soap_get__interswitch__ValidateCustomer(struct soap*, _interswitch__ValidateCustomer *, const char*, const char*); + +#define soap_new__interswitch__ValidateCustomer(soap, n) soap_instantiate__interswitch__ValidateCustomer(soap, n, NULL, NULL, NULL) + + +#define soap_delete__interswitch__ValidateCustomer(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 _interswitch__ValidateCustomer * SOAP_FMAC2 soap_instantiate__interswitch__ValidateCustomer(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy__interswitch__ValidateCustomer(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__unsignedShort +#define SOAP_TYPE_interswitch_xsd__unsignedShort (49) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__unsignedShort(struct soap*, const char*, int, const xsd__unsignedShort *, const char*); +SOAP_FMAC3 xsd__unsignedShort * SOAP_FMAC4 soap_in_xsd__unsignedShort(struct soap*, const char*, xsd__unsignedShort *, const char*); + +#define soap_write_xsd__unsignedShort(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__unsignedShort(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__unsignedShort(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__unsignedShort * SOAP_FMAC4 soap_get_xsd__unsignedShort(struct soap*, xsd__unsignedShort *, const char*, const char*); + +#define soap_new_xsd__unsignedShort(soap, n) soap_instantiate_xsd__unsignedShort(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__unsignedShort(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__unsignedShort * SOAP_FMAC2 soap_instantiate_xsd__unsignedShort(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__unsignedShort(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__unsignedLong +#define SOAP_TYPE_interswitch_xsd__unsignedLong (47) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__unsignedLong(struct soap*, const char*, int, const xsd__unsignedLong *, const char*); +SOAP_FMAC3 xsd__unsignedLong * SOAP_FMAC4 soap_in_xsd__unsignedLong(struct soap*, const char*, xsd__unsignedLong *, const char*); + +#define soap_write_xsd__unsignedLong(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__unsignedLong(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__unsignedLong(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__unsignedLong * SOAP_FMAC4 soap_get_xsd__unsignedLong(struct soap*, xsd__unsignedLong *, const char*, const char*); + +#define soap_new_xsd__unsignedLong(soap, n) soap_instantiate_xsd__unsignedLong(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__unsignedLong(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__unsignedLong * SOAP_FMAC2 soap_instantiate_xsd__unsignedLong(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__unsignedLong(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__unsignedInt +#define SOAP_TYPE_interswitch_xsd__unsignedInt (46) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__unsignedInt(struct soap*, const char*, int, const xsd__unsignedInt *, const char*); +SOAP_FMAC3 xsd__unsignedInt * SOAP_FMAC4 soap_in_xsd__unsignedInt(struct soap*, const char*, xsd__unsignedInt *, const char*); + +#define soap_write_xsd__unsignedInt(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__unsignedInt(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__unsignedInt(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__unsignedInt * SOAP_FMAC4 soap_get_xsd__unsignedInt(struct soap*, xsd__unsignedInt *, const char*, const char*); + +#define soap_new_xsd__unsignedInt(soap, n) soap_instantiate_xsd__unsignedInt(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__unsignedInt(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__unsignedInt * SOAP_FMAC2 soap_instantiate_xsd__unsignedInt(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__unsignedInt(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__unsignedByte_ +#define SOAP_TYPE_interswitch_xsd__unsignedByte_ (45) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__unsignedByte_(struct soap*, const char*, int, const xsd__unsignedByte_ *, const char*); +SOAP_FMAC3 xsd__unsignedByte_ * SOAP_FMAC4 soap_in_xsd__unsignedByte_(struct soap*, const char*, xsd__unsignedByte_ *, const char*); + +#define soap_write_xsd__unsignedByte_(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__unsignedByte_(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__unsignedByte_(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__unsignedByte_ * SOAP_FMAC4 soap_get_xsd__unsignedByte_(struct soap*, xsd__unsignedByte_ *, const char*, const char*); + +#define soap_new_xsd__unsignedByte_(soap, n) soap_instantiate_xsd__unsignedByte_(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__unsignedByte_(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__unsignedByte_ * SOAP_FMAC2 soap_instantiate_xsd__unsignedByte_(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__unsignedByte_(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__string +#define SOAP_TYPE_interswitch_xsd__string (43) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__string(struct soap*, const char*, int, const xsd__string *, const char*); +SOAP_FMAC3 xsd__string * SOAP_FMAC4 soap_in_xsd__string(struct soap*, const char*, xsd__string *, const char*); + +#define soap_write_xsd__string(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__string(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__string(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__string * SOAP_FMAC4 soap_get_xsd__string(struct soap*, xsd__string *, const char*, const char*); + +#define soap_new_xsd__string(soap, n) soap_instantiate_xsd__string(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__string(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__string * SOAP_FMAC2 soap_instantiate_xsd__string(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__string(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__short +#define SOAP_TYPE_interswitch_xsd__short (41) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__short(struct soap*, const char*, int, const xsd__short *, const char*); +SOAP_FMAC3 xsd__short * SOAP_FMAC4 soap_in_xsd__short(struct soap*, const char*, xsd__short *, const char*); + +#define soap_write_xsd__short(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__short(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__short(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__short * SOAP_FMAC4 soap_get_xsd__short(struct soap*, xsd__short *, const char*, const char*); + +#define soap_new_xsd__short(soap, n) soap_instantiate_xsd__short(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__short(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__short * SOAP_FMAC2 soap_instantiate_xsd__short(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__short(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__long +#define SOAP_TYPE_interswitch_xsd__long (39) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__long(struct soap*, const char*, int, const xsd__long *, const char*); +SOAP_FMAC3 xsd__long * SOAP_FMAC4 soap_in_xsd__long(struct soap*, const char*, xsd__long *, const char*); + +#define soap_write_xsd__long(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__long(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__long(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__long * SOAP_FMAC4 soap_get_xsd__long(struct soap*, xsd__long *, const char*, const char*); + +#define soap_new_xsd__long(soap, n) soap_instantiate_xsd__long(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__long(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__long * SOAP_FMAC2 soap_instantiate_xsd__long(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__long(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__int +#define SOAP_TYPE_interswitch_xsd__int (38) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__int(struct soap*, const char*, int, const xsd__int *, const char*); +SOAP_FMAC3 xsd__int * SOAP_FMAC4 soap_in_xsd__int(struct soap*, const char*, xsd__int *, const char*); + +#define soap_write_xsd__int(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__int(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__int(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__int * SOAP_FMAC4 soap_get_xsd__int(struct soap*, xsd__int *, const char*, const char*); + +#define soap_new_xsd__int(soap, n) soap_instantiate_xsd__int(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__int(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__int * SOAP_FMAC2 soap_instantiate_xsd__int(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__int(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__float +#define SOAP_TYPE_interswitch_xsd__float (36) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__float(struct soap*, const char*, int, const xsd__float *, const char*); +SOAP_FMAC3 xsd__float * SOAP_FMAC4 soap_in_xsd__float(struct soap*, const char*, xsd__float *, const char*); + +#define soap_write_xsd__float(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__float(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__float(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__float * SOAP_FMAC4 soap_get_xsd__float(struct soap*, xsd__float *, const char*, const char*); + +#define soap_new_xsd__float(soap, n) soap_instantiate_xsd__float(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__float(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__float * SOAP_FMAC2 soap_instantiate_xsd__float(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__float(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__duration_ +#define SOAP_TYPE_interswitch_xsd__duration_ (35) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__duration_(struct soap*, const char*, int, const xsd__duration_ *, const char*); +SOAP_FMAC3 xsd__duration_ * SOAP_FMAC4 soap_in_xsd__duration_(struct soap*, const char*, xsd__duration_ *, const char*); + +#define soap_write_xsd__duration_(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__duration_(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__duration_(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__duration_ * SOAP_FMAC4 soap_get_xsd__duration_(struct soap*, xsd__duration_ *, const char*, const char*); + +#define soap_new_xsd__duration_(soap, n) soap_instantiate_xsd__duration_(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__duration_(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__duration_ * SOAP_FMAC2 soap_instantiate_xsd__duration_(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__duration_(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__duration +#define SOAP_TYPE_interswitch_xsd__duration (34) +#endif + +#define soap_default_xsd__duration(soap, a) soap_default_std__string(soap, a) + + +#define soap_serialize_xsd__duration(soap, a) soap_serialize_std__string(soap, a) + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__duration(struct soap*, const char*, int, const std::string*, const char*); +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_xsd__duration(struct soap*, const char*, std::string*, const char*); + +#define soap_write_xsd__duration(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__duration(struct soap*, const std::string *, const char*, const char*); + +#define soap_read_xsd__duration(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__duration(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_xsd__duration(struct soap*, std::string *, const char*, const char*); + +#define soap_new_xsd__duration(soap, n) soap_instantiate_xsd__duration(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__duration(soap, p) soap_delete(soap, p) + + +#define soap_instantiate_xsd__duration soap_instantiate_std__string + + +#define soap_copy_xsd__duration soap_copy_std__string + +#ifndef SOAP_TYPE_interswitch_xsd__double +#define SOAP_TYPE_interswitch_xsd__double (32) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__double(struct soap*, const char*, int, const xsd__double *, const char*); +SOAP_FMAC3 xsd__double * SOAP_FMAC4 soap_in_xsd__double(struct soap*, const char*, xsd__double *, const char*); + +#define soap_write_xsd__double(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__double(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__double(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__double * SOAP_FMAC4 soap_get_xsd__double(struct soap*, xsd__double *, const char*, const char*); + +#define soap_new_xsd__double(soap, n) soap_instantiate_xsd__double(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__double(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__double * SOAP_FMAC2 soap_instantiate_xsd__double(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__double(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__decimal_ +#define SOAP_TYPE_interswitch_xsd__decimal_ (31) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__decimal_(struct soap*, const char*, int, const xsd__decimal_ *, const char*); +SOAP_FMAC3 xsd__decimal_ * SOAP_FMAC4 soap_in_xsd__decimal_(struct soap*, const char*, xsd__decimal_ *, const char*); + +#define soap_write_xsd__decimal_(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__decimal_(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__decimal_(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__decimal_ * SOAP_FMAC4 soap_get_xsd__decimal_(struct soap*, xsd__decimal_ *, const char*, const char*); + +#define soap_new_xsd__decimal_(soap, n) soap_instantiate_xsd__decimal_(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__decimal_(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__decimal_ * SOAP_FMAC2 soap_instantiate_xsd__decimal_(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__decimal_(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__decimal +#define SOAP_TYPE_interswitch_xsd__decimal (30) +#endif + +#define soap_default_xsd__decimal(soap, a) soap_default_std__string(soap, a) + + +#define soap_serialize_xsd__decimal(soap, a) soap_serialize_std__string(soap, a) + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__decimal(struct soap*, const char*, int, const std::string*, const char*); +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_xsd__decimal(struct soap*, const char*, std::string*, const char*); + +#define soap_write_xsd__decimal(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__decimal(struct soap*, const std::string *, const char*, const char*); + +#define soap_read_xsd__decimal(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__decimal(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_xsd__decimal(struct soap*, std::string *, const char*, const char*); + +#define soap_new_xsd__decimal(soap, n) soap_instantiate_xsd__decimal(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__decimal(soap, p) soap_delete(soap, p) + + +#define soap_instantiate_xsd__decimal soap_instantiate_std__string + + +#define soap_copy_xsd__decimal soap_copy_std__string + +#ifndef SOAP_TYPE_interswitch_xsd__dateTime +#define SOAP_TYPE_interswitch_xsd__dateTime (28) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__dateTime(struct soap*, const char*, int, const xsd__dateTime *, const char*); +SOAP_FMAC3 xsd__dateTime * SOAP_FMAC4 soap_in_xsd__dateTime(struct soap*, const char*, xsd__dateTime *, const char*); + +#define soap_write_xsd__dateTime(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__dateTime(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__dateTime(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__dateTime * SOAP_FMAC4 soap_get_xsd__dateTime(struct soap*, xsd__dateTime *, const char*, const char*); + +#define soap_new_xsd__dateTime(soap, n) soap_instantiate_xsd__dateTime(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__dateTime(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__dateTime * SOAP_FMAC2 soap_instantiate_xsd__dateTime(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__dateTime(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__byte_ +#define SOAP_TYPE_interswitch_xsd__byte_ (27) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__byte_(struct soap*, const char*, int, const xsd__byte_ *, const char*); +SOAP_FMAC3 xsd__byte_ * SOAP_FMAC4 soap_in_xsd__byte_(struct soap*, const char*, xsd__byte_ *, const char*); + +#define soap_write_xsd__byte_(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__byte_(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__byte_(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__byte_ * SOAP_FMAC4 soap_get_xsd__byte_(struct soap*, xsd__byte_ *, const char*, const char*); + +#define soap_new_xsd__byte_(soap, n) soap_instantiate_xsd__byte_(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__byte_(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__byte_ * SOAP_FMAC2 soap_instantiate_xsd__byte_(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__byte_(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__boolean +#define SOAP_TYPE_interswitch_xsd__boolean (24) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__boolean(struct soap*, const char*, int, const xsd__boolean *, const char*); +SOAP_FMAC3 xsd__boolean * SOAP_FMAC4 soap_in_xsd__boolean(struct soap*, const char*, xsd__boolean *, const char*); + +#define soap_write_xsd__boolean(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__boolean(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__boolean(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__boolean * SOAP_FMAC4 soap_get_xsd__boolean(struct soap*, xsd__boolean *, const char*, const char*); + +#define soap_new_xsd__boolean(soap, n) soap_instantiate_xsd__boolean(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__boolean(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__boolean * SOAP_FMAC2 soap_instantiate_xsd__boolean(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__boolean(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__base64Binary_ +#define SOAP_TYPE_interswitch_xsd__base64Binary_ (23) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__base64Binary_(struct soap*, const char*, int, const xsd__base64Binary_ *, const char*); +SOAP_FMAC3 xsd__base64Binary_ * SOAP_FMAC4 soap_in_xsd__base64Binary_(struct soap*, const char*, xsd__base64Binary_ *, const char*); + +#define soap_write_xsd__base64Binary_(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__base64Binary_(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__base64Binary_(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__base64Binary_ * SOAP_FMAC4 soap_get_xsd__base64Binary_(struct soap*, xsd__base64Binary_ *, const char*, const char*); + +#define soap_new_xsd__base64Binary_(soap, n) soap_instantiate_xsd__base64Binary_(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__base64Binary_(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__base64Binary_ * SOAP_FMAC2 soap_instantiate_xsd__base64Binary_(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__base64Binary_(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__base64Binary +#define SOAP_TYPE_interswitch_xsd__base64Binary (19) +#endif +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__base64Binary(struct soap*, const char*, int, const xsd__base64Binary *, const char*); +SOAP_FMAC3 xsd__base64Binary * SOAP_FMAC4 soap_in_xsd__base64Binary(struct soap*, const char*, xsd__base64Binary *, const char*); + +#define soap_write_xsd__base64Binary(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__base64Binary(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__base64Binary(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__base64Binary * SOAP_FMAC4 soap_get_xsd__base64Binary(struct soap*, xsd__base64Binary *, const char*, const char*); + +#define soap_new_xsd__base64Binary(soap, n) soap_instantiate_xsd__base64Binary(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__base64Binary(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__base64Binary * SOAP_FMAC2 soap_instantiate_xsd__base64Binary(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__base64Binary(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__anyURI_ +#define SOAP_TYPE_interswitch_xsd__anyURI_ (18) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__anyURI_(struct soap*, const char*, int, const xsd__anyURI_ *, const char*); +SOAP_FMAC3 xsd__anyURI_ * SOAP_FMAC4 soap_in_xsd__anyURI_(struct soap*, const char*, xsd__anyURI_ *, const char*); + +#define soap_write_xsd__anyURI_(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__anyURI_(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__anyURI_(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__anyURI_ * SOAP_FMAC4 soap_get_xsd__anyURI_(struct soap*, xsd__anyURI_ *, const char*, const char*); + +#define soap_new_xsd__anyURI_(soap, n) soap_instantiate_xsd__anyURI_(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__anyURI_(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__anyURI_ * SOAP_FMAC2 soap_instantiate_xsd__anyURI_(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__anyURI_(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__anyURI +#define SOAP_TYPE_interswitch_xsd__anyURI (17) +#endif + +#define soap_default_xsd__anyURI(soap, a) soap_default_std__string(soap, a) + + +#define soap_serialize_xsd__anyURI(soap, a) soap_serialize_std__string(soap, a) + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__anyURI(struct soap*, const char*, int, const std::string*, const char*); +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_xsd__anyURI(struct soap*, const char*, std::string*, const char*); + +#define soap_write_xsd__anyURI(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__anyURI(struct soap*, const std::string *, const char*, const char*); + +#define soap_read_xsd__anyURI(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__anyURI(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_xsd__anyURI(struct soap*, std::string *, const char*, const char*); + +#define soap_new_xsd__anyURI(soap, n) soap_instantiate_xsd__anyURI(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__anyURI(soap, p) soap_delete(soap, p) + + +#define soap_instantiate_xsd__anyURI soap_instantiate_std__string + + +#define soap_copy_xsd__anyURI soap_copy_std__string + +#ifndef SOAP_TYPE_interswitch_xsd__QName_ +#define SOAP_TYPE_interswitch_xsd__QName_ (16) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__QName_(struct soap*, const char*, int, const xsd__QName_ *, const char*); +SOAP_FMAC3 xsd__QName_ * SOAP_FMAC4 soap_in_xsd__QName_(struct soap*, const char*, xsd__QName_ *, const char*); + +#define soap_write_xsd__QName_(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__QName_(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__QName_(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__QName_ * SOAP_FMAC4 soap_get_xsd__QName_(struct soap*, xsd__QName_ *, const char*, const char*); + +#define soap_new_xsd__QName_(soap, n) soap_instantiate_xsd__QName_(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__QName_(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__QName_ * SOAP_FMAC2 soap_instantiate_xsd__QName_(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__QName_(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__QName +#define SOAP_TYPE_interswitch_xsd__QName (15) +#endif + +#define soap_default_xsd__QName(soap, a) soap_default_std__string(soap, a) + + +#define soap_serialize_xsd__QName(soap, a) soap_serialize_std__string(soap, a) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__QName(struct soap*, const char*, int, const xsd__QName *, const char*); +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_xsd__QName(struct soap*, const char*, std::string*, const char*); + +#define soap_write_xsd__QName(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__QName(struct soap*, const xsd__QName *, const char*, const char*); + +#define soap_read_xsd__QName(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__QName(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__QName * SOAP_FMAC4 soap_get_xsd__QName(struct soap*, xsd__QName *, const char*, const char*); + +#define soap_new_xsd__QName(soap, n) soap_instantiate_xsd__QName(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__QName(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__QName * SOAP_FMAC2 soap_instantiate_xsd__QName(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__QName(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__IDREF_ +#define SOAP_TYPE_interswitch_xsd__IDREF_ (14) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__IDREF_(struct soap*, const char*, int, const xsd__IDREF_ *, const char*); +SOAP_FMAC3 xsd__IDREF_ * SOAP_FMAC4 soap_in_xsd__IDREF_(struct soap*, const char*, xsd__IDREF_ *, const char*); + +#define soap_write_xsd__IDREF_(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__IDREF_(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__IDREF_(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__IDREF_ * SOAP_FMAC4 soap_get_xsd__IDREF_(struct soap*, xsd__IDREF_ *, const char*, const char*); + +#define soap_new_xsd__IDREF_(soap, n) soap_instantiate_xsd__IDREF_(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__IDREF_(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__IDREF_ * SOAP_FMAC2 soap_instantiate_xsd__IDREF_(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__IDREF_(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__IDREF +#define SOAP_TYPE_interswitch_xsd__IDREF (13) +#endif + +#define soap_default_xsd__IDREF(soap, a) soap_default_std__string(soap, a) + + +#define soap_serialize_xsd__IDREF(soap, a) soap_serialize_std__string(soap, a) + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__IDREF(struct soap*, const char*, int, const std::string*, const char*); +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_xsd__IDREF(struct soap*, const char*, std::string*, const char*); + +#define soap_write_xsd__IDREF(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__IDREF(struct soap*, const std::string *, const char*, const char*); + +#define soap_read_xsd__IDREF(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__IDREF(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_xsd__IDREF(struct soap*, std::string *, const char*, const char*); + +#define soap_new_xsd__IDREF(soap, n) soap_instantiate_xsd__IDREF(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__IDREF(soap, p) soap_delete(soap, p) + + +#define soap_instantiate_xsd__IDREF soap_instantiate_std__string + + +#define soap_copy_xsd__IDREF soap_copy_std__string + +#ifndef SOAP_TYPE_interswitch_xsd__ID_ +#define SOAP_TYPE_interswitch_xsd__ID_ (12) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__ID_(struct soap*, const char*, int, const xsd__ID_ *, const char*); +SOAP_FMAC3 xsd__ID_ * SOAP_FMAC4 soap_in_xsd__ID_(struct soap*, const char*, xsd__ID_ *, const char*); + +#define soap_write_xsd__ID_(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__ID_(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__ID_(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__ID_ * SOAP_FMAC4 soap_get_xsd__ID_(struct soap*, xsd__ID_ *, const char*, const char*); + +#define soap_new_xsd__ID_(soap, n) soap_instantiate_xsd__ID_(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__ID_(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__ID_ * SOAP_FMAC2 soap_instantiate_xsd__ID_(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__ID_(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__ID +#define SOAP_TYPE_interswitch_xsd__ID (11) +#endif + +#define soap_default_xsd__ID(soap, a) soap_default_std__string(soap, a) + + +#define soap_serialize_xsd__ID(soap, a) soap_serialize_std__string(soap, a) + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__ID(struct soap*, const char*, int, const std::string*, const char*); +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_xsd__ID(struct soap*, const char*, std::string*, const char*); + +#define soap_write_xsd__ID(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__ID(struct soap*, const std::string *, const char*, const char*); + +#define soap_read_xsd__ID(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__ID(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_xsd__ID(struct soap*, std::string *, const char*, const char*); + +#define soap_new_xsd__ID(soap, n) soap_instantiate_xsd__ID(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__ID(soap, p) soap_delete(soap, p) + + +#define soap_instantiate_xsd__ID soap_instantiate_std__string + + +#define soap_copy_xsd__ID soap_copy_std__string + +#ifndef SOAP_TYPE_interswitch_std__string +#define SOAP_TYPE_interswitch_std__string (10) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_std__string(struct soap*, std::string *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__string(struct soap*, const std::string *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__string(struct soap*, const char*, int, const std::string*, const char*); +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_in_std__string(struct soap*, const char*, std::string*, const char*); + +#define soap_write_std__string(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__string(struct soap*, const std::string *, const char*, const char*); + +#define soap_read_std__string(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_std__string(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 std::string * SOAP_FMAC4 soap_get_std__string(struct soap*, std::string *, const char*, const char*); + +#define soap_new_std__string(soap, n) soap_instantiate_std__string(soap, n, NULL, NULL, NULL) + + +#define soap_delete_std__string(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 std::string * SOAP_FMAC2 soap_instantiate_std__string(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_std__string(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch_xsd__anyType +#define SOAP_TYPE_interswitch_xsd__anyType (8) +#endif + +SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__anyType(struct soap*, const char*, int, const xsd__anyType *, const char*); +SOAP_FMAC3 xsd__anyType * SOAP_FMAC4 soap_in_xsd__anyType(struct soap*, const char*, xsd__anyType *, const char*); + +#define soap_write_xsd__anyType(soap, data) ( soap_begin_send(soap) || ((data)->soap_serialize(soap), 0) || (data)->soap_put(soap, NULL, NULL) || soap_end_send(soap) ) + + +#define soap_read_xsd__anyType(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_xsd__anyType(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 xsd__anyType * SOAP_FMAC4 soap_get_xsd__anyType(struct soap*, xsd__anyType *, const char*, const char*); + +#define soap_new_xsd__anyType(soap, n) soap_instantiate_xsd__anyType(soap, n, NULL, NULL, NULL) + + +#define soap_delete_xsd__anyType(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 xsd__anyType * SOAP_FMAC2 soap_instantiate_xsd__anyType(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_xsd__anyType(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_interswitch_SOAP_ENV__Fault +#define SOAP_TYPE_interswitch_SOAP_ENV__Fault (299) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Fault(struct soap*, struct SOAP_ENV__Fault *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Fault(struct soap*, const struct SOAP_ENV__Fault *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Fault(struct soap*, const char*, int, const struct SOAP_ENV__Fault *, const char*); +SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_in_SOAP_ENV__Fault(struct soap*, const char*, struct SOAP_ENV__Fault *, const char*); + +#define soap_write_SOAP_ENV__Fault(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_SOAP_ENV__Fault(soap, data), 0) || interswitch::soap_put_SOAP_ENV__Fault(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Fault(struct soap*, const struct SOAP_ENV__Fault *, const char*, const char*); + +#define soap_read_SOAP_ENV__Fault(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_SOAP_ENV__Fault(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_get_SOAP_ENV__Fault(struct soap*, struct SOAP_ENV__Fault *, const char*, const char*); + +#define soap_new_SOAP_ENV__Fault(soap, n) soap_instantiate_SOAP_ENV__Fault(soap, n, NULL, NULL, NULL) + + +#define soap_delete_SOAP_ENV__Fault(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct SOAP_ENV__Fault * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Fault(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Fault(struct soap*, int, int, void*, size_t, const void*, size_t); + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_interswitch_SOAP_ENV__Reason +#define SOAP_TYPE_interswitch_SOAP_ENV__Reason (298) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Reason(struct soap*, const struct SOAP_ENV__Reason *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Reason(struct soap*, const char*, int, const struct SOAP_ENV__Reason *, const char*); +SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_in_SOAP_ENV__Reason(struct soap*, const char*, struct SOAP_ENV__Reason *, const char*); + +#define soap_write_SOAP_ENV__Reason(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_SOAP_ENV__Reason(soap, data), 0) || interswitch::soap_put_SOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Reason(struct soap*, const struct SOAP_ENV__Reason *, const char*, const char*); + +#define soap_read_SOAP_ENV__Reason(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_SOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct SOAP_ENV__Reason * SOAP_FMAC4 soap_get_SOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *, const char*, const char*); + +#define soap_new_SOAP_ENV__Reason(soap, n) soap_instantiate_SOAP_ENV__Reason(soap, n, NULL, NULL, NULL) + + +#define soap_delete_SOAP_ENV__Reason(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct SOAP_ENV__Reason * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Reason(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Reason(struct soap*, int, int, void*, size_t, const void*, size_t); + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_interswitch_SOAP_ENV__Detail +#define SOAP_TYPE_interswitch_SOAP_ENV__Detail (295) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Detail(struct soap*, const struct SOAP_ENV__Detail *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Detail(struct soap*, const char*, int, const struct SOAP_ENV__Detail *, const char*); +SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_in_SOAP_ENV__Detail(struct soap*, const char*, struct SOAP_ENV__Detail *, const char*); + +#define soap_write_SOAP_ENV__Detail(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_SOAP_ENV__Detail(soap, data), 0) || interswitch::soap_put_SOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Detail(struct soap*, const struct SOAP_ENV__Detail *, const char*, const char*); + +#define soap_read_SOAP_ENV__Detail(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_SOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_get_SOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *, const char*, const char*); + +#define soap_new_SOAP_ENV__Detail(soap, n) soap_instantiate_SOAP_ENV__Detail(soap, n, NULL, NULL, NULL) + + +#define soap_delete_SOAP_ENV__Detail(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct SOAP_ENV__Detail * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Detail(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Detail(struct soap*, int, int, void*, size_t, const void*, size_t); + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_interswitch_SOAP_ENV__Code +#define SOAP_TYPE_interswitch_SOAP_ENV__Code (293) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Code(struct soap*, const struct SOAP_ENV__Code *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Code(struct soap*, const char*, int, const struct SOAP_ENV__Code *, const char*); +SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_in_SOAP_ENV__Code(struct soap*, const char*, struct SOAP_ENV__Code *, const char*); + +#define soap_write_SOAP_ENV__Code(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_SOAP_ENV__Code(soap, data), 0) || interswitch::soap_put_SOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Code(struct soap*, const struct SOAP_ENV__Code *, const char*, const char*); + +#define soap_read_SOAP_ENV__Code(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_SOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_get_SOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *, const char*, const char*); + +#define soap_new_SOAP_ENV__Code(soap, n) soap_instantiate_SOAP_ENV__Code(soap, n, NULL, NULL, NULL) + + +#define soap_delete_SOAP_ENV__Code(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct SOAP_ENV__Code * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Code(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Code(struct soap*, int, int, void*, size_t, const void*, size_t); + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_interswitch_SOAP_ENV__Header +#define SOAP_TYPE_interswitch_SOAP_ENV__Header (292) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Header(struct soap*, struct SOAP_ENV__Header *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Header(struct soap*, const struct SOAP_ENV__Header *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Header(struct soap*, const char*, int, const struct SOAP_ENV__Header *, const char*); +SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_in_SOAP_ENV__Header(struct soap*, const char*, struct SOAP_ENV__Header *, const char*); + +#define soap_write_SOAP_ENV__Header(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_SOAP_ENV__Header(soap, data), 0) || interswitch::soap_put_SOAP_ENV__Header(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Header(struct soap*, const struct SOAP_ENV__Header *, const char*, const char*); + +#define soap_read_SOAP_ENV__Header(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_SOAP_ENV__Header(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_get_SOAP_ENV__Header(struct soap*, struct SOAP_ENV__Header *, const char*, const char*); + +#define soap_new_SOAP_ENV__Header(soap, n) soap_instantiate_SOAP_ENV__Header(soap, n, NULL, NULL, NULL) + + +#define soap_delete_SOAP_ENV__Header(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct SOAP_ENV__Header * SOAP_FMAC2 soap_instantiate_SOAP_ENV__Header(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy_SOAP_ENV__Header(struct soap*, int, int, void*, size_t, const void*, size_t); + +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__VerifyBiller +#define SOAP_TYPE_interswitch___interswitch__VerifyBiller (291) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__VerifyBiller(struct soap*, struct __interswitch__VerifyBiller *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__VerifyBiller(struct soap*, const struct __interswitch__VerifyBiller *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__VerifyBiller(struct soap*, const char*, int, const struct __interswitch__VerifyBiller *, const char*); +SOAP_FMAC3 struct __interswitch__VerifyBiller * SOAP_FMAC4 soap_in___interswitch__VerifyBiller(struct soap*, const char*, struct __interswitch__VerifyBiller *, const char*); + +#define soap_write___interswitch__VerifyBiller(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__VerifyBiller(soap, data), 0) || interswitch::soap_put___interswitch__VerifyBiller(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__VerifyBiller(struct soap*, const struct __interswitch__VerifyBiller *, const char*, const char*); + +#define soap_read___interswitch__VerifyBiller(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__VerifyBiller(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__VerifyBiller * SOAP_FMAC4 soap_get___interswitch__VerifyBiller(struct soap*, struct __interswitch__VerifyBiller *, const char*, const char*); + +#define soap_new___interswitch__VerifyBiller(soap, n) soap_instantiate___interswitch__VerifyBiller(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__VerifyBiller(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__VerifyBiller * SOAP_FMAC2 soap_instantiate___interswitch__VerifyBiller(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__VerifyBiller(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__CreateBiller +#define SOAP_TYPE_interswitch___interswitch__CreateBiller (287) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__CreateBiller(struct soap*, struct __interswitch__CreateBiller *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__CreateBiller(struct soap*, const struct __interswitch__CreateBiller *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__CreateBiller(struct soap*, const char*, int, const struct __interswitch__CreateBiller *, const char*); +SOAP_FMAC3 struct __interswitch__CreateBiller * SOAP_FMAC4 soap_in___interswitch__CreateBiller(struct soap*, const char*, struct __interswitch__CreateBiller *, const char*); + +#define soap_write___interswitch__CreateBiller(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__CreateBiller(soap, data), 0) || interswitch::soap_put___interswitch__CreateBiller(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__CreateBiller(struct soap*, const struct __interswitch__CreateBiller *, const char*, const char*); + +#define soap_read___interswitch__CreateBiller(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__CreateBiller(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__CreateBiller * SOAP_FMAC4 soap_get___interswitch__CreateBiller(struct soap*, struct __interswitch__CreateBiller *, const char*, const char*); + +#define soap_new___interswitch__CreateBiller(soap, n) soap_instantiate___interswitch__CreateBiller(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__CreateBiller(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__CreateBiller * SOAP_FMAC2 soap_instantiate___interswitch__CreateBiller(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__CreateBiller(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__DoCustomProcessing +#define SOAP_TYPE_interswitch___interswitch__DoCustomProcessing (283) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__DoCustomProcessing(struct soap*, struct __interswitch__DoCustomProcessing *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__DoCustomProcessing(struct soap*, const struct __interswitch__DoCustomProcessing *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__DoCustomProcessing(struct soap*, const char*, int, const struct __interswitch__DoCustomProcessing *, const char*); +SOAP_FMAC3 struct __interswitch__DoCustomProcessing * SOAP_FMAC4 soap_in___interswitch__DoCustomProcessing(struct soap*, const char*, struct __interswitch__DoCustomProcessing *, const char*); + +#define soap_write___interswitch__DoCustomProcessing(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__DoCustomProcessing(soap, data), 0) || interswitch::soap_put___interswitch__DoCustomProcessing(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__DoCustomProcessing(struct soap*, const struct __interswitch__DoCustomProcessing *, const char*, const char*); + +#define soap_read___interswitch__DoCustomProcessing(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__DoCustomProcessing(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__DoCustomProcessing * SOAP_FMAC4 soap_get___interswitch__DoCustomProcessing(struct soap*, struct __interswitch__DoCustomProcessing *, const char*, const char*); + +#define soap_new___interswitch__DoCustomProcessing(soap, n) soap_instantiate___interswitch__DoCustomProcessing(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__DoCustomProcessing(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__DoCustomProcessing * SOAP_FMAC2 soap_instantiate___interswitch__DoCustomProcessing(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__DoCustomProcessing(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__ResendActivationToken +#define SOAP_TYPE_interswitch___interswitch__ResendActivationToken (279) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__ResendActivationToken(struct soap*, struct __interswitch__ResendActivationToken *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__ResendActivationToken(struct soap*, const struct __interswitch__ResendActivationToken *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__ResendActivationToken(struct soap*, const char*, int, const struct __interswitch__ResendActivationToken *, const char*); +SOAP_FMAC3 struct __interswitch__ResendActivationToken * SOAP_FMAC4 soap_in___interswitch__ResendActivationToken(struct soap*, const char*, struct __interswitch__ResendActivationToken *, const char*); + +#define soap_write___interswitch__ResendActivationToken(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__ResendActivationToken(soap, data), 0) || interswitch::soap_put___interswitch__ResendActivationToken(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__ResendActivationToken(struct soap*, const struct __interswitch__ResendActivationToken *, const char*, const char*); + +#define soap_read___interswitch__ResendActivationToken(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__ResendActivationToken(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__ResendActivationToken * SOAP_FMAC4 soap_get___interswitch__ResendActivationToken(struct soap*, struct __interswitch__ResendActivationToken *, const char*, const char*); + +#define soap_new___interswitch__ResendActivationToken(soap, n) soap_instantiate___interswitch__ResendActivationToken(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__ResendActivationToken(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__ResendActivationToken * SOAP_FMAC2 soap_instantiate___interswitch__ResendActivationToken(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__ResendActivationToken(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__EditCustomerBillerAccount +#define SOAP_TYPE_interswitch___interswitch__EditCustomerBillerAccount (275) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__EditCustomerBillerAccount(struct soap*, struct __interswitch__EditCustomerBillerAccount *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__EditCustomerBillerAccount(struct soap*, const struct __interswitch__EditCustomerBillerAccount *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__EditCustomerBillerAccount(struct soap*, const char*, int, const struct __interswitch__EditCustomerBillerAccount *, const char*); +SOAP_FMAC3 struct __interswitch__EditCustomerBillerAccount * SOAP_FMAC4 soap_in___interswitch__EditCustomerBillerAccount(struct soap*, const char*, struct __interswitch__EditCustomerBillerAccount *, const char*); + +#define soap_write___interswitch__EditCustomerBillerAccount(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__EditCustomerBillerAccount(soap, data), 0) || interswitch::soap_put___interswitch__EditCustomerBillerAccount(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__EditCustomerBillerAccount(struct soap*, const struct __interswitch__EditCustomerBillerAccount *, const char*, const char*); + +#define soap_read___interswitch__EditCustomerBillerAccount(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__EditCustomerBillerAccount(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__EditCustomerBillerAccount * SOAP_FMAC4 soap_get___interswitch__EditCustomerBillerAccount(struct soap*, struct __interswitch__EditCustomerBillerAccount *, const char*, const char*); + +#define soap_new___interswitch__EditCustomerBillerAccount(soap, n) soap_instantiate___interswitch__EditCustomerBillerAccount(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__EditCustomerBillerAccount(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__EditCustomerBillerAccount * SOAP_FMAC2 soap_instantiate___interswitch__EditCustomerBillerAccount(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__EditCustomerBillerAccount(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__GetBillersCollectionsAccount +#define SOAP_TYPE_interswitch___interswitch__GetBillersCollectionsAccount (271) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetBillersCollectionsAccount(struct soap*, struct __interswitch__GetBillersCollectionsAccount *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetBillersCollectionsAccount(struct soap*, const struct __interswitch__GetBillersCollectionsAccount *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetBillersCollectionsAccount(struct soap*, const char*, int, const struct __interswitch__GetBillersCollectionsAccount *, const char*); +SOAP_FMAC3 struct __interswitch__GetBillersCollectionsAccount * SOAP_FMAC4 soap_in___interswitch__GetBillersCollectionsAccount(struct soap*, const char*, struct __interswitch__GetBillersCollectionsAccount *, const char*); + +#define soap_write___interswitch__GetBillersCollectionsAccount(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__GetBillersCollectionsAccount(soap, data), 0) || interswitch::soap_put___interswitch__GetBillersCollectionsAccount(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetBillersCollectionsAccount(struct soap*, const struct __interswitch__GetBillersCollectionsAccount *, const char*, const char*); + +#define soap_read___interswitch__GetBillersCollectionsAccount(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__GetBillersCollectionsAccount(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__GetBillersCollectionsAccount * SOAP_FMAC4 soap_get___interswitch__GetBillersCollectionsAccount(struct soap*, struct __interswitch__GetBillersCollectionsAccount *, const char*, const char*); + +#define soap_new___interswitch__GetBillersCollectionsAccount(soap, n) soap_instantiate___interswitch__GetBillersCollectionsAccount(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__GetBillersCollectionsAccount(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__GetBillersCollectionsAccount * SOAP_FMAC2 soap_instantiate___interswitch__GetBillersCollectionsAccount(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetBillersCollectionsAccount(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__GetCollectionsAccount +#define SOAP_TYPE_interswitch___interswitch__GetCollectionsAccount (267) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetCollectionsAccount(struct soap*, struct __interswitch__GetCollectionsAccount *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetCollectionsAccount(struct soap*, const struct __interswitch__GetCollectionsAccount *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetCollectionsAccount(struct soap*, const char*, int, const struct __interswitch__GetCollectionsAccount *, const char*); +SOAP_FMAC3 struct __interswitch__GetCollectionsAccount * SOAP_FMAC4 soap_in___interswitch__GetCollectionsAccount(struct soap*, const char*, struct __interswitch__GetCollectionsAccount *, const char*); + +#define soap_write___interswitch__GetCollectionsAccount(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__GetCollectionsAccount(soap, data), 0) || interswitch::soap_put___interswitch__GetCollectionsAccount(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetCollectionsAccount(struct soap*, const struct __interswitch__GetCollectionsAccount *, const char*, const char*); + +#define soap_read___interswitch__GetCollectionsAccount(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__GetCollectionsAccount(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__GetCollectionsAccount * SOAP_FMAC4 soap_get___interswitch__GetCollectionsAccount(struct soap*, struct __interswitch__GetCollectionsAccount *, const char*, const char*); + +#define soap_new___interswitch__GetCollectionsAccount(soap, n) soap_instantiate___interswitch__GetCollectionsAccount(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__GetCollectionsAccount(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__GetCollectionsAccount * SOAP_FMAC2 soap_instantiate___interswitch__GetCollectionsAccount(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetCollectionsAccount(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__AddBillerCustomer +#define SOAP_TYPE_interswitch___interswitch__AddBillerCustomer (263) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__AddBillerCustomer(struct soap*, struct __interswitch__AddBillerCustomer *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__AddBillerCustomer(struct soap*, const struct __interswitch__AddBillerCustomer *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__AddBillerCustomer(struct soap*, const char*, int, const struct __interswitch__AddBillerCustomer *, const char*); +SOAP_FMAC3 struct __interswitch__AddBillerCustomer * SOAP_FMAC4 soap_in___interswitch__AddBillerCustomer(struct soap*, const char*, struct __interswitch__AddBillerCustomer *, const char*); + +#define soap_write___interswitch__AddBillerCustomer(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__AddBillerCustomer(soap, data), 0) || interswitch::soap_put___interswitch__AddBillerCustomer(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__AddBillerCustomer(struct soap*, const struct __interswitch__AddBillerCustomer *, const char*, const char*); + +#define soap_read___interswitch__AddBillerCustomer(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__AddBillerCustomer(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__AddBillerCustomer * SOAP_FMAC4 soap_get___interswitch__AddBillerCustomer(struct soap*, struct __interswitch__AddBillerCustomer *, const char*, const char*); + +#define soap_new___interswitch__AddBillerCustomer(soap, n) soap_instantiate___interswitch__AddBillerCustomer(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__AddBillerCustomer(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__AddBillerCustomer * SOAP_FMAC2 soap_instantiate___interswitch__AddBillerCustomer(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__AddBillerCustomer(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__GetCustomerPayments +#define SOAP_TYPE_interswitch___interswitch__GetCustomerPayments (259) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetCustomerPayments(struct soap*, struct __interswitch__GetCustomerPayments *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetCustomerPayments(struct soap*, const struct __interswitch__GetCustomerPayments *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetCustomerPayments(struct soap*, const char*, int, const struct __interswitch__GetCustomerPayments *, const char*); +SOAP_FMAC3 struct __interswitch__GetCustomerPayments * SOAP_FMAC4 soap_in___interswitch__GetCustomerPayments(struct soap*, const char*, struct __interswitch__GetCustomerPayments *, const char*); + +#define soap_write___interswitch__GetCustomerPayments(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__GetCustomerPayments(soap, data), 0) || interswitch::soap_put___interswitch__GetCustomerPayments(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetCustomerPayments(struct soap*, const struct __interswitch__GetCustomerPayments *, const char*, const char*); + +#define soap_read___interswitch__GetCustomerPayments(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__GetCustomerPayments(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__GetCustomerPayments * SOAP_FMAC4 soap_get___interswitch__GetCustomerPayments(struct soap*, struct __interswitch__GetCustomerPayments *, const char*, const char*); + +#define soap_new___interswitch__GetCustomerPayments(soap, n) soap_instantiate___interswitch__GetCustomerPayments(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__GetCustomerPayments(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__GetCustomerPayments * SOAP_FMAC2 soap_instantiate___interswitch__GetCustomerPayments(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetCustomerPayments(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__GetCustomerBillerAccounts +#define SOAP_TYPE_interswitch___interswitch__GetCustomerBillerAccounts (255) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetCustomerBillerAccounts(struct soap*, struct __interswitch__GetCustomerBillerAccounts *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetCustomerBillerAccounts(struct soap*, const struct __interswitch__GetCustomerBillerAccounts *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetCustomerBillerAccounts(struct soap*, const char*, int, const struct __interswitch__GetCustomerBillerAccounts *, const char*); +SOAP_FMAC3 struct __interswitch__GetCustomerBillerAccounts * SOAP_FMAC4 soap_in___interswitch__GetCustomerBillerAccounts(struct soap*, const char*, struct __interswitch__GetCustomerBillerAccounts *, const char*); + +#define soap_write___interswitch__GetCustomerBillerAccounts(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__GetCustomerBillerAccounts(soap, data), 0) || interswitch::soap_put___interswitch__GetCustomerBillerAccounts(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetCustomerBillerAccounts(struct soap*, const struct __interswitch__GetCustomerBillerAccounts *, const char*, const char*); + +#define soap_read___interswitch__GetCustomerBillerAccounts(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__GetCustomerBillerAccounts(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__GetCustomerBillerAccounts * SOAP_FMAC4 soap_get___interswitch__GetCustomerBillerAccounts(struct soap*, struct __interswitch__GetCustomerBillerAccounts *, const char*, const char*); + +#define soap_new___interswitch__GetCustomerBillerAccounts(soap, n) soap_instantiate___interswitch__GetCustomerBillerAccounts(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__GetCustomerBillerAccounts(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__GetCustomerBillerAccounts * SOAP_FMAC2 soap_instantiate___interswitch__GetCustomerBillerAccounts(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetCustomerBillerAccounts(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__AddCustomerBillerAccount +#define SOAP_TYPE_interswitch___interswitch__AddCustomerBillerAccount (251) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__AddCustomerBillerAccount(struct soap*, struct __interswitch__AddCustomerBillerAccount *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__AddCustomerBillerAccount(struct soap*, const struct __interswitch__AddCustomerBillerAccount *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__AddCustomerBillerAccount(struct soap*, const char*, int, const struct __interswitch__AddCustomerBillerAccount *, const char*); +SOAP_FMAC3 struct __interswitch__AddCustomerBillerAccount * SOAP_FMAC4 soap_in___interswitch__AddCustomerBillerAccount(struct soap*, const char*, struct __interswitch__AddCustomerBillerAccount *, const char*); + +#define soap_write___interswitch__AddCustomerBillerAccount(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__AddCustomerBillerAccount(soap, data), 0) || interswitch::soap_put___interswitch__AddCustomerBillerAccount(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__AddCustomerBillerAccount(struct soap*, const struct __interswitch__AddCustomerBillerAccount *, const char*, const char*); + +#define soap_read___interswitch__AddCustomerBillerAccount(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__AddCustomerBillerAccount(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__AddCustomerBillerAccount * SOAP_FMAC4 soap_get___interswitch__AddCustomerBillerAccount(struct soap*, struct __interswitch__AddCustomerBillerAccount *, const char*, const char*); + +#define soap_new___interswitch__AddCustomerBillerAccount(soap, n) soap_instantiate___interswitch__AddCustomerBillerAccount(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__AddCustomerBillerAccount(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__AddCustomerBillerAccount * SOAP_FMAC2 soap_instantiate___interswitch__AddCustomerBillerAccount(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__AddCustomerBillerAccount(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__SendPayments +#define SOAP_TYPE_interswitch___interswitch__SendPayments (247) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__SendPayments(struct soap*, struct __interswitch__SendPayments *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__SendPayments(struct soap*, const struct __interswitch__SendPayments *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__SendPayments(struct soap*, const char*, int, const struct __interswitch__SendPayments *, const char*); +SOAP_FMAC3 struct __interswitch__SendPayments * SOAP_FMAC4 soap_in___interswitch__SendPayments(struct soap*, const char*, struct __interswitch__SendPayments *, const char*); + +#define soap_write___interswitch__SendPayments(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__SendPayments(soap, data), 0) || interswitch::soap_put___interswitch__SendPayments(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__SendPayments(struct soap*, const struct __interswitch__SendPayments *, const char*, const char*); + +#define soap_read___interswitch__SendPayments(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__SendPayments(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__SendPayments * SOAP_FMAC4 soap_get___interswitch__SendPayments(struct soap*, struct __interswitch__SendPayments *, const char*, const char*); + +#define soap_new___interswitch__SendPayments(soap, n) soap_instantiate___interswitch__SendPayments(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__SendPayments(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__SendPayments * SOAP_FMAC2 soap_instantiate___interswitch__SendPayments(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__SendPayments(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__SendBillPaymentAdvice +#define SOAP_TYPE_interswitch___interswitch__SendBillPaymentAdvice (243) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__SendBillPaymentAdvice(struct soap*, struct __interswitch__SendBillPaymentAdvice *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__SendBillPaymentAdvice(struct soap*, const struct __interswitch__SendBillPaymentAdvice *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__SendBillPaymentAdvice(struct soap*, const char*, int, const struct __interswitch__SendBillPaymentAdvice *, const char*); +SOAP_FMAC3 struct __interswitch__SendBillPaymentAdvice * SOAP_FMAC4 soap_in___interswitch__SendBillPaymentAdvice(struct soap*, const char*, struct __interswitch__SendBillPaymentAdvice *, const char*); + +#define soap_write___interswitch__SendBillPaymentAdvice(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__SendBillPaymentAdvice(soap, data), 0) || interswitch::soap_put___interswitch__SendBillPaymentAdvice(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__SendBillPaymentAdvice(struct soap*, const struct __interswitch__SendBillPaymentAdvice *, const char*, const char*); + +#define soap_read___interswitch__SendBillPaymentAdvice(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__SendBillPaymentAdvice(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__SendBillPaymentAdvice * SOAP_FMAC4 soap_get___interswitch__SendBillPaymentAdvice(struct soap*, struct __interswitch__SendBillPaymentAdvice *, const char*, const char*); + +#define soap_new___interswitch__SendBillPaymentAdvice(soap, n) soap_instantiate___interswitch__SendBillPaymentAdvice(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__SendBillPaymentAdvice(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__SendBillPaymentAdvice * SOAP_FMAC2 soap_instantiate___interswitch__SendBillPaymentAdvice(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__SendBillPaymentAdvice(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__AuthenticateCustomer +#define SOAP_TYPE_interswitch___interswitch__AuthenticateCustomer (239) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__AuthenticateCustomer(struct soap*, struct __interswitch__AuthenticateCustomer *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__AuthenticateCustomer(struct soap*, const struct __interswitch__AuthenticateCustomer *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__AuthenticateCustomer(struct soap*, const char*, int, const struct __interswitch__AuthenticateCustomer *, const char*); +SOAP_FMAC3 struct __interswitch__AuthenticateCustomer * SOAP_FMAC4 soap_in___interswitch__AuthenticateCustomer(struct soap*, const char*, struct __interswitch__AuthenticateCustomer *, const char*); + +#define soap_write___interswitch__AuthenticateCustomer(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__AuthenticateCustomer(soap, data), 0) || interswitch::soap_put___interswitch__AuthenticateCustomer(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__AuthenticateCustomer(struct soap*, const struct __interswitch__AuthenticateCustomer *, const char*, const char*); + +#define soap_read___interswitch__AuthenticateCustomer(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__AuthenticateCustomer(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__AuthenticateCustomer * SOAP_FMAC4 soap_get___interswitch__AuthenticateCustomer(struct soap*, struct __interswitch__AuthenticateCustomer *, const char*, const char*); + +#define soap_new___interswitch__AuthenticateCustomer(soap, n) soap_instantiate___interswitch__AuthenticateCustomer(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__AuthenticateCustomer(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__AuthenticateCustomer * SOAP_FMAC2 soap_instantiate___interswitch__AuthenticateCustomer(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__AuthenticateCustomer(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__DoBillPaymentInquiry +#define SOAP_TYPE_interswitch___interswitch__DoBillPaymentInquiry (235) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__DoBillPaymentInquiry(struct soap*, struct __interswitch__DoBillPaymentInquiry *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__DoBillPaymentInquiry(struct soap*, const struct __interswitch__DoBillPaymentInquiry *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__DoBillPaymentInquiry(struct soap*, const char*, int, const struct __interswitch__DoBillPaymentInquiry *, const char*); +SOAP_FMAC3 struct __interswitch__DoBillPaymentInquiry * SOAP_FMAC4 soap_in___interswitch__DoBillPaymentInquiry(struct soap*, const char*, struct __interswitch__DoBillPaymentInquiry *, const char*); + +#define soap_write___interswitch__DoBillPaymentInquiry(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__DoBillPaymentInquiry(soap, data), 0) || interswitch::soap_put___interswitch__DoBillPaymentInquiry(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__DoBillPaymentInquiry(struct soap*, const struct __interswitch__DoBillPaymentInquiry *, const char*, const char*); + +#define soap_read___interswitch__DoBillPaymentInquiry(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__DoBillPaymentInquiry(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__DoBillPaymentInquiry * SOAP_FMAC4 soap_get___interswitch__DoBillPaymentInquiry(struct soap*, struct __interswitch__DoBillPaymentInquiry *, const char*, const char*); + +#define soap_new___interswitch__DoBillPaymentInquiry(soap, n) soap_instantiate___interswitch__DoBillPaymentInquiry(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__DoBillPaymentInquiry(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__DoBillPaymentInquiry * SOAP_FMAC2 soap_instantiate___interswitch__DoBillPaymentInquiry(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__DoBillPaymentInquiry(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__GetBillerCategories +#define SOAP_TYPE_interswitch___interswitch__GetBillerCategories (231) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetBillerCategories(struct soap*, struct __interswitch__GetBillerCategories *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetBillerCategories(struct soap*, const struct __interswitch__GetBillerCategories *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetBillerCategories(struct soap*, const char*, int, const struct __interswitch__GetBillerCategories *, const char*); +SOAP_FMAC3 struct __interswitch__GetBillerCategories * SOAP_FMAC4 soap_in___interswitch__GetBillerCategories(struct soap*, const char*, struct __interswitch__GetBillerCategories *, const char*); + +#define soap_write___interswitch__GetBillerCategories(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__GetBillerCategories(soap, data), 0) || interswitch::soap_put___interswitch__GetBillerCategories(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetBillerCategories(struct soap*, const struct __interswitch__GetBillerCategories *, const char*, const char*); + +#define soap_read___interswitch__GetBillerCategories(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__GetBillerCategories(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__GetBillerCategories * SOAP_FMAC4 soap_get___interswitch__GetBillerCategories(struct soap*, struct __interswitch__GetBillerCategories *, const char*, const char*); + +#define soap_new___interswitch__GetBillerCategories(soap, n) soap_instantiate___interswitch__GetBillerCategories(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__GetBillerCategories(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__GetBillerCategories * SOAP_FMAC2 soap_instantiate___interswitch__GetBillerCategories(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetBillerCategories(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__GetBillerPaymentItems +#define SOAP_TYPE_interswitch___interswitch__GetBillerPaymentItems (227) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetBillerPaymentItems(struct soap*, struct __interswitch__GetBillerPaymentItems *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetBillerPaymentItems(struct soap*, const struct __interswitch__GetBillerPaymentItems *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetBillerPaymentItems(struct soap*, const char*, int, const struct __interswitch__GetBillerPaymentItems *, const char*); +SOAP_FMAC3 struct __interswitch__GetBillerPaymentItems * SOAP_FMAC4 soap_in___interswitch__GetBillerPaymentItems(struct soap*, const char*, struct __interswitch__GetBillerPaymentItems *, const char*); + +#define soap_write___interswitch__GetBillerPaymentItems(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__GetBillerPaymentItems(soap, data), 0) || interswitch::soap_put___interswitch__GetBillerPaymentItems(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetBillerPaymentItems(struct soap*, const struct __interswitch__GetBillerPaymentItems *, const char*, const char*); + +#define soap_read___interswitch__GetBillerPaymentItems(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__GetBillerPaymentItems(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__GetBillerPaymentItems * SOAP_FMAC4 soap_get___interswitch__GetBillerPaymentItems(struct soap*, struct __interswitch__GetBillerPaymentItems *, const char*, const char*); + +#define soap_new___interswitch__GetBillerPaymentItems(soap, n) soap_instantiate___interswitch__GetBillerPaymentItems(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__GetBillerPaymentItems(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__GetBillerPaymentItems * SOAP_FMAC2 soap_instantiate___interswitch__GetBillerPaymentItems(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetBillerPaymentItems(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__GetFeaturedBillers +#define SOAP_TYPE_interswitch___interswitch__GetFeaturedBillers (223) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetFeaturedBillers(struct soap*, struct __interswitch__GetFeaturedBillers *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetFeaturedBillers(struct soap*, const struct __interswitch__GetFeaturedBillers *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetFeaturedBillers(struct soap*, const char*, int, const struct __interswitch__GetFeaturedBillers *, const char*); +SOAP_FMAC3 struct __interswitch__GetFeaturedBillers * SOAP_FMAC4 soap_in___interswitch__GetFeaturedBillers(struct soap*, const char*, struct __interswitch__GetFeaturedBillers *, const char*); + +#define soap_write___interswitch__GetFeaturedBillers(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__GetFeaturedBillers(soap, data), 0) || interswitch::soap_put___interswitch__GetFeaturedBillers(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetFeaturedBillers(struct soap*, const struct __interswitch__GetFeaturedBillers *, const char*, const char*); + +#define soap_read___interswitch__GetFeaturedBillers(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__GetFeaturedBillers(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__GetFeaturedBillers * SOAP_FMAC4 soap_get___interswitch__GetFeaturedBillers(struct soap*, struct __interswitch__GetFeaturedBillers *, const char*, const char*); + +#define soap_new___interswitch__GetFeaturedBillers(soap, n) soap_instantiate___interswitch__GetFeaturedBillers(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__GetFeaturedBillers(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__GetFeaturedBillers * SOAP_FMAC2 soap_instantiate___interswitch__GetFeaturedBillers(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetFeaturedBillers(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__GetLatestBillers +#define SOAP_TYPE_interswitch___interswitch__GetLatestBillers (219) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetLatestBillers(struct soap*, struct __interswitch__GetLatestBillers *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetLatestBillers(struct soap*, const struct __interswitch__GetLatestBillers *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetLatestBillers(struct soap*, const char*, int, const struct __interswitch__GetLatestBillers *, const char*); +SOAP_FMAC3 struct __interswitch__GetLatestBillers * SOAP_FMAC4 soap_in___interswitch__GetLatestBillers(struct soap*, const char*, struct __interswitch__GetLatestBillers *, const char*); + +#define soap_write___interswitch__GetLatestBillers(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__GetLatestBillers(soap, data), 0) || interswitch::soap_put___interswitch__GetLatestBillers(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetLatestBillers(struct soap*, const struct __interswitch__GetLatestBillers *, const char*, const char*); + +#define soap_read___interswitch__GetLatestBillers(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__GetLatestBillers(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__GetLatestBillers * SOAP_FMAC4 soap_get___interswitch__GetLatestBillers(struct soap*, struct __interswitch__GetLatestBillers *, const char*, const char*); + +#define soap_new___interswitch__GetLatestBillers(soap, n) soap_instantiate___interswitch__GetLatestBillers(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__GetLatestBillers(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__GetLatestBillers * SOAP_FMAC2 soap_instantiate___interswitch__GetLatestBillers(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetLatestBillers(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__GetBillers +#define SOAP_TYPE_interswitch___interswitch__GetBillers (215) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetBillers(struct soap*, struct __interswitch__GetBillers *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetBillers(struct soap*, const struct __interswitch__GetBillers *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetBillers(struct soap*, const char*, int, const struct __interswitch__GetBillers *, const char*); +SOAP_FMAC3 struct __interswitch__GetBillers * SOAP_FMAC4 soap_in___interswitch__GetBillers(struct soap*, const char*, struct __interswitch__GetBillers *, const char*); + +#define soap_write___interswitch__GetBillers(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__GetBillers(soap, data), 0) || interswitch::soap_put___interswitch__GetBillers(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetBillers(struct soap*, const struct __interswitch__GetBillers *, const char*, const char*); + +#define soap_read___interswitch__GetBillers(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__GetBillers(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__GetBillers * SOAP_FMAC4 soap_get___interswitch__GetBillers(struct soap*, struct __interswitch__GetBillers *, const char*, const char*); + +#define soap_new___interswitch__GetBillers(soap, n) soap_instantiate___interswitch__GetBillers(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__GetBillers(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__GetBillers * SOAP_FMAC2 soap_instantiate___interswitch__GetBillers(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetBillers(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__GetUser +#define SOAP_TYPE_interswitch___interswitch__GetUser (211) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetUser(struct soap*, struct __interswitch__GetUser *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetUser(struct soap*, const struct __interswitch__GetUser *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetUser(struct soap*, const char*, int, const struct __interswitch__GetUser *, const char*); +SOAP_FMAC3 struct __interswitch__GetUser * SOAP_FMAC4 soap_in___interswitch__GetUser(struct soap*, const char*, struct __interswitch__GetUser *, const char*); + +#define soap_write___interswitch__GetUser(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__GetUser(soap, data), 0) || interswitch::soap_put___interswitch__GetUser(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetUser(struct soap*, const struct __interswitch__GetUser *, const char*, const char*); + +#define soap_read___interswitch__GetUser(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__GetUser(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__GetUser * SOAP_FMAC4 soap_get___interswitch__GetUser(struct soap*, struct __interswitch__GetUser *, const char*, const char*); + +#define soap_new___interswitch__GetUser(soap, n) soap_instantiate___interswitch__GetUser(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__GetUser(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__GetUser * SOAP_FMAC2 soap_instantiate___interswitch__GetUser(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetUser(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__AuthenticateUserSecurityToken +#define SOAP_TYPE_interswitch___interswitch__AuthenticateUserSecurityToken (207) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__AuthenticateUserSecurityToken(struct soap*, struct __interswitch__AuthenticateUserSecurityToken *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__AuthenticateUserSecurityToken(struct soap*, const struct __interswitch__AuthenticateUserSecurityToken *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__AuthenticateUserSecurityToken(struct soap*, const char*, int, const struct __interswitch__AuthenticateUserSecurityToken *, const char*); +SOAP_FMAC3 struct __interswitch__AuthenticateUserSecurityToken * SOAP_FMAC4 soap_in___interswitch__AuthenticateUserSecurityToken(struct soap*, const char*, struct __interswitch__AuthenticateUserSecurityToken *, const char*); + +#define soap_write___interswitch__AuthenticateUserSecurityToken(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__AuthenticateUserSecurityToken(soap, data), 0) || interswitch::soap_put___interswitch__AuthenticateUserSecurityToken(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__AuthenticateUserSecurityToken(struct soap*, const struct __interswitch__AuthenticateUserSecurityToken *, const char*, const char*); + +#define soap_read___interswitch__AuthenticateUserSecurityToken(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__AuthenticateUserSecurityToken(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__AuthenticateUserSecurityToken * SOAP_FMAC4 soap_get___interswitch__AuthenticateUserSecurityToken(struct soap*, struct __interswitch__AuthenticateUserSecurityToken *, const char*, const char*); + +#define soap_new___interswitch__AuthenticateUserSecurityToken(soap, n) soap_instantiate___interswitch__AuthenticateUserSecurityToken(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__AuthenticateUserSecurityToken(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__AuthenticateUserSecurityToken * SOAP_FMAC2 soap_instantiate___interswitch__AuthenticateUserSecurityToken(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__AuthenticateUserSecurityToken(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__AuthenticateUser +#define SOAP_TYPE_interswitch___interswitch__AuthenticateUser (203) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__AuthenticateUser(struct soap*, struct __interswitch__AuthenticateUser *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__AuthenticateUser(struct soap*, const struct __interswitch__AuthenticateUser *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__AuthenticateUser(struct soap*, const char*, int, const struct __interswitch__AuthenticateUser *, const char*); +SOAP_FMAC3 struct __interswitch__AuthenticateUser * SOAP_FMAC4 soap_in___interswitch__AuthenticateUser(struct soap*, const char*, struct __interswitch__AuthenticateUser *, const char*); + +#define soap_write___interswitch__AuthenticateUser(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__AuthenticateUser(soap, data), 0) || interswitch::soap_put___interswitch__AuthenticateUser(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__AuthenticateUser(struct soap*, const struct __interswitch__AuthenticateUser *, const char*, const char*); + +#define soap_read___interswitch__AuthenticateUser(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__AuthenticateUser(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__AuthenticateUser * SOAP_FMAC4 soap_get___interswitch__AuthenticateUser(struct soap*, struct __interswitch__AuthenticateUser *, const char*, const char*); + +#define soap_new___interswitch__AuthenticateUser(soap, n) soap_instantiate___interswitch__AuthenticateUser(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__AuthenticateUser(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__AuthenticateUser * SOAP_FMAC2 soap_instantiate___interswitch__AuthenticateUser(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__AuthenticateUser(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__ResetPassword +#define SOAP_TYPE_interswitch___interswitch__ResetPassword (199) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__ResetPassword(struct soap*, struct __interswitch__ResetPassword *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__ResetPassword(struct soap*, const struct __interswitch__ResetPassword *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__ResetPassword(struct soap*, const char*, int, const struct __interswitch__ResetPassword *, const char*); +SOAP_FMAC3 struct __interswitch__ResetPassword * SOAP_FMAC4 soap_in___interswitch__ResetPassword(struct soap*, const char*, struct __interswitch__ResetPassword *, const char*); + +#define soap_write___interswitch__ResetPassword(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__ResetPassword(soap, data), 0) || interswitch::soap_put___interswitch__ResetPassword(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__ResetPassword(struct soap*, const struct __interswitch__ResetPassword *, const char*, const char*); + +#define soap_read___interswitch__ResetPassword(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__ResetPassword(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__ResetPassword * SOAP_FMAC4 soap_get___interswitch__ResetPassword(struct soap*, struct __interswitch__ResetPassword *, const char*, const char*); + +#define soap_new___interswitch__ResetPassword(soap, n) soap_instantiate___interswitch__ResetPassword(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__ResetPassword(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__ResetPassword * SOAP_FMAC2 soap_instantiate___interswitch__ResetPassword(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__ResetPassword(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__ChangePassword +#define SOAP_TYPE_interswitch___interswitch__ChangePassword (195) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__ChangePassword(struct soap*, struct __interswitch__ChangePassword *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__ChangePassword(struct soap*, const struct __interswitch__ChangePassword *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__ChangePassword(struct soap*, const char*, int, const struct __interswitch__ChangePassword *, const char*); +SOAP_FMAC3 struct __interswitch__ChangePassword * SOAP_FMAC4 soap_in___interswitch__ChangePassword(struct soap*, const char*, struct __interswitch__ChangePassword *, const char*); + +#define soap_write___interswitch__ChangePassword(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__ChangePassword(soap, data), 0) || interswitch::soap_put___interswitch__ChangePassword(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__ChangePassword(struct soap*, const struct __interswitch__ChangePassword *, const char*, const char*); + +#define soap_read___interswitch__ChangePassword(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__ChangePassword(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__ChangePassword * SOAP_FMAC4 soap_get___interswitch__ChangePassword(struct soap*, struct __interswitch__ChangePassword *, const char*, const char*); + +#define soap_new___interswitch__ChangePassword(soap, n) soap_instantiate___interswitch__ChangePassword(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__ChangePassword(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__ChangePassword * SOAP_FMAC2 soap_instantiate___interswitch__ChangePassword(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__ChangePassword(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__UpdateUser +#define SOAP_TYPE_interswitch___interswitch__UpdateUser (191) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__UpdateUser(struct soap*, struct __interswitch__UpdateUser *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__UpdateUser(struct soap*, const struct __interswitch__UpdateUser *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__UpdateUser(struct soap*, const char*, int, const struct __interswitch__UpdateUser *, const char*); +SOAP_FMAC3 struct __interswitch__UpdateUser * SOAP_FMAC4 soap_in___interswitch__UpdateUser(struct soap*, const char*, struct __interswitch__UpdateUser *, const char*); + +#define soap_write___interswitch__UpdateUser(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__UpdateUser(soap, data), 0) || interswitch::soap_put___interswitch__UpdateUser(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__UpdateUser(struct soap*, const struct __interswitch__UpdateUser *, const char*, const char*); + +#define soap_read___interswitch__UpdateUser(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__UpdateUser(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__UpdateUser * SOAP_FMAC4 soap_get___interswitch__UpdateUser(struct soap*, struct __interswitch__UpdateUser *, const char*, const char*); + +#define soap_new___interswitch__UpdateUser(soap, n) soap_instantiate___interswitch__UpdateUser(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__UpdateUser(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__UpdateUser * SOAP_FMAC2 soap_instantiate___interswitch__UpdateUser(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__UpdateUser(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__ActivateUser +#define SOAP_TYPE_interswitch___interswitch__ActivateUser (187) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__ActivateUser(struct soap*, struct __interswitch__ActivateUser *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__ActivateUser(struct soap*, const struct __interswitch__ActivateUser *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__ActivateUser(struct soap*, const char*, int, const struct __interswitch__ActivateUser *, const char*); +SOAP_FMAC3 struct __interswitch__ActivateUser * SOAP_FMAC4 soap_in___interswitch__ActivateUser(struct soap*, const char*, struct __interswitch__ActivateUser *, const char*); + +#define soap_write___interswitch__ActivateUser(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__ActivateUser(soap, data), 0) || interswitch::soap_put___interswitch__ActivateUser(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__ActivateUser(struct soap*, const struct __interswitch__ActivateUser *, const char*, const char*); + +#define soap_read___interswitch__ActivateUser(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__ActivateUser(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__ActivateUser * SOAP_FMAC4 soap_get___interswitch__ActivateUser(struct soap*, struct __interswitch__ActivateUser *, const char*, const char*); + +#define soap_new___interswitch__ActivateUser(soap, n) soap_instantiate___interswitch__ActivateUser(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__ActivateUser(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__ActivateUser * SOAP_FMAC2 soap_instantiate___interswitch__ActivateUser(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__ActivateUser(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__CreateUser +#define SOAP_TYPE_interswitch___interswitch__CreateUser (183) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__CreateUser(struct soap*, struct __interswitch__CreateUser *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__CreateUser(struct soap*, const struct __interswitch__CreateUser *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__CreateUser(struct soap*, const char*, int, const struct __interswitch__CreateUser *, const char*); +SOAP_FMAC3 struct __interswitch__CreateUser * SOAP_FMAC4 soap_in___interswitch__CreateUser(struct soap*, const char*, struct __interswitch__CreateUser *, const char*); + +#define soap_write___interswitch__CreateUser(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__CreateUser(soap, data), 0) || interswitch::soap_put___interswitch__CreateUser(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__CreateUser(struct soap*, const struct __interswitch__CreateUser *, const char*, const char*); + +#define soap_read___interswitch__CreateUser(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__CreateUser(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__CreateUser * SOAP_FMAC4 soap_get___interswitch__CreateUser(struct soap*, struct __interswitch__CreateUser *, const char*, const char*); + +#define soap_new___interswitch__CreateUser(soap, n) soap_instantiate___interswitch__CreateUser(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__CreateUser(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__CreateUser * SOAP_FMAC2 soap_instantiate___interswitch__CreateUser(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__CreateUser(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__GetSystemSettings +#define SOAP_TYPE_interswitch___interswitch__GetSystemSettings (179) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__GetSystemSettings(struct soap*, struct __interswitch__GetSystemSettings *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__GetSystemSettings(struct soap*, const struct __interswitch__GetSystemSettings *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__GetSystemSettings(struct soap*, const char*, int, const struct __interswitch__GetSystemSettings *, const char*); +SOAP_FMAC3 struct __interswitch__GetSystemSettings * SOAP_FMAC4 soap_in___interswitch__GetSystemSettings(struct soap*, const char*, struct __interswitch__GetSystemSettings *, const char*); + +#define soap_write___interswitch__GetSystemSettings(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__GetSystemSettings(soap, data), 0) || interswitch::soap_put___interswitch__GetSystemSettings(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__GetSystemSettings(struct soap*, const struct __interswitch__GetSystemSettings *, const char*, const char*); + +#define soap_read___interswitch__GetSystemSettings(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__GetSystemSettings(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__GetSystemSettings * SOAP_FMAC4 soap_get___interswitch__GetSystemSettings(struct soap*, struct __interswitch__GetSystemSettings *, const char*, const char*); + +#define soap_new___interswitch__GetSystemSettings(soap, n) soap_instantiate___interswitch__GetSystemSettings(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__GetSystemSettings(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__GetSystemSettings * SOAP_FMAC2 soap_instantiate___interswitch__GetSystemSettings(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__GetSystemSettings(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__QueryTransaction +#define SOAP_TYPE_interswitch___interswitch__QueryTransaction (175) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__QueryTransaction(struct soap*, struct __interswitch__QueryTransaction *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__QueryTransaction(struct soap*, const struct __interswitch__QueryTransaction *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__QueryTransaction(struct soap*, const char*, int, const struct __interswitch__QueryTransaction *, const char*); +SOAP_FMAC3 struct __interswitch__QueryTransaction * SOAP_FMAC4 soap_in___interswitch__QueryTransaction(struct soap*, const char*, struct __interswitch__QueryTransaction *, const char*); + +#define soap_write___interswitch__QueryTransaction(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__QueryTransaction(soap, data), 0) || interswitch::soap_put___interswitch__QueryTransaction(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__QueryTransaction(struct soap*, const struct __interswitch__QueryTransaction *, const char*, const char*); + +#define soap_read___interswitch__QueryTransaction(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__QueryTransaction(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__QueryTransaction * SOAP_FMAC4 soap_get___interswitch__QueryTransaction(struct soap*, struct __interswitch__QueryTransaction *, const char*, const char*); + +#define soap_new___interswitch__QueryTransaction(soap, n) soap_instantiate___interswitch__QueryTransaction(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__QueryTransaction(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__QueryTransaction * SOAP_FMAC2 soap_instantiate___interswitch__QueryTransaction(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__QueryTransaction(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__StatusCheck +#define SOAP_TYPE_interswitch___interswitch__StatusCheck (171) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__StatusCheck(struct soap*, struct __interswitch__StatusCheck *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__StatusCheck(struct soap*, const struct __interswitch__StatusCheck *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__StatusCheck(struct soap*, const char*, int, const struct __interswitch__StatusCheck *, const char*); +SOAP_FMAC3 struct __interswitch__StatusCheck * SOAP_FMAC4 soap_in___interswitch__StatusCheck(struct soap*, const char*, struct __interswitch__StatusCheck *, const char*); + +#define soap_write___interswitch__StatusCheck(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__StatusCheck(soap, data), 0) || interswitch::soap_put___interswitch__StatusCheck(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__StatusCheck(struct soap*, const struct __interswitch__StatusCheck *, const char*, const char*); + +#define soap_read___interswitch__StatusCheck(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__StatusCheck(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__StatusCheck * SOAP_FMAC4 soap_get___interswitch__StatusCheck(struct soap*, struct __interswitch__StatusCheck *, const char*, const char*); + +#define soap_new___interswitch__StatusCheck(soap, n) soap_instantiate___interswitch__StatusCheck(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__StatusCheck(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__StatusCheck * SOAP_FMAC2 soap_instantiate___interswitch__StatusCheck(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__StatusCheck(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__ReverseCashOut +#define SOAP_TYPE_interswitch___interswitch__ReverseCashOut (167) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__ReverseCashOut(struct soap*, struct __interswitch__ReverseCashOut *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__ReverseCashOut(struct soap*, const struct __interswitch__ReverseCashOut *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__ReverseCashOut(struct soap*, const char*, int, const struct __interswitch__ReverseCashOut *, const char*); +SOAP_FMAC3 struct __interswitch__ReverseCashOut * SOAP_FMAC4 soap_in___interswitch__ReverseCashOut(struct soap*, const char*, struct __interswitch__ReverseCashOut *, const char*); + +#define soap_write___interswitch__ReverseCashOut(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__ReverseCashOut(soap, data), 0) || interswitch::soap_put___interswitch__ReverseCashOut(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__ReverseCashOut(struct soap*, const struct __interswitch__ReverseCashOut *, const char*, const char*); + +#define soap_read___interswitch__ReverseCashOut(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__ReverseCashOut(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__ReverseCashOut * SOAP_FMAC4 soap_get___interswitch__ReverseCashOut(struct soap*, struct __interswitch__ReverseCashOut *, const char*, const char*); + +#define soap_new___interswitch__ReverseCashOut(soap, n) soap_instantiate___interswitch__ReverseCashOut(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__ReverseCashOut(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__ReverseCashOut * SOAP_FMAC2 soap_instantiate___interswitch__ReverseCashOut(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__ReverseCashOut(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__AuthoriseAccountCashOut +#define SOAP_TYPE_interswitch___interswitch__AuthoriseAccountCashOut (163) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__AuthoriseAccountCashOut(struct soap*, struct __interswitch__AuthoriseAccountCashOut *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__AuthoriseAccountCashOut(struct soap*, const struct __interswitch__AuthoriseAccountCashOut *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__AuthoriseAccountCashOut(struct soap*, const char*, int, const struct __interswitch__AuthoriseAccountCashOut *, const char*); +SOAP_FMAC3 struct __interswitch__AuthoriseAccountCashOut * SOAP_FMAC4 soap_in___interswitch__AuthoriseAccountCashOut(struct soap*, const char*, struct __interswitch__AuthoriseAccountCashOut *, const char*); + +#define soap_write___interswitch__AuthoriseAccountCashOut(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__AuthoriseAccountCashOut(soap, data), 0) || interswitch::soap_put___interswitch__AuthoriseAccountCashOut(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__AuthoriseAccountCashOut(struct soap*, const struct __interswitch__AuthoriseAccountCashOut *, const char*, const char*); + +#define soap_read___interswitch__AuthoriseAccountCashOut(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__AuthoriseAccountCashOut(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__AuthoriseAccountCashOut * SOAP_FMAC4 soap_get___interswitch__AuthoriseAccountCashOut(struct soap*, struct __interswitch__AuthoriseAccountCashOut *, const char*, const char*); + +#define soap_new___interswitch__AuthoriseAccountCashOut(soap, n) soap_instantiate___interswitch__AuthoriseAccountCashOut(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__AuthoriseAccountCashOut(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__AuthoriseAccountCashOut * SOAP_FMAC2 soap_instantiate___interswitch__AuthoriseAccountCashOut(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__AuthoriseAccountCashOut(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__AuthoriseCashOut +#define SOAP_TYPE_interswitch___interswitch__AuthoriseCashOut (159) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__AuthoriseCashOut(struct soap*, struct __interswitch__AuthoriseCashOut *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__AuthoriseCashOut(struct soap*, const struct __interswitch__AuthoriseCashOut *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__AuthoriseCashOut(struct soap*, const char*, int, const struct __interswitch__AuthoriseCashOut *, const char*); +SOAP_FMAC3 struct __interswitch__AuthoriseCashOut * SOAP_FMAC4 soap_in___interswitch__AuthoriseCashOut(struct soap*, const char*, struct __interswitch__AuthoriseCashOut *, const char*); + +#define soap_write___interswitch__AuthoriseCashOut(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__AuthoriseCashOut(soap, data), 0) || interswitch::soap_put___interswitch__AuthoriseCashOut(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__AuthoriseCashOut(struct soap*, const struct __interswitch__AuthoriseCashOut *, const char*, const char*); + +#define soap_read___interswitch__AuthoriseCashOut(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__AuthoriseCashOut(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__AuthoriseCashOut * SOAP_FMAC4 soap_get___interswitch__AuthoriseCashOut(struct soap*, struct __interswitch__AuthoriseCashOut *, const char*, const char*); + +#define soap_new___interswitch__AuthoriseCashOut(soap, n) soap_instantiate___interswitch__AuthoriseCashOut(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__AuthoriseCashOut(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__AuthoriseCashOut * SOAP_FMAC2 soap_instantiate___interswitch__AuthoriseCashOut(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__AuthoriseCashOut(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__QueryTransfer +#define SOAP_TYPE_interswitch___interswitch__QueryTransfer (155) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__QueryTransfer(struct soap*, struct __interswitch__QueryTransfer *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__QueryTransfer(struct soap*, const struct __interswitch__QueryTransfer *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__QueryTransfer(struct soap*, const char*, int, const struct __interswitch__QueryTransfer *, const char*); +SOAP_FMAC3 struct __interswitch__QueryTransfer * SOAP_FMAC4 soap_in___interswitch__QueryTransfer(struct soap*, const char*, struct __interswitch__QueryTransfer *, const char*); + +#define soap_write___interswitch__QueryTransfer(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__QueryTransfer(soap, data), 0) || interswitch::soap_put___interswitch__QueryTransfer(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__QueryTransfer(struct soap*, const struct __interswitch__QueryTransfer *, const char*, const char*); + +#define soap_read___interswitch__QueryTransfer(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__QueryTransfer(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__QueryTransfer * SOAP_FMAC4 soap_get___interswitch__QueryTransfer(struct soap*, struct __interswitch__QueryTransfer *, const char*, const char*); + +#define soap_new___interswitch__QueryTransfer(soap, n) soap_instantiate___interswitch__QueryTransfer(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__QueryTransfer(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__QueryTransfer * SOAP_FMAC2 soap_instantiate___interswitch__QueryTransfer(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__QueryTransfer(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__SendSessionKey +#define SOAP_TYPE_interswitch___interswitch__SendSessionKey (151) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__SendSessionKey(struct soap*, struct __interswitch__SendSessionKey *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__SendSessionKey(struct soap*, const struct __interswitch__SendSessionKey *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__SendSessionKey(struct soap*, const char*, int, const struct __interswitch__SendSessionKey *, const char*); +SOAP_FMAC3 struct __interswitch__SendSessionKey * SOAP_FMAC4 soap_in___interswitch__SendSessionKey(struct soap*, const char*, struct __interswitch__SendSessionKey *, const char*); + +#define soap_write___interswitch__SendSessionKey(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__SendSessionKey(soap, data), 0) || interswitch::soap_put___interswitch__SendSessionKey(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__SendSessionKey(struct soap*, const struct __interswitch__SendSessionKey *, const char*, const char*); + +#define soap_read___interswitch__SendSessionKey(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__SendSessionKey(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__SendSessionKey * SOAP_FMAC4 soap_get___interswitch__SendSessionKey(struct soap*, struct __interswitch__SendSessionKey *, const char*, const char*); + +#define soap_new___interswitch__SendSessionKey(soap, n) soap_instantiate___interswitch__SendSessionKey(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__SendSessionKey(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__SendSessionKey * SOAP_FMAC2 soap_instantiate___interswitch__SendSessionKey(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__SendSessionKey(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__CancelTransfer +#define SOAP_TYPE_interswitch___interswitch__CancelTransfer (147) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__CancelTransfer(struct soap*, struct __interswitch__CancelTransfer *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__CancelTransfer(struct soap*, const struct __interswitch__CancelTransfer *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__CancelTransfer(struct soap*, const char*, int, const struct __interswitch__CancelTransfer *, const char*); +SOAP_FMAC3 struct __interswitch__CancelTransfer * SOAP_FMAC4 soap_in___interswitch__CancelTransfer(struct soap*, const char*, struct __interswitch__CancelTransfer *, const char*); + +#define soap_write___interswitch__CancelTransfer(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__CancelTransfer(soap, data), 0) || interswitch::soap_put___interswitch__CancelTransfer(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__CancelTransfer(struct soap*, const struct __interswitch__CancelTransfer *, const char*, const char*); + +#define soap_read___interswitch__CancelTransfer(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__CancelTransfer(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__CancelTransfer * SOAP_FMAC4 soap_get___interswitch__CancelTransfer(struct soap*, struct __interswitch__CancelTransfer *, const char*, const char*); + +#define soap_new___interswitch__CancelTransfer(soap, n) soap_instantiate___interswitch__CancelTransfer(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__CancelTransfer(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__CancelTransfer * SOAP_FMAC2 soap_instantiate___interswitch__CancelTransfer(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__CancelTransfer(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__DoTransfer +#define SOAP_TYPE_interswitch___interswitch__DoTransfer (143) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__DoTransfer(struct soap*, struct __interswitch__DoTransfer *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__DoTransfer(struct soap*, const struct __interswitch__DoTransfer *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__DoTransfer(struct soap*, const char*, int, const struct __interswitch__DoTransfer *, const char*); +SOAP_FMAC3 struct __interswitch__DoTransfer * SOAP_FMAC4 soap_in___interswitch__DoTransfer(struct soap*, const char*, struct __interswitch__DoTransfer *, const char*); + +#define soap_write___interswitch__DoTransfer(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__DoTransfer(soap, data), 0) || interswitch::soap_put___interswitch__DoTransfer(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__DoTransfer(struct soap*, const struct __interswitch__DoTransfer *, const char*, const char*); + +#define soap_read___interswitch__DoTransfer(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__DoTransfer(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__DoTransfer * SOAP_FMAC4 soap_get___interswitch__DoTransfer(struct soap*, struct __interswitch__DoTransfer *, const char*, const char*); + +#define soap_new___interswitch__DoTransfer(soap, n) soap_instantiate___interswitch__DoTransfer(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__DoTransfer(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__DoTransfer * SOAP_FMAC2 soap_instantiate___interswitch__DoTransfer(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__DoTransfer(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef SOAP_TYPE_interswitch___interswitch__ValidateCustomer +#define SOAP_TYPE_interswitch___interswitch__ValidateCustomer (139) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default___interswitch__ValidateCustomer(struct soap*, struct __interswitch__ValidateCustomer *); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___interswitch__ValidateCustomer(struct soap*, const struct __interswitch__ValidateCustomer *); +SOAP_FMAC3 int SOAP_FMAC4 soap_out___interswitch__ValidateCustomer(struct soap*, const char*, int, const struct __interswitch__ValidateCustomer *, const char*); +SOAP_FMAC3 struct __interswitch__ValidateCustomer * SOAP_FMAC4 soap_in___interswitch__ValidateCustomer(struct soap*, const char*, struct __interswitch__ValidateCustomer *, const char*); + +#define soap_write___interswitch__ValidateCustomer(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize___interswitch__ValidateCustomer(soap, data), 0) || interswitch::soap_put___interswitch__ValidateCustomer(soap, data, NULL, NULL) || soap_end_send(soap) ) + + +SOAP_FMAC3 int SOAP_FMAC4 soap_put___interswitch__ValidateCustomer(struct soap*, const struct __interswitch__ValidateCustomer *, const char*, const char*); + +#define soap_read___interswitch__ValidateCustomer(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get___interswitch__ValidateCustomer(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct __interswitch__ValidateCustomer * SOAP_FMAC4 soap_get___interswitch__ValidateCustomer(struct soap*, struct __interswitch__ValidateCustomer *, const char*, const char*); + +#define soap_new___interswitch__ValidateCustomer(soap, n) soap_instantiate___interswitch__ValidateCustomer(soap, n, NULL, NULL, NULL) + + +#define soap_delete___interswitch__ValidateCustomer(soap, p) soap_delete(soap, p) + +SOAP_FMAC1 struct __interswitch__ValidateCustomer * SOAP_FMAC2 soap_instantiate___interswitch__ValidateCustomer(struct soap*, int, const char*, const char*, size_t*); +SOAP_FMAC3 void SOAP_FMAC4 soap_copy___interswitch__ValidateCustomer(struct soap*, int, int, void*, size_t, const void*, size_t); + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_interswitch_PointerToSOAP_ENV__Reason +#define SOAP_TYPE_interswitch_PointerToSOAP_ENV__Reason (301) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Reason(struct soap*, const char *, int, struct SOAP_ENV__Reason *const*, const char *); +SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Reason(struct soap*, const char*, struct SOAP_ENV__Reason **, const char*); + +#define soap_write_PointerToSOAP_ENV__Reason(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerToSOAP_ENV__Reason(soap, data), 0) || interswitch::soap_put_PointerToSOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason *const*, const char*, const char*); + +#define soap_read_PointerToSOAP_ENV__Reason(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerToSOAP_ENV__Reason(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct SOAP_ENV__Reason ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Reason(struct soap*, struct SOAP_ENV__Reason **, const char*, const char*); + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_interswitch_PointerToSOAP_ENV__Detail +#define SOAP_TYPE_interswitch_PointerToSOAP_ENV__Detail (300) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Detail(struct soap*, const char *, int, struct SOAP_ENV__Detail *const*, const char *); +SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Detail(struct soap*, const char*, struct SOAP_ENV__Detail **, const char*); + +#define soap_write_PointerToSOAP_ENV__Detail(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerToSOAP_ENV__Detail(soap, data), 0) || interswitch::soap_put_PointerToSOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *const*, const char*, const char*); + +#define soap_read_PointerToSOAP_ENV__Detail(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerToSOAP_ENV__Detail(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail **, const char*, const char*); + +#endif + +#ifndef WITH_NOGLOBAL + +#ifndef SOAP_TYPE_interswitch_PointerToSOAP_ENV__Code +#define SOAP_TYPE_interswitch_PointerToSOAP_ENV__Code (294) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Code(struct soap*, const char *, int, struct SOAP_ENV__Code *const*, const char *); +SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Code(struct soap*, const char*, struct SOAP_ENV__Code **, const char*); + +#define soap_write_PointerToSOAP_ENV__Code(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerToSOAP_ENV__Code(soap, data), 0) || interswitch::soap_put_PointerToSOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *const*, const char*, const char*); + +#define soap_read_PointerToSOAP_ENV__Code(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerToSOAP_ENV__Code(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code **, const char*, const char*); + +#endif + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__VerifyBillerResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__VerifyBillerResponse (289) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__VerifyBillerResponse(struct soap*, _interswitch__VerifyBillerResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__VerifyBillerResponse(struct soap*, const char *, int, _interswitch__VerifyBillerResponse *const*, const char *); +SOAP_FMAC3 _interswitch__VerifyBillerResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__VerifyBillerResponse(struct soap*, const char*, _interswitch__VerifyBillerResponse **, const char*); + +#define soap_write_PointerTo_interswitch__VerifyBillerResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__VerifyBillerResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__VerifyBillerResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__VerifyBillerResponse(struct soap*, _interswitch__VerifyBillerResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__VerifyBillerResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__VerifyBillerResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__VerifyBillerResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__VerifyBillerResponse(struct soap*, _interswitch__VerifyBillerResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__VerifyBiller +#define SOAP_TYPE_interswitch_PointerTo_interswitch__VerifyBiller (288) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__VerifyBiller(struct soap*, _interswitch__VerifyBiller *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__VerifyBiller(struct soap*, const char *, int, _interswitch__VerifyBiller *const*, const char *); +SOAP_FMAC3 _interswitch__VerifyBiller ** SOAP_FMAC4 soap_in_PointerTo_interswitch__VerifyBiller(struct soap*, const char*, _interswitch__VerifyBiller **, const char*); + +#define soap_write_PointerTo_interswitch__VerifyBiller(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__VerifyBiller(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__VerifyBiller(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__VerifyBiller(struct soap*, _interswitch__VerifyBiller *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__VerifyBiller(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__VerifyBiller(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__VerifyBiller ** SOAP_FMAC4 soap_get_PointerTo_interswitch__VerifyBiller(struct soap*, _interswitch__VerifyBiller **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__CreateBillerResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__CreateBillerResponse (285) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__CreateBillerResponse(struct soap*, _interswitch__CreateBillerResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__CreateBillerResponse(struct soap*, const char *, int, _interswitch__CreateBillerResponse *const*, const char *); +SOAP_FMAC3 _interswitch__CreateBillerResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__CreateBillerResponse(struct soap*, const char*, _interswitch__CreateBillerResponse **, const char*); + +#define soap_write_PointerTo_interswitch__CreateBillerResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__CreateBillerResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__CreateBillerResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__CreateBillerResponse(struct soap*, _interswitch__CreateBillerResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__CreateBillerResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__CreateBillerResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__CreateBillerResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__CreateBillerResponse(struct soap*, _interswitch__CreateBillerResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__CreateBiller +#define SOAP_TYPE_interswitch_PointerTo_interswitch__CreateBiller (284) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__CreateBiller(struct soap*, _interswitch__CreateBiller *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__CreateBiller(struct soap*, const char *, int, _interswitch__CreateBiller *const*, const char *); +SOAP_FMAC3 _interswitch__CreateBiller ** SOAP_FMAC4 soap_in_PointerTo_interswitch__CreateBiller(struct soap*, const char*, _interswitch__CreateBiller **, const char*); + +#define soap_write_PointerTo_interswitch__CreateBiller(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__CreateBiller(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__CreateBiller(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__CreateBiller(struct soap*, _interswitch__CreateBiller *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__CreateBiller(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__CreateBiller(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__CreateBiller ** SOAP_FMAC4 soap_get_PointerTo_interswitch__CreateBiller(struct soap*, _interswitch__CreateBiller **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__DoCustomProcessingResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__DoCustomProcessingResponse (281) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__DoCustomProcessingResponse(struct soap*, _interswitch__DoCustomProcessingResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__DoCustomProcessingResponse(struct soap*, const char *, int, _interswitch__DoCustomProcessingResponse *const*, const char *); +SOAP_FMAC3 _interswitch__DoCustomProcessingResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__DoCustomProcessingResponse(struct soap*, const char*, _interswitch__DoCustomProcessingResponse **, const char*); + +#define soap_write_PointerTo_interswitch__DoCustomProcessingResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__DoCustomProcessingResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__DoCustomProcessingResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__DoCustomProcessingResponse(struct soap*, _interswitch__DoCustomProcessingResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__DoCustomProcessingResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__DoCustomProcessingResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__DoCustomProcessingResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__DoCustomProcessingResponse(struct soap*, _interswitch__DoCustomProcessingResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__DoCustomProcessing +#define SOAP_TYPE_interswitch_PointerTo_interswitch__DoCustomProcessing (280) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__DoCustomProcessing(struct soap*, _interswitch__DoCustomProcessing *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__DoCustomProcessing(struct soap*, const char *, int, _interswitch__DoCustomProcessing *const*, const char *); +SOAP_FMAC3 _interswitch__DoCustomProcessing ** SOAP_FMAC4 soap_in_PointerTo_interswitch__DoCustomProcessing(struct soap*, const char*, _interswitch__DoCustomProcessing **, const char*); + +#define soap_write_PointerTo_interswitch__DoCustomProcessing(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__DoCustomProcessing(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__DoCustomProcessing(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__DoCustomProcessing(struct soap*, _interswitch__DoCustomProcessing *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__DoCustomProcessing(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__DoCustomProcessing(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__DoCustomProcessing ** SOAP_FMAC4 soap_get_PointerTo_interswitch__DoCustomProcessing(struct soap*, _interswitch__DoCustomProcessing **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__ResendActivationTokenResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__ResendActivationTokenResponse (277) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ResendActivationTokenResponse(struct soap*, _interswitch__ResendActivationTokenResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ResendActivationTokenResponse(struct soap*, const char *, int, _interswitch__ResendActivationTokenResponse *const*, const char *); +SOAP_FMAC3 _interswitch__ResendActivationTokenResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ResendActivationTokenResponse(struct soap*, const char*, _interswitch__ResendActivationTokenResponse **, const char*); + +#define soap_write_PointerTo_interswitch__ResendActivationTokenResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__ResendActivationTokenResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__ResendActivationTokenResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ResendActivationTokenResponse(struct soap*, _interswitch__ResendActivationTokenResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__ResendActivationTokenResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__ResendActivationTokenResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ResendActivationTokenResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ResendActivationTokenResponse(struct soap*, _interswitch__ResendActivationTokenResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__ResendActivationToken +#define SOAP_TYPE_interswitch_PointerTo_interswitch__ResendActivationToken (276) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ResendActivationToken(struct soap*, _interswitch__ResendActivationToken *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ResendActivationToken(struct soap*, const char *, int, _interswitch__ResendActivationToken *const*, const char *); +SOAP_FMAC3 _interswitch__ResendActivationToken ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ResendActivationToken(struct soap*, const char*, _interswitch__ResendActivationToken **, const char*); + +#define soap_write_PointerTo_interswitch__ResendActivationToken(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__ResendActivationToken(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__ResendActivationToken(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ResendActivationToken(struct soap*, _interswitch__ResendActivationToken *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__ResendActivationToken(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__ResendActivationToken(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ResendActivationToken ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ResendActivationToken(struct soap*, _interswitch__ResendActivationToken **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__EditCustomerBillerAccountResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__EditCustomerBillerAccountResponse (273) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__EditCustomerBillerAccountResponse(struct soap*, _interswitch__EditCustomerBillerAccountResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__EditCustomerBillerAccountResponse(struct soap*, const char *, int, _interswitch__EditCustomerBillerAccountResponse *const*, const char *); +SOAP_FMAC3 _interswitch__EditCustomerBillerAccountResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__EditCustomerBillerAccountResponse(struct soap*, const char*, _interswitch__EditCustomerBillerAccountResponse **, const char*); + +#define soap_write_PointerTo_interswitch__EditCustomerBillerAccountResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__EditCustomerBillerAccountResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__EditCustomerBillerAccountResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__EditCustomerBillerAccountResponse(struct soap*, _interswitch__EditCustomerBillerAccountResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__EditCustomerBillerAccountResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__EditCustomerBillerAccountResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__EditCustomerBillerAccountResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__EditCustomerBillerAccountResponse(struct soap*, _interswitch__EditCustomerBillerAccountResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__EditCustomerBillerAccount +#define SOAP_TYPE_interswitch_PointerTo_interswitch__EditCustomerBillerAccount (272) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__EditCustomerBillerAccount(struct soap*, _interswitch__EditCustomerBillerAccount *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__EditCustomerBillerAccount(struct soap*, const char *, int, _interswitch__EditCustomerBillerAccount *const*, const char *); +SOAP_FMAC3 _interswitch__EditCustomerBillerAccount ** SOAP_FMAC4 soap_in_PointerTo_interswitch__EditCustomerBillerAccount(struct soap*, const char*, _interswitch__EditCustomerBillerAccount **, const char*); + +#define soap_write_PointerTo_interswitch__EditCustomerBillerAccount(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__EditCustomerBillerAccount(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__EditCustomerBillerAccount(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__EditCustomerBillerAccount(struct soap*, _interswitch__EditCustomerBillerAccount *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__EditCustomerBillerAccount(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__EditCustomerBillerAccount(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__EditCustomerBillerAccount ** SOAP_FMAC4 soap_get_PointerTo_interswitch__EditCustomerBillerAccount(struct soap*, _interswitch__EditCustomerBillerAccount **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillersCollectionsAccountResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillersCollectionsAccountResponse (269) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetBillersCollectionsAccountResponse(struct soap*, _interswitch__GetBillersCollectionsAccountResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetBillersCollectionsAccountResponse(struct soap*, const char *, int, _interswitch__GetBillersCollectionsAccountResponse *const*, const char *); +SOAP_FMAC3 _interswitch__GetBillersCollectionsAccountResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetBillersCollectionsAccountResponse(struct soap*, const char*, _interswitch__GetBillersCollectionsAccountResponse **, const char*); + +#define soap_write_PointerTo_interswitch__GetBillersCollectionsAccountResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetBillersCollectionsAccountResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetBillersCollectionsAccountResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetBillersCollectionsAccountResponse(struct soap*, _interswitch__GetBillersCollectionsAccountResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetBillersCollectionsAccountResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetBillersCollectionsAccountResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetBillersCollectionsAccountResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetBillersCollectionsAccountResponse(struct soap*, _interswitch__GetBillersCollectionsAccountResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillersCollectionsAccount +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillersCollectionsAccount (268) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetBillersCollectionsAccount(struct soap*, _interswitch__GetBillersCollectionsAccount *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetBillersCollectionsAccount(struct soap*, const char *, int, _interswitch__GetBillersCollectionsAccount *const*, const char *); +SOAP_FMAC3 _interswitch__GetBillersCollectionsAccount ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetBillersCollectionsAccount(struct soap*, const char*, _interswitch__GetBillersCollectionsAccount **, const char*); + +#define soap_write_PointerTo_interswitch__GetBillersCollectionsAccount(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetBillersCollectionsAccount(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetBillersCollectionsAccount(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetBillersCollectionsAccount(struct soap*, _interswitch__GetBillersCollectionsAccount *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetBillersCollectionsAccount(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetBillersCollectionsAccount(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetBillersCollectionsAccount ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetBillersCollectionsAccount(struct soap*, _interswitch__GetBillersCollectionsAccount **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetCollectionsAccountResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetCollectionsAccountResponse (265) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetCollectionsAccountResponse(struct soap*, _interswitch__GetCollectionsAccountResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetCollectionsAccountResponse(struct soap*, const char *, int, _interswitch__GetCollectionsAccountResponse *const*, const char *); +SOAP_FMAC3 _interswitch__GetCollectionsAccountResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetCollectionsAccountResponse(struct soap*, const char*, _interswitch__GetCollectionsAccountResponse **, const char*); + +#define soap_write_PointerTo_interswitch__GetCollectionsAccountResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetCollectionsAccountResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetCollectionsAccountResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetCollectionsAccountResponse(struct soap*, _interswitch__GetCollectionsAccountResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetCollectionsAccountResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetCollectionsAccountResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetCollectionsAccountResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetCollectionsAccountResponse(struct soap*, _interswitch__GetCollectionsAccountResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetCollectionsAccount +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetCollectionsAccount (264) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetCollectionsAccount(struct soap*, _interswitch__GetCollectionsAccount *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetCollectionsAccount(struct soap*, const char *, int, _interswitch__GetCollectionsAccount *const*, const char *); +SOAP_FMAC3 _interswitch__GetCollectionsAccount ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetCollectionsAccount(struct soap*, const char*, _interswitch__GetCollectionsAccount **, const char*); + +#define soap_write_PointerTo_interswitch__GetCollectionsAccount(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetCollectionsAccount(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetCollectionsAccount(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetCollectionsAccount(struct soap*, _interswitch__GetCollectionsAccount *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetCollectionsAccount(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetCollectionsAccount(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetCollectionsAccount ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetCollectionsAccount(struct soap*, _interswitch__GetCollectionsAccount **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__AddBillerCustomerResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__AddBillerCustomerResponse (261) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AddBillerCustomerResponse(struct soap*, _interswitch__AddBillerCustomerResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AddBillerCustomerResponse(struct soap*, const char *, int, _interswitch__AddBillerCustomerResponse *const*, const char *); +SOAP_FMAC3 _interswitch__AddBillerCustomerResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AddBillerCustomerResponse(struct soap*, const char*, _interswitch__AddBillerCustomerResponse **, const char*); + +#define soap_write_PointerTo_interswitch__AddBillerCustomerResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__AddBillerCustomerResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__AddBillerCustomerResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AddBillerCustomerResponse(struct soap*, _interswitch__AddBillerCustomerResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__AddBillerCustomerResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__AddBillerCustomerResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AddBillerCustomerResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AddBillerCustomerResponse(struct soap*, _interswitch__AddBillerCustomerResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__AddBillerCustomer +#define SOAP_TYPE_interswitch_PointerTo_interswitch__AddBillerCustomer (260) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AddBillerCustomer(struct soap*, _interswitch__AddBillerCustomer *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AddBillerCustomer(struct soap*, const char *, int, _interswitch__AddBillerCustomer *const*, const char *); +SOAP_FMAC3 _interswitch__AddBillerCustomer ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AddBillerCustomer(struct soap*, const char*, _interswitch__AddBillerCustomer **, const char*); + +#define soap_write_PointerTo_interswitch__AddBillerCustomer(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__AddBillerCustomer(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__AddBillerCustomer(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AddBillerCustomer(struct soap*, _interswitch__AddBillerCustomer *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__AddBillerCustomer(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__AddBillerCustomer(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AddBillerCustomer ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AddBillerCustomer(struct soap*, _interswitch__AddBillerCustomer **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerPaymentsResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerPaymentsResponse (257) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetCustomerPaymentsResponse(struct soap*, _interswitch__GetCustomerPaymentsResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetCustomerPaymentsResponse(struct soap*, const char *, int, _interswitch__GetCustomerPaymentsResponse *const*, const char *); +SOAP_FMAC3 _interswitch__GetCustomerPaymentsResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetCustomerPaymentsResponse(struct soap*, const char*, _interswitch__GetCustomerPaymentsResponse **, const char*); + +#define soap_write_PointerTo_interswitch__GetCustomerPaymentsResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetCustomerPaymentsResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetCustomerPaymentsResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetCustomerPaymentsResponse(struct soap*, _interswitch__GetCustomerPaymentsResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetCustomerPaymentsResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetCustomerPaymentsResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetCustomerPaymentsResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetCustomerPaymentsResponse(struct soap*, _interswitch__GetCustomerPaymentsResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerPayments +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerPayments (256) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetCustomerPayments(struct soap*, _interswitch__GetCustomerPayments *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetCustomerPayments(struct soap*, const char *, int, _interswitch__GetCustomerPayments *const*, const char *); +SOAP_FMAC3 _interswitch__GetCustomerPayments ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetCustomerPayments(struct soap*, const char*, _interswitch__GetCustomerPayments **, const char*); + +#define soap_write_PointerTo_interswitch__GetCustomerPayments(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetCustomerPayments(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetCustomerPayments(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetCustomerPayments(struct soap*, _interswitch__GetCustomerPayments *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetCustomerPayments(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetCustomerPayments(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetCustomerPayments ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetCustomerPayments(struct soap*, _interswitch__GetCustomerPayments **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerBillerAccountsResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerBillerAccountsResponse (253) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetCustomerBillerAccountsResponse(struct soap*, _interswitch__GetCustomerBillerAccountsResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetCustomerBillerAccountsResponse(struct soap*, const char *, int, _interswitch__GetCustomerBillerAccountsResponse *const*, const char *); +SOAP_FMAC3 _interswitch__GetCustomerBillerAccountsResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetCustomerBillerAccountsResponse(struct soap*, const char*, _interswitch__GetCustomerBillerAccountsResponse **, const char*); + +#define soap_write_PointerTo_interswitch__GetCustomerBillerAccountsResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetCustomerBillerAccountsResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetCustomerBillerAccountsResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetCustomerBillerAccountsResponse(struct soap*, _interswitch__GetCustomerBillerAccountsResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetCustomerBillerAccountsResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetCustomerBillerAccountsResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetCustomerBillerAccountsResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetCustomerBillerAccountsResponse(struct soap*, _interswitch__GetCustomerBillerAccountsResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerBillerAccounts +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetCustomerBillerAccounts (252) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetCustomerBillerAccounts(struct soap*, _interswitch__GetCustomerBillerAccounts *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetCustomerBillerAccounts(struct soap*, const char *, int, _interswitch__GetCustomerBillerAccounts *const*, const char *); +SOAP_FMAC3 _interswitch__GetCustomerBillerAccounts ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetCustomerBillerAccounts(struct soap*, const char*, _interswitch__GetCustomerBillerAccounts **, const char*); + +#define soap_write_PointerTo_interswitch__GetCustomerBillerAccounts(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetCustomerBillerAccounts(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetCustomerBillerAccounts(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetCustomerBillerAccounts(struct soap*, _interswitch__GetCustomerBillerAccounts *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetCustomerBillerAccounts(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetCustomerBillerAccounts(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetCustomerBillerAccounts ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetCustomerBillerAccounts(struct soap*, _interswitch__GetCustomerBillerAccounts **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__AddCustomerBillerAccountResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__AddCustomerBillerAccountResponse (249) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AddCustomerBillerAccountResponse(struct soap*, _interswitch__AddCustomerBillerAccountResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AddCustomerBillerAccountResponse(struct soap*, const char *, int, _interswitch__AddCustomerBillerAccountResponse *const*, const char *); +SOAP_FMAC3 _interswitch__AddCustomerBillerAccountResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AddCustomerBillerAccountResponse(struct soap*, const char*, _interswitch__AddCustomerBillerAccountResponse **, const char*); + +#define soap_write_PointerTo_interswitch__AddCustomerBillerAccountResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__AddCustomerBillerAccountResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__AddCustomerBillerAccountResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AddCustomerBillerAccountResponse(struct soap*, _interswitch__AddCustomerBillerAccountResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__AddCustomerBillerAccountResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__AddCustomerBillerAccountResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AddCustomerBillerAccountResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AddCustomerBillerAccountResponse(struct soap*, _interswitch__AddCustomerBillerAccountResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__AddCustomerBillerAccount +#define SOAP_TYPE_interswitch_PointerTo_interswitch__AddCustomerBillerAccount (248) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AddCustomerBillerAccount(struct soap*, _interswitch__AddCustomerBillerAccount *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AddCustomerBillerAccount(struct soap*, const char *, int, _interswitch__AddCustomerBillerAccount *const*, const char *); +SOAP_FMAC3 _interswitch__AddCustomerBillerAccount ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AddCustomerBillerAccount(struct soap*, const char*, _interswitch__AddCustomerBillerAccount **, const char*); + +#define soap_write_PointerTo_interswitch__AddCustomerBillerAccount(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__AddCustomerBillerAccount(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__AddCustomerBillerAccount(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AddCustomerBillerAccount(struct soap*, _interswitch__AddCustomerBillerAccount *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__AddCustomerBillerAccount(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__AddCustomerBillerAccount(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AddCustomerBillerAccount ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AddCustomerBillerAccount(struct soap*, _interswitch__AddCustomerBillerAccount **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__SendPaymentsResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__SendPaymentsResponse (245) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__SendPaymentsResponse(struct soap*, _interswitch__SendPaymentsResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__SendPaymentsResponse(struct soap*, const char *, int, _interswitch__SendPaymentsResponse *const*, const char *); +SOAP_FMAC3 _interswitch__SendPaymentsResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__SendPaymentsResponse(struct soap*, const char*, _interswitch__SendPaymentsResponse **, const char*); + +#define soap_write_PointerTo_interswitch__SendPaymentsResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__SendPaymentsResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__SendPaymentsResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__SendPaymentsResponse(struct soap*, _interswitch__SendPaymentsResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__SendPaymentsResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__SendPaymentsResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__SendPaymentsResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__SendPaymentsResponse(struct soap*, _interswitch__SendPaymentsResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__SendPayments +#define SOAP_TYPE_interswitch_PointerTo_interswitch__SendPayments (244) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__SendPayments(struct soap*, _interswitch__SendPayments *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__SendPayments(struct soap*, const char *, int, _interswitch__SendPayments *const*, const char *); +SOAP_FMAC3 _interswitch__SendPayments ** SOAP_FMAC4 soap_in_PointerTo_interswitch__SendPayments(struct soap*, const char*, _interswitch__SendPayments **, const char*); + +#define soap_write_PointerTo_interswitch__SendPayments(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__SendPayments(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__SendPayments(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__SendPayments(struct soap*, _interswitch__SendPayments *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__SendPayments(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__SendPayments(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__SendPayments ** SOAP_FMAC4 soap_get_PointerTo_interswitch__SendPayments(struct soap*, _interswitch__SendPayments **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__SendBillPaymentAdviceResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__SendBillPaymentAdviceResponse (241) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__SendBillPaymentAdviceResponse(struct soap*, _interswitch__SendBillPaymentAdviceResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__SendBillPaymentAdviceResponse(struct soap*, const char *, int, _interswitch__SendBillPaymentAdviceResponse *const*, const char *); +SOAP_FMAC3 _interswitch__SendBillPaymentAdviceResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__SendBillPaymentAdviceResponse(struct soap*, const char*, _interswitch__SendBillPaymentAdviceResponse **, const char*); + +#define soap_write_PointerTo_interswitch__SendBillPaymentAdviceResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__SendBillPaymentAdviceResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__SendBillPaymentAdviceResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__SendBillPaymentAdviceResponse(struct soap*, _interswitch__SendBillPaymentAdviceResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__SendBillPaymentAdviceResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__SendBillPaymentAdviceResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__SendBillPaymentAdviceResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__SendBillPaymentAdviceResponse(struct soap*, _interswitch__SendBillPaymentAdviceResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__SendBillPaymentAdvice +#define SOAP_TYPE_interswitch_PointerTo_interswitch__SendBillPaymentAdvice (240) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__SendBillPaymentAdvice(struct soap*, _interswitch__SendBillPaymentAdvice *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__SendBillPaymentAdvice(struct soap*, const char *, int, _interswitch__SendBillPaymentAdvice *const*, const char *); +SOAP_FMAC3 _interswitch__SendBillPaymentAdvice ** SOAP_FMAC4 soap_in_PointerTo_interswitch__SendBillPaymentAdvice(struct soap*, const char*, _interswitch__SendBillPaymentAdvice **, const char*); + +#define soap_write_PointerTo_interswitch__SendBillPaymentAdvice(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__SendBillPaymentAdvice(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__SendBillPaymentAdvice(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__SendBillPaymentAdvice(struct soap*, _interswitch__SendBillPaymentAdvice *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__SendBillPaymentAdvice(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__SendBillPaymentAdvice(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__SendBillPaymentAdvice ** SOAP_FMAC4 soap_get_PointerTo_interswitch__SendBillPaymentAdvice(struct soap*, _interswitch__SendBillPaymentAdvice **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateCustomerResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateCustomerResponse (237) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthenticateCustomerResponse(struct soap*, _interswitch__AuthenticateCustomerResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthenticateCustomerResponse(struct soap*, const char *, int, _interswitch__AuthenticateCustomerResponse *const*, const char *); +SOAP_FMAC3 _interswitch__AuthenticateCustomerResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthenticateCustomerResponse(struct soap*, const char*, _interswitch__AuthenticateCustomerResponse **, const char*); + +#define soap_write_PointerTo_interswitch__AuthenticateCustomerResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__AuthenticateCustomerResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__AuthenticateCustomerResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthenticateCustomerResponse(struct soap*, _interswitch__AuthenticateCustomerResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__AuthenticateCustomerResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__AuthenticateCustomerResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthenticateCustomerResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthenticateCustomerResponse(struct soap*, _interswitch__AuthenticateCustomerResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateCustomer +#define SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateCustomer (236) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthenticateCustomer(struct soap*, _interswitch__AuthenticateCustomer *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthenticateCustomer(struct soap*, const char *, int, _interswitch__AuthenticateCustomer *const*, const char *); +SOAP_FMAC3 _interswitch__AuthenticateCustomer ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthenticateCustomer(struct soap*, const char*, _interswitch__AuthenticateCustomer **, const char*); + +#define soap_write_PointerTo_interswitch__AuthenticateCustomer(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__AuthenticateCustomer(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__AuthenticateCustomer(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthenticateCustomer(struct soap*, _interswitch__AuthenticateCustomer *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__AuthenticateCustomer(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__AuthenticateCustomer(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthenticateCustomer ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthenticateCustomer(struct soap*, _interswitch__AuthenticateCustomer **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__DoBillPaymentInquiryResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__DoBillPaymentInquiryResponse (233) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__DoBillPaymentInquiryResponse(struct soap*, _interswitch__DoBillPaymentInquiryResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__DoBillPaymentInquiryResponse(struct soap*, const char *, int, _interswitch__DoBillPaymentInquiryResponse *const*, const char *); +SOAP_FMAC3 _interswitch__DoBillPaymentInquiryResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__DoBillPaymentInquiryResponse(struct soap*, const char*, _interswitch__DoBillPaymentInquiryResponse **, const char*); + +#define soap_write_PointerTo_interswitch__DoBillPaymentInquiryResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__DoBillPaymentInquiryResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__DoBillPaymentInquiryResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__DoBillPaymentInquiryResponse(struct soap*, _interswitch__DoBillPaymentInquiryResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__DoBillPaymentInquiryResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__DoBillPaymentInquiryResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__DoBillPaymentInquiryResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__DoBillPaymentInquiryResponse(struct soap*, _interswitch__DoBillPaymentInquiryResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__DoBillPaymentInquiry +#define SOAP_TYPE_interswitch_PointerTo_interswitch__DoBillPaymentInquiry (232) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__DoBillPaymentInquiry(struct soap*, _interswitch__DoBillPaymentInquiry *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__DoBillPaymentInquiry(struct soap*, const char *, int, _interswitch__DoBillPaymentInquiry *const*, const char *); +SOAP_FMAC3 _interswitch__DoBillPaymentInquiry ** SOAP_FMAC4 soap_in_PointerTo_interswitch__DoBillPaymentInquiry(struct soap*, const char*, _interswitch__DoBillPaymentInquiry **, const char*); + +#define soap_write_PointerTo_interswitch__DoBillPaymentInquiry(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__DoBillPaymentInquiry(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__DoBillPaymentInquiry(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__DoBillPaymentInquiry(struct soap*, _interswitch__DoBillPaymentInquiry *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__DoBillPaymentInquiry(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__DoBillPaymentInquiry(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__DoBillPaymentInquiry ** SOAP_FMAC4 soap_get_PointerTo_interswitch__DoBillPaymentInquiry(struct soap*, _interswitch__DoBillPaymentInquiry **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerCategoriesResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerCategoriesResponse (229) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetBillerCategoriesResponse(struct soap*, _interswitch__GetBillerCategoriesResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetBillerCategoriesResponse(struct soap*, const char *, int, _interswitch__GetBillerCategoriesResponse *const*, const char *); +SOAP_FMAC3 _interswitch__GetBillerCategoriesResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetBillerCategoriesResponse(struct soap*, const char*, _interswitch__GetBillerCategoriesResponse **, const char*); + +#define soap_write_PointerTo_interswitch__GetBillerCategoriesResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetBillerCategoriesResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetBillerCategoriesResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetBillerCategoriesResponse(struct soap*, _interswitch__GetBillerCategoriesResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetBillerCategoriesResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetBillerCategoriesResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetBillerCategoriesResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetBillerCategoriesResponse(struct soap*, _interswitch__GetBillerCategoriesResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerCategories +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerCategories (228) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetBillerCategories(struct soap*, _interswitch__GetBillerCategories *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetBillerCategories(struct soap*, const char *, int, _interswitch__GetBillerCategories *const*, const char *); +SOAP_FMAC3 _interswitch__GetBillerCategories ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetBillerCategories(struct soap*, const char*, _interswitch__GetBillerCategories **, const char*); + +#define soap_write_PointerTo_interswitch__GetBillerCategories(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetBillerCategories(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetBillerCategories(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetBillerCategories(struct soap*, _interswitch__GetBillerCategories *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetBillerCategories(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetBillerCategories(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetBillerCategories ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetBillerCategories(struct soap*, _interswitch__GetBillerCategories **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerPaymentItemsResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerPaymentItemsResponse (225) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetBillerPaymentItemsResponse(struct soap*, _interswitch__GetBillerPaymentItemsResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetBillerPaymentItemsResponse(struct soap*, const char *, int, _interswitch__GetBillerPaymentItemsResponse *const*, const char *); +SOAP_FMAC3 _interswitch__GetBillerPaymentItemsResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetBillerPaymentItemsResponse(struct soap*, const char*, _interswitch__GetBillerPaymentItemsResponse **, const char*); + +#define soap_write_PointerTo_interswitch__GetBillerPaymentItemsResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetBillerPaymentItemsResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetBillerPaymentItemsResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetBillerPaymentItemsResponse(struct soap*, _interswitch__GetBillerPaymentItemsResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetBillerPaymentItemsResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetBillerPaymentItemsResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetBillerPaymentItemsResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetBillerPaymentItemsResponse(struct soap*, _interswitch__GetBillerPaymentItemsResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerPaymentItems +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillerPaymentItems (224) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetBillerPaymentItems(struct soap*, _interswitch__GetBillerPaymentItems *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetBillerPaymentItems(struct soap*, const char *, int, _interswitch__GetBillerPaymentItems *const*, const char *); +SOAP_FMAC3 _interswitch__GetBillerPaymentItems ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetBillerPaymentItems(struct soap*, const char*, _interswitch__GetBillerPaymentItems **, const char*); + +#define soap_write_PointerTo_interswitch__GetBillerPaymentItems(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetBillerPaymentItems(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetBillerPaymentItems(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetBillerPaymentItems(struct soap*, _interswitch__GetBillerPaymentItems *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetBillerPaymentItems(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetBillerPaymentItems(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetBillerPaymentItems ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetBillerPaymentItems(struct soap*, _interswitch__GetBillerPaymentItems **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetFeaturedBillersResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetFeaturedBillersResponse (221) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetFeaturedBillersResponse(struct soap*, _interswitch__GetFeaturedBillersResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetFeaturedBillersResponse(struct soap*, const char *, int, _interswitch__GetFeaturedBillersResponse *const*, const char *); +SOAP_FMAC3 _interswitch__GetFeaturedBillersResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetFeaturedBillersResponse(struct soap*, const char*, _interswitch__GetFeaturedBillersResponse **, const char*); + +#define soap_write_PointerTo_interswitch__GetFeaturedBillersResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetFeaturedBillersResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetFeaturedBillersResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetFeaturedBillersResponse(struct soap*, _interswitch__GetFeaturedBillersResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetFeaturedBillersResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetFeaturedBillersResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetFeaturedBillersResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetFeaturedBillersResponse(struct soap*, _interswitch__GetFeaturedBillersResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetFeaturedBillers +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetFeaturedBillers (220) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetFeaturedBillers(struct soap*, _interswitch__GetFeaturedBillers *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetFeaturedBillers(struct soap*, const char *, int, _interswitch__GetFeaturedBillers *const*, const char *); +SOAP_FMAC3 _interswitch__GetFeaturedBillers ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetFeaturedBillers(struct soap*, const char*, _interswitch__GetFeaturedBillers **, const char*); + +#define soap_write_PointerTo_interswitch__GetFeaturedBillers(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetFeaturedBillers(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetFeaturedBillers(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetFeaturedBillers(struct soap*, _interswitch__GetFeaturedBillers *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetFeaturedBillers(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetFeaturedBillers(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetFeaturedBillers ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetFeaturedBillers(struct soap*, _interswitch__GetFeaturedBillers **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetLatestBillersResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetLatestBillersResponse (217) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetLatestBillersResponse(struct soap*, _interswitch__GetLatestBillersResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetLatestBillersResponse(struct soap*, const char *, int, _interswitch__GetLatestBillersResponse *const*, const char *); +SOAP_FMAC3 _interswitch__GetLatestBillersResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetLatestBillersResponse(struct soap*, const char*, _interswitch__GetLatestBillersResponse **, const char*); + +#define soap_write_PointerTo_interswitch__GetLatestBillersResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetLatestBillersResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetLatestBillersResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetLatestBillersResponse(struct soap*, _interswitch__GetLatestBillersResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetLatestBillersResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetLatestBillersResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetLatestBillersResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetLatestBillersResponse(struct soap*, _interswitch__GetLatestBillersResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetLatestBillers +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetLatestBillers (216) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetLatestBillers(struct soap*, _interswitch__GetLatestBillers *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetLatestBillers(struct soap*, const char *, int, _interswitch__GetLatestBillers *const*, const char *); +SOAP_FMAC3 _interswitch__GetLatestBillers ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetLatestBillers(struct soap*, const char*, _interswitch__GetLatestBillers **, const char*); + +#define soap_write_PointerTo_interswitch__GetLatestBillers(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetLatestBillers(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetLatestBillers(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetLatestBillers(struct soap*, _interswitch__GetLatestBillers *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetLatestBillers(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetLatestBillers(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetLatestBillers ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetLatestBillers(struct soap*, _interswitch__GetLatestBillers **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillersResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillersResponse (213) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetBillersResponse(struct soap*, _interswitch__GetBillersResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetBillersResponse(struct soap*, const char *, int, _interswitch__GetBillersResponse *const*, const char *); +SOAP_FMAC3 _interswitch__GetBillersResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetBillersResponse(struct soap*, const char*, _interswitch__GetBillersResponse **, const char*); + +#define soap_write_PointerTo_interswitch__GetBillersResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetBillersResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetBillersResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetBillersResponse(struct soap*, _interswitch__GetBillersResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetBillersResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetBillersResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetBillersResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetBillersResponse(struct soap*, _interswitch__GetBillersResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillers +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetBillers (212) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetBillers(struct soap*, _interswitch__GetBillers *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetBillers(struct soap*, const char *, int, _interswitch__GetBillers *const*, const char *); +SOAP_FMAC3 _interswitch__GetBillers ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetBillers(struct soap*, const char*, _interswitch__GetBillers **, const char*); + +#define soap_write_PointerTo_interswitch__GetBillers(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetBillers(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetBillers(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetBillers(struct soap*, _interswitch__GetBillers *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetBillers(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetBillers(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetBillers ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetBillers(struct soap*, _interswitch__GetBillers **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetUserResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetUserResponse (209) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetUserResponse(struct soap*, _interswitch__GetUserResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetUserResponse(struct soap*, const char *, int, _interswitch__GetUserResponse *const*, const char *); +SOAP_FMAC3 _interswitch__GetUserResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetUserResponse(struct soap*, const char*, _interswitch__GetUserResponse **, const char*); + +#define soap_write_PointerTo_interswitch__GetUserResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetUserResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetUserResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetUserResponse(struct soap*, _interswitch__GetUserResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetUserResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetUserResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetUserResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetUserResponse(struct soap*, _interswitch__GetUserResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetUser +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetUser (208) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetUser(struct soap*, _interswitch__GetUser *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetUser(struct soap*, const char *, int, _interswitch__GetUser *const*, const char *); +SOAP_FMAC3 _interswitch__GetUser ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetUser(struct soap*, const char*, _interswitch__GetUser **, const char*); + +#define soap_write_PointerTo_interswitch__GetUser(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetUser(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetUser(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetUser(struct soap*, _interswitch__GetUser *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetUser(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetUser(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetUser ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetUser(struct soap*, _interswitch__GetUser **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse (205) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(struct soap*, _interswitch__AuthenticateUserSecurityTokenResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(struct soap*, const char *, int, _interswitch__AuthenticateUserSecurityTokenResponse *const*, const char *); +SOAP_FMAC3 _interswitch__AuthenticateUserSecurityTokenResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(struct soap*, const char*, _interswitch__AuthenticateUserSecurityTokenResponse **, const char*); + +#define soap_write_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(struct soap*, _interswitch__AuthenticateUserSecurityTokenResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthenticateUserSecurityTokenResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthenticateUserSecurityTokenResponse(struct soap*, _interswitch__AuthenticateUserSecurityTokenResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUserSecurityToken +#define SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUserSecurityToken (204) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthenticateUserSecurityToken(struct soap*, _interswitch__AuthenticateUserSecurityToken *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthenticateUserSecurityToken(struct soap*, const char *, int, _interswitch__AuthenticateUserSecurityToken *const*, const char *); +SOAP_FMAC3 _interswitch__AuthenticateUserSecurityToken ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthenticateUserSecurityToken(struct soap*, const char*, _interswitch__AuthenticateUserSecurityToken **, const char*); + +#define soap_write_PointerTo_interswitch__AuthenticateUserSecurityToken(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__AuthenticateUserSecurityToken(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__AuthenticateUserSecurityToken(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthenticateUserSecurityToken(struct soap*, _interswitch__AuthenticateUserSecurityToken *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__AuthenticateUserSecurityToken(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__AuthenticateUserSecurityToken(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthenticateUserSecurityToken ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthenticateUserSecurityToken(struct soap*, _interswitch__AuthenticateUserSecurityToken **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUserResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUserResponse (201) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthenticateUserResponse(struct soap*, _interswitch__AuthenticateUserResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthenticateUserResponse(struct soap*, const char *, int, _interswitch__AuthenticateUserResponse *const*, const char *); +SOAP_FMAC3 _interswitch__AuthenticateUserResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthenticateUserResponse(struct soap*, const char*, _interswitch__AuthenticateUserResponse **, const char*); + +#define soap_write_PointerTo_interswitch__AuthenticateUserResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__AuthenticateUserResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__AuthenticateUserResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthenticateUserResponse(struct soap*, _interswitch__AuthenticateUserResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__AuthenticateUserResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__AuthenticateUserResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthenticateUserResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthenticateUserResponse(struct soap*, _interswitch__AuthenticateUserResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUser +#define SOAP_TYPE_interswitch_PointerTo_interswitch__AuthenticateUser (200) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthenticateUser(struct soap*, _interswitch__AuthenticateUser *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthenticateUser(struct soap*, const char *, int, _interswitch__AuthenticateUser *const*, const char *); +SOAP_FMAC3 _interswitch__AuthenticateUser ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthenticateUser(struct soap*, const char*, _interswitch__AuthenticateUser **, const char*); + +#define soap_write_PointerTo_interswitch__AuthenticateUser(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__AuthenticateUser(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__AuthenticateUser(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthenticateUser(struct soap*, _interswitch__AuthenticateUser *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__AuthenticateUser(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__AuthenticateUser(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthenticateUser ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthenticateUser(struct soap*, _interswitch__AuthenticateUser **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__ResetPasswordResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__ResetPasswordResponse (197) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ResetPasswordResponse(struct soap*, _interswitch__ResetPasswordResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ResetPasswordResponse(struct soap*, const char *, int, _interswitch__ResetPasswordResponse *const*, const char *); +SOAP_FMAC3 _interswitch__ResetPasswordResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ResetPasswordResponse(struct soap*, const char*, _interswitch__ResetPasswordResponse **, const char*); + +#define soap_write_PointerTo_interswitch__ResetPasswordResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__ResetPasswordResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__ResetPasswordResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ResetPasswordResponse(struct soap*, _interswitch__ResetPasswordResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__ResetPasswordResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__ResetPasswordResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ResetPasswordResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ResetPasswordResponse(struct soap*, _interswitch__ResetPasswordResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__ResetPassword +#define SOAP_TYPE_interswitch_PointerTo_interswitch__ResetPassword (196) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ResetPassword(struct soap*, _interswitch__ResetPassword *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ResetPassword(struct soap*, const char *, int, _interswitch__ResetPassword *const*, const char *); +SOAP_FMAC3 _interswitch__ResetPassword ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ResetPassword(struct soap*, const char*, _interswitch__ResetPassword **, const char*); + +#define soap_write_PointerTo_interswitch__ResetPassword(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__ResetPassword(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__ResetPassword(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ResetPassword(struct soap*, _interswitch__ResetPassword *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__ResetPassword(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__ResetPassword(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ResetPassword ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ResetPassword(struct soap*, _interswitch__ResetPassword **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__ChangePasswordResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__ChangePasswordResponse (193) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ChangePasswordResponse(struct soap*, _interswitch__ChangePasswordResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ChangePasswordResponse(struct soap*, const char *, int, _interswitch__ChangePasswordResponse *const*, const char *); +SOAP_FMAC3 _interswitch__ChangePasswordResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ChangePasswordResponse(struct soap*, const char*, _interswitch__ChangePasswordResponse **, const char*); + +#define soap_write_PointerTo_interswitch__ChangePasswordResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__ChangePasswordResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__ChangePasswordResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ChangePasswordResponse(struct soap*, _interswitch__ChangePasswordResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__ChangePasswordResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__ChangePasswordResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ChangePasswordResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ChangePasswordResponse(struct soap*, _interswitch__ChangePasswordResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__ChangePassword +#define SOAP_TYPE_interswitch_PointerTo_interswitch__ChangePassword (192) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ChangePassword(struct soap*, _interswitch__ChangePassword *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ChangePassword(struct soap*, const char *, int, _interswitch__ChangePassword *const*, const char *); +SOAP_FMAC3 _interswitch__ChangePassword ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ChangePassword(struct soap*, const char*, _interswitch__ChangePassword **, const char*); + +#define soap_write_PointerTo_interswitch__ChangePassword(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__ChangePassword(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__ChangePassword(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ChangePassword(struct soap*, _interswitch__ChangePassword *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__ChangePassword(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__ChangePassword(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ChangePassword ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ChangePassword(struct soap*, _interswitch__ChangePassword **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__UpdateUserResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__UpdateUserResponse (189) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__UpdateUserResponse(struct soap*, _interswitch__UpdateUserResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__UpdateUserResponse(struct soap*, const char *, int, _interswitch__UpdateUserResponse *const*, const char *); +SOAP_FMAC3 _interswitch__UpdateUserResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__UpdateUserResponse(struct soap*, const char*, _interswitch__UpdateUserResponse **, const char*); + +#define soap_write_PointerTo_interswitch__UpdateUserResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__UpdateUserResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__UpdateUserResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__UpdateUserResponse(struct soap*, _interswitch__UpdateUserResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__UpdateUserResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__UpdateUserResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__UpdateUserResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__UpdateUserResponse(struct soap*, _interswitch__UpdateUserResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__UpdateUser +#define SOAP_TYPE_interswitch_PointerTo_interswitch__UpdateUser (188) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__UpdateUser(struct soap*, _interswitch__UpdateUser *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__UpdateUser(struct soap*, const char *, int, _interswitch__UpdateUser *const*, const char *); +SOAP_FMAC3 _interswitch__UpdateUser ** SOAP_FMAC4 soap_in_PointerTo_interswitch__UpdateUser(struct soap*, const char*, _interswitch__UpdateUser **, const char*); + +#define soap_write_PointerTo_interswitch__UpdateUser(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__UpdateUser(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__UpdateUser(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__UpdateUser(struct soap*, _interswitch__UpdateUser *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__UpdateUser(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__UpdateUser(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__UpdateUser ** SOAP_FMAC4 soap_get_PointerTo_interswitch__UpdateUser(struct soap*, _interswitch__UpdateUser **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__ActivateUserResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__ActivateUserResponse (185) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ActivateUserResponse(struct soap*, _interswitch__ActivateUserResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ActivateUserResponse(struct soap*, const char *, int, _interswitch__ActivateUserResponse *const*, const char *); +SOAP_FMAC3 _interswitch__ActivateUserResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ActivateUserResponse(struct soap*, const char*, _interswitch__ActivateUserResponse **, const char*); + +#define soap_write_PointerTo_interswitch__ActivateUserResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__ActivateUserResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__ActivateUserResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ActivateUserResponse(struct soap*, _interswitch__ActivateUserResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__ActivateUserResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__ActivateUserResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ActivateUserResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ActivateUserResponse(struct soap*, _interswitch__ActivateUserResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__ActivateUser +#define SOAP_TYPE_interswitch_PointerTo_interswitch__ActivateUser (184) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ActivateUser(struct soap*, _interswitch__ActivateUser *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ActivateUser(struct soap*, const char *, int, _interswitch__ActivateUser *const*, const char *); +SOAP_FMAC3 _interswitch__ActivateUser ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ActivateUser(struct soap*, const char*, _interswitch__ActivateUser **, const char*); + +#define soap_write_PointerTo_interswitch__ActivateUser(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__ActivateUser(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__ActivateUser(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ActivateUser(struct soap*, _interswitch__ActivateUser *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__ActivateUser(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__ActivateUser(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ActivateUser ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ActivateUser(struct soap*, _interswitch__ActivateUser **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__CreateUserResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__CreateUserResponse (181) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__CreateUserResponse(struct soap*, _interswitch__CreateUserResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__CreateUserResponse(struct soap*, const char *, int, _interswitch__CreateUserResponse *const*, const char *); +SOAP_FMAC3 _interswitch__CreateUserResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__CreateUserResponse(struct soap*, const char*, _interswitch__CreateUserResponse **, const char*); + +#define soap_write_PointerTo_interswitch__CreateUserResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__CreateUserResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__CreateUserResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__CreateUserResponse(struct soap*, _interswitch__CreateUserResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__CreateUserResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__CreateUserResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__CreateUserResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__CreateUserResponse(struct soap*, _interswitch__CreateUserResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__CreateUser +#define SOAP_TYPE_interswitch_PointerTo_interswitch__CreateUser (180) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__CreateUser(struct soap*, _interswitch__CreateUser *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__CreateUser(struct soap*, const char *, int, _interswitch__CreateUser *const*, const char *); +SOAP_FMAC3 _interswitch__CreateUser ** SOAP_FMAC4 soap_in_PointerTo_interswitch__CreateUser(struct soap*, const char*, _interswitch__CreateUser **, const char*); + +#define soap_write_PointerTo_interswitch__CreateUser(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__CreateUser(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__CreateUser(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__CreateUser(struct soap*, _interswitch__CreateUser *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__CreateUser(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__CreateUser(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__CreateUser ** SOAP_FMAC4 soap_get_PointerTo_interswitch__CreateUser(struct soap*, _interswitch__CreateUser **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetSystemSettingsResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetSystemSettingsResponse (177) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetSystemSettingsResponse(struct soap*, _interswitch__GetSystemSettingsResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetSystemSettingsResponse(struct soap*, const char *, int, _interswitch__GetSystemSettingsResponse *const*, const char *); +SOAP_FMAC3 _interswitch__GetSystemSettingsResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetSystemSettingsResponse(struct soap*, const char*, _interswitch__GetSystemSettingsResponse **, const char*); + +#define soap_write_PointerTo_interswitch__GetSystemSettingsResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetSystemSettingsResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetSystemSettingsResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetSystemSettingsResponse(struct soap*, _interswitch__GetSystemSettingsResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetSystemSettingsResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetSystemSettingsResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetSystemSettingsResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetSystemSettingsResponse(struct soap*, _interswitch__GetSystemSettingsResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__GetSystemSettings +#define SOAP_TYPE_interswitch_PointerTo_interswitch__GetSystemSettings (176) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__GetSystemSettings(struct soap*, _interswitch__GetSystemSettings *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__GetSystemSettings(struct soap*, const char *, int, _interswitch__GetSystemSettings *const*, const char *); +SOAP_FMAC3 _interswitch__GetSystemSettings ** SOAP_FMAC4 soap_in_PointerTo_interswitch__GetSystemSettings(struct soap*, const char*, _interswitch__GetSystemSettings **, const char*); + +#define soap_write_PointerTo_interswitch__GetSystemSettings(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__GetSystemSettings(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__GetSystemSettings(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__GetSystemSettings(struct soap*, _interswitch__GetSystemSettings *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__GetSystemSettings(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__GetSystemSettings(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__GetSystemSettings ** SOAP_FMAC4 soap_get_PointerTo_interswitch__GetSystemSettings(struct soap*, _interswitch__GetSystemSettings **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransactionResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransactionResponse (173) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__QueryTransactionResponse(struct soap*, _interswitch__QueryTransactionResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__QueryTransactionResponse(struct soap*, const char *, int, _interswitch__QueryTransactionResponse *const*, const char *); +SOAP_FMAC3 _interswitch__QueryTransactionResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__QueryTransactionResponse(struct soap*, const char*, _interswitch__QueryTransactionResponse **, const char*); + +#define soap_write_PointerTo_interswitch__QueryTransactionResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__QueryTransactionResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__QueryTransactionResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__QueryTransactionResponse(struct soap*, _interswitch__QueryTransactionResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__QueryTransactionResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__QueryTransactionResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__QueryTransactionResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__QueryTransactionResponse(struct soap*, _interswitch__QueryTransactionResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransaction +#define SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransaction (172) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__QueryTransaction(struct soap*, _interswitch__QueryTransaction *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__QueryTransaction(struct soap*, const char *, int, _interswitch__QueryTransaction *const*, const char *); +SOAP_FMAC3 _interswitch__QueryTransaction ** SOAP_FMAC4 soap_in_PointerTo_interswitch__QueryTransaction(struct soap*, const char*, _interswitch__QueryTransaction **, const char*); + +#define soap_write_PointerTo_interswitch__QueryTransaction(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__QueryTransaction(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__QueryTransaction(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__QueryTransaction(struct soap*, _interswitch__QueryTransaction *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__QueryTransaction(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__QueryTransaction(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__QueryTransaction ** SOAP_FMAC4 soap_get_PointerTo_interswitch__QueryTransaction(struct soap*, _interswitch__QueryTransaction **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__StatusCheckResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__StatusCheckResponse (169) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__StatusCheckResponse(struct soap*, _interswitch__StatusCheckResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__StatusCheckResponse(struct soap*, const char *, int, _interswitch__StatusCheckResponse *const*, const char *); +SOAP_FMAC3 _interswitch__StatusCheckResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__StatusCheckResponse(struct soap*, const char*, _interswitch__StatusCheckResponse **, const char*); + +#define soap_write_PointerTo_interswitch__StatusCheckResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__StatusCheckResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__StatusCheckResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__StatusCheckResponse(struct soap*, _interswitch__StatusCheckResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__StatusCheckResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__StatusCheckResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__StatusCheckResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__StatusCheckResponse(struct soap*, _interswitch__StatusCheckResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__StatusCheck +#define SOAP_TYPE_interswitch_PointerTo_interswitch__StatusCheck (168) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__StatusCheck(struct soap*, _interswitch__StatusCheck *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__StatusCheck(struct soap*, const char *, int, _interswitch__StatusCheck *const*, const char *); +SOAP_FMAC3 _interswitch__StatusCheck ** SOAP_FMAC4 soap_in_PointerTo_interswitch__StatusCheck(struct soap*, const char*, _interswitch__StatusCheck **, const char*); + +#define soap_write_PointerTo_interswitch__StatusCheck(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__StatusCheck(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__StatusCheck(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__StatusCheck(struct soap*, _interswitch__StatusCheck *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__StatusCheck(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__StatusCheck(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__StatusCheck ** SOAP_FMAC4 soap_get_PointerTo_interswitch__StatusCheck(struct soap*, _interswitch__StatusCheck **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__ReverseCashOutResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__ReverseCashOutResponse (165) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ReverseCashOutResponse(struct soap*, _interswitch__ReverseCashOutResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ReverseCashOutResponse(struct soap*, const char *, int, _interswitch__ReverseCashOutResponse *const*, const char *); +SOAP_FMAC3 _interswitch__ReverseCashOutResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ReverseCashOutResponse(struct soap*, const char*, _interswitch__ReverseCashOutResponse **, const char*); + +#define soap_write_PointerTo_interswitch__ReverseCashOutResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__ReverseCashOutResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__ReverseCashOutResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ReverseCashOutResponse(struct soap*, _interswitch__ReverseCashOutResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__ReverseCashOutResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__ReverseCashOutResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ReverseCashOutResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ReverseCashOutResponse(struct soap*, _interswitch__ReverseCashOutResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__ReverseCashOut +#define SOAP_TYPE_interswitch_PointerTo_interswitch__ReverseCashOut (164) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ReverseCashOut(struct soap*, _interswitch__ReverseCashOut *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ReverseCashOut(struct soap*, const char *, int, _interswitch__ReverseCashOut *const*, const char *); +SOAP_FMAC3 _interswitch__ReverseCashOut ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ReverseCashOut(struct soap*, const char*, _interswitch__ReverseCashOut **, const char*); + +#define soap_write_PointerTo_interswitch__ReverseCashOut(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__ReverseCashOut(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__ReverseCashOut(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ReverseCashOut(struct soap*, _interswitch__ReverseCashOut *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__ReverseCashOut(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__ReverseCashOut(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ReverseCashOut ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ReverseCashOut(struct soap*, _interswitch__ReverseCashOut **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseAccountCashOutResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseAccountCashOutResponse (161) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthoriseAccountCashOutResponse(struct soap*, _interswitch__AuthoriseAccountCashOutResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthoriseAccountCashOutResponse(struct soap*, const char *, int, _interswitch__AuthoriseAccountCashOutResponse *const*, const char *); +SOAP_FMAC3 _interswitch__AuthoriseAccountCashOutResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthoriseAccountCashOutResponse(struct soap*, const char*, _interswitch__AuthoriseAccountCashOutResponse **, const char*); + +#define soap_write_PointerTo_interswitch__AuthoriseAccountCashOutResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__AuthoriseAccountCashOutResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__AuthoriseAccountCashOutResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthoriseAccountCashOutResponse(struct soap*, _interswitch__AuthoriseAccountCashOutResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__AuthoriseAccountCashOutResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__AuthoriseAccountCashOutResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthoriseAccountCashOutResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthoriseAccountCashOutResponse(struct soap*, _interswitch__AuthoriseAccountCashOutResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseAccountCashOut +#define SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseAccountCashOut (160) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthoriseAccountCashOut(struct soap*, _interswitch__AuthoriseAccountCashOut *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthoriseAccountCashOut(struct soap*, const char *, int, _interswitch__AuthoriseAccountCashOut *const*, const char *); +SOAP_FMAC3 _interswitch__AuthoriseAccountCashOut ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthoriseAccountCashOut(struct soap*, const char*, _interswitch__AuthoriseAccountCashOut **, const char*); + +#define soap_write_PointerTo_interswitch__AuthoriseAccountCashOut(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__AuthoriseAccountCashOut(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__AuthoriseAccountCashOut(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthoriseAccountCashOut(struct soap*, _interswitch__AuthoriseAccountCashOut *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__AuthoriseAccountCashOut(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__AuthoriseAccountCashOut(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthoriseAccountCashOut ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthoriseAccountCashOut(struct soap*, _interswitch__AuthoriseAccountCashOut **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseCashOutResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseCashOutResponse (157) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthoriseCashOutResponse(struct soap*, _interswitch__AuthoriseCashOutResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthoriseCashOutResponse(struct soap*, const char *, int, _interswitch__AuthoriseCashOutResponse *const*, const char *); +SOAP_FMAC3 _interswitch__AuthoriseCashOutResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthoriseCashOutResponse(struct soap*, const char*, _interswitch__AuthoriseCashOutResponse **, const char*); + +#define soap_write_PointerTo_interswitch__AuthoriseCashOutResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__AuthoriseCashOutResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__AuthoriseCashOutResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthoriseCashOutResponse(struct soap*, _interswitch__AuthoriseCashOutResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__AuthoriseCashOutResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__AuthoriseCashOutResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthoriseCashOutResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthoriseCashOutResponse(struct soap*, _interswitch__AuthoriseCashOutResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseCashOut +#define SOAP_TYPE_interswitch_PointerTo_interswitch__AuthoriseCashOut (156) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__AuthoriseCashOut(struct soap*, _interswitch__AuthoriseCashOut *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__AuthoriseCashOut(struct soap*, const char *, int, _interswitch__AuthoriseCashOut *const*, const char *); +SOAP_FMAC3 _interswitch__AuthoriseCashOut ** SOAP_FMAC4 soap_in_PointerTo_interswitch__AuthoriseCashOut(struct soap*, const char*, _interswitch__AuthoriseCashOut **, const char*); + +#define soap_write_PointerTo_interswitch__AuthoriseCashOut(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__AuthoriseCashOut(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__AuthoriseCashOut(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__AuthoriseCashOut(struct soap*, _interswitch__AuthoriseCashOut *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__AuthoriseCashOut(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__AuthoriseCashOut(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__AuthoriseCashOut ** SOAP_FMAC4 soap_get_PointerTo_interswitch__AuthoriseCashOut(struct soap*, _interswitch__AuthoriseCashOut **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransferResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransferResponse (153) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__QueryTransferResponse(struct soap*, _interswitch__QueryTransferResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__QueryTransferResponse(struct soap*, const char *, int, _interswitch__QueryTransferResponse *const*, const char *); +SOAP_FMAC3 _interswitch__QueryTransferResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__QueryTransferResponse(struct soap*, const char*, _interswitch__QueryTransferResponse **, const char*); + +#define soap_write_PointerTo_interswitch__QueryTransferResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__QueryTransferResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__QueryTransferResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__QueryTransferResponse(struct soap*, _interswitch__QueryTransferResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__QueryTransferResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__QueryTransferResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__QueryTransferResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__QueryTransferResponse(struct soap*, _interswitch__QueryTransferResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransfer +#define SOAP_TYPE_interswitch_PointerTo_interswitch__QueryTransfer (152) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__QueryTransfer(struct soap*, _interswitch__QueryTransfer *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__QueryTransfer(struct soap*, const char *, int, _interswitch__QueryTransfer *const*, const char *); +SOAP_FMAC3 _interswitch__QueryTransfer ** SOAP_FMAC4 soap_in_PointerTo_interswitch__QueryTransfer(struct soap*, const char*, _interswitch__QueryTransfer **, const char*); + +#define soap_write_PointerTo_interswitch__QueryTransfer(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__QueryTransfer(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__QueryTransfer(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__QueryTransfer(struct soap*, _interswitch__QueryTransfer *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__QueryTransfer(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__QueryTransfer(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__QueryTransfer ** SOAP_FMAC4 soap_get_PointerTo_interswitch__QueryTransfer(struct soap*, _interswitch__QueryTransfer **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__SendSessionKeyResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__SendSessionKeyResponse (149) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__SendSessionKeyResponse(struct soap*, _interswitch__SendSessionKeyResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__SendSessionKeyResponse(struct soap*, const char *, int, _interswitch__SendSessionKeyResponse *const*, const char *); +SOAP_FMAC3 _interswitch__SendSessionKeyResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__SendSessionKeyResponse(struct soap*, const char*, _interswitch__SendSessionKeyResponse **, const char*); + +#define soap_write_PointerTo_interswitch__SendSessionKeyResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__SendSessionKeyResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__SendSessionKeyResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__SendSessionKeyResponse(struct soap*, _interswitch__SendSessionKeyResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__SendSessionKeyResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__SendSessionKeyResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__SendSessionKeyResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__SendSessionKeyResponse(struct soap*, _interswitch__SendSessionKeyResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__SendSessionKey +#define SOAP_TYPE_interswitch_PointerTo_interswitch__SendSessionKey (148) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__SendSessionKey(struct soap*, _interswitch__SendSessionKey *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__SendSessionKey(struct soap*, const char *, int, _interswitch__SendSessionKey *const*, const char *); +SOAP_FMAC3 _interswitch__SendSessionKey ** SOAP_FMAC4 soap_in_PointerTo_interswitch__SendSessionKey(struct soap*, const char*, _interswitch__SendSessionKey **, const char*); + +#define soap_write_PointerTo_interswitch__SendSessionKey(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__SendSessionKey(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__SendSessionKey(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__SendSessionKey(struct soap*, _interswitch__SendSessionKey *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__SendSessionKey(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__SendSessionKey(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__SendSessionKey ** SOAP_FMAC4 soap_get_PointerTo_interswitch__SendSessionKey(struct soap*, _interswitch__SendSessionKey **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__CancelTransferResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__CancelTransferResponse (145) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__CancelTransferResponse(struct soap*, _interswitch__CancelTransferResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__CancelTransferResponse(struct soap*, const char *, int, _interswitch__CancelTransferResponse *const*, const char *); +SOAP_FMAC3 _interswitch__CancelTransferResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__CancelTransferResponse(struct soap*, const char*, _interswitch__CancelTransferResponse **, const char*); + +#define soap_write_PointerTo_interswitch__CancelTransferResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__CancelTransferResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__CancelTransferResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__CancelTransferResponse(struct soap*, _interswitch__CancelTransferResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__CancelTransferResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__CancelTransferResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__CancelTransferResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__CancelTransferResponse(struct soap*, _interswitch__CancelTransferResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__CancelTransfer +#define SOAP_TYPE_interswitch_PointerTo_interswitch__CancelTransfer (144) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__CancelTransfer(struct soap*, _interswitch__CancelTransfer *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__CancelTransfer(struct soap*, const char *, int, _interswitch__CancelTransfer *const*, const char *); +SOAP_FMAC3 _interswitch__CancelTransfer ** SOAP_FMAC4 soap_in_PointerTo_interswitch__CancelTransfer(struct soap*, const char*, _interswitch__CancelTransfer **, const char*); + +#define soap_write_PointerTo_interswitch__CancelTransfer(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__CancelTransfer(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__CancelTransfer(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__CancelTransfer(struct soap*, _interswitch__CancelTransfer *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__CancelTransfer(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__CancelTransfer(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__CancelTransfer ** SOAP_FMAC4 soap_get_PointerTo_interswitch__CancelTransfer(struct soap*, _interswitch__CancelTransfer **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__DoTransferResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__DoTransferResponse (141) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__DoTransferResponse(struct soap*, _interswitch__DoTransferResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__DoTransferResponse(struct soap*, const char *, int, _interswitch__DoTransferResponse *const*, const char *); +SOAP_FMAC3 _interswitch__DoTransferResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__DoTransferResponse(struct soap*, const char*, _interswitch__DoTransferResponse **, const char*); + +#define soap_write_PointerTo_interswitch__DoTransferResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__DoTransferResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__DoTransferResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__DoTransferResponse(struct soap*, _interswitch__DoTransferResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__DoTransferResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__DoTransferResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__DoTransferResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__DoTransferResponse(struct soap*, _interswitch__DoTransferResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__DoTransfer +#define SOAP_TYPE_interswitch_PointerTo_interswitch__DoTransfer (140) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__DoTransfer(struct soap*, _interswitch__DoTransfer *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__DoTransfer(struct soap*, const char *, int, _interswitch__DoTransfer *const*, const char *); +SOAP_FMAC3 _interswitch__DoTransfer ** SOAP_FMAC4 soap_in_PointerTo_interswitch__DoTransfer(struct soap*, const char*, _interswitch__DoTransfer **, const char*); + +#define soap_write_PointerTo_interswitch__DoTransfer(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__DoTransfer(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__DoTransfer(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__DoTransfer(struct soap*, _interswitch__DoTransfer *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__DoTransfer(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__DoTransfer(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__DoTransfer ** SOAP_FMAC4 soap_get_PointerTo_interswitch__DoTransfer(struct soap*, _interswitch__DoTransfer **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__ValidateCustomerResponse +#define SOAP_TYPE_interswitch_PointerTo_interswitch__ValidateCustomerResponse (137) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ValidateCustomerResponse(struct soap*, _interswitch__ValidateCustomerResponse *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ValidateCustomerResponse(struct soap*, const char *, int, _interswitch__ValidateCustomerResponse *const*, const char *); +SOAP_FMAC3 _interswitch__ValidateCustomerResponse ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ValidateCustomerResponse(struct soap*, const char*, _interswitch__ValidateCustomerResponse **, const char*); + +#define soap_write_PointerTo_interswitch__ValidateCustomerResponse(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__ValidateCustomerResponse(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__ValidateCustomerResponse(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ValidateCustomerResponse(struct soap*, _interswitch__ValidateCustomerResponse *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__ValidateCustomerResponse(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__ValidateCustomerResponse(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ValidateCustomerResponse ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ValidateCustomerResponse(struct soap*, _interswitch__ValidateCustomerResponse **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTo_interswitch__ValidateCustomer +#define SOAP_TYPE_interswitch_PointerTo_interswitch__ValidateCustomer (136) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTo_interswitch__ValidateCustomer(struct soap*, _interswitch__ValidateCustomer *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTo_interswitch__ValidateCustomer(struct soap*, const char *, int, _interswitch__ValidateCustomer *const*, const char *); +SOAP_FMAC3 _interswitch__ValidateCustomer ** SOAP_FMAC4 soap_in_PointerTo_interswitch__ValidateCustomer(struct soap*, const char*, _interswitch__ValidateCustomer **, const char*); + +#define soap_write_PointerTo_interswitch__ValidateCustomer(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTo_interswitch__ValidateCustomer(soap, data), 0) || interswitch::soap_put_PointerTo_interswitch__ValidateCustomer(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTo_interswitch__ValidateCustomer(struct soap*, _interswitch__ValidateCustomer *const*, const char*, const char*); + +#define soap_read_PointerTo_interswitch__ValidateCustomer(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTo_interswitch__ValidateCustomer(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 _interswitch__ValidateCustomer ** SOAP_FMAC4 soap_get_PointerTo_interswitch__ValidateCustomer(struct soap*, _interswitch__ValidateCustomer **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTostd__string +#define SOAP_TYPE_interswitch_PointerTostd__string (135) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTostd__string(struct soap*, std::string *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTostd__string(struct soap*, const char *, int, std::string *const*, const char *); +SOAP_FMAC3 std::string ** SOAP_FMAC4 soap_in_PointerTostd__string(struct soap*, const char*, std::string **, const char*); + +#define soap_write_PointerTostd__string(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTostd__string(soap, data), 0) || interswitch::soap_put_PointerTostd__string(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTostd__string(struct soap*, std::string *const*, const char*, const char*); + +#define soap_read_PointerTostd__string(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTostd__string(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 std::string ** SOAP_FMAC4 soap_get_PointerTostd__string(struct soap*, std::string **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_PointerTounsignedByte +#define SOAP_TYPE_interswitch_PointerTounsignedByte (22) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTounsignedByte(struct soap*, unsigned char *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTounsignedByte(struct soap*, const char *, int, unsigned char *const*, const char *); +SOAP_FMAC3 unsigned char ** SOAP_FMAC4 soap_in_PointerTounsignedByte(struct soap*, const char*, unsigned char **, const char*); + +#define soap_write_PointerTounsignedByte(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_PointerTounsignedByte(soap, data), 0) || interswitch::soap_put_PointerTounsignedByte(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTounsignedByte(struct soap*, unsigned char *const*, const char*, const char*); + +#define soap_read_PointerTounsignedByte(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_PointerTounsignedByte(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 unsigned char ** SOAP_FMAC4 soap_get_PointerTounsignedByte(struct soap*, unsigned char **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch__QName +#define SOAP_TYPE_interswitch__QName (5) +#endif + +#define soap_default__QName(soap, a) soap_default_string(soap, a) + + +#define soap_serialize__QName(soap, a) soap_serialize_string(soap, a) + +SOAP_FMAC3 int SOAP_FMAC4 soap_out__QName(struct soap*, const char*, int, char*const*, const char*); +SOAP_FMAC3 char * * SOAP_FMAC4 soap_in__QName(struct soap*, const char*, char **, const char*); + +#define soap_write__QName(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize__QName(soap, data), 0) || interswitch::soap_put__QName(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put__QName(struct soap*, char *const*, const char*, const char*); + +#define soap_read__QName(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get__QName(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 char ** SOAP_FMAC4 soap_get__QName(struct soap*, char **, const char*, const char*); + +#ifndef SOAP_TYPE_interswitch_string +#define SOAP_TYPE_interswitch_string (4) +#endif +SOAP_FMAC3 void SOAP_FMAC4 soap_default_string(struct soap*, char **); +SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_string(struct soap*, char *const*); +SOAP_FMAC3 int SOAP_FMAC4 soap_out_string(struct soap*, const char*, int, char*const*, const char*); +SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_string(struct soap*, const char*, char **, const char*); + +#define soap_write_string(soap, data) ( soap_begin_send(soap) || (interswitch::soap_serialize_string(soap, data), 0) || interswitch::soap_put_string(soap, data, NULL, NULL) || soap_end_send(soap) ) + +SOAP_FMAC3 int SOAP_FMAC4 soap_put_string(struct soap*, char *const*, const char*, const char*); + +#define soap_read_string(soap, data) ( soap_begin_recv(soap) || !interswitch::soap_get_string(soap, data, NULL, NULL) || soap_end_recv(soap) ) + +SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_string(struct soap*, char **, const char*, const char*); + +} // namespace interswitch + + +#endif + +/* End of interswitchH.h */ diff --git a/coregrade/src/shared_tool/soap/interswitchStub.h b/coregrade/src/shared_tool/soap/interswitchStub.h new file mode 100644 index 0000000..ebd31b9 --- /dev/null +++ b/coregrade/src/shared_tool/soap/interswitchStub.h @@ -0,0 +1,2730 @@ +/* interswitchStub.h + Generated by gSOAP 2.7.16 from QuickTellerService.h + Copyright(C) 2000-2010, Robert van Engelen, Genivia Inc. All Rights Reserved. + This part of the software is released under one of the following licenses: + GPL, the gSOAP public license, or Genivia's license for commercial use. +*/ + +#ifndef interswitchStub_H +#define interswitchStub_H +#include +#define SOAP_NAMESPACE_OF_interswitch "http://services.interswitchng.com/quicktellerservice/" +#define SOAP_NAMESPACE_OF_interswitch2 "http://schemas.microsoft.com/2003/10/Serialization/" +#ifndef WITH_NONAMESPACES +#define WITH_NONAMESPACES +#endif +#ifndef WITH_NOGLOBAL +#define WITH_NOGLOBAL +#endif +#include "stdsoap2.h" + +namespace interswitch { + +/******************************************************************************\ + * * + * Enumerations * + * * +\******************************************************************************/ + + +/******************************************************************************\ + * * + * Types with Custom Serializers * + * * +\******************************************************************************/ + +#ifndef SOAP_TYPE_interswitch_xsd__QName +#define SOAP_TYPE_interswitch_xsd__QName (15) +typedef std::string xsd__QName; +#endif + + +/******************************************************************************\ + * * + * Classes and Structs * + * * +\******************************************************************************/ + + +#if 0 /* volatile type: do not redeclare here */ + +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__anyType +#define SOAP_TYPE_interswitch_xsd__anyType (8) +/* Primitive xsd:anyType schema type: */ +class SOAP_CMAC xsd__anyType +{ +public: + char *__item; + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 8; } /* = unique id SOAP_TYPE_interswitch_xsd__anyType */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__anyType(): __item(NULL), soap(NULL) { xsd__anyType::soap_default(NULL); } + virtual ~xsd__anyType() { } +}; +#endif + +#if 0 /* volatile type: do not redeclare here */ + +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__ID_ +#define SOAP_TYPE_interswitch_xsd__ID_ (12) +/* Primitive xsd:ID schema type: */ +class SOAP_CMAC xsd__ID_ : public xsd__anyType +{ +public: + std::string __item; +public: + virtual int soap_type() const { return 12; } /* = unique id SOAP_TYPE_interswitch_xsd__ID_ */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__ID_() { xsd__ID_::soap_default(NULL); } + virtual ~xsd__ID_() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__IDREF_ +#define SOAP_TYPE_interswitch_xsd__IDREF_ (14) +/* Primitive xsd:IDREF schema type: */ +class SOAP_CMAC xsd__IDREF_ : public xsd__anyType +{ +public: + std::string __item; +public: + virtual int soap_type() const { return 14; } /* = unique id SOAP_TYPE_interswitch_xsd__IDREF_ */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__IDREF_() { xsd__IDREF_::soap_default(NULL); } + virtual ~xsd__IDREF_() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__QName_ +#define SOAP_TYPE_interswitch_xsd__QName_ (16) +/* Primitive xsd:QName schema type: */ +class SOAP_CMAC xsd__QName_ : public xsd__anyType +{ +public: + xsd__QName __item; +public: + virtual int soap_type() const { return 16; } /* = unique id SOAP_TYPE_interswitch_xsd__QName_ */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__QName_() { xsd__QName_::soap_default(NULL); } + virtual ~xsd__QName_() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__anyURI_ +#define SOAP_TYPE_interswitch_xsd__anyURI_ (18) +/* Primitive xsd:anyURI schema type: */ +class SOAP_CMAC xsd__anyURI_ : public xsd__anyType +{ +public: + std::string __item; +public: + virtual int soap_type() const { return 18; } /* = unique id SOAP_TYPE_interswitch_xsd__anyURI_ */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__anyURI_() { xsd__anyURI_::soap_default(NULL); } + virtual ~xsd__anyURI_() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__base64Binary +#define SOAP_TYPE_interswitch_xsd__base64Binary (19) +/* Base64 schema type: */ +class SOAP_CMAC xsd__base64Binary +{ +public: + unsigned char *__ptr; + int __size; + char *id; /* optional element of type xsd:string */ + char *type; /* optional element of type xsd:string */ + char *options; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 19; } /* = unique id SOAP_TYPE_interswitch_xsd__base64Binary */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__base64Binary(): __ptr(NULL), id(NULL), type(NULL), options(NULL), soap(NULL) { xsd__base64Binary::soap_default(NULL); } + virtual ~xsd__base64Binary() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__base64Binary_ +#define SOAP_TYPE_interswitch_xsd__base64Binary_ (23) +/* Primitive xsd:base64Binary schema type: */ +class SOAP_CMAC xsd__base64Binary_ : public xsd__anyType +{ +public: + xsd__base64Binary __item; +public: + virtual int soap_type() const { return 23; } /* = unique id SOAP_TYPE_interswitch_xsd__base64Binary_ */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__base64Binary_() { xsd__base64Binary_::soap_default(NULL); } + virtual ~xsd__base64Binary_() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__boolean +#define SOAP_TYPE_interswitch_xsd__boolean (24) +/* Primitive xsd:boolean schema type: */ +class SOAP_CMAC xsd__boolean : public xsd__anyType +{ +public: + bool __item; +public: + virtual int soap_type() const { return 24; } /* = unique id SOAP_TYPE_interswitch_xsd__boolean */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__boolean() { xsd__boolean::soap_default(NULL); } + virtual ~xsd__boolean() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__byte_ +#define SOAP_TYPE_interswitch_xsd__byte_ (27) +/* Primitive xsd:byte schema type: */ +class SOAP_CMAC xsd__byte_ : public xsd__anyType +{ +public: + char __item; +public: + virtual int soap_type() const { return 27; } /* = unique id SOAP_TYPE_interswitch_xsd__byte_ */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__byte_() { xsd__byte_::soap_default(NULL); } + virtual ~xsd__byte_() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__dateTime +#define SOAP_TYPE_interswitch_xsd__dateTime (28) +/* Primitive xsd:dateTime schema type: */ +class SOAP_CMAC xsd__dateTime : public xsd__anyType +{ +public: + time_t __item; +public: + virtual int soap_type() const { return 28; } /* = unique id SOAP_TYPE_interswitch_xsd__dateTime */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__dateTime() { xsd__dateTime::soap_default(NULL); } + virtual ~xsd__dateTime() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__decimal_ +#define SOAP_TYPE_interswitch_xsd__decimal_ (31) +/* Primitive xsd:decimal schema type: */ +class SOAP_CMAC xsd__decimal_ : public xsd__anyType +{ +public: + std::string __item; +public: + virtual int soap_type() const { return 31; } /* = unique id SOAP_TYPE_interswitch_xsd__decimal_ */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__decimal_() { xsd__decimal_::soap_default(NULL); } + virtual ~xsd__decimal_() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__double +#define SOAP_TYPE_interswitch_xsd__double (32) +/* Primitive xsd:double schema type: */ +class SOAP_CMAC xsd__double : public xsd__anyType +{ +public: + double __item; +public: + virtual int soap_type() const { return 32; } /* = unique id SOAP_TYPE_interswitch_xsd__double */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__double() { xsd__double::soap_default(NULL); } + virtual ~xsd__double() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__duration_ +#define SOAP_TYPE_interswitch_xsd__duration_ (35) +/* Primitive xsd:duration schema type: */ +class SOAP_CMAC xsd__duration_ : public xsd__anyType +{ +public: + std::string __item; +public: + virtual int soap_type() const { return 35; } /* = unique id SOAP_TYPE_interswitch_xsd__duration_ */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__duration_() { xsd__duration_::soap_default(NULL); } + virtual ~xsd__duration_() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__float +#define SOAP_TYPE_interswitch_xsd__float (36) +/* Primitive xsd:float schema type: */ +class SOAP_CMAC xsd__float : public xsd__anyType +{ +public: + float __item; +public: + virtual int soap_type() const { return 36; } /* = unique id SOAP_TYPE_interswitch_xsd__float */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__float() { xsd__float::soap_default(NULL); } + virtual ~xsd__float() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__int +#define SOAP_TYPE_interswitch_xsd__int (38) +/* Primitive xsd:int schema type: */ +class SOAP_CMAC xsd__int : public xsd__anyType +{ +public: + int __item; +public: + virtual int soap_type() const { return 38; } /* = unique id SOAP_TYPE_interswitch_xsd__int */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__int() { xsd__int::soap_default(NULL); } + virtual ~xsd__int() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__long +#define SOAP_TYPE_interswitch_xsd__long (39) +/* Primitive xsd:long schema type: */ +class SOAP_CMAC xsd__long : public xsd__anyType +{ +public: + LONG64 __item; +public: + virtual int soap_type() const { return 39; } /* = unique id SOAP_TYPE_interswitch_xsd__long */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__long() { xsd__long::soap_default(NULL); } + virtual ~xsd__long() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__short +#define SOAP_TYPE_interswitch_xsd__short (41) +/* Primitive xsd:short schema type: */ +class SOAP_CMAC xsd__short : public xsd__anyType +{ +public: + short __item; +public: + virtual int soap_type() const { return 41; } /* = unique id SOAP_TYPE_interswitch_xsd__short */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__short() { xsd__short::soap_default(NULL); } + virtual ~xsd__short() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__string +#define SOAP_TYPE_interswitch_xsd__string (43) +/* Primitive xsd:string schema type: */ +class SOAP_CMAC xsd__string : public xsd__anyType +{ +public: + std::string __item; +public: + virtual int soap_type() const { return 43; } /* = unique id SOAP_TYPE_interswitch_xsd__string */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__string() { xsd__string::soap_default(NULL); } + virtual ~xsd__string() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__unsignedByte_ +#define SOAP_TYPE_interswitch_xsd__unsignedByte_ (45) +/* Primitive xsd:unsignedByte schema type: */ +class SOAP_CMAC xsd__unsignedByte_ : public xsd__anyType +{ +public: + unsigned char __item; +public: + virtual int soap_type() const { return 45; } /* = unique id SOAP_TYPE_interswitch_xsd__unsignedByte_ */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__unsignedByte_() { xsd__unsignedByte_::soap_default(NULL); } + virtual ~xsd__unsignedByte_() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__unsignedInt +#define SOAP_TYPE_interswitch_xsd__unsignedInt (46) +/* Primitive xsd:unsignedInt schema type: */ +class SOAP_CMAC xsd__unsignedInt : public xsd__anyType +{ +public: + unsigned int __item; +public: + virtual int soap_type() const { return 46; } /* = unique id SOAP_TYPE_interswitch_xsd__unsignedInt */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__unsignedInt() { xsd__unsignedInt::soap_default(NULL); } + virtual ~xsd__unsignedInt() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__unsignedLong +#define SOAP_TYPE_interswitch_xsd__unsignedLong (47) +/* Primitive xsd:unsignedLong schema type: */ +class SOAP_CMAC xsd__unsignedLong : public xsd__anyType +{ +public: + ULONG64 __item; +public: + virtual int soap_type() const { return 47; } /* = unique id SOAP_TYPE_interswitch_xsd__unsignedLong */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__unsignedLong() { xsd__unsignedLong::soap_default(NULL); } + virtual ~xsd__unsignedLong() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__unsignedShort +#define SOAP_TYPE_interswitch_xsd__unsignedShort (49) +/* Primitive xsd:unsignedShort schema type: */ +class SOAP_CMAC xsd__unsignedShort : public xsd__anyType +{ +public: + unsigned short __item; +public: + virtual int soap_type() const { return 49; } /* = unique id SOAP_TYPE_interswitch_xsd__unsignedShort */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + xsd__unsignedShort() { xsd__unsignedShort::soap_default(NULL); } + virtual ~xsd__unsignedShort() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_interswitch2__char__ +#define SOAP_TYPE_interswitch_interswitch2__char__ (130) +/* Primitive interswitch2:char schema type: */ +class SOAP_CMAC interswitch2__char__ : public xsd__anyType +{ +public: + int __item; +public: + virtual int soap_type() const { return 130; } /* = unique id SOAP_TYPE_interswitch_interswitch2__char__ */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + interswitch2__char__() { interswitch2__char__::soap_default(NULL); } + virtual ~interswitch2__char__() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_interswitch2__duration__ +#define SOAP_TYPE_interswitch_interswitch2__duration__ (132) +/* Primitive interswitch2:duration schema type: */ +class SOAP_CMAC interswitch2__duration__ : public xsd__anyType +{ +public: + std::string __item; +public: + virtual int soap_type() const { return 132; } /* = unique id SOAP_TYPE_interswitch_interswitch2__duration__ */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + interswitch2__duration__() { interswitch2__duration__::soap_default(NULL); } + virtual ~interswitch2__duration__() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch_interswitch2__guid__ +#define SOAP_TYPE_interswitch_interswitch2__guid__ (134) +/* Primitive interswitch2:guid schema type: */ +class SOAP_CMAC interswitch2__guid__ : public xsd__anyType +{ +public: + std::string __item; +public: + virtual int soap_type() const { return 134; } /* = unique id SOAP_TYPE_interswitch_interswitch2__guid__ */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + interswitch2__guid__() { interswitch2__guid__::soap_default(NULL); } + virtual ~interswitch2__guid__() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__ValidateCustomer +#define SOAP_TYPE_interswitch__interswitch__ValidateCustomer (51) +/* interswitch:ValidateCustomer */ +class SOAP_CMAC _interswitch__ValidateCustomer +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 51; } /* = unique id SOAP_TYPE_interswitch__interswitch__ValidateCustomer */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__ValidateCustomer(): xmlParams(NULL), soap(NULL) { _interswitch__ValidateCustomer::soap_default(NULL); } + virtual ~_interswitch__ValidateCustomer() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse +#define SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse (52) +/* interswitch:ValidateCustomerResponse */ +class SOAP_CMAC _interswitch__ValidateCustomerResponse +{ +public: + std::string *ValidateCustomerResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 52; } /* = unique id SOAP_TYPE_interswitch__interswitch__ValidateCustomerResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__ValidateCustomerResponse(): ValidateCustomerResult(NULL), soap(NULL) { _interswitch__ValidateCustomerResponse::soap_default(NULL); } + virtual ~_interswitch__ValidateCustomerResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__DoTransfer +#define SOAP_TYPE_interswitch__interswitch__DoTransfer (53) +/* interswitch:DoTransfer */ +class SOAP_CMAC _interswitch__DoTransfer +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 53; } /* = unique id SOAP_TYPE_interswitch__interswitch__DoTransfer */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__DoTransfer(): xmlParams(NULL), soap(NULL) { _interswitch__DoTransfer::soap_default(NULL); } + virtual ~_interswitch__DoTransfer() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__DoTransferResponse +#define SOAP_TYPE_interswitch__interswitch__DoTransferResponse (54) +/* interswitch:DoTransferResponse */ +class SOAP_CMAC _interswitch__DoTransferResponse +{ +public: + std::string *DoTransferResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 54; } /* = unique id SOAP_TYPE_interswitch__interswitch__DoTransferResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__DoTransferResponse(): DoTransferResult(NULL), soap(NULL) { _interswitch__DoTransferResponse::soap_default(NULL); } + virtual ~_interswitch__DoTransferResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__CancelTransfer +#define SOAP_TYPE_interswitch__interswitch__CancelTransfer (55) +/* interswitch:CancelTransfer */ +class SOAP_CMAC _interswitch__CancelTransfer +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 55; } /* = unique id SOAP_TYPE_interswitch__interswitch__CancelTransfer */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__CancelTransfer(): xmlParams(NULL), soap(NULL) { _interswitch__CancelTransfer::soap_default(NULL); } + virtual ~_interswitch__CancelTransfer() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__CancelTransferResponse +#define SOAP_TYPE_interswitch__interswitch__CancelTransferResponse (56) +/* interswitch:CancelTransferResponse */ +class SOAP_CMAC _interswitch__CancelTransferResponse +{ +public: + std::string *CancelTransferResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 56; } /* = unique id SOAP_TYPE_interswitch__interswitch__CancelTransferResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__CancelTransferResponse(): CancelTransferResult(NULL), soap(NULL) { _interswitch__CancelTransferResponse::soap_default(NULL); } + virtual ~_interswitch__CancelTransferResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__SendSessionKey +#define SOAP_TYPE_interswitch__interswitch__SendSessionKey (57) +/* interswitch:SendSessionKey */ +class SOAP_CMAC _interswitch__SendSessionKey +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 57; } /* = unique id SOAP_TYPE_interswitch__interswitch__SendSessionKey */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__SendSessionKey(): xmlParams(NULL), soap(NULL) { _interswitch__SendSessionKey::soap_default(NULL); } + virtual ~_interswitch__SendSessionKey() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse +#define SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse (58) +/* interswitch:SendSessionKeyResponse */ +class SOAP_CMAC _interswitch__SendSessionKeyResponse +{ +public: + std::string *SendSessionKeyResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 58; } /* = unique id SOAP_TYPE_interswitch__interswitch__SendSessionKeyResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__SendSessionKeyResponse(): SendSessionKeyResult(NULL), soap(NULL) { _interswitch__SendSessionKeyResponse::soap_default(NULL); } + virtual ~_interswitch__SendSessionKeyResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__QueryTransfer +#define SOAP_TYPE_interswitch__interswitch__QueryTransfer (59) +/* interswitch:QueryTransfer */ +class SOAP_CMAC _interswitch__QueryTransfer +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 59; } /* = unique id SOAP_TYPE_interswitch__interswitch__QueryTransfer */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__QueryTransfer(): xmlParams(NULL), soap(NULL) { _interswitch__QueryTransfer::soap_default(NULL); } + virtual ~_interswitch__QueryTransfer() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__QueryTransferResponse +#define SOAP_TYPE_interswitch__interswitch__QueryTransferResponse (60) +/* interswitch:QueryTransferResponse */ +class SOAP_CMAC _interswitch__QueryTransferResponse +{ +public: + std::string *QueryTransferResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 60; } /* = unique id SOAP_TYPE_interswitch__interswitch__QueryTransferResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__QueryTransferResponse(): QueryTransferResult(NULL), soap(NULL) { _interswitch__QueryTransferResponse::soap_default(NULL); } + virtual ~_interswitch__QueryTransferResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut +#define SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut (61) +/* interswitch:AuthoriseCashOut */ +class SOAP_CMAC _interswitch__AuthoriseCashOut +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 61; } /* = unique id SOAP_TYPE_interswitch__interswitch__AuthoriseCashOut */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__AuthoriseCashOut(): xmlParams(NULL), soap(NULL) { _interswitch__AuthoriseCashOut::soap_default(NULL); } + virtual ~_interswitch__AuthoriseCashOut() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse +#define SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse (62) +/* interswitch:AuthoriseCashOutResponse */ +class SOAP_CMAC _interswitch__AuthoriseCashOutResponse +{ +public: + std::string *AuthoriseCashOutResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 62; } /* = unique id SOAP_TYPE_interswitch__interswitch__AuthoriseCashOutResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__AuthoriseCashOutResponse(): AuthoriseCashOutResult(NULL), soap(NULL) { _interswitch__AuthoriseCashOutResponse::soap_default(NULL); } + virtual ~_interswitch__AuthoriseCashOutResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut +#define SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut (63) +/* interswitch:AuthoriseAccountCashOut */ +class SOAP_CMAC _interswitch__AuthoriseAccountCashOut +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 63; } /* = unique id SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOut */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__AuthoriseAccountCashOut(): xmlParams(NULL), soap(NULL) { _interswitch__AuthoriseAccountCashOut::soap_default(NULL); } + virtual ~_interswitch__AuthoriseAccountCashOut() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse +#define SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse (64) +/* interswitch:AuthoriseAccountCashOutResponse */ +class SOAP_CMAC _interswitch__AuthoriseAccountCashOutResponse +{ +public: + std::string *AuthoriseAccountCashOutResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 64; } /* = unique id SOAP_TYPE_interswitch__interswitch__AuthoriseAccountCashOutResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__AuthoriseAccountCashOutResponse(): AuthoriseAccountCashOutResult(NULL), soap(NULL) { _interswitch__AuthoriseAccountCashOutResponse::soap_default(NULL); } + virtual ~_interswitch__AuthoriseAccountCashOutResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__ReverseCashOut +#define SOAP_TYPE_interswitch__interswitch__ReverseCashOut (65) +/* interswitch:ReverseCashOut */ +class SOAP_CMAC _interswitch__ReverseCashOut +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 65; } /* = unique id SOAP_TYPE_interswitch__interswitch__ReverseCashOut */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__ReverseCashOut(): xmlParams(NULL), soap(NULL) { _interswitch__ReverseCashOut::soap_default(NULL); } + virtual ~_interswitch__ReverseCashOut() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse +#define SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse (66) +/* interswitch:ReverseCashOutResponse */ +class SOAP_CMAC _interswitch__ReverseCashOutResponse +{ +public: + std::string *ReverseCashOutResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 66; } /* = unique id SOAP_TYPE_interswitch__interswitch__ReverseCashOutResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__ReverseCashOutResponse(): ReverseCashOutResult(NULL), soap(NULL) { _interswitch__ReverseCashOutResponse::soap_default(NULL); } + virtual ~_interswitch__ReverseCashOutResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__StatusCheck +#define SOAP_TYPE_interswitch__interswitch__StatusCheck (67) +/* interswitch:StatusCheck */ +class SOAP_CMAC _interswitch__StatusCheck +{ +public: + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 67; } /* = unique id SOAP_TYPE_interswitch__interswitch__StatusCheck */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__StatusCheck(): soap(NULL) { _interswitch__StatusCheck::soap_default(NULL); } + virtual ~_interswitch__StatusCheck() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__StatusCheckResponse +#define SOAP_TYPE_interswitch__interswitch__StatusCheckResponse (68) +/* interswitch:StatusCheckResponse */ +class SOAP_CMAC _interswitch__StatusCheckResponse +{ +public: + std::string *StatusCheckResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 68; } /* = unique id SOAP_TYPE_interswitch__interswitch__StatusCheckResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__StatusCheckResponse(): StatusCheckResult(NULL), soap(NULL) { _interswitch__StatusCheckResponse::soap_default(NULL); } + virtual ~_interswitch__StatusCheckResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__QueryTransaction +#define SOAP_TYPE_interswitch__interswitch__QueryTransaction (69) +/* interswitch:QueryTransaction */ +class SOAP_CMAC _interswitch__QueryTransaction +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 69; } /* = unique id SOAP_TYPE_interswitch__interswitch__QueryTransaction */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__QueryTransaction(): xmlParams(NULL), soap(NULL) { _interswitch__QueryTransaction::soap_default(NULL); } + virtual ~_interswitch__QueryTransaction() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse +#define SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse (70) +/* interswitch:QueryTransactionResponse */ +class SOAP_CMAC _interswitch__QueryTransactionResponse +{ +public: + std::string *QueryTransactionResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 70; } /* = unique id SOAP_TYPE_interswitch__interswitch__QueryTransactionResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__QueryTransactionResponse(): QueryTransactionResult(NULL), soap(NULL) { _interswitch__QueryTransactionResponse::soap_default(NULL); } + virtual ~_interswitch__QueryTransactionResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetSystemSettings +#define SOAP_TYPE_interswitch__interswitch__GetSystemSettings (71) +/* interswitch:GetSystemSettings */ +class SOAP_CMAC _interswitch__GetSystemSettings +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 71; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetSystemSettings */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetSystemSettings(): xmlParams(NULL), soap(NULL) { _interswitch__GetSystemSettings::soap_default(NULL); } + virtual ~_interswitch__GetSystemSettings() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse +#define SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse (72) +/* interswitch:GetSystemSettingsResponse */ +class SOAP_CMAC _interswitch__GetSystemSettingsResponse +{ +public: + std::string *GetSystemSettingsResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 72; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetSystemSettingsResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetSystemSettingsResponse(): GetSystemSettingsResult(NULL), soap(NULL) { _interswitch__GetSystemSettingsResponse::soap_default(NULL); } + virtual ~_interswitch__GetSystemSettingsResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__CreateUser +#define SOAP_TYPE_interswitch__interswitch__CreateUser (73) +/* interswitch:CreateUser */ +class SOAP_CMAC _interswitch__CreateUser +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 73; } /* = unique id SOAP_TYPE_interswitch__interswitch__CreateUser */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__CreateUser(): xmlParams(NULL), soap(NULL) { _interswitch__CreateUser::soap_default(NULL); } + virtual ~_interswitch__CreateUser() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__CreateUserResponse +#define SOAP_TYPE_interswitch__interswitch__CreateUserResponse (74) +/* interswitch:CreateUserResponse */ +class SOAP_CMAC _interswitch__CreateUserResponse +{ +public: + std::string *CreateUserResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 74; } /* = unique id SOAP_TYPE_interswitch__interswitch__CreateUserResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__CreateUserResponse(): CreateUserResult(NULL), soap(NULL) { _interswitch__CreateUserResponse::soap_default(NULL); } + virtual ~_interswitch__CreateUserResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__ActivateUser +#define SOAP_TYPE_interswitch__interswitch__ActivateUser (75) +/* interswitch:ActivateUser */ +class SOAP_CMAC _interswitch__ActivateUser +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 75; } /* = unique id SOAP_TYPE_interswitch__interswitch__ActivateUser */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__ActivateUser(): xmlParams(NULL), soap(NULL) { _interswitch__ActivateUser::soap_default(NULL); } + virtual ~_interswitch__ActivateUser() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__ActivateUserResponse +#define SOAP_TYPE_interswitch__interswitch__ActivateUserResponse (76) +/* interswitch:ActivateUserResponse */ +class SOAP_CMAC _interswitch__ActivateUserResponse +{ +public: + std::string *ActivateUserResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 76; } /* = unique id SOAP_TYPE_interswitch__interswitch__ActivateUserResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__ActivateUserResponse(): ActivateUserResult(NULL), soap(NULL) { _interswitch__ActivateUserResponse::soap_default(NULL); } + virtual ~_interswitch__ActivateUserResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__UpdateUser +#define SOAP_TYPE_interswitch__interswitch__UpdateUser (77) +/* interswitch:UpdateUser */ +class SOAP_CMAC _interswitch__UpdateUser +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 77; } /* = unique id SOAP_TYPE_interswitch__interswitch__UpdateUser */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__UpdateUser(): xmlParams(NULL), soap(NULL) { _interswitch__UpdateUser::soap_default(NULL); } + virtual ~_interswitch__UpdateUser() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__UpdateUserResponse +#define SOAP_TYPE_interswitch__interswitch__UpdateUserResponse (78) +/* interswitch:UpdateUserResponse */ +class SOAP_CMAC _interswitch__UpdateUserResponse +{ +public: + std::string *UpdateUserResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 78; } /* = unique id SOAP_TYPE_interswitch__interswitch__UpdateUserResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__UpdateUserResponse(): UpdateUserResult(NULL), soap(NULL) { _interswitch__UpdateUserResponse::soap_default(NULL); } + virtual ~_interswitch__UpdateUserResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__ChangePassword +#define SOAP_TYPE_interswitch__interswitch__ChangePassword (79) +/* interswitch:ChangePassword */ +class SOAP_CMAC _interswitch__ChangePassword +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 79; } /* = unique id SOAP_TYPE_interswitch__interswitch__ChangePassword */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__ChangePassword(): xmlParams(NULL), soap(NULL) { _interswitch__ChangePassword::soap_default(NULL); } + virtual ~_interswitch__ChangePassword() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse +#define SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse (80) +/* interswitch:ChangePasswordResponse */ +class SOAP_CMAC _interswitch__ChangePasswordResponse +{ +public: + std::string *ChangePasswordResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 80; } /* = unique id SOAP_TYPE_interswitch__interswitch__ChangePasswordResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__ChangePasswordResponse(): ChangePasswordResult(NULL), soap(NULL) { _interswitch__ChangePasswordResponse::soap_default(NULL); } + virtual ~_interswitch__ChangePasswordResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__ResetPassword +#define SOAP_TYPE_interswitch__interswitch__ResetPassword (81) +/* interswitch:ResetPassword */ +class SOAP_CMAC _interswitch__ResetPassword +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 81; } /* = unique id SOAP_TYPE_interswitch__interswitch__ResetPassword */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__ResetPassword(): xmlParams(NULL), soap(NULL) { _interswitch__ResetPassword::soap_default(NULL); } + virtual ~_interswitch__ResetPassword() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse +#define SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse (82) +/* interswitch:ResetPasswordResponse */ +class SOAP_CMAC _interswitch__ResetPasswordResponse +{ +public: + std::string *ResetPasswordResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 82; } /* = unique id SOAP_TYPE_interswitch__interswitch__ResetPasswordResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__ResetPasswordResponse(): ResetPasswordResult(NULL), soap(NULL) { _interswitch__ResetPasswordResponse::soap_default(NULL); } + virtual ~_interswitch__ResetPasswordResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthenticateUser +#define SOAP_TYPE_interswitch__interswitch__AuthenticateUser (83) +/* interswitch:AuthenticateUser */ +class SOAP_CMAC _interswitch__AuthenticateUser +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 83; } /* = unique id SOAP_TYPE_interswitch__interswitch__AuthenticateUser */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__AuthenticateUser(): xmlParams(NULL), soap(NULL) { _interswitch__AuthenticateUser::soap_default(NULL); } + virtual ~_interswitch__AuthenticateUser() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse +#define SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse (84) +/* interswitch:AuthenticateUserResponse */ +class SOAP_CMAC _interswitch__AuthenticateUserResponse +{ +public: + std::string *AuthenticateUserResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 84; } /* = unique id SOAP_TYPE_interswitch__interswitch__AuthenticateUserResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__AuthenticateUserResponse(): AuthenticateUserResult(NULL), soap(NULL) { _interswitch__AuthenticateUserResponse::soap_default(NULL); } + virtual ~_interswitch__AuthenticateUserResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken +#define SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken (85) +/* interswitch:AuthenticateUserSecurityToken */ +class SOAP_CMAC _interswitch__AuthenticateUserSecurityToken +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 85; } /* = unique id SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityToken */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__AuthenticateUserSecurityToken(): xmlParams(NULL), soap(NULL) { _interswitch__AuthenticateUserSecurityToken::soap_default(NULL); } + virtual ~_interswitch__AuthenticateUserSecurityToken() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse +#define SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse (86) +/* interswitch:AuthenticateUserSecurityTokenResponse */ +class SOAP_CMAC _interswitch__AuthenticateUserSecurityTokenResponse +{ +public: + std::string *AuthenticateUserSecurityTokenResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 86; } /* = unique id SOAP_TYPE_interswitch__interswitch__AuthenticateUserSecurityTokenResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__AuthenticateUserSecurityTokenResponse(): AuthenticateUserSecurityTokenResult(NULL), soap(NULL) { _interswitch__AuthenticateUserSecurityTokenResponse::soap_default(NULL); } + virtual ~_interswitch__AuthenticateUserSecurityTokenResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetUser +#define SOAP_TYPE_interswitch__interswitch__GetUser (87) +/* interswitch:GetUser */ +class SOAP_CMAC _interswitch__GetUser +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 87; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetUser */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetUser(): xmlParams(NULL), soap(NULL) { _interswitch__GetUser::soap_default(NULL); } + virtual ~_interswitch__GetUser() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetUserResponse +#define SOAP_TYPE_interswitch__interswitch__GetUserResponse (88) +/* interswitch:GetUserResponse */ +class SOAP_CMAC _interswitch__GetUserResponse +{ +public: + std::string *GetUserResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 88; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetUserResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetUserResponse(): GetUserResult(NULL), soap(NULL) { _interswitch__GetUserResponse::soap_default(NULL); } + virtual ~_interswitch__GetUserResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetBillers +#define SOAP_TYPE_interswitch__interswitch__GetBillers (89) +/* interswitch:GetBillers */ +class SOAP_CMAC _interswitch__GetBillers +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 89; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetBillers */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetBillers(): xmlParams(NULL), soap(NULL) { _interswitch__GetBillers::soap_default(NULL); } + virtual ~_interswitch__GetBillers() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetBillersResponse +#define SOAP_TYPE_interswitch__interswitch__GetBillersResponse (90) +/* interswitch:GetBillersResponse */ +class SOAP_CMAC _interswitch__GetBillersResponse +{ +public: + std::string *GetBillersResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 90; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetBillersResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetBillersResponse(): GetBillersResult(NULL), soap(NULL) { _interswitch__GetBillersResponse::soap_default(NULL); } + virtual ~_interswitch__GetBillersResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetLatestBillers +#define SOAP_TYPE_interswitch__interswitch__GetLatestBillers (91) +/* interswitch:GetLatestBillers */ +class SOAP_CMAC _interswitch__GetLatestBillers +{ +public: + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 91; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetLatestBillers */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetLatestBillers(): soap(NULL) { _interswitch__GetLatestBillers::soap_default(NULL); } + virtual ~_interswitch__GetLatestBillers() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse +#define SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse (92) +/* interswitch:GetLatestBillersResponse */ +class SOAP_CMAC _interswitch__GetLatestBillersResponse +{ +public: + std::string *GetLatestBillersResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 92; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetLatestBillersResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetLatestBillersResponse(): GetLatestBillersResult(NULL), soap(NULL) { _interswitch__GetLatestBillersResponse::soap_default(NULL); } + virtual ~_interswitch__GetLatestBillersResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers +#define SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers (93) +/* interswitch:GetFeaturedBillers */ +class SOAP_CMAC _interswitch__GetFeaturedBillers +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 93; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetFeaturedBillers */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetFeaturedBillers(): xmlParams(NULL), soap(NULL) { _interswitch__GetFeaturedBillers::soap_default(NULL); } + virtual ~_interswitch__GetFeaturedBillers() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse +#define SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse (94) +/* interswitch:GetFeaturedBillersResponse */ +class SOAP_CMAC _interswitch__GetFeaturedBillersResponse +{ +public: + std::string *GetFeaturedBillersResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 94; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetFeaturedBillersResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetFeaturedBillersResponse(): GetFeaturedBillersResult(NULL), soap(NULL) { _interswitch__GetFeaturedBillersResponse::soap_default(NULL); } + virtual ~_interswitch__GetFeaturedBillersResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems +#define SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems (95) +/* interswitch:GetBillerPaymentItems */ +class SOAP_CMAC _interswitch__GetBillerPaymentItems +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 95; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItems */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetBillerPaymentItems(): xmlParams(NULL), soap(NULL) { _interswitch__GetBillerPaymentItems::soap_default(NULL); } + virtual ~_interswitch__GetBillerPaymentItems() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse +#define SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse (96) +/* interswitch:GetBillerPaymentItemsResponse */ +class SOAP_CMAC _interswitch__GetBillerPaymentItemsResponse +{ +public: + std::string *GetBillerPaymentItemsResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 96; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetBillerPaymentItemsResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetBillerPaymentItemsResponse(): GetBillerPaymentItemsResult(NULL), soap(NULL) { _interswitch__GetBillerPaymentItemsResponse::soap_default(NULL); } + virtual ~_interswitch__GetBillerPaymentItemsResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetBillerCategories +#define SOAP_TYPE_interswitch__interswitch__GetBillerCategories (97) +/* interswitch:GetBillerCategories */ +class SOAP_CMAC _interswitch__GetBillerCategories +{ +public: + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 97; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetBillerCategories */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetBillerCategories(): soap(NULL) { _interswitch__GetBillerCategories::soap_default(NULL); } + virtual ~_interswitch__GetBillerCategories() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse +#define SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse (98) +/* interswitch:GetBillerCategoriesResponse */ +class SOAP_CMAC _interswitch__GetBillerCategoriesResponse +{ +public: + std::string *GetBillerCategoriesResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 98; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetBillerCategoriesResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetBillerCategoriesResponse(): GetBillerCategoriesResult(NULL), soap(NULL) { _interswitch__GetBillerCategoriesResponse::soap_default(NULL); } + virtual ~_interswitch__GetBillerCategoriesResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry +#define SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry (99) +/* interswitch:DoBillPaymentInquiry */ +class SOAP_CMAC _interswitch__DoBillPaymentInquiry +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 99; } /* = unique id SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiry */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__DoBillPaymentInquiry(): xmlParams(NULL), soap(NULL) { _interswitch__DoBillPaymentInquiry::soap_default(NULL); } + virtual ~_interswitch__DoBillPaymentInquiry() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse +#define SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse (100) +/* interswitch:DoBillPaymentInquiryResponse */ +class SOAP_CMAC _interswitch__DoBillPaymentInquiryResponse +{ +public: + std::string *DoBillPaymentInquiryResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 100; } /* = unique id SOAP_TYPE_interswitch__interswitch__DoBillPaymentInquiryResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__DoBillPaymentInquiryResponse(): DoBillPaymentInquiryResult(NULL), soap(NULL) { _interswitch__DoBillPaymentInquiryResponse::soap_default(NULL); } + virtual ~_interswitch__DoBillPaymentInquiryResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer +#define SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer (101) +/* interswitch:AuthenticateCustomer */ +class SOAP_CMAC _interswitch__AuthenticateCustomer +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 101; } /* = unique id SOAP_TYPE_interswitch__interswitch__AuthenticateCustomer */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__AuthenticateCustomer(): xmlParams(NULL), soap(NULL) { _interswitch__AuthenticateCustomer::soap_default(NULL); } + virtual ~_interswitch__AuthenticateCustomer() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse +#define SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse (102) +/* interswitch:AuthenticateCustomerResponse */ +class SOAP_CMAC _interswitch__AuthenticateCustomerResponse +{ +public: + std::string *AuthenticateCustomerResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 102; } /* = unique id SOAP_TYPE_interswitch__interswitch__AuthenticateCustomerResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__AuthenticateCustomerResponse(): AuthenticateCustomerResult(NULL), soap(NULL) { _interswitch__AuthenticateCustomerResponse::soap_default(NULL); } + virtual ~_interswitch__AuthenticateCustomerResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice +#define SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice (103) +/* interswitch:SendBillPaymentAdvice */ +class SOAP_CMAC _interswitch__SendBillPaymentAdvice +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 103; } /* = unique id SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdvice */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__SendBillPaymentAdvice(): xmlParams(NULL), soap(NULL) { _interswitch__SendBillPaymentAdvice::soap_default(NULL); } + virtual ~_interswitch__SendBillPaymentAdvice() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse +#define SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse (104) +/* interswitch:SendBillPaymentAdviceResponse */ +class SOAP_CMAC _interswitch__SendBillPaymentAdviceResponse +{ +public: + std::string *SendBillPaymentAdviceResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 104; } /* = unique id SOAP_TYPE_interswitch__interswitch__SendBillPaymentAdviceResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__SendBillPaymentAdviceResponse(): SendBillPaymentAdviceResult(NULL), soap(NULL) { _interswitch__SendBillPaymentAdviceResponse::soap_default(NULL); } + virtual ~_interswitch__SendBillPaymentAdviceResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__SendPayments +#define SOAP_TYPE_interswitch__interswitch__SendPayments (105) +/* interswitch:SendPayments */ +class SOAP_CMAC _interswitch__SendPayments +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 105; } /* = unique id SOAP_TYPE_interswitch__interswitch__SendPayments */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__SendPayments(): xmlParams(NULL), soap(NULL) { _interswitch__SendPayments::soap_default(NULL); } + virtual ~_interswitch__SendPayments() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse +#define SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse (106) +/* interswitch:SendPaymentsResponse */ +class SOAP_CMAC _interswitch__SendPaymentsResponse +{ +public: + std::string *SendPaymentsResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 106; } /* = unique id SOAP_TYPE_interswitch__interswitch__SendPaymentsResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__SendPaymentsResponse(): SendPaymentsResult(NULL), soap(NULL) { _interswitch__SendPaymentsResponse::soap_default(NULL); } + virtual ~_interswitch__SendPaymentsResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount +#define SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount (107) +/* interswitch:AddCustomerBillerAccount */ +class SOAP_CMAC _interswitch__AddCustomerBillerAccount +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 107; } /* = unique id SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccount */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__AddCustomerBillerAccount(): xmlParams(NULL), soap(NULL) { _interswitch__AddCustomerBillerAccount::soap_default(NULL); } + virtual ~_interswitch__AddCustomerBillerAccount() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse +#define SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse (108) +/* interswitch:AddCustomerBillerAccountResponse */ +class SOAP_CMAC _interswitch__AddCustomerBillerAccountResponse +{ +public: + std::string *AddCustomerBillerAccountResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 108; } /* = unique id SOAP_TYPE_interswitch__interswitch__AddCustomerBillerAccountResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__AddCustomerBillerAccountResponse(): AddCustomerBillerAccountResult(NULL), soap(NULL) { _interswitch__AddCustomerBillerAccountResponse::soap_default(NULL); } + virtual ~_interswitch__AddCustomerBillerAccountResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts +#define SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts (109) +/* interswitch:GetCustomerBillerAccounts */ +class SOAP_CMAC _interswitch__GetCustomerBillerAccounts +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 109; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccounts */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetCustomerBillerAccounts(): xmlParams(NULL), soap(NULL) { _interswitch__GetCustomerBillerAccounts::soap_default(NULL); } + virtual ~_interswitch__GetCustomerBillerAccounts() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse +#define SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse (110) +/* interswitch:GetCustomerBillerAccountsResponse */ +class SOAP_CMAC _interswitch__GetCustomerBillerAccountsResponse +{ +public: + std::string *GetCustomerBillerAccountsResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 110; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetCustomerBillerAccountsResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetCustomerBillerAccountsResponse(): GetCustomerBillerAccountsResult(NULL), soap(NULL) { _interswitch__GetCustomerBillerAccountsResponse::soap_default(NULL); } + virtual ~_interswitch__GetCustomerBillerAccountsResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetCustomerPayments +#define SOAP_TYPE_interswitch__interswitch__GetCustomerPayments (111) +/* interswitch:GetCustomerPayments */ +class SOAP_CMAC _interswitch__GetCustomerPayments +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 111; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetCustomerPayments */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetCustomerPayments(): xmlParams(NULL), soap(NULL) { _interswitch__GetCustomerPayments::soap_default(NULL); } + virtual ~_interswitch__GetCustomerPayments() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse +#define SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse (112) +/* interswitch:GetCustomerPaymentsResponse */ +class SOAP_CMAC _interswitch__GetCustomerPaymentsResponse +{ +public: + std::string *GetCustomerPaymentsResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 112; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetCustomerPaymentsResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetCustomerPaymentsResponse(): GetCustomerPaymentsResult(NULL), soap(NULL) { _interswitch__GetCustomerPaymentsResponse::soap_default(NULL); } + virtual ~_interswitch__GetCustomerPaymentsResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__AddBillerCustomer +#define SOAP_TYPE_interswitch__interswitch__AddBillerCustomer (113) +/* interswitch:AddBillerCustomer */ +class SOAP_CMAC _interswitch__AddBillerCustomer +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 113; } /* = unique id SOAP_TYPE_interswitch__interswitch__AddBillerCustomer */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__AddBillerCustomer(): xmlParams(NULL), soap(NULL) { _interswitch__AddBillerCustomer::soap_default(NULL); } + virtual ~_interswitch__AddBillerCustomer() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse +#define SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse (114) +/* interswitch:AddBillerCustomerResponse */ +class SOAP_CMAC _interswitch__AddBillerCustomerResponse +{ +public: + std::string *AddBillerCustomerResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 114; } /* = unique id SOAP_TYPE_interswitch__interswitch__AddBillerCustomerResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__AddBillerCustomerResponse(): AddBillerCustomerResult(NULL), soap(NULL) { _interswitch__AddBillerCustomerResponse::soap_default(NULL); } + virtual ~_interswitch__AddBillerCustomerResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount +#define SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount (115) +/* interswitch:GetCollectionsAccount */ +class SOAP_CMAC _interswitch__GetCollectionsAccount +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 115; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetCollectionsAccount */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetCollectionsAccount(): xmlParams(NULL), soap(NULL) { _interswitch__GetCollectionsAccount::soap_default(NULL); } + virtual ~_interswitch__GetCollectionsAccount() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse +#define SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse (116) +/* interswitch:GetCollectionsAccountResponse */ +class SOAP_CMAC _interswitch__GetCollectionsAccountResponse +{ +public: + std::string *GetCollectionsAccountResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 116; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetCollectionsAccountResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetCollectionsAccountResponse(): GetCollectionsAccountResult(NULL), soap(NULL) { _interswitch__GetCollectionsAccountResponse::soap_default(NULL); } + virtual ~_interswitch__GetCollectionsAccountResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount +#define SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount (117) +/* interswitch:GetBillersCollectionsAccount */ +class SOAP_CMAC _interswitch__GetBillersCollectionsAccount +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 117; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccount */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetBillersCollectionsAccount(): xmlParams(NULL), soap(NULL) { _interswitch__GetBillersCollectionsAccount::soap_default(NULL); } + virtual ~_interswitch__GetBillersCollectionsAccount() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse +#define SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse (118) +/* interswitch:GetBillersCollectionsAccountResponse */ +class SOAP_CMAC _interswitch__GetBillersCollectionsAccountResponse +{ +public: + std::string *GetBillersCollectionsAccountResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 118; } /* = unique id SOAP_TYPE_interswitch__interswitch__GetBillersCollectionsAccountResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__GetBillersCollectionsAccountResponse(): GetBillersCollectionsAccountResult(NULL), soap(NULL) { _interswitch__GetBillersCollectionsAccountResponse::soap_default(NULL); } + virtual ~_interswitch__GetBillersCollectionsAccountResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount +#define SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount (119) +/* interswitch:EditCustomerBillerAccount */ +class SOAP_CMAC _interswitch__EditCustomerBillerAccount +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 119; } /* = unique id SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccount */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__EditCustomerBillerAccount(): xmlParams(NULL), soap(NULL) { _interswitch__EditCustomerBillerAccount::soap_default(NULL); } + virtual ~_interswitch__EditCustomerBillerAccount() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse +#define SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse (120) +/* interswitch:EditCustomerBillerAccountResponse */ +class SOAP_CMAC _interswitch__EditCustomerBillerAccountResponse +{ +public: + std::string *EditCustomerBillerAccountResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 120; } /* = unique id SOAP_TYPE_interswitch__interswitch__EditCustomerBillerAccountResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__EditCustomerBillerAccountResponse(): EditCustomerBillerAccountResult(NULL), soap(NULL) { _interswitch__EditCustomerBillerAccountResponse::soap_default(NULL); } + virtual ~_interswitch__EditCustomerBillerAccountResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__ResendActivationToken +#define SOAP_TYPE_interswitch__interswitch__ResendActivationToken (121) +/* interswitch:ResendActivationToken */ +class SOAP_CMAC _interswitch__ResendActivationToken +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 121; } /* = unique id SOAP_TYPE_interswitch__interswitch__ResendActivationToken */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__ResendActivationToken(): xmlParams(NULL), soap(NULL) { _interswitch__ResendActivationToken::soap_default(NULL); } + virtual ~_interswitch__ResendActivationToken() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse +#define SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse (122) +/* interswitch:ResendActivationTokenResponse */ +class SOAP_CMAC _interswitch__ResendActivationTokenResponse +{ +public: + std::string *ResendActivationTokenResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 122; } /* = unique id SOAP_TYPE_interswitch__interswitch__ResendActivationTokenResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__ResendActivationTokenResponse(): ResendActivationTokenResult(NULL), soap(NULL) { _interswitch__ResendActivationTokenResponse::soap_default(NULL); } + virtual ~_interswitch__ResendActivationTokenResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__DoCustomProcessing +#define SOAP_TYPE_interswitch__interswitch__DoCustomProcessing (123) +/* interswitch:DoCustomProcessing */ +class SOAP_CMAC _interswitch__DoCustomProcessing +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 123; } /* = unique id SOAP_TYPE_interswitch__interswitch__DoCustomProcessing */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__DoCustomProcessing(): xmlParams(NULL), soap(NULL) { _interswitch__DoCustomProcessing::soap_default(NULL); } + virtual ~_interswitch__DoCustomProcessing() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse +#define SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse (124) +/* interswitch:DoCustomProcessingResponse */ +class SOAP_CMAC _interswitch__DoCustomProcessingResponse +{ +public: + std::string *DoCustomProcessingResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 124; } /* = unique id SOAP_TYPE_interswitch__interswitch__DoCustomProcessingResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__DoCustomProcessingResponse(): DoCustomProcessingResult(NULL), soap(NULL) { _interswitch__DoCustomProcessingResponse::soap_default(NULL); } + virtual ~_interswitch__DoCustomProcessingResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__CreateBiller +#define SOAP_TYPE_interswitch__interswitch__CreateBiller (125) +/* interswitch:CreateBiller */ +class SOAP_CMAC _interswitch__CreateBiller +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 125; } /* = unique id SOAP_TYPE_interswitch__interswitch__CreateBiller */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__CreateBiller(): xmlParams(NULL), soap(NULL) { _interswitch__CreateBiller::soap_default(NULL); } + virtual ~_interswitch__CreateBiller() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__CreateBillerResponse +#define SOAP_TYPE_interswitch__interswitch__CreateBillerResponse (126) +/* interswitch:CreateBillerResponse */ +class SOAP_CMAC _interswitch__CreateBillerResponse +{ +public: + std::string *CreateBillerResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 126; } /* = unique id SOAP_TYPE_interswitch__interswitch__CreateBillerResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__CreateBillerResponse(): CreateBillerResult(NULL), soap(NULL) { _interswitch__CreateBillerResponse::soap_default(NULL); } + virtual ~_interswitch__CreateBillerResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__VerifyBiller +#define SOAP_TYPE_interswitch__interswitch__VerifyBiller (127) +/* interswitch:VerifyBiller */ +class SOAP_CMAC _interswitch__VerifyBiller +{ +public: + std::string *xmlParams; /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 127; } /* = unique id SOAP_TYPE_interswitch__interswitch__VerifyBiller */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__VerifyBiller(): xmlParams(NULL), soap(NULL) { _interswitch__VerifyBiller::soap_default(NULL); } + virtual ~_interswitch__VerifyBiller() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse +#define SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse (128) +/* interswitch:VerifyBillerResponse */ +class SOAP_CMAC _interswitch__VerifyBillerResponse +{ +public: + std::string *VerifyBillerResult; /* SOAP 1.2 RPC return element (when namespace qualified) */ /* optional element of type xsd:string */ + struct soap *soap; /* transient */ +public: + virtual int soap_type() const { return 128; } /* = unique id SOAP_TYPE_interswitch__interswitch__VerifyBillerResponse */ + virtual void soap_default(struct soap*); + virtual void soap_serialize(struct soap*) const; + virtual int soap_put(struct soap*, const char*, const char*) const; + virtual int soap_out(struct soap*, const char*, int, const char*) const; + virtual void *soap_get(struct soap*, const char*, const char*); + virtual void *soap_in(struct soap*, const char*, const char*); + _interswitch__VerifyBillerResponse(): VerifyBillerResult(NULL), soap(NULL) { _interswitch__VerifyBillerResponse::soap_default(NULL); } + virtual ~_interswitch__VerifyBillerResponse() { } +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__ValidateCustomer +#define SOAP_TYPE_interswitch___interswitch__ValidateCustomer (139) +/* Operation wrapper: */ +struct __interswitch__ValidateCustomer +{ +public: + _interswitch__ValidateCustomer *interswitch__ValidateCustomer; /* optional element of type interswitch:ValidateCustomer */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__DoTransfer +#define SOAP_TYPE_interswitch___interswitch__DoTransfer (143) +/* Operation wrapper: */ +struct __interswitch__DoTransfer +{ +public: + _interswitch__DoTransfer *interswitch__DoTransfer; /* optional element of type interswitch:DoTransfer */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__CancelTransfer +#define SOAP_TYPE_interswitch___interswitch__CancelTransfer (147) +/* Operation wrapper: */ +struct __interswitch__CancelTransfer +{ +public: + _interswitch__CancelTransfer *interswitch__CancelTransfer; /* optional element of type interswitch:CancelTransfer */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__SendSessionKey +#define SOAP_TYPE_interswitch___interswitch__SendSessionKey (151) +/* Operation wrapper: */ +struct __interswitch__SendSessionKey +{ +public: + _interswitch__SendSessionKey *interswitch__SendSessionKey; /* optional element of type interswitch:SendSessionKey */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__QueryTransfer +#define SOAP_TYPE_interswitch___interswitch__QueryTransfer (155) +/* Operation wrapper: */ +struct __interswitch__QueryTransfer +{ +public: + _interswitch__QueryTransfer *interswitch__QueryTransfer; /* optional element of type interswitch:QueryTransfer */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__AuthoriseCashOut +#define SOAP_TYPE_interswitch___interswitch__AuthoriseCashOut (159) +/* Operation wrapper: */ +struct __interswitch__AuthoriseCashOut +{ +public: + _interswitch__AuthoriseCashOut *interswitch__AuthoriseCashOut; /* optional element of type interswitch:AuthoriseCashOut */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__AuthoriseAccountCashOut +#define SOAP_TYPE_interswitch___interswitch__AuthoriseAccountCashOut (163) +/* Operation wrapper: */ +struct __interswitch__AuthoriseAccountCashOut +{ +public: + _interswitch__AuthoriseAccountCashOut *interswitch__AuthoriseAccountCashOut; /* optional element of type interswitch:AuthoriseAccountCashOut */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__ReverseCashOut +#define SOAP_TYPE_interswitch___interswitch__ReverseCashOut (167) +/* Operation wrapper: */ +struct __interswitch__ReverseCashOut +{ +public: + _interswitch__ReverseCashOut *interswitch__ReverseCashOut; /* optional element of type interswitch:ReverseCashOut */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__StatusCheck +#define SOAP_TYPE_interswitch___interswitch__StatusCheck (171) +/* Operation wrapper: */ +struct __interswitch__StatusCheck +{ +public: + _interswitch__StatusCheck *interswitch__StatusCheck; /* optional element of type interswitch:StatusCheck */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__QueryTransaction +#define SOAP_TYPE_interswitch___interswitch__QueryTransaction (175) +/* Operation wrapper: */ +struct __interswitch__QueryTransaction +{ +public: + _interswitch__QueryTransaction *interswitch__QueryTransaction; /* optional element of type interswitch:QueryTransaction */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__GetSystemSettings +#define SOAP_TYPE_interswitch___interswitch__GetSystemSettings (179) +/* Operation wrapper: */ +struct __interswitch__GetSystemSettings +{ +public: + _interswitch__GetSystemSettings *interswitch__GetSystemSettings; /* optional element of type interswitch:GetSystemSettings */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__CreateUser +#define SOAP_TYPE_interswitch___interswitch__CreateUser (183) +/* Operation wrapper: */ +struct __interswitch__CreateUser +{ +public: + _interswitch__CreateUser *interswitch__CreateUser; /* optional element of type interswitch:CreateUser */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__ActivateUser +#define SOAP_TYPE_interswitch___interswitch__ActivateUser (187) +/* Operation wrapper: */ +struct __interswitch__ActivateUser +{ +public: + _interswitch__ActivateUser *interswitch__ActivateUser; /* optional element of type interswitch:ActivateUser */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__UpdateUser +#define SOAP_TYPE_interswitch___interswitch__UpdateUser (191) +/* Operation wrapper: */ +struct __interswitch__UpdateUser +{ +public: + _interswitch__UpdateUser *interswitch__UpdateUser; /* optional element of type interswitch:UpdateUser */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__ChangePassword +#define SOAP_TYPE_interswitch___interswitch__ChangePassword (195) +/* Operation wrapper: */ +struct __interswitch__ChangePassword +{ +public: + _interswitch__ChangePassword *interswitch__ChangePassword; /* optional element of type interswitch:ChangePassword */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__ResetPassword +#define SOAP_TYPE_interswitch___interswitch__ResetPassword (199) +/* Operation wrapper: */ +struct __interswitch__ResetPassword +{ +public: + _interswitch__ResetPassword *interswitch__ResetPassword; /* optional element of type interswitch:ResetPassword */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__AuthenticateUser +#define SOAP_TYPE_interswitch___interswitch__AuthenticateUser (203) +/* Operation wrapper: */ +struct __interswitch__AuthenticateUser +{ +public: + _interswitch__AuthenticateUser *interswitch__AuthenticateUser; /* optional element of type interswitch:AuthenticateUser */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__AuthenticateUserSecurityToken +#define SOAP_TYPE_interswitch___interswitch__AuthenticateUserSecurityToken (207) +/* Operation wrapper: */ +struct __interswitch__AuthenticateUserSecurityToken +{ +public: + _interswitch__AuthenticateUserSecurityToken *interswitch__AuthenticateUserSecurityToken; /* optional element of type interswitch:AuthenticateUserSecurityToken */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__GetUser +#define SOAP_TYPE_interswitch___interswitch__GetUser (211) +/* Operation wrapper: */ +struct __interswitch__GetUser +{ +public: + _interswitch__GetUser *interswitch__GetUser; /* optional element of type interswitch:GetUser */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__GetBillers +#define SOAP_TYPE_interswitch___interswitch__GetBillers (215) +/* Operation wrapper: */ +struct __interswitch__GetBillers +{ +public: + _interswitch__GetBillers *interswitch__GetBillers; /* optional element of type interswitch:GetBillers */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__GetLatestBillers +#define SOAP_TYPE_interswitch___interswitch__GetLatestBillers (219) +/* Operation wrapper: */ +struct __interswitch__GetLatestBillers +{ +public: + _interswitch__GetLatestBillers *interswitch__GetLatestBillers; /* optional element of type interswitch:GetLatestBillers */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__GetFeaturedBillers +#define SOAP_TYPE_interswitch___interswitch__GetFeaturedBillers (223) +/* Operation wrapper: */ +struct __interswitch__GetFeaturedBillers +{ +public: + _interswitch__GetFeaturedBillers *interswitch__GetFeaturedBillers; /* optional element of type interswitch:GetFeaturedBillers */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__GetBillerPaymentItems +#define SOAP_TYPE_interswitch___interswitch__GetBillerPaymentItems (227) +/* Operation wrapper: */ +struct __interswitch__GetBillerPaymentItems +{ +public: + _interswitch__GetBillerPaymentItems *interswitch__GetBillerPaymentItems; /* optional element of type interswitch:GetBillerPaymentItems */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__GetBillerCategories +#define SOAP_TYPE_interswitch___interswitch__GetBillerCategories (231) +/* Operation wrapper: */ +struct __interswitch__GetBillerCategories +{ +public: + _interswitch__GetBillerCategories *interswitch__GetBillerCategories; /* optional element of type interswitch:GetBillerCategories */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__DoBillPaymentInquiry +#define SOAP_TYPE_interswitch___interswitch__DoBillPaymentInquiry (235) +/* Operation wrapper: */ +struct __interswitch__DoBillPaymentInquiry +{ +public: + _interswitch__DoBillPaymentInquiry *interswitch__DoBillPaymentInquiry; /* optional element of type interswitch:DoBillPaymentInquiry */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__AuthenticateCustomer +#define SOAP_TYPE_interswitch___interswitch__AuthenticateCustomer (239) +/* Operation wrapper: */ +struct __interswitch__AuthenticateCustomer +{ +public: + _interswitch__AuthenticateCustomer *interswitch__AuthenticateCustomer; /* optional element of type interswitch:AuthenticateCustomer */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__SendBillPaymentAdvice +#define SOAP_TYPE_interswitch___interswitch__SendBillPaymentAdvice (243) +/* Operation wrapper: */ +struct __interswitch__SendBillPaymentAdvice +{ +public: + _interswitch__SendBillPaymentAdvice *interswitch__SendBillPaymentAdvice; /* optional element of type interswitch:SendBillPaymentAdvice */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__SendPayments +#define SOAP_TYPE_interswitch___interswitch__SendPayments (247) +/* Operation wrapper: */ +struct __interswitch__SendPayments +{ +public: + _interswitch__SendPayments *interswitch__SendPayments; /* optional element of type interswitch:SendPayments */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__AddCustomerBillerAccount +#define SOAP_TYPE_interswitch___interswitch__AddCustomerBillerAccount (251) +/* Operation wrapper: */ +struct __interswitch__AddCustomerBillerAccount +{ +public: + _interswitch__AddCustomerBillerAccount *interswitch__AddCustomerBillerAccount; /* optional element of type interswitch:AddCustomerBillerAccount */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__GetCustomerBillerAccounts +#define SOAP_TYPE_interswitch___interswitch__GetCustomerBillerAccounts (255) +/* Operation wrapper: */ +struct __interswitch__GetCustomerBillerAccounts +{ +public: + _interswitch__GetCustomerBillerAccounts *interswitch__GetCustomerBillerAccounts; /* optional element of type interswitch:GetCustomerBillerAccounts */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__GetCustomerPayments +#define SOAP_TYPE_interswitch___interswitch__GetCustomerPayments (259) +/* Operation wrapper: */ +struct __interswitch__GetCustomerPayments +{ +public: + _interswitch__GetCustomerPayments *interswitch__GetCustomerPayments; /* optional element of type interswitch:GetCustomerPayments */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__AddBillerCustomer +#define SOAP_TYPE_interswitch___interswitch__AddBillerCustomer (263) +/* Operation wrapper: */ +struct __interswitch__AddBillerCustomer +{ +public: + _interswitch__AddBillerCustomer *interswitch__AddBillerCustomer; /* optional element of type interswitch:AddBillerCustomer */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__GetCollectionsAccount +#define SOAP_TYPE_interswitch___interswitch__GetCollectionsAccount (267) +/* Operation wrapper: */ +struct __interswitch__GetCollectionsAccount +{ +public: + _interswitch__GetCollectionsAccount *interswitch__GetCollectionsAccount; /* optional element of type interswitch:GetCollectionsAccount */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__GetBillersCollectionsAccount +#define SOAP_TYPE_interswitch___interswitch__GetBillersCollectionsAccount (271) +/* Operation wrapper: */ +struct __interswitch__GetBillersCollectionsAccount +{ +public: + _interswitch__GetBillersCollectionsAccount *interswitch__GetBillersCollectionsAccount; /* optional element of type interswitch:GetBillersCollectionsAccount */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__EditCustomerBillerAccount +#define SOAP_TYPE_interswitch___interswitch__EditCustomerBillerAccount (275) +/* Operation wrapper: */ +struct __interswitch__EditCustomerBillerAccount +{ +public: + _interswitch__EditCustomerBillerAccount *interswitch__EditCustomerBillerAccount; /* optional element of type interswitch:EditCustomerBillerAccount */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__ResendActivationToken +#define SOAP_TYPE_interswitch___interswitch__ResendActivationToken (279) +/* Operation wrapper: */ +struct __interswitch__ResendActivationToken +{ +public: + _interswitch__ResendActivationToken *interswitch__ResendActivationToken; /* optional element of type interswitch:ResendActivationToken */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__DoCustomProcessing +#define SOAP_TYPE_interswitch___interswitch__DoCustomProcessing (283) +/* Operation wrapper: */ +struct __interswitch__DoCustomProcessing +{ +public: + _interswitch__DoCustomProcessing *interswitch__DoCustomProcessing; /* optional element of type interswitch:DoCustomProcessing */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__CreateBiller +#define SOAP_TYPE_interswitch___interswitch__CreateBiller (287) +/* Operation wrapper: */ +struct __interswitch__CreateBiller +{ +public: + _interswitch__CreateBiller *interswitch__CreateBiller; /* optional element of type interswitch:CreateBiller */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch___interswitch__VerifyBiller +#define SOAP_TYPE_interswitch___interswitch__VerifyBiller (291) +/* Operation wrapper: */ +struct __interswitch__VerifyBiller +{ +public: + _interswitch__VerifyBiller *interswitch__VerifyBiller; /* optional element of type interswitch:VerifyBiller */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch_SOAP_ENV__Header +#define SOAP_TYPE_interswitch_SOAP_ENV__Header (292) +/* SOAP Header: */ +struct SOAP_ENV__Header +{ +#ifdef WITH_NOEMPTYSTRUCT +private: + char dummy; /* dummy member to enable compilation */ +#endif +}; +#endif + +#ifndef SOAP_TYPE_interswitch_SOAP_ENV__Code +#define SOAP_TYPE_interswitch_SOAP_ENV__Code (293) +/* SOAP Fault Code: */ +struct SOAP_ENV__Code +{ +public: + char *SOAP_ENV__Value; /* optional element of type xsd:QName */ + struct SOAP_ENV__Code *SOAP_ENV__Subcode; /* optional element of type SOAP-ENV:Code */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch_SOAP_ENV__Detail +#define SOAP_TYPE_interswitch_SOAP_ENV__Detail (295) +/* SOAP-ENV:Detail */ +struct SOAP_ENV__Detail +{ +public: + int __type; /* any type of element (defined below) */ + void *fault; /* transient */ + char *__any; +}; +#endif + +#ifndef SOAP_TYPE_interswitch_SOAP_ENV__Reason +#define SOAP_TYPE_interswitch_SOAP_ENV__Reason (298) +/* SOAP-ENV:Reason */ +struct SOAP_ENV__Reason +{ +public: + char *SOAP_ENV__Text; /* optional element of type xsd:string */ +}; +#endif + +#ifndef SOAP_TYPE_interswitch_SOAP_ENV__Fault +#define SOAP_TYPE_interswitch_SOAP_ENV__Fault (299) +/* SOAP Fault: */ +struct SOAP_ENV__Fault +{ +public: + char *faultcode; /* optional element of type xsd:QName */ + char *faultstring; /* optional element of type xsd:string */ + char *faultactor; /* optional element of type xsd:string */ + struct SOAP_ENV__Detail *detail; /* optional element of type SOAP-ENV:Detail */ + struct SOAP_ENV__Code *SOAP_ENV__Code; /* optional element of type SOAP-ENV:Code */ + struct SOAP_ENV__Reason *SOAP_ENV__Reason; /* optional element of type SOAP-ENV:Reason */ + char *SOAP_ENV__Node; /* optional element of type xsd:string */ + char *SOAP_ENV__Role; /* optional element of type xsd:string */ + struct SOAP_ENV__Detail *SOAP_ENV__Detail; /* optional element of type SOAP-ENV:Detail */ +}; +#endif + +/******************************************************************************\ + * * + * Typedefs * + * * +\******************************************************************************/ + +#ifndef SOAP_TYPE_interswitch__QName +#define SOAP_TYPE_interswitch__QName (5) +typedef char *_QName; +#endif + +#ifndef SOAP_TYPE_interswitch__XML +#define SOAP_TYPE_interswitch__XML (6) +typedef char *_XML; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__ID +#define SOAP_TYPE_interswitch_xsd__ID (11) +typedef std::string xsd__ID; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__IDREF +#define SOAP_TYPE_interswitch_xsd__IDREF (13) +typedef std::string xsd__IDREF; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__anyURI +#define SOAP_TYPE_interswitch_xsd__anyURI (17) +typedef std::string xsd__anyURI; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__byte +#define SOAP_TYPE_interswitch_xsd__byte (26) +typedef char xsd__byte; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__decimal +#define SOAP_TYPE_interswitch_xsd__decimal (30) +typedef std::string xsd__decimal; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__duration +#define SOAP_TYPE_interswitch_xsd__duration (34) +typedef std::string xsd__duration; +#endif + +#ifndef SOAP_TYPE_interswitch_xsd__unsignedByte +#define SOAP_TYPE_interswitch_xsd__unsignedByte (44) +typedef unsigned char xsd__unsignedByte; +#endif + +#ifndef SOAP_TYPE_interswitch_interswitch2__char +#define SOAP_TYPE_interswitch_interswitch2__char (129) +typedef int interswitch2__char; +#endif + +#ifndef SOAP_TYPE_interswitch_interswitch2__duration +#define SOAP_TYPE_interswitch_interswitch2__duration (131) +typedef std::string interswitch2__duration; +#endif + +#ifndef SOAP_TYPE_interswitch_interswitch2__guid +#define SOAP_TYPE_interswitch_interswitch2__guid (133) +typedef std::string interswitch2__guid; +#endif + + +/******************************************************************************\ + * * + * Externals * + * * +\******************************************************************************/ + + +} // namespace interswitch + + +#endif + +/* End of interswitchStub.h */ diff --git a/coregrade/src/shared_tool/soapTest/build.sh b/coregrade/src/shared_tool/soapTest/build.sh new file mode 100755 index 0000000..7a6402d --- /dev/null +++ b/coregrade/src/shared_tool/soapTest/build.sh @@ -0,0 +1,26 @@ +#!/bin/bash +# +touch env.h +soapcpp2 -penv env.h +#wsdl2h -ninterswitch -Ninterswitch -qinterswitch -o QuickTellerService.h https://stageserv.interswitchng.com/uat_quicktellerservice/quickteller.svc?wsdl +#soapcpp2 -n -pinterswitch -qinterswitch -1 -C -i -I/usr/share/gsoap/import/ QuickTellerService.h +LIST="XmlElements.cc XmlParser.cc sha512.cc safestring.cc vars.cc" +echo "*** Compiling SOAP Proxy ***" +for i in $LIST +do + echo "*** Building $i" + g++ -DTEST -Wno-deprecated -I../../include -I../../core -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c ../../core/$i -o `echo $i|sed 's/.cc/.o/'` +done +LIST="interswitch.cc interswitchC.cc interswitchBasicHttpBinding_USCOREQuickTellerServiceProxy.cc" +echo "*** Compiling SOAP Proxy ***" +for i in $LIST +do + echo "*** Building $i" + g++ -DTEST -Wno-deprecated -I../../include -I../../core -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c ../$i -o `echo $i|sed 's/.cc/.o/'` +done +#g++ -DWITH_NONAMESPACES -g -O2 -c stdsoap2.cpp -o stdsoap2.o +g++ -g -O2 -c envC.cpp -o envC.o +g++ -g -O2 -c namespaces.cc -o namespaces.o +echo "*** Linking ***" +g++ -lstdc++ -lgsoapssl++ -lssl -lz -L/usr/lib64 *.o -o test +# -DWITH_NONAMESPACES \ No newline at end of file diff --git a/coregrade/src/shared_tool/soapTest/namespaces.cc b/coregrade/src/shared_tool/soapTest/namespaces.cc new file mode 100644 index 0000000..74cc239 --- /dev/null +++ b/coregrade/src/shared_tool/soapTest/namespaces.cc @@ -0,0 +1,4 @@ +#include +extern "C" { +SOAP_NMAC struct Namespace namespaces[] = { { NULL, NULL} }; +} diff --git a/coregrade/src/shared_tool/storeface.cc b/coregrade/src/shared_tool/storeface.cc new file mode 100644 index 0000000..f2d478a --- /dev/null +++ b/coregrade/src/shared_tool/storeface.cc @@ -0,0 +1,124 @@ +#include +#include + +#include "cfg.h" +#include "clog.h" +#include "coregrade_api.h" +#include "input.h" +#include "paylid.h" +#include "storeface.h" + +//*****************************************************************************/ +long paylid_getAccountBalance(CVars in, CVars &out) +{ + logfmt( logINFO, "long paylid_getAccountBalance(CVars in, CVars &out)"); + long ret = PHP_API_BAD_PARAM; + try { + const int statusSize = 1024; + char status[statusSize]; + + memset(status,32,statusSize-1);status[statusSize] = '\0'; // Prepare/Clean-up status + long result = 0L; + + result = storeface_getAccountBalance( + CfgReadChar("paylid.soap_endpoint"), + CfgReadChar("paylid.terminal_id"), + CfgReadChar("paylid.master_key"), + status); + + logfmt(FLOG_MAX, "CHECK INTERRA FUND result= %lu ",result); + + if (result==10000L) { + long balance = atol(status); + logfmt (FLOG_MAX, "********** AVAL BALANCE=>%ld", balance); + ret = PHP_API_OK; + } else { + // we failed to get amount status + out["status"] = status; + } + } catch (bad_parameter) { + out["status"] = "Bad parameter"; + ret = PHP_API_BAD_PARAM; + } catch (...) { + out["status"] = "Unhandled exception in paylid_getAccountBalance"; + ret = PHP_API_BAD_PARAM; + } + logfmt( logINFO, "/long paylid_getAccountBalance(CVars in, CVars &out)"); + return ret; +} + +//*****************************************************************************/ +long paylid_transferFund(CVars in, CVars &out) +{ + logfmt( logINFO, "long paylid_transferFund(CVars in, CVars &out)"); + long ret = PHP_API_BAD_PARAM; + try { +// long storeface_transferFund(const char *endpoint, const char *tid, const char *toDestination, const char *key, char *status); + } catch (bad_parameter) { + out["status"] = "Bad parameter"; + ret = PHP_API_BAD_PARAM; + } catch (...) { + out["status"] = "Unhandled exception in paylid_transferFund"; + ret = PHP_API_BAD_PARAM; + } + logfmt( logINFO, "/long paylid_transferFund(CVars in, CVars &out)"); + return ret; +} + +//*****************************************************************************/ +long paylid_checkTransferStatus(CVars in, CVars &out) +{ + logfmt( logINFO, "long paylid_checkTransferStatus(CVars in, CVars &out)"); + long ret = PHP_API_BAD_PARAM; + try { +// long storeface_checkTransferStatus(const char *endpoint, const char *tid, const char *transactionRef, const char *key, char *status); + } catch (bad_parameter) { + out["status"] = "Bad parameter"; + ret = PHP_API_BAD_PARAM; + } catch (...) { + out["status"] = "Unhandled exception in paylid_checkTransferStatus"; + ret = PHP_API_BAD_PARAM; + } + logfmt( logINFO, "/long paylid_checkTransferStatus(CVars in, CVars &out)"); + return ret; +} + +//*****************************************************************************/ +long paylid_directAirTimeTopUp(CVars in, CVars &out) +{ + logfmt( logINFO, "long paylid_directAirTimeTopUp(CVars in, CVars &out)"); + long ret = PHP_API_BAD_PARAM; + try { + const int statusSize = 1024; + char status[statusSize]; + + memset(status,32,statusSize-1);status[statusSize] = '\0'; // Prepare/Clean-up status + long result = 0L; + + // long storeface_directAirTimeTopUp(const char *endpoint, const char *tid, const char *topupData, const char *key, char *status, long &delivery_status); +/* + result = storeface_directAirTimeTopUp( + CfgReadChar("paylid.soap_endpoint"), + CfgReadChar("paylid.terminal_id"), + CfgReadChar("paylid.master_key"), +...data here... + status, +...address of delivery status...); +*/ + logfmt(FLOG_MAX, "CHECK INTERRA FUND result= %lu ",result); + + } catch (bad_parameter) { + out["status"] = "Bad parameter"; + ret = PHP_API_BAD_PARAM; + } catch (...) { + out["status"] = "Unhandled exception in paylid_directAirTimeTopUp"; + ret = PHP_API_BAD_PARAM; + } + logfmt( logINFO, "/long paylid_directAirTimeTopUp(CVars in, CVars &out)"); + return ret; +} + +//*****************************************************************************/ +/* +vi:ts=2 +*/ diff --git a/coregrade/src/shared_tool/topups.cc b/coregrade/src/shared_tool/topups.cc new file mode 100644 index 0000000..1561e2b --- /dev/null +++ b/coregrade/src/shared_tool/topups.cc @@ -0,0 +1,278 @@ +// Topup management toosl +#include "clog.h" +#include "cgi.h" +#include "input.h" +#include "coregrade_api.h" +#include "topups.h" +#include "email.h" +#include "safestring.h" +#include +#include "pgsql.h" +#include "pgsql_wrapper.h" + +#include + +#include "interswitch_sendmoney.h" +#include "account.h" +#include "storeface.h" + + + + +long CreateBulkTopupBatch(CVars in, CVars &out) +{ +long ret = 0; + REQ_STRING( in, "batch_name", 1, 50, "(.*)"); + REQ_LONG( in, "customer_id", 1, -1 ); + CVars cust; + cust["customer_id"] = in["customer_id"]; cust["customer_id"].set_valid(true); + cust["batch_name"] = in["batch_name"]; cust["batch_name"].set_valid(true); + + out["bulk_id"] = insert_db_record( DBS_VALID, "bulktopup_batch", "bulktopup_batch_id_seq", cust ); + if (out["bulk_id"].Long() > 0 ) + { + ret = out["bulk_id"].Long(); + } + + return ret; +} +long AddBulkTopupBatchItem(CVars in, CVars &out) +{ +long ret = 0; + +/* +CREATE TABLE bulktopup_batch_items +( + id serial NOT NULL, + bulk_id INT REFERENCES bulktopup_batch(id), + customer_id INT REFERENCES customer(id), + topup_name VARCHAR(50), + topup_number VARCHAR(15) NOT NULL, + topup_amount INT DEFAULT 0, + topup_network VARCHAR(10), + order_id VARCHAR(25), + deliver_status VARCHAR(15), + status integer DEFAULT 1, +added TIMESTAMP DEFAULT NOW() +); +*/ + + REQ_STRING( in, "topup_name", 1, 50, "(.*)"); + REQ_STRING( in, "topup_number", 1, 15, "(.*)"); + REQ_STRING( in, "topup_network", 1, 15, "(.*)"); + REQ_LONG( in, "topup_amount", 1, -1 ); + REQ_LONG( in, "customer_id", 1, -1 ); + REQ_LONG( in, "bulk_id", 1, -1 ); + + CVars cust; + cust["topup_name"] = in["topup_name"]; cust["topup_name"].set_valid(true); + cust["topup_number"] = in["topup_number"]; cust["topup_number"].set_valid(true); + cust["topup_network"] = in["topup_network"]; cust["topup_network"].set_valid(true); + cust["topup_amount"] = in["topup_amount"]; cust["topup_amount"].set_valid(true); + cust["customer_id"] = in["customer_id"]; cust["customer_id"].set_valid(true); + cust["bulk_id"] = in["bulk_id"]; cust["bulk_id"].set_valid(true); + + out["bulk_item_id"] = insert_db_record( DBS_VALID, "bulktopup_batch_items", "bulktopup_batch_items_id_seq", cust ); + if (out["bulk_item_id"].Long() > 0 ) + { + ret = out["bulk_item_id"].Long(); + } + return ret; +} +long UpdateBulkTopupItem(CVars in, CVars &out) +{ +long ret =0; + REQ_LONG( in, "bulk_id", 1, -1 ); + REQ_LONG( in, "customer_id", 1, -1 ); + if ( load_db_record( out, "SELECT id FROM bulktopup_batch WHERE id= %lu AND status <> 5 AND completed IS NULL",in["bulk_id"].Long() ) ) + { + pgsql_exec( "UPDATE bulktopup_batch SET status = 2 WHERE completed IS NULL AND status <> 5 AND id=%lu AND customer_id = %lu",in["bulk_id"].Long(),in["customer_id"].Long()); + ret = in["bulk_id"].Long(); + } + + return ret; +} + +long DeliverBulkTopupItem(CVars in, CVars &out) +{ +CVars xx; +CVars yy; +long ret = 0; + REQ_LONG( in, "bulk_id", 1, -1 ); + REQ_LONG( in, "item_id", 1, -1 ); + REQ_STRING( in, "payment_code", 1, 50, "(.*)"); + + if ( load_db_record( out, "SELECT gid AS paymentitemid FROM interswitch_biller_payment_items WHERE paymentcode = '%lu'",in["payment_code"].Long() ) ) + { + in["paymentitemid"] = out["paymentitemid"]; + xx["paymentitemid"] = out["paymentitemid"]; + in["paymentitemid"].set_valid( true ); + xx["paymentitemid"].set_valid( true ); + } + else + { + return 0; + } + + if ( load_db_record( out, "SELECT * FROM bulktopup_batch WHERE id= %lu AND status <> 5 AND completed IS NULL",in["bulk_id"].Long() ) ) + { + if ( load_db_record( yy, "SELECT * FROM bulktopup_batch_items WHERE id= %lu AND status <> 5 AND completed IS NULL",in["item_id"].Long() ) ) + { + xx["customer_id"]= out["customer_id"]; xx["customer_id"].set_valid( true ); + xx["amount"]= yy["topup_amount"]; xx["amount"].set_valid( true ); + xx["recipient_no"]= yy["topup_number"]; xx["topup_number"].set_valid( true ); + xx["bulk_topup_item_id"] = yy["id"]; xx["bulk_topup_item_id"].set_valid( true ); + // pgsql_exec( "UPDATE bulktopup_batch SET status = 2 WHERE completed IS NULL AND status <> 5 AND id=%lu AND customer_id = %lu",in["bulk_id"].Long(),in["customer_id"].Long()); + xx["trans_not_id"] =CreateTopupOrder(xx,out); + + if ( xx["trans_not_id"].Long() > 0 ) + { + + pgsql_exec( "UPDATE bulktopup_batch_items SET order_id = '%s', payment_code = '%s' WHERE id = %lu",out["orderid"].c_str(),in["payment_code"].c_str(),in["item_id"].Long() ); + xx["customermobile"]=xx["recipient_no"]; xx["customermobile"].set_valid( true ); + xx["customerid"]= xx["customer_id"]; xx["customerid"].set_valid( true ); // bad but true + xx["orderid"] =out["orderid"]; xx["orderid"].set_valid( true ); + xx["order_id"] =out["orderid"]; xx["order_id"].set_valid( true ); + xx["trans_not_id"].set_valid( true ); + xx["payment_code"] = in["payment_code"]; xx["payment_code"].set_valid( true ); + + if ( DeliverTopOrderByBalance(xx,out) == 100 ) + { + pgsql_exec( "UPDATE bulktopup_batch_items SET completed=now(),status=5 WHERE id = %lu",in["item_id"].Long() ); + } + } + + ret = in["bulk_id"].Long(); + } + + } +return ret; +} + +long DeliverTopOrderByBalance(CVars in, CVars &out) +{ +long retval=0; +long process_status=0; +// in["amount"] - arrives as niara - send cents/kobo to interswitch + + out["route_id"] = "0"; + out["route_etisalat"] = "0"; + if( load_db_record( out,"SELECT id AS route_id FROM airtime_route WHERE payment_code ='%s'",in["payment_code"].c_str() ) ) + { + out["route_etisalat"] = "1"; + }else{ } + + + + if ( in["pmode"].Long() == PAY_MODE_BALANCE ) // paying with balance + { + if ( load_db_record( out, "SELECT * FROM customer WHERE id = %lu",in["customer_id"].Long() ) ) + { + long amount_in_cents = in["amount"].Long()*100; + + if ( out["balance"].Long() < amount_in_cents ) + { + out["status"] = "Insufficient Balance for Purchase"; + out["status_code"] = "F0004"; + } + else + { + in["amount"] = amount_in_cents; + in["amount"].set_valid( true ); + //-------------------------------------------------- + pgsql_exec( "UPDATE customer SET balance = balance - %lu WHERE id=%lu ",amount_in_cents,in["customer_id"].Long()); + //-------------------------------------------------- + //retval = INTW_sendBillPaymentAdvice( in, out ); + if ( out["route_etisalat"].Long() > 0 && out["route_id"].Long() > 0 ) + { + retval = DeliverMobilseEtisalat( in, out ); + out["ResponseCode"] = retval; + } + else + { + retval = INTW_sendBillPaymentAdvice( in, out ); + } + + if (out["ResponseCode"].Long() == 90000L) { + process_status = 100; // completed + out["status"] = "Completed"; + out["status_code"] = "A0001"; + pgsql_exec( "UPDATE trans_notification SET completed = now() WHERE id=%lu AND customer_id = %lu ",in["trans_not_id"].Long(),in["customer_id"].Long()); + out["email_alert"] = "I am sending Email of Success"; + //CustomerAirSale( in); + VirtualAirSaleAlert(out); + } + else + { + //-------------------------------------------------- + pgsql_exec( "UPDATE customer SET balance = balance + %lu WHERE id=%lu ",amount_in_cents,in["customer_id"].Long()); + //-------------------------------------------------- + VirtualAirSaleAlert(out); + out["email_alert"] = "I am sending Email of Failure"; + + out["status"] = "Unable to deliver topup"; + out["status_code"] = "F0005"; + + } + } + } + else + { // customer not found + out["status"] = "Account not found"; + out["status_code"] = "F0003"; + } + } + + + return process_status; +} + + +long CreateTopupOrder(CVars in, CVars &out) +{ +CVars cust; +CVars xx; +char xtid[12]; +int r; +long ret =0; + + REQ_LONG( in, "amount", 1, -1 ); + REQ_STRING( in, "recipient_no", 1, 15, "(.*)"); + REQ_LONG( in, "customer_id", 1, -1 ); + + + + srand(time(NULL)); + r = abs( rand()*10000000); + + cust["orderid"] = r; + in["orderid"] = r; + + in["orderid"].set_valid(true); + + cust["amount"] = in["amount"]; cust["amount"].set_valid(true); + cust["description"] = in["description"]; cust["description"].set_valid(true); + cust["customer_id"] = in["customer_id"]; cust["customer_id"].set_valid(true); + cust["recipient_no"] = in["recipient_no"]; cust["recipient_no"].set_valid(true); + + cust["orderid"].set_valid(true); + out=in; + + out["order_id"] = insert_db_record( DBS_VALID, "trans_notification", "trans_notification_id_seq", cust ); + + + if (out["order_id"].Long() > 0 ) + { + + sprintf( xtid, "9%011lu", out["order_id"].Long() ); + xx["orderid"] = xtid; + pgsql_exec( "UPDATE trans_notification SET orderid ='%s' WHERE id=%lu AND customer_id = %lu ",xtid,out["order_id"].Long(),in["customer_id"].Long()); + out["orderid"] = xtid; + ret = out["order_id"].Long(); + } + else + { + out["orderid"]=""; + } + return ret; +} diff --git a/www/.editorconfig b/www/.editorconfig new file mode 100644 index 0000000..39f48d9 --- /dev/null +++ b/www/.editorconfig @@ -0,0 +1,15 @@ +# top-most EditorConfig file +root = true + +# Unix-style newlines with a newline ending every file +[*] +end_of_line = lf +insert_final_newline = true + +# Matches multiple files with brace expansion notation +# Set default charset +[*] +charset = utf-8 + +# Tab indentation (no size specified) +indent_style = tab diff --git a/www/.gitignore b/www/.gitignore new file mode 100644 index 0000000..269044e --- /dev/null +++ b/www/.gitignore @@ -0,0 +1,31 @@ +.DS_Store + +application/cache/* +!application/cache/index.html + +application/logs/* +!application/logs/index.html + +!application/*/.htaccess + +composer.lock + +user_guide_src/build/* +user_guide_src/cilexer/build/* +user_guide_src/cilexer/dist/* +user_guide_src/cilexer/pycilexer.egg-info/* +/vendor/ + +# IDE Files +#------------------------- +/nbproject/ +.idea/* + +## Sublime Text cache files +*.tmlanguage.cache +*.tmPreferences.cache +*.stTheme.cache +*.sublime-workspace +*.sublime-project +/tests/tests/ +/tests/results/ diff --git a/www/application/.htaccess b/www/application/.htaccess new file mode 100644 index 0000000..6c63ed4 --- /dev/null +++ b/www/application/.htaccess @@ -0,0 +1,6 @@ + + Require all denied + + + Deny from all + \ No newline at end of file diff --git a/www/application/cache/index.html b/www/application/cache/index.html new file mode 100644 index 0000000..b702fbc --- /dev/null +++ b/www/application/cache/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/www/application/config/autoload.php b/www/application/config/autoload.php new file mode 100644 index 0000000..7cdc901 --- /dev/null +++ b/www/application/config/autoload.php @@ -0,0 +1,135 @@ + 'ua'); +*/ +$autoload['libraries'] = array(); + +/* +| ------------------------------------------------------------------- +| Auto-load Drivers +| ------------------------------------------------------------------- +| These classes are located in system/libraries/ or in your +| application/libraries/ directory, but are also placed inside their +| own subdirectory and they extend the CI_Driver_Library class. They +| offer multiple interchangeable driver options. +| +| Prototype: +| +| $autoload['drivers'] = array('cache'); +| +| You can also supply an alternative property name to be assigned in +| the controller: +| +| $autoload['drivers'] = array('cache' => 'cch'); +| +*/ +$autoload['drivers'] = array(); + +/* +| ------------------------------------------------------------------- +| Auto-load Helper Files +| ------------------------------------------------------------------- +| Prototype: +| +| $autoload['helper'] = array('url', 'file'); +*/ +$autoload['helper'] = array(); + +/* +| ------------------------------------------------------------------- +| Auto-load Config files +| ------------------------------------------------------------------- +| Prototype: +| +| $autoload['config'] = array('config1', 'config2'); +| +| NOTE: This item is intended for use ONLY if you have created custom +| config files. Otherwise, leave it blank. +| +*/ +$autoload['config'] = array(); + +/* +| ------------------------------------------------------------------- +| Auto-load Language files +| ------------------------------------------------------------------- +| Prototype: +| +| $autoload['language'] = array('lang1', 'lang2'); +| +| NOTE: Do not include the "_lang" part of your file. For example +| "codeigniter_lang.php" would be referenced as array('codeigniter'); +| +*/ +$autoload['language'] = array(); + +/* +| ------------------------------------------------------------------- +| Auto-load Models +| ------------------------------------------------------------------- +| Prototype: +| +| $autoload['model'] = array('first_model', 'second_model'); +| +| You can also supply an alternative model name to be assigned +| in the controller: +| +| $autoload['model'] = array('first_model' => 'first'); +*/ +$autoload['model'] = array(); diff --git a/www/application/config/config.php b/www/application/config/config.php new file mode 100644 index 0000000..1031522 --- /dev/null +++ b/www/application/config/config.php @@ -0,0 +1,523 @@ +]+$/i +| +| DO NOT CHANGE THIS UNLESS YOU FULLY UNDERSTAND THE REPERCUSSIONS!! +| +*/ +$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-'; + +/* +|-------------------------------------------------------------------------- +| Enable Query Strings +|-------------------------------------------------------------------------- +| +| By default CodeIgniter uses search-engine friendly segment based URLs: +| example.com/who/what/where/ +| +| You can optionally enable standard query string based URLs: +| example.com?who=me&what=something&where=here +| +| Options are: TRUE or FALSE (boolean) +| +| The other items let you set the query string 'words' that will +| invoke your controllers and its functions: +| example.com/index.php?c=controller&m=function +| +| Please note that some of the helpers won't work as expected when +| this feature is enabled, since CodeIgniter is designed primarily to +| use segment based URLs. +| +*/ +$config['enable_query_strings'] = FALSE; +$config['controller_trigger'] = 'c'; +$config['function_trigger'] = 'm'; +$config['directory_trigger'] = 'd'; + +/* +|-------------------------------------------------------------------------- +| Allow $_GET array +|-------------------------------------------------------------------------- +| +| By default CodeIgniter enables access to the $_GET array. If for some +| reason you would like to disable it, set 'allow_get_array' to FALSE. +| +| WARNING: This feature is DEPRECATED and currently available only +| for backwards compatibility purposes! +| +*/ +$config['allow_get_array'] = TRUE; + +/* +|-------------------------------------------------------------------------- +| Error Logging Threshold +|-------------------------------------------------------------------------- +| +| You can enable error logging by setting a threshold over zero. The +| threshold determines what gets logged. Threshold options are: +| +| 0 = Disables logging, Error logging TURNED OFF +| 1 = Error Messages (including PHP errors) +| 2 = Debug Messages +| 3 = Informational Messages +| 4 = All Messages +| +| You can also pass an array with threshold levels to show individual error types +| +| array(2) = Debug Messages, without Error Messages +| +| For a live site you'll usually only enable Errors (1) to be logged otherwise +| your log files will fill up very fast. +| +*/ +$config['log_threshold'] = 0; + +/* +|-------------------------------------------------------------------------- +| Error Logging Directory Path +|-------------------------------------------------------------------------- +| +| Leave this BLANK unless you would like to set something other than the default +| application/logs/ directory. Use a full server path with trailing slash. +| +*/ +$config['log_path'] = ''; + +/* +|-------------------------------------------------------------------------- +| Log File Extension +|-------------------------------------------------------------------------- +| +| The default filename extension for log files. The default 'php' allows for +| protecting the log files via basic scripting, when they are to be stored +| under a publicly accessible directory. +| +| Note: Leaving it blank will default to 'php'. +| +*/ +$config['log_file_extension'] = ''; + +/* +|-------------------------------------------------------------------------- +| Log File Permissions +|-------------------------------------------------------------------------- +| +| The file system permissions to be applied on newly created log files. +| +| IMPORTANT: This MUST be an integer (no quotes) and you MUST use octal +| integer notation (i.e. 0700, 0644, etc.) +*/ +$config['log_file_permissions'] = 0644; + +/* +|-------------------------------------------------------------------------- +| Date Format for Logs +|-------------------------------------------------------------------------- +| +| Each item that is logged has an associated date. You can use PHP date +| codes to set your own date formatting +| +*/ +$config['log_date_format'] = 'Y-m-d H:i:s'; + +/* +|-------------------------------------------------------------------------- +| Error Views Directory Path +|-------------------------------------------------------------------------- +| +| Leave this BLANK unless you would like to set something other than the default +| application/views/errors/ directory. Use a full server path with trailing slash. +| +*/ +$config['error_views_path'] = ''; + +/* +|-------------------------------------------------------------------------- +| Cache Directory Path +|-------------------------------------------------------------------------- +| +| Leave this BLANK unless you would like to set something other than the default +| application/cache/ directory. Use a full server path with trailing slash. +| +*/ +$config['cache_path'] = ''; + +/* +|-------------------------------------------------------------------------- +| Cache Include Query String +|-------------------------------------------------------------------------- +| +| Whether to take the URL query string into consideration when generating +| output cache files. Valid options are: +| +| FALSE = Disabled +| TRUE = Enabled, take all query parameters into account. +| Please be aware that this may result in numerous cache +| files generated for the same page over and over again. +| array('q') = Enabled, but only take into account the specified list +| of query parameters. +| +*/ +$config['cache_query_string'] = FALSE; + +/* +|-------------------------------------------------------------------------- +| Encryption Key +|-------------------------------------------------------------------------- +| +| If you use the Encryption class, you must set an encryption key. +| See the user guide for more info. +| +| https://codeigniter.com/user_guide/libraries/encryption.html +| +*/ +$config['encryption_key'] = ''; + +/* +|-------------------------------------------------------------------------- +| Session Variables +|-------------------------------------------------------------------------- +| +| 'sess_driver' +| +| The storage driver to use: files, database, redis, memcached +| +| 'sess_cookie_name' +| +| The session cookie name, must contain only [0-9a-z_-] characters +| +| 'sess_expiration' +| +| The number of SECONDS you want the session to last. +| Setting to 0 (zero) means expire when the browser is closed. +| +| 'sess_save_path' +| +| The location to save sessions to, driver dependent. +| +| For the 'files' driver, it's a path to a writable directory. +| WARNING: Only absolute paths are supported! +| +| For the 'database' driver, it's a table name. +| Please read up the manual for the format with other session drivers. +| +| IMPORTANT: You are REQUIRED to set a valid save path! +| +| 'sess_match_ip' +| +| Whether to match the user's IP address when reading the session data. +| +| WARNING: If you're using the database driver, don't forget to update +| your session table's PRIMARY KEY when changing this setting. +| +| 'sess_time_to_update' +| +| How many seconds between CI regenerating the session ID. +| +| 'sess_regenerate_destroy' +| +| Whether to destroy session data associated with the old session ID +| when auto-regenerating the session ID. When set to FALSE, the data +| will be later deleted by the garbage collector. +| +| Other session cookie settings are shared with the rest of the application, +| except for 'cookie_prefix' and 'cookie_httponly', which are ignored here. +| +*/ +$config['sess_driver'] = 'files'; +$config['sess_cookie_name'] = 'ci_session'; +$config['sess_expiration'] = 7200; +$config['sess_save_path'] = NULL; +$config['sess_match_ip'] = FALSE; +$config['sess_time_to_update'] = 300; +$config['sess_regenerate_destroy'] = FALSE; + +/* +|-------------------------------------------------------------------------- +| Cookie Related Variables +|-------------------------------------------------------------------------- +| +| 'cookie_prefix' = Set a cookie name prefix if you need to avoid collisions +| 'cookie_domain' = Set to .your-domain.com for site-wide cookies +| 'cookie_path' = Typically will be a forward slash +| 'cookie_secure' = Cookie will only be set if a secure HTTPS connection exists. +| 'cookie_httponly' = Cookie will only be accessible via HTTP(S) (no javascript) +| +| Note: These settings (with the exception of 'cookie_prefix' and +| 'cookie_httponly') will also affect sessions. +| +*/ +$config['cookie_prefix'] = ''; +$config['cookie_domain'] = ''; +$config['cookie_path'] = '/'; +$config['cookie_secure'] = FALSE; +$config['cookie_httponly'] = FALSE; + +/* +|-------------------------------------------------------------------------- +| Standardize newlines +|-------------------------------------------------------------------------- +| +| Determines whether to standardize newline characters in input data, +| meaning to replace \r\n, \r, \n occurrences with the PHP_EOL value. +| +| WARNING: This feature is DEPRECATED and currently available only +| for backwards compatibility purposes! +| +*/ +$config['standardize_newlines'] = FALSE; + +/* +|-------------------------------------------------------------------------- +| Global XSS Filtering +|-------------------------------------------------------------------------- +| +| Determines whether the XSS filter is always active when GET, POST or +| COOKIE data is encountered +| +| WARNING: This feature is DEPRECATED and currently available only +| for backwards compatibility purposes! +| +*/ +$config['global_xss_filtering'] = FALSE; + +/* +|-------------------------------------------------------------------------- +| Cross Site Request Forgery +|-------------------------------------------------------------------------- +| Enables a CSRF cookie token to be set. When set to TRUE, token will be +| checked on a submitted form. If you are accepting user data, it is strongly +| recommended CSRF protection be enabled. +| +| 'csrf_token_name' = The token name +| 'csrf_cookie_name' = The cookie name +| 'csrf_expire' = The number in seconds the token should expire. +| 'csrf_regenerate' = Regenerate token on every submission +| 'csrf_exclude_uris' = Array of URIs which ignore CSRF checks +*/ +$config['csrf_protection'] = FALSE; +$config['csrf_token_name'] = 'csrf_test_name'; +$config['csrf_cookie_name'] = 'csrf_cookie_name'; +$config['csrf_expire'] = 7200; +$config['csrf_regenerate'] = TRUE; +$config['csrf_exclude_uris'] = array(); + +/* +|-------------------------------------------------------------------------- +| Output Compression +|-------------------------------------------------------------------------- +| +| Enables Gzip output compression for faster page loads. When enabled, +| the output class will test whether your server supports Gzip. +| Even if it does, however, not all browsers support compression +| so enable only if you are reasonably sure your visitors can handle it. +| +| Only used if zlib.output_compression is turned off in your php.ini. +| Please do not use it together with httpd-level output compression. +| +| VERY IMPORTANT: If you are getting a blank page when compression is enabled it +| means you are prematurely outputting something to your browser. It could +| even be a line of whitespace at the end of one of your scripts. For +| compression to work, nothing can be sent before the output buffer is called +| by the output class. Do not 'echo' any values with compression enabled. +| +*/ +$config['compress_output'] = FALSE; + +/* +|-------------------------------------------------------------------------- +| Master Time Reference +|-------------------------------------------------------------------------- +| +| Options are 'local' or any PHP supported timezone. This preference tells +| the system whether to use your server's local time as the master 'now' +| reference, or convert it to the configured one timezone. See the 'date +| helper' page of the user guide for information regarding date handling. +| +*/ +$config['time_reference'] = 'local'; + +/* +|-------------------------------------------------------------------------- +| Rewrite PHP Short Tags +|-------------------------------------------------------------------------- +| +| If your PHP installation does not have short tag support enabled CI +| can rewrite the tags on-the-fly, enabling you to utilize that syntax +| in your view files. Options are TRUE or FALSE (boolean) +| +| Note: You need to have eval() enabled for this to work. +| +*/ +$config['rewrite_short_tags'] = FALSE; + +/* +|-------------------------------------------------------------------------- +| Reverse Proxy IPs +|-------------------------------------------------------------------------- +| +| If your server is behind a reverse proxy, you must whitelist the proxy +| IP addresses from which CodeIgniter should trust headers such as +| HTTP_X_FORWARDED_FOR and HTTP_CLIENT_IP in order to properly identify +| the visitor's IP address. +| +| You can use both an array or a comma-separated list of proxy addresses, +| as well as specifying whole subnets. Here are a few examples: +| +| Comma-separated: '10.0.1.200,192.168.5.0/24' +| Array: array('10.0.1.200', '192.168.5.0/24') +*/ +$config['proxy_ips'] = ''; diff --git a/www/application/config/constants.php b/www/application/config/constants.php new file mode 100644 index 0000000..18d3b4b --- /dev/null +++ b/www/application/config/constants.php @@ -0,0 +1,85 @@ +db->last_query() and profiling of DB queries. +| When you run a query, with this setting set to TRUE (default), +| CodeIgniter will store the SQL statement for debugging purposes. +| However, this may cause high memory usage, especially if you run +| a lot of SQL queries ... disable this to avoid that problem. +| +| The $active_group variable lets you choose which connection group to +| make active. By default there is only one group (the 'default' group). +| +| The $query_builder variables lets you determine whether or not to load +| the query builder class. +*/ +$active_group = 'default'; +$query_builder = TRUE; + +$db['default'] = array( + 'dsn' => '', + 'hostname' => 'localhost', + 'username' => '', + 'password' => '', + 'database' => '', + 'dbdriver' => 'mysqli', + 'dbprefix' => '', + 'pconnect' => FALSE, + 'db_debug' => (ENVIRONMENT !== 'production'), + 'cache_on' => FALSE, + 'cachedir' => '', + 'char_set' => 'utf8', + 'dbcollat' => 'utf8_general_ci', + 'swap_pre' => '', + 'encrypt' => FALSE, + 'compress' => FALSE, + 'stricton' => FALSE, + 'failover' => array(), + 'save_queries' => TRUE +); diff --git a/www/application/config/doctypes.php b/www/application/config/doctypes.php new file mode 100644 index 0000000..59a7991 --- /dev/null +++ b/www/application/config/doctypes.php @@ -0,0 +1,24 @@ + '', + 'xhtml1-strict' => '', + 'xhtml1-trans' => '', + 'xhtml1-frame' => '', + 'xhtml-basic11' => '', + 'html5' => '', + 'html4-strict' => '', + 'html4-trans' => '', + 'html4-frame' => '', + 'mathml1' => '', + 'mathml2' => '', + 'svg10' => '', + 'svg11' => '', + 'svg11-basic' => '', + 'svg11-tiny' => '', + 'xhtml-math-svg-xh' => '', + 'xhtml-math-svg-sh' => '', + 'xhtml-rdfa-1' => '', + 'xhtml-rdfa-2' => '' +); diff --git a/www/application/config/foreign_chars.php b/www/application/config/foreign_chars.php new file mode 100644 index 0000000..995f483 --- /dev/null +++ b/www/application/config/foreign_chars.php @@ -0,0 +1,103 @@ + 'ae', + '/ö|Å“/' => 'oe', + '/ü/' => 'ue', + '/Ä/' => 'Ae', + '/Ü/' => 'Ue', + '/Ö/' => 'Oe', + '/À|Ã|Â|Ã|Ä|Ã…|Ǻ|Ä€|Ä‚|Ä„|Ç|Α|Ά|Ả|Ạ|Ầ|Ẫ|Ẩ|Ậ|Ằ|Ắ|Ẵ|Ẳ|Ặ|Ð/' => 'A', + '/à|á|â|ã|Ã¥|Ç»|Ä|ă|Ä…|ÇŽ|ª|α|ά|ả|ạ|ầ|ấ|ẫ|ẩ|ậ|ằ|ắ|ẵ|ẳ|ặ|а/' => 'a', + '/Б/' => 'B', + '/б/' => 'b', + '/Ç|Ć|Ĉ|ÄŠ|ÄŒ/' => 'C', + '/ç|ć|ĉ|Ä‹|Ä/' => 'c', + '/Д/' => 'D', + '/д/' => 'd', + '/Ã|ÄŽ|Ä|Δ/' => 'Dj', + '/ð|Ä|Ä‘|δ/' => 'dj', + '/È|É|Ê|Ë|Ä’|Ä”|Ä–|Ę|Äš|Ε|Έ|Ẽ|Ẻ|Ẹ|Ề|Ế|Ễ|Ể|Ệ|Е|Э/' => 'E', + '/è|é|ê|ë|Ä“|Ä•|Ä—|Ä™|Ä›|έ|ε|ẽ|ẻ|ẹ|á»|ế|á»…|ể|ệ|е|Ñ/' => 'e', + '/Ф/' => 'F', + '/Ñ„/' => 'f', + '/Äœ|Äž|Ä |Ä¢|Γ|Г|Ò/' => 'G', + '/Ä|ÄŸ|Ä¡|Ä£|γ|г|Ò‘/' => 'g', + '/Ĥ|Ħ/' => 'H', + '/Ä¥|ħ/' => 'h', + '/ÃŒ|Ã|ÃŽ|Ã|Ĩ|Ī|Ĭ|Ç|Ä®|İ|Η|Ή|Ί|Ι|Ϊ|Ỉ|Ị|И|Ы/' => 'I', + '/ì|í|î|ï|Ä©|Ä«|Ä­|Ç|į|ı|η|ή|ί|ι|ÏŠ|ỉ|ị|и|Ñ‹|Ñ—/' => 'i', + '/Ä´/' => 'J', + '/ĵ/' => 'j', + '/Ķ|Κ|К/' => 'K', + '/Ä·|κ|к/' => 'k', + '/Ĺ|Ä»|Ľ|Ä¿|Å|Λ|Л/' => 'L', + '/ĺ|ļ|ľ|Å€|Å‚|λ|л/' => 'l', + '/М/' => 'M', + '/м/' => 'm', + '/Ñ|Ń|Å…|Ň|Î|Ð/' => 'N', + '/ñ|Å„|ņ|ň|ʼn|ν|н/' => 'n', + '/Ã’|Ó|Ô|Õ|ÅŒ|ÅŽ|Ç‘|Å|Æ |Ø|Ǿ|Ο|ÎŒ|Ω|Î|Ỏ|Ọ|á»’|á»|á»–|á»”|Ộ|Ờ|Ớ|á» |Ở|Ợ|О/' => 'O', + '/ò|ó|ô|õ|Å|Å|Ç’|Å‘|Æ¡|ø|Ç¿|º|ο|ÏŒ|ω|ÏŽ|á»|á»|ồ|ố|á»—|ổ|á»™|á»|á»›|ỡ|ở|ợ|о/' => 'o', + '/П/' => 'P', + '/п/' => 'p', + '/Å”|Å–|Ř|Ρ|Р/' => 'R', + '/Å•|Å—|Å™|Ï|Ñ€/' => 'r', + '/Åš|Åœ|Åž|Ș|Å |Σ|С/' => 'S', + '/Å›|Å|ÅŸ|È™|Å¡|Å¿|σ|Ï‚|Ñ/' => 's', + '/Èš|Å¢|Ť|Ŧ|Ï„|Т/' => 'T', + '/È›|Å£|Å¥|ŧ|Ñ‚/' => 't', + '/Þ|þ/' => 'th', + '/Ù|Ú|Û|Ũ|Ū|Ŭ|Å®|Ű|Ų|Ư|Ç“|Ç•|Ç—|Ç™|Ç›|Ũ|Ủ|Ụ|Ừ|Ứ|á»®|Ử|á»°|У/' => 'U', + '/ù|ú|û|Å©|Å«|Å­|ů|ű|ų|ư|Ç”|Ç–|ǘ|Çš|Çœ|Ï…|Ï|Ï‹|á»§|ụ|ừ|ứ|ữ|á»­|á»±|у/' => 'u', + '/Ƴ|ÉŽ|á»´|Ẏ|Ó²|Ó®|ÐŽ|Ã|Ÿ|Ŷ|Î¥|ÎŽ|Ϋ|Ỳ|Ỹ|á»¶|á»´|Й/' => 'Y', + '/ẙ|Ê|Æ´|É|ỵ|áº|Ó³|Ó¯|Ñž|ý|ÿ|Å·|ỳ|ỹ|á»·|ỵ|й/' => 'y', + '/Ð’/' => 'V', + '/в/' => 'v', + '/Å´/' => 'W', + '/ŵ/' => 'w', + '/Ź|Å»|Ž|Ζ|З/' => 'Z', + '/ź|ż|ž|ζ|з/' => 'z', + '/Æ|Ǽ/' => 'AE', + '/ß/' => 'ss', + '/IJ/' => 'IJ', + '/ij/' => 'ij', + '/Å’/' => 'OE', + '/Æ’/' => 'f', + '/ξ/' => 'ks', + '/Ï€/' => 'p', + '/β/' => 'v', + '/μ/' => 'm', + '/ψ/' => 'ps', + '/Ð/' => 'Yo', + '/Ñ‘/' => 'yo', + '/Є/' => 'Ye', + '/Ñ”/' => 'ye', + '/Ї/' => 'Yi', + '/Ж/' => 'Zh', + '/ж/' => 'zh', + '/Ð¥/' => 'Kh', + '/Ñ…/' => 'kh', + '/Ц/' => 'Ts', + '/ц/' => 'ts', + '/Ч/' => 'Ch', + '/ч/' => 'ch', + '/Ш/' => 'Sh', + '/ш/' => 'sh', + '/Щ/' => 'Shch', + '/щ/' => 'shch', + '/Ъ|ÑŠ|Ь|ÑŒ/' => '', + '/Ю/' => 'Yu', + '/ÑŽ/' => 'yu', + '/Я/' => 'Ya', + '/Ñ/' => 'ya' +); diff --git a/www/application/config/hooks.php b/www/application/config/hooks.php new file mode 100644 index 0000000..a8f38a5 --- /dev/null +++ b/www/application/config/hooks.php @@ -0,0 +1,13 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/www/application/config/memcached.php b/www/application/config/memcached.php new file mode 100644 index 0000000..5c23b39 --- /dev/null +++ b/www/application/config/memcached.php @@ -0,0 +1,19 @@ + array( + 'hostname' => '127.0.0.1', + 'port' => '11211', + 'weight' => '1', + ), +); diff --git a/www/application/config/migration.php b/www/application/config/migration.php new file mode 100644 index 0000000..4b585a6 --- /dev/null +++ b/www/application/config/migration.php @@ -0,0 +1,84 @@ +migration->current() this is the version that schema will +| be upgraded / downgraded to. +| +*/ +$config['migration_version'] = 0; + +/* +|-------------------------------------------------------------------------- +| Migrations Path +|-------------------------------------------------------------------------- +| +| Path to your migrations folder. +| Typically, it will be within your application path. +| Also, writing permission is required within the migrations path. +| +*/ +$config['migration_path'] = APPPATH.'migrations/'; diff --git a/www/application/config/mimes.php b/www/application/config/mimes.php new file mode 100644 index 0000000..0176533 --- /dev/null +++ b/www/application/config/mimes.php @@ -0,0 +1,183 @@ + array('application/mac-binhex40', 'application/mac-binhex', 'application/x-binhex40', 'application/x-mac-binhex40'), + 'cpt' => 'application/mac-compactpro', + 'csv' => array('text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'application/x-csv', 'text/x-csv', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel', 'text/plain'), + 'bin' => array('application/macbinary', 'application/mac-binary', 'application/octet-stream', 'application/x-binary', 'application/x-macbinary'), + 'dms' => 'application/octet-stream', + 'lha' => 'application/octet-stream', + 'lzh' => 'application/octet-stream', + 'exe' => array('application/octet-stream', 'application/x-msdownload'), + 'class' => 'application/octet-stream', + 'psd' => array('application/x-photoshop', 'image/vnd.adobe.photoshop'), + 'so' => 'application/octet-stream', + 'sea' => 'application/octet-stream', + 'dll' => 'application/octet-stream', + 'oda' => 'application/oda', + 'pdf' => array('application/pdf', 'application/force-download', 'application/x-download', 'binary/octet-stream'), + 'ai' => array('application/pdf', 'application/postscript'), + 'eps' => 'application/postscript', + 'ps' => 'application/postscript', + 'smi' => 'application/smil', + 'smil' => 'application/smil', + 'mif' => 'application/vnd.mif', + 'xls' => array('application/vnd.ms-excel', 'application/msexcel', 'application/x-msexcel', 'application/x-ms-excel', 'application/x-excel', 'application/x-dos_ms_excel', 'application/xls', 'application/x-xls', 'application/excel', 'application/download', 'application/vnd.ms-office', 'application/msword'), + 'ppt' => array('application/powerpoint', 'application/vnd.ms-powerpoint', 'application/vnd.ms-office', 'application/msword'), + 'pptx' => array('application/vnd.openxmlformats-officedocument.presentationml.presentation', 'application/x-zip', 'application/zip'), + 'wbxml' => 'application/wbxml', + 'wmlc' => 'application/wmlc', + 'dcr' => 'application/x-director', + 'dir' => 'application/x-director', + 'dxr' => 'application/x-director', + 'dvi' => 'application/x-dvi', + 'gtar' => 'application/x-gtar', + 'gz' => 'application/x-gzip', + 'gzip' => 'application/x-gzip', + 'php' => array('application/x-httpd-php', 'application/php', 'application/x-php', 'text/php', 'text/x-php', 'application/x-httpd-php-source'), + 'php4' => 'application/x-httpd-php', + 'php3' => 'application/x-httpd-php', + 'phtml' => 'application/x-httpd-php', + 'phps' => 'application/x-httpd-php-source', + 'js' => array('application/x-javascript', 'text/plain'), + 'swf' => 'application/x-shockwave-flash', + 'sit' => 'application/x-stuffit', + 'tar' => 'application/x-tar', + 'tgz' => array('application/x-tar', 'application/x-gzip-compressed'), + 'z' => 'application/x-compress', + 'xhtml' => 'application/xhtml+xml', + 'xht' => 'application/xhtml+xml', + 'zip' => array('application/x-zip', 'application/zip', 'application/x-zip-compressed', 'application/s-compressed', 'multipart/x-zip'), + 'rar' => array('application/x-rar', 'application/rar', 'application/x-rar-compressed'), + 'mid' => 'audio/midi', + 'midi' => 'audio/midi', + 'mpga' => 'audio/mpeg', + 'mp2' => 'audio/mpeg', + 'mp3' => array('audio/mpeg', 'audio/mpg', 'audio/mpeg3', 'audio/mp3'), + 'aif' => array('audio/x-aiff', 'audio/aiff'), + 'aiff' => array('audio/x-aiff', 'audio/aiff'), + 'aifc' => 'audio/x-aiff', + 'ram' => 'audio/x-pn-realaudio', + 'rm' => 'audio/x-pn-realaudio', + 'rpm' => 'audio/x-pn-realaudio-plugin', + 'ra' => 'audio/x-realaudio', + 'rv' => 'video/vnd.rn-realvideo', + 'wav' => array('audio/x-wav', 'audio/wave', 'audio/wav'), + 'bmp' => array('image/bmp', 'image/x-bmp', 'image/x-bitmap', 'image/x-xbitmap', 'image/x-win-bitmap', 'image/x-windows-bmp', 'image/ms-bmp', 'image/x-ms-bmp', 'application/bmp', 'application/x-bmp', 'application/x-win-bitmap'), + 'gif' => 'image/gif', + 'jpeg' => array('image/jpeg', 'image/pjpeg'), + 'jpg' => array('image/jpeg', 'image/pjpeg'), + 'jpe' => array('image/jpeg', 'image/pjpeg'), + 'jp2' => array('image/jp2', 'video/mj2', 'image/jpx', 'image/jpm'), + 'j2k' => array('image/jp2', 'video/mj2', 'image/jpx', 'image/jpm'), + 'jpf' => array('image/jp2', 'video/mj2', 'image/jpx', 'image/jpm'), + 'jpg2' => array('image/jp2', 'video/mj2', 'image/jpx', 'image/jpm'), + 'jpx' => array('image/jp2', 'video/mj2', 'image/jpx', 'image/jpm'), + 'jpm' => array('image/jp2', 'video/mj2', 'image/jpx', 'image/jpm'), + 'mj2' => array('image/jp2', 'video/mj2', 'image/jpx', 'image/jpm'), + 'mjp2' => array('image/jp2', 'video/mj2', 'image/jpx', 'image/jpm'), + 'png' => array('image/png', 'image/x-png'), + 'tiff' => 'image/tiff', + 'tif' => 'image/tiff', + 'css' => array('text/css', 'text/plain'), + 'html' => array('text/html', 'text/plain'), + 'htm' => array('text/html', 'text/plain'), + 'shtml' => array('text/html', 'text/plain'), + 'txt' => 'text/plain', + 'text' => 'text/plain', + 'log' => array('text/plain', 'text/x-log'), + 'rtx' => 'text/richtext', + 'rtf' => 'text/rtf', + 'xml' => array('application/xml', 'text/xml', 'text/plain'), + 'xsl' => array('application/xml', 'text/xsl', 'text/xml'), + 'mpeg' => 'video/mpeg', + 'mpg' => 'video/mpeg', + 'mpe' => 'video/mpeg', + 'qt' => 'video/quicktime', + 'mov' => 'video/quicktime', + 'avi' => array('video/x-msvideo', 'video/msvideo', 'video/avi', 'application/x-troff-msvideo'), + 'movie' => 'video/x-sgi-movie', + 'doc' => array('application/msword', 'application/vnd.ms-office'), + 'docx' => array('application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/zip', 'application/msword', 'application/x-zip'), + 'dot' => array('application/msword', 'application/vnd.ms-office'), + 'dotx' => array('application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/zip', 'application/msword'), + 'xlsx' => array('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/zip', 'application/vnd.ms-excel', 'application/msword', 'application/x-zip'), + 'word' => array('application/msword', 'application/octet-stream'), + 'xl' => 'application/excel', + 'eml' => 'message/rfc822', + 'json' => array('application/json', 'text/json'), + 'pem' => array('application/x-x509-user-cert', 'application/x-pem-file', 'application/octet-stream'), + 'p10' => array('application/x-pkcs10', 'application/pkcs10'), + 'p12' => 'application/x-pkcs12', + 'p7a' => 'application/x-pkcs7-signature', + 'p7c' => array('application/pkcs7-mime', 'application/x-pkcs7-mime'), + 'p7m' => array('application/pkcs7-mime', 'application/x-pkcs7-mime'), + 'p7r' => 'application/x-pkcs7-certreqresp', + 'p7s' => 'application/pkcs7-signature', + 'crt' => array('application/x-x509-ca-cert', 'application/x-x509-user-cert', 'application/pkix-cert'), + 'crl' => array('application/pkix-crl', 'application/pkcs-crl'), + 'der' => 'application/x-x509-ca-cert', + 'kdb' => 'application/octet-stream', + 'pgp' => 'application/pgp', + 'gpg' => 'application/gpg-keys', + 'sst' => 'application/octet-stream', + 'csr' => 'application/octet-stream', + 'rsa' => 'application/x-pkcs7', + 'cer' => array('application/pkix-cert', 'application/x-x509-ca-cert'), + '3g2' => 'video/3gpp2', + '3gp' => array('video/3gp', 'video/3gpp'), + 'mp4' => 'video/mp4', + 'm4a' => 'audio/x-m4a', + 'f4v' => array('video/mp4', 'video/x-f4v'), + 'flv' => 'video/x-flv', + 'webm' => 'video/webm', + 'aac' => 'audio/x-acc', + 'm4u' => 'application/vnd.mpegurl', + 'm3u' => 'text/plain', + 'xspf' => 'application/xspf+xml', + 'vlc' => 'application/videolan', + 'wmv' => array('video/x-ms-wmv', 'video/x-ms-asf'), + 'au' => 'audio/x-au', + 'ac3' => 'audio/ac3', + 'flac' => 'audio/x-flac', + 'ogg' => array('audio/ogg', 'video/ogg', 'application/ogg'), + 'kmz' => array('application/vnd.google-earth.kmz', 'application/zip', 'application/x-zip'), + 'kml' => array('application/vnd.google-earth.kml+xml', 'application/xml', 'text/xml'), + 'ics' => 'text/calendar', + 'ical' => 'text/calendar', + 'zsh' => 'text/x-scriptzsh', + '7zip' => array('application/x-compressed', 'application/x-zip-compressed', 'application/zip', 'multipart/x-zip'), + 'cdr' => array('application/cdr', 'application/coreldraw', 'application/x-cdr', 'application/x-coreldraw', 'image/cdr', 'image/x-cdr', 'zz-application/zz-winassoc-cdr'), + 'wma' => array('audio/x-ms-wma', 'video/x-ms-asf'), + 'jar' => array('application/java-archive', 'application/x-java-application', 'application/x-jar', 'application/x-compressed'), + 'svg' => array('image/svg+xml', 'application/xml', 'text/xml'), + 'vcf' => 'text/x-vcard', + 'srt' => array('text/srt', 'text/plain'), + 'vtt' => array('text/vtt', 'text/plain'), + 'ico' => array('image/x-icon', 'image/x-ico', 'image/vnd.microsoft.icon'), + 'odc' => 'application/vnd.oasis.opendocument.chart', + 'otc' => 'application/vnd.oasis.opendocument.chart-template', + 'odf' => 'application/vnd.oasis.opendocument.formula', + 'otf' => 'application/vnd.oasis.opendocument.formula-template', + 'odg' => 'application/vnd.oasis.opendocument.graphics', + 'otg' => 'application/vnd.oasis.opendocument.graphics-template', + 'odi' => 'application/vnd.oasis.opendocument.image', + 'oti' => 'application/vnd.oasis.opendocument.image-template', + 'odp' => 'application/vnd.oasis.opendocument.presentation', + 'otp' => 'application/vnd.oasis.opendocument.presentation-template', + 'ods' => 'application/vnd.oasis.opendocument.spreadsheet', + 'ots' => 'application/vnd.oasis.opendocument.spreadsheet-template', + 'odt' => 'application/vnd.oasis.opendocument.text', + 'odm' => 'application/vnd.oasis.opendocument.text-master', + 'ott' => 'application/vnd.oasis.opendocument.text-template', + 'oth' => 'application/vnd.oasis.opendocument.text-web' +); diff --git a/www/application/config/profiler.php b/www/application/config/profiler.php new file mode 100644 index 0000000..3db22e3 --- /dev/null +++ b/www/application/config/profiler.php @@ -0,0 +1,14 @@ + my_controller/index +| my-controller/my-method -> my_controller/my_method +*/ +$route['default_controller'] = 'welcome'; +$route['404_override'] = ''; +$route['translate_uri_dashes'] = FALSE; diff --git a/www/application/config/smileys.php b/www/application/config/smileys.php new file mode 100644 index 0000000..abf9a89 --- /dev/null +++ b/www/application/config/smileys.php @@ -0,0 +1,64 @@ + array('grin.gif', '19', '19', 'grin'), + ':lol:' => array('lol.gif', '19', '19', 'LOL'), + ':cheese:' => array('cheese.gif', '19', '19', 'cheese'), + ':)' => array('smile.gif', '19', '19', 'smile'), + ';-)' => array('wink.gif', '19', '19', 'wink'), + ';)' => array('wink.gif', '19', '19', 'wink'), + ':smirk:' => array('smirk.gif', '19', '19', 'smirk'), + ':roll:' => array('rolleyes.gif', '19', '19', 'rolleyes'), + ':-S' => array('confused.gif', '19', '19', 'confused'), + ':wow:' => array('surprise.gif', '19', '19', 'surprised'), + ':bug:' => array('bigsurprise.gif', '19', '19', 'big surprise'), + ':-P' => array('tongue_laugh.gif', '19', '19', 'tongue laugh'), + '%-P' => array('tongue_rolleye.gif', '19', '19', 'tongue rolleye'), + ';-P' => array('tongue_wink.gif', '19', '19', 'tongue wink'), + ':P' => array('raspberry.gif', '19', '19', 'raspberry'), + ':blank:' => array('blank.gif', '19', '19', 'blank stare'), + ':long:' => array('longface.gif', '19', '19', 'long face'), + ':ohh:' => array('ohh.gif', '19', '19', 'ohh'), + ':grrr:' => array('grrr.gif', '19', '19', 'grrr'), + ':gulp:' => array('gulp.gif', '19', '19', 'gulp'), + '8-/' => array('ohoh.gif', '19', '19', 'oh oh'), + ':down:' => array('downer.gif', '19', '19', 'downer'), + ':red:' => array('embarrassed.gif', '19', '19', 'red face'), + ':sick:' => array('sick.gif', '19', '19', 'sick'), + ':shut:' => array('shuteye.gif', '19', '19', 'shut eye'), + ':-/' => array('hmm.gif', '19', '19', 'hmmm'), + '>:(' => array('mad.gif', '19', '19', 'mad'), + ':mad:' => array('mad.gif', '19', '19', 'mad'), + '>:-(' => array('angry.gif', '19', '19', 'angry'), + ':angry:' => array('angry.gif', '19', '19', 'angry'), + ':zip:' => array('zip.gif', '19', '19', 'zipper'), + ':kiss:' => array('kiss.gif', '19', '19', 'kiss'), + ':ahhh:' => array('shock.gif', '19', '19', 'shock'), + ':coolsmile:' => array('shade_smile.gif', '19', '19', 'cool smile'), + ':coolsmirk:' => array('shade_smirk.gif', '19', '19', 'cool smirk'), + ':coolgrin:' => array('shade_grin.gif', '19', '19', 'cool grin'), + ':coolhmm:' => array('shade_hmm.gif', '19', '19', 'cool hmm'), + ':coolmad:' => array('shade_mad.gif', '19', '19', 'cool mad'), + ':coolcheese:' => array('shade_cheese.gif', '19', '19', 'cool cheese'), + ':vampire:' => array('vampire.gif', '19', '19', 'vampire'), + ':snake:' => array('snake.gif', '19', '19', 'snake'), + ':exclaim:' => array('exclaim.gif', '19', '19', 'exclaim'), + ':question:' => array('question.gif', '19', '19', 'question') + +); diff --git a/www/application/config/user_agents.php b/www/application/config/user_agents.php new file mode 100644 index 0000000..798086b --- /dev/null +++ b/www/application/config/user_agents.php @@ -0,0 +1,214 @@ + 'Windows 10', + 'windows nt 6.3' => 'Windows 8.1', + 'windows nt 6.2' => 'Windows 8', + 'windows nt 6.1' => 'Windows 7', + 'windows nt 6.0' => 'Windows Vista', + 'windows nt 5.2' => 'Windows 2003', + 'windows nt 5.1' => 'Windows XP', + 'windows nt 5.0' => 'Windows 2000', + 'windows nt 4.0' => 'Windows NT 4.0', + 'winnt4.0' => 'Windows NT 4.0', + 'winnt 4.0' => 'Windows NT', + 'winnt' => 'Windows NT', + 'windows 98' => 'Windows 98', + 'win98' => 'Windows 98', + 'windows 95' => 'Windows 95', + 'win95' => 'Windows 95', + 'windows phone' => 'Windows Phone', + 'windows' => 'Unknown Windows OS', + 'android' => 'Android', + 'blackberry' => 'BlackBerry', + 'iphone' => 'iOS', + 'ipad' => 'iOS', + 'ipod' => 'iOS', + 'os x' => 'Mac OS X', + 'ppc mac' => 'Power PC Mac', + 'freebsd' => 'FreeBSD', + 'ppc' => 'Macintosh', + 'linux' => 'Linux', + 'debian' => 'Debian', + 'sunos' => 'Sun Solaris', + 'beos' => 'BeOS', + 'apachebench' => 'ApacheBench', + 'aix' => 'AIX', + 'irix' => 'Irix', + 'osf' => 'DEC OSF', + 'hp-ux' => 'HP-UX', + 'netbsd' => 'NetBSD', + 'bsdi' => 'BSDi', + 'openbsd' => 'OpenBSD', + 'gnu' => 'GNU/Linux', + 'unix' => 'Unknown Unix OS', + 'symbian' => 'Symbian OS' +); + + +// The order of this array should NOT be changed. Many browsers return +// multiple browser types so we want to identify the sub-type first. +$browsers = array( + 'OPR' => 'Opera', + 'Flock' => 'Flock', + 'Edge' => 'Spartan', + 'Chrome' => 'Chrome', + // Opera 10+ always reports Opera/9.80 and appends Version/ to the user agent string + 'Opera.*?Version' => 'Opera', + 'Opera' => 'Opera', + 'MSIE' => 'Internet Explorer', + 'Internet Explorer' => 'Internet Explorer', + 'Trident.* rv' => 'Internet Explorer', + 'Shiira' => 'Shiira', + 'Firefox' => 'Firefox', + 'Chimera' => 'Chimera', + 'Phoenix' => 'Phoenix', + 'Firebird' => 'Firebird', + 'Camino' => 'Camino', + 'Netscape' => 'Netscape', + 'OmniWeb' => 'OmniWeb', + 'Safari' => 'Safari', + 'Mozilla' => 'Mozilla', + 'Konqueror' => 'Konqueror', + 'icab' => 'iCab', + 'Lynx' => 'Lynx', + 'Links' => 'Links', + 'hotjava' => 'HotJava', + 'amaya' => 'Amaya', + 'IBrowse' => 'IBrowse', + 'Maxthon' => 'Maxthon', + 'Ubuntu' => 'Ubuntu Web Browser' +); + +$mobiles = array( + // legacy array, old values commented out + 'mobileexplorer' => 'Mobile Explorer', +// 'openwave' => 'Open Wave', +// 'opera mini' => 'Opera Mini', +// 'operamini' => 'Opera Mini', +// 'elaine' => 'Palm', + 'palmsource' => 'Palm', +// 'digital paths' => 'Palm', +// 'avantgo' => 'Avantgo', +// 'xiino' => 'Xiino', + 'palmscape' => 'Palmscape', +// 'nokia' => 'Nokia', +// 'ericsson' => 'Ericsson', +// 'blackberry' => 'BlackBerry', +// 'motorola' => 'Motorola' + + // Phones and Manufacturers + 'motorola' => 'Motorola', + 'nokia' => 'Nokia', + 'palm' => 'Palm', + 'iphone' => 'Apple iPhone', + 'ipad' => 'iPad', + 'ipod' => 'Apple iPod Touch', + 'sony' => 'Sony Ericsson', + 'ericsson' => 'Sony Ericsson', + 'blackberry' => 'BlackBerry', + 'cocoon' => 'O2 Cocoon', + 'blazer' => 'Treo', + 'lg' => 'LG', + 'amoi' => 'Amoi', + 'xda' => 'XDA', + 'mda' => 'MDA', + 'vario' => 'Vario', + 'htc' => 'HTC', + 'samsung' => 'Samsung', + 'sharp' => 'Sharp', + 'sie-' => 'Siemens', + 'alcatel' => 'Alcatel', + 'benq' => 'BenQ', + 'ipaq' => 'HP iPaq', + 'mot-' => 'Motorola', + 'playstation portable' => 'PlayStation Portable', + 'playstation 3' => 'PlayStation 3', + 'playstation vita' => 'PlayStation Vita', + 'hiptop' => 'Danger Hiptop', + 'nec-' => 'NEC', + 'panasonic' => 'Panasonic', + 'philips' => 'Philips', + 'sagem' => 'Sagem', + 'sanyo' => 'Sanyo', + 'spv' => 'SPV', + 'zte' => 'ZTE', + 'sendo' => 'Sendo', + 'nintendo dsi' => 'Nintendo DSi', + 'nintendo ds' => 'Nintendo DS', + 'nintendo 3ds' => 'Nintendo 3DS', + 'wii' => 'Nintendo Wii', + 'open web' => 'Open Web', + 'openweb' => 'OpenWeb', + + // Operating Systems + 'android' => 'Android', + 'symbian' => 'Symbian', + 'SymbianOS' => 'SymbianOS', + 'elaine' => 'Palm', + 'series60' => 'Symbian S60', + 'windows ce' => 'Windows CE', + + // Browsers + 'obigo' => 'Obigo', + 'netfront' => 'Netfront Browser', + 'openwave' => 'Openwave Browser', + 'mobilexplorer' => 'Mobile Explorer', + 'operamini' => 'Opera Mini', + 'opera mini' => 'Opera Mini', + 'opera mobi' => 'Opera Mobile', + 'fennec' => 'Firefox Mobile', + + // Other + 'digital paths' => 'Digital Paths', + 'avantgo' => 'AvantGo', + 'xiino' => 'Xiino', + 'novarra' => 'Novarra Transcoder', + 'vodafone' => 'Vodafone', + 'docomo' => 'NTT DoCoMo', + 'o2' => 'O2', + + // Fallback + 'mobile' => 'Generic Mobile', + 'wireless' => 'Generic Mobile', + 'j2me' => 'Generic Mobile', + 'midp' => 'Generic Mobile', + 'cldc' => 'Generic Mobile', + 'up.link' => 'Generic Mobile', + 'up.browser' => 'Generic Mobile', + 'smartphone' => 'Generic Mobile', + 'cellphone' => 'Generic Mobile' +); + +// There are hundreds of bots but these are the most common. +$robots = array( + 'googlebot' => 'Googlebot', + 'msnbot' => 'MSNBot', + 'baiduspider' => 'Baiduspider', + 'bingbot' => 'Bing', + 'slurp' => 'Inktomi Slurp', + 'yahoo' => 'Yahoo', + 'ask jeeves' => 'Ask Jeeves', + 'fastcrawler' => 'FastCrawler', + 'infoseek' => 'InfoSeek Robot 1.0', + 'lycos' => 'Lycos', + 'yandex' => 'YandexBot', + 'mediapartners-google' => 'MediaPartners Google', + 'CRAZYWEBCRAWLER' => 'Crazy Webcrawler', + 'adsbot-google' => 'AdsBot Google', + 'feedfetcher-google' => 'Feedfetcher Google', + 'curious george' => 'Curious George', + 'ia_archiver' => 'Alexa Crawler', + 'MJ12bot' => 'Majestic-12', + 'Uptimebot' => 'Uptimebot' +); diff --git a/www/application/controllers/Welcome.php b/www/application/controllers/Welcome.php new file mode 100644 index 0000000..d5c260a --- /dev/null +++ b/www/application/controllers/Welcome.php @@ -0,0 +1,25 @@ + + * @see https://codeigniter.com/user_guide/general/urls.html + */ + public function index() + { + $this->load->view('home/home'); + } +} diff --git a/www/application/controllers/index.html b/www/application/controllers/index.html new file mode 100644 index 0000000..b702fbc --- /dev/null +++ b/www/application/controllers/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/www/application/core/index.html b/www/application/core/index.html new file mode 100644 index 0000000..b702fbc --- /dev/null +++ b/www/application/core/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/www/application/helpers/index.html b/www/application/helpers/index.html new file mode 100644 index 0000000..b702fbc --- /dev/null +++ b/www/application/helpers/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/www/application/hooks/index.html b/www/application/hooks/index.html new file mode 100644 index 0000000..b702fbc --- /dev/null +++ b/www/application/hooks/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/www/application/index.html b/www/application/index.html new file mode 100644 index 0000000..b702fbc --- /dev/null +++ b/www/application/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/www/application/language/english/index.html b/www/application/language/english/index.html new file mode 100644 index 0000000..b702fbc --- /dev/null +++ b/www/application/language/english/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/www/application/language/index.html b/www/application/language/index.html new file mode 100644 index 0000000..b702fbc --- /dev/null +++ b/www/application/language/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/www/application/libraries/index.html b/www/application/libraries/index.html new file mode 100644 index 0000000..b702fbc --- /dev/null +++ b/www/application/libraries/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/www/application/logs/index.html b/www/application/logs/index.html new file mode 100644 index 0000000..b702fbc --- /dev/null +++ b/www/application/logs/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/www/application/models/index.html b/www/application/models/index.html new file mode 100644 index 0000000..b702fbc --- /dev/null +++ b/www/application/models/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/www/application/third_party/index.html b/www/application/third_party/index.html new file mode 100644 index 0000000..b702fbc --- /dev/null +++ b/www/application/third_party/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/www/application/views/errors/cli/error_404.php b/www/application/views/errors/cli/error_404.php new file mode 100644 index 0000000..6984b61 --- /dev/null +++ b/www/application/views/errors/cli/error_404.php @@ -0,0 +1,8 @@ + + +An uncaught Exception was encountered + +Type: +Message: +Filename: getFile(), "\n"; ?> +Line Number: getLine(); ?> + + + +Backtrace: +getTrace() as $error): ?> + + File: + Line: + Function: + + + + diff --git a/www/application/views/errors/cli/error_general.php b/www/application/views/errors/cli/error_general.php new file mode 100644 index 0000000..6984b61 --- /dev/null +++ b/www/application/views/errors/cli/error_general.php @@ -0,0 +1,8 @@ + + +A PHP Error was encountered + +Severity: +Message: +Filename: +Line Number: + + + +Backtrace: + + + File: + Line: + Function: + + + + diff --git a/www/application/views/errors/cli/index.html b/www/application/views/errors/cli/index.html new file mode 100644 index 0000000..b702fbc --- /dev/null +++ b/www/application/views/errors/cli/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/www/application/views/errors/html/error_404.php b/www/application/views/errors/html/error_404.php new file mode 100644 index 0000000..756ea9d --- /dev/null +++ b/www/application/views/errors/html/error_404.php @@ -0,0 +1,64 @@ + + + + +404 Page Not Found + + + +
+

+ +
+ + \ No newline at end of file diff --git a/www/application/views/errors/html/error_db.php b/www/application/views/errors/html/error_db.php new file mode 100644 index 0000000..f5a43f6 --- /dev/null +++ b/www/application/views/errors/html/error_db.php @@ -0,0 +1,64 @@ + + + + +Database Error + + + +
+

+ +
+ + \ No newline at end of file diff --git a/www/application/views/errors/html/error_exception.php b/www/application/views/errors/html/error_exception.php new file mode 100644 index 0000000..8784886 --- /dev/null +++ b/www/application/views/errors/html/error_exception.php @@ -0,0 +1,32 @@ + + +
+ +

An uncaught Exception was encountered

+ +

Type:

+

Message:

+

Filename: getFile(); ?>

+

Line Number: getLine(); ?>

+ + + +

Backtrace:

+ getTrace() as $error): ?> + + + +

+ File:
+ Line:
+ Function: +

+ + + + + + +
\ No newline at end of file diff --git a/www/application/views/errors/html/error_general.php b/www/application/views/errors/html/error_general.php new file mode 100644 index 0000000..fc3b2eb --- /dev/null +++ b/www/application/views/errors/html/error_general.php @@ -0,0 +1,64 @@ + + + + +Error + + + +
+

+ +
+ + \ No newline at end of file diff --git a/www/application/views/errors/html/error_php.php b/www/application/views/errors/html/error_php.php new file mode 100644 index 0000000..b146f9c --- /dev/null +++ b/www/application/views/errors/html/error_php.php @@ -0,0 +1,33 @@ + + +
+ +

A PHP Error was encountered

+ +

Severity:

+

Message:

+

Filename:

+

Line Number:

+ + + +

Backtrace:

+ + + + +

+ File:
+ Line:
+ Function: +

+ + + + + + + +
\ No newline at end of file diff --git a/www/application/views/errors/html/index.html b/www/application/views/errors/html/index.html new file mode 100644 index 0000000..b702fbc --- /dev/null +++ b/www/application/views/errors/html/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/www/application/views/errors/index.html b/www/application/views/errors/index.html new file mode 100644 index 0000000..b702fbc --- /dev/null +++ b/www/application/views/errors/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/www/application/views/home/home.php b/www/application/views/home/home.php new file mode 100644 index 0000000..53be009 --- /dev/null +++ b/www/application/views/home/home.php @@ -0,0 +1,387 @@ + + + + + + + + + + CoreGrade + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + +
+
+
+ + +
+ +
+ + + +
+
+
+
+
+

Idea

+

+

+
+
+
+
+
+ + +
+
+
+
+
+ + + + + +
+ + + +
+
+
+
+
+ CoreGrade Features +

It is about you at the control

+
+
+
+
+
+
+

Learning Plans

+

Lorem ipsum dolor site amet, consectetur adipisicing elit, sed do eiusmod tempor incididut ut.

+
+
+

Goals Setting

+

Lorem ipsum dolor site amet, consectetur adipisicing elit, sed do eiusmod tempor incididut ut.

+
+
+

Calendar & Alerts

+

Lorem ipsum dolor site amet, consectetur adipisicing elit, sed do eiusmod tempor incididut ut.

+
+
+
+
+ Feature Slide + Feature Slide + Feature Slide + Feature Slide + Feature Slide + Feature Slide +
+
+
+
+

Progress Monitoring

+

Lorem ipsum dolor site amet, consectetur adipisicing elit, sed do eiusmod tempor incididut ut.

+
+
+

Groups

+

Lorem ipsum dolor site amet, consectetur adipisicing elit, sed do eiusmod tempor incididut ut.

+
+
+

Institutional

+

Lorem ipsum dolor site amet, consectetur adipisicing elit, sed do eiusmod tempor incididut ut.

+
+
+
+
+
+ + + +
+
+
+
+
+ +

Select what you need to get started

+
+
+

You Are

+
    +
  • Individual
  • +
  • Schools
  • +
+

Thus much I thought proper to tell you in relation to yourself, and to the trust I reposed in you.

+

Have a bigger team? Let‘s talk

+
+
+
+
    +
  • +

    Individual

    + Free +

    Build your schedule
    every day

    +
      +
    • Unlimeted events

    • +
    • Connect Dropbox & Evernote

    • +
    • Personal Assistant

    • +
    + Get Started +
  • +
  • +

    Schools

    + $4.99 +

    Make your life
    better

    +
      +
    • Unlimeted events

    • +
    • Connect Dropbox & Evernote

    • +
    • Personal Assistant

    • +
    + Make me a Pro +
  • +
+
+
+
+
+ + + + + + + +
+
+
+
+
+

Get CoreGrade App

+ Swip . Get Matched . Connect +
+
+
+
+
+
+ Apple + Google Play + +
+
+
+
+
+
+ Mobile Slide +
+
+
+
+
+ + + +
+ + +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/www/application/views/index.html b/www/application/views/index.html new file mode 100644 index 0000000..b702fbc --- /dev/null +++ b/www/application/views/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/www/application/views/welcome_message.php b/www/application/views/welcome_message.php new file mode 100644 index 0000000..f511563 --- /dev/null +++ b/www/application/views/welcome_message.php @@ -0,0 +1,89 @@ + + + + + Welcome to CodeIgniter + + + + + +
+

Welcome to CodeIgniter!

+ +
+

The page you are looking at is being generated dynamically by CodeIgniter.

+ +

If you would like to edit this page you'll find it located at:

+ application/views/welcome_message.php + +

The corresponding controller for this page is found at:

+ application/controllers/Welcome.php + +

If you are exploring CodeIgniter for the very first time, you should start by reading the User Guide.

+
+ + +
+ + + \ No newline at end of file diff --git a/www/assets/css/animate.min.css b/www/assets/css/animate.min.css new file mode 100644 index 0000000..78c0a38 --- /dev/null +++ b/www/assets/css/animate.min.css @@ -0,0 +1,6 @@ +@charset "UTF-8";/*! +Animate.css - http://daneden.me/animate +Licensed under the MIT license - http://opensource.org/licenses/MIT + +Copyright (c) 2015 Daniel Eden +*/.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.animated.infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animated.hinge{-webkit-animation-duration:2s;animation-duration:2s}.animated.bounceIn,.animated.bounceOut,.animated.flipOutX,.animated.flipOutY{-webkit-animation-duration:.75s;animation-duration:.75s}@-webkit-keyframes bounce{100%,20%,53%,80%,from{-webkit-animation-timing-function:cubic-bezier(0.215,.61,.355,1);animation-timing-function:cubic-bezier(0.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(0.755,.050,.855,.060);animation-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-animation-timing-function:cubic-bezier(0.755,.050,.855,.060);animation-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}@keyframes bounce{100%,20%,53%,80%,from{-webkit-animation-timing-function:cubic-bezier(0.215,.61,.355,1);animation-timing-function:cubic-bezier(0.215,.61,.355,1);-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(0.755,.050,.855,.060);animation-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-30px,0);transform:translate3d(0,-30px,0)}70%{-webkit-animation-timing-function:cubic-bezier(0.755,.050,.855,.060);animation-timing-function:cubic-bezier(0.755,.050,.855,.060);-webkit-transform:translate3d(0,-15px,0);transform:translate3d(0,-15px,0)}90%{-webkit-transform:translate3d(0,-4px,0);transform:translate3d(0,-4px,0)}}.bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes flash{100%,50%,from{opacity:1}25%,75%{opacity:0}}@keyframes flash{100%,50%,from{opacity:1}25%,75%{opacity:0}}.flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{from{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes pulse{from{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.pulse{-webkit-animation-name:pulse;animation-name:pulse}@-webkit-keyframes rubberBand{from{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(0.75,1.25,1);transform:scale3d(0.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes rubberBand{from{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(0.75,1.25,1);transform:scale3d(0.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shake{100%,from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shake{100%,from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.shake{-webkit-animation-name:shake;animation-name:shake}@-webkit-keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}100%{-webkit-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}@keyframes swing{20%{-webkit-transform:rotate3d(0,0,1,15deg);transform:rotate3d(0,0,1,15deg)}40%{-webkit-transform:rotate3d(0,0,1,-10deg);transform:rotate3d(0,0,1,-10deg)}60%{-webkit-transform:rotate3d(0,0,1,5deg);transform:rotate3d(0,0,1,5deg)}80%{-webkit-transform:rotate3d(0,0,1,-5deg);transform:rotate3d(0,0,1,-5deg)}100%{-webkit-transform:rotate3d(0,0,1,0deg);transform:rotate3d(0,0,1,0deg)}}.swing{-webkit-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{from{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes tada{from{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg);transform:scale3d(.9,.9,.9) rotate3d(0,0,1,-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg);transform:scale3d(1.1,1.1,1.1) rotate3d(0,0,1,-3deg)}100%{-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{from{-webkit-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}100%{-webkit-transform:none;transform:none}}@keyframes wobble{from{-webkit-transform:none;transform:none}15%{-webkit-transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg);transform:translate3d(-25%,0,0) rotate3d(0,0,1,-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg);transform:translate3d(20%,0,0) rotate3d(0,0,1,3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg);transform:translate3d(-15%,0,0) rotate3d(0,0,1,-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg);transform:translate3d(10%,0,0) rotate3d(0,0,1,2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg);transform:translate3d(-5%,0,0) rotate3d(0,0,1,-1deg)}100%{-webkit-transform:none;transform:none}}.wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes jello{100%,11.1%,from{-webkit-transform:none;transform:none}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(0.390625deg) skewY(0.390625deg);transform:skewX(0.390625deg) skewY(0.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}@keyframes jello{100%,11.1%,from{-webkit-transform:none;transform:none}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(0.390625deg) skewY(0.390625deg);transform:skewX(0.390625deg) skewY(0.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}.jello{-webkit-animation-name:jello;animation-name:jello;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes bounceIn{100%,20%,40%,60%,80%,from{-webkit-animation-timing-function:cubic-bezier(0.215,.61,.355,1);animation-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}@keyframes bounceIn{100%,20%,40%,60%,80%,from{-webkit-animation-timing-function:cubic-bezier(0.215,.61,.355,1);animation-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}100%{opacity:1;-webkit-transform:scale3d(1,1,1);transform:scale3d(1,1,1)}}.bounceIn{-webkit-animation-name:bounceIn;animation-name:bounceIn}@-webkit-keyframes bounceInDown{100%,60%,75%,90%,from{-webkit-animation-timing-function:cubic-bezier(0.215,.61,.355,1);animation-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInDown{100%,60%,75%,90%,from{-webkit-animation-timing-function:cubic-bezier(0.215,.61,.355,1);animation-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0);transform:translate3d(0,-3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0);transform:translate3d(0,25px,0)}75%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}90%{-webkit-transform:translate3d(0,5px,0);transform:translate3d(0,5px,0)}100%{-webkit-transform:none;transform:none}}.bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{100%,60%,75%,90%,from{-webkit-animation-timing-function:cubic-bezier(0.215,.61,.355,1);animation-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInLeft{100%,60%,75%,90%,from{-webkit-animation-timing-function:cubic-bezier(0.215,.61,.355,1);animation-timing-function:cubic-bezier(0.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0);transform:translate3d(-3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0);transform:translate3d(25px,0,0)}75%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}90%{-webkit-transform:translate3d(5px,0,0);transform:translate3d(5px,0,0)}100%{-webkit-transform:none;transform:none}}.bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{100%,60%,75%,90%,from{-webkit-animation-timing-function:cubic-bezier(0.215,.61,.355,1);animation-timing-function:cubic-bezier(0.215,.61,.355,1)}from{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;transform:none}}@keyframes bounceInRight{100%,60%,75%,90%,from{-webkit-animation-timing-function:cubic-bezier(0.215,.61,.355,1);animation-timing-function:cubic-bezier(0.215,.61,.355,1)}from{opacity:0;-webkit-transform:translate3d(3000px,0,0);transform:translate3d(3000px,0,0)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0);transform:translate3d(-25px,0,0)}75%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}90%{-webkit-transform:translate3d(-5px,0,0);transform:translate3d(-5px,0,0)}100%{-webkit-transform:none;transform:none}}.bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{100%,60%,75%,90%,from{-webkit-animation-timing-function:cubic-bezier(0.215,.61,.355,1);animation-timing-function:cubic-bezier(0.215,.61,.355,1)}from{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes bounceInUp{100%,60%,75%,90%,from{-webkit-animation-timing-function:cubic-bezier(0.215,.61,.355,1);animation-timing-function:cubic-bezier(0.215,.61,.355,1)}from{opacity:0;-webkit-transform:translate3d(0,3000px,0);transform:translate3d(0,3000px,0)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}75%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}90%{-webkit-transform:translate3d(0,-5px,0);transform:translate3d(0,-5px,0)}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}100%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}.bounceOut{-webkit-animation-name:bounceOut;animation-name:bounceOut}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0);transform:translate3d(20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0);transform:translate3d(-20px,0,0)}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0);transform:translate3d(0,20px,0)}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{from{opacity:0}100%{opacity:1}}@keyframes fadeIn{from{opacity:0}100%{opacity:1}}.fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{from{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInDownBig{from{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{from{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeft{from{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{from{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInLeftBig{from{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{from{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRight{from{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{from{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInRightBig{from{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{from{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUp{from{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{from{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes fadeInUpBig{from{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}100%{opacity:1;-webkit-transform:none;transform:none}}.fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeOut{from{opacity:1}100%{opacity:0}}@keyframes fadeOut{from{opacity:1}100%{opacity:0}}.fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{from{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{from{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{from{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{from{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{from{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{from{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{from{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{from{opacity:1}100%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{from{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{from{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{from{opacity:1}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{from{opacity:1}100%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{from{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{from{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{from{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{from{opacity:1}100%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes flip{from{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{from{-webkit-transform:perspective(400px) rotate3d(0,1,0,-360deg);transform:perspective(400px) rotate3d(0,1,0,-360deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);transform:perspective(400px) translate3d(0,0,150px) rotate3d(0,1,0,-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95);transform:perspective(400px) scale3d(.95,.95,.95);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}100%{-webkit-transform:perspective(400px);transform:perspective(400px);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animated.flip{-webkit-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{from{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{from{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(1,0,0,10deg);transform:perspective(400px) rotate3d(1,0,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-5deg);transform:perspective(400px) rotate3d(1,0,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}.flipInX{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{from{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{from{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-20deg);transform:perspective(400px) rotate3d(0,1,0,-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotate3d(0,1,0,10deg);transform:perspective(400px) rotate3d(0,1,0,10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-5deg);transform:perspective(400px) rotate3d(0,1,0,-5deg)}100%{-webkit-transform:perspective(400px);transform:perspective(400px)}}.flipInY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{from{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}@keyframes flipOutX{from{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(1,0,0,-20deg);transform:perspective(400px) rotate3d(1,0,0,-20deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(1,0,0,90deg);transform:perspective(400px) rotate3d(1,0,0,90deg);opacity:0}}.flipOutX{-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{from{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}@keyframes flipOutY{from{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotate3d(0,1,0,-15deg);transform:perspective(400px) rotate3d(0,1,0,-15deg);opacity:1}100%{-webkit-transform:perspective(400px) rotate3d(0,1,0,90deg);transform:perspective(400px) rotate3d(0,1,0,90deg);opacity:0}}.flipOutY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY}@-webkit-keyframes lightSpeedIn{from{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}100%{-webkit-transform:none;transform:none;opacity:1}}@keyframes lightSpeedIn{from{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg);opacity:1}100%{-webkit-transform:none;transform:none;opacity:1}}.lightSpeedIn{-webkit-animation-name:lightSpeedIn;animation-name:lightSpeedIn;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOut{from{opacity:1}100%{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}@keyframes lightSpeedOut{from{opacity:1}100%{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.lightSpeedOut{-webkit-animation-name:lightSpeedOut;animation-name:lightSpeedOut;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{from{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateIn{from{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,-200deg);transform:rotate3d(0,0,1,-200deg);opacity:0}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:none;transform:none;opacity:1}}.rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn}@-webkit-keyframes rotateInDownLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft}@-webkit-keyframes rotateInDownRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInDownRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight}@-webkit-keyframes rotateInUpLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft}@-webkit-keyframes rotateInUpRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}@keyframes rotateInUpRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-90deg);transform:rotate3d(0,0,1,-90deg);opacity:0}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:none;transform:none;opacity:1}}.rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight}@-webkit-keyframes rotateOut{from{-webkit-transform-origin:center;transform-origin:center;opacity:1}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}@keyframes rotateOut{from{-webkit-transform-origin:center;transform-origin:center;opacity:1}100%{-webkit-transform-origin:center;transform-origin:center;-webkit-transform:rotate3d(0,0,1,200deg);transform:rotate3d(0,0,1,200deg);opacity:0}}.rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut}@-webkit-keyframes rotateOutDownLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}}@keyframes rotateOutDownLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,45deg);transform:rotate3d(0,0,1,45deg);opacity:0}}.rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft}@-webkit-keyframes rotateOutDownRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutDownRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight}@-webkit-keyframes rotateOutUpLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}@keyframes rotateOutUpLeft{from{-webkit-transform-origin:left bottom;transform-origin:left bottom;opacity:1}100%{-webkit-transform-origin:left bottom;transform-origin:left bottom;-webkit-transform:rotate3d(0,0,1,-45deg);transform:rotate3d(0,0,1,-45deg);opacity:0}}.rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft}@-webkit-keyframes rotateOutUpRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}@keyframes rotateOutUpRight{from{-webkit-transform-origin:right bottom;transform-origin:right bottom;opacity:1}100%{-webkit-transform-origin:right bottom;transform-origin:right bottom;-webkit-transform:rotate3d(0,0,1,90deg);transform:rotate3d(0,0,1,90deg);opacity:0}}.rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight}@-webkit-keyframes hinge{0%{-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}100%{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate3d(0,0,1,80deg);transform:rotate3d(0,0,1,80deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate3d(0,0,1,60deg);transform:rotate3d(0,0,1,60deg);-webkit-transform-origin:top left;transform-origin:top left;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}100%{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}.hinge{-webkit-animation-name:hinge;animation-name:hinge}@-webkit-keyframes rollIn{from{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}100%{opacity:1;-webkit-transform:none;transform:none}}@keyframes rollIn{from{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg);transform:translate3d(-100%,0,0) rotate3d(0,0,1,-120deg)}100%{opacity:1;-webkit-transform:none;transform:none}}.rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{from{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}@keyframes rollOut{from{opacity:1}100%{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg);transform:translate3d(100%,0,0) rotate3d(0,0,1,120deg)}}.rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{from{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{from{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}.zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInDown{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInLeft{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInRight{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomInUp{from{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{from{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}100%{opacity:0}}@keyframes zoomOut{from{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}100%{opacity:0}}.zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0);-webkit-transform-origin:left center;transform-origin:left center}}.zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}100%{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0);-webkit-transform-origin:right center;transform-origin:right center}}.zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(0.55,.055,.675,.19);animation-timing-function:cubic-bezier(0.55,.055,.675,.19)}100%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-transform-origin:center bottom;transform-origin:center bottom;-webkit-animation-timing-function:cubic-bezier(0.175,.885,.32,1);animation-timing-function:cubic-bezier(0.175,.885,.32,1)}}.zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp}@-webkit-keyframes slideInDown{from{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes slideInDown{from{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown}@-webkit-keyframes slideInLeft{from{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes slideInLeft{from{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft}@-webkit-keyframes slideInRight{from{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes slideInRight{from{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight}@-webkit-keyframes slideInUp{from{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes slideInUp{from{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}100%{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.slideInUp{-webkit-animation-name:slideInUp;animation-name:slideInUp}@-webkit-keyframes slideOutDown{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}100%{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes slideOutDown{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}100%{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}@-webkit-keyframes slideOutLeft{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}100%{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes slideOutLeft{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}100%{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft}@-webkit-keyframes slideOutRight{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}100%{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes slideOutRight{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}100%{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight}@-webkit-keyframes slideOutUp{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}100%{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes slideOutUp{from{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}100%{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp} \ No newline at end of file diff --git a/www/assets/css/bootstrap.min.css b/www/assets/css/bootstrap.min.css new file mode 100644 index 0000000..4cf729e --- /dev/null +++ b/www/assets/css/bootstrap.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap v3.3.6 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/www/assets/css/default.css b/www/assets/css/default.css new file mode 100644 index 0000000..17458ef --- /dev/null +++ b/www/assets/css/default.css @@ -0,0 +1,259 @@ +/* +Table of contents +=========================================== +- General Style +- Utility Classes +- Button Style +- Form Elements +- Page Header +- Breadcrumb +- Tab +- Pagination +- Section Title +=========================================== +*/ + +/* +------------------------------------ +- General Style +------------------------------------ +*/ +*, +*:before, +*:after { + -moz-box-sizing: border-box; + -webkit-box-sizing: border-box; + box-sizing: border-box; +} +*:focus { + outline: 0; +} +html { + font-family: 'Montserrat', sans-serif; + font-weight: 400; + font-size: 16px; + color: #3c3c3c; + letter-spacing: 0px; + line-height: 28px; + -webkit-font-smoothing: antialiased; +} +body { + background: #fff; + font-family: 'Montserrat', sans-serif; + font-weight: 400; + font-size: 16px; + color: #3c3c3c; + letter-spacing: 0px; + line-height: 28px; + -webkit-font-smoothing: antialiased; /* Fix for webkit rendering */ + -webkit-text-size-adjust: 100%; +} +img { + max-width: 100%; + height: auto; +} +button, input, textarea { + font-family: 'Open Sans', sans-serif; + letter-spacing: 1px; +} +/* +------------------------------------ +- Utility Classes +------------------------------------ +*/ +.bg-light { + background: #f4f4f5; +} +.pn { + padding: 0px !important; +} +.inner-padding { + padding: 100px 0px; + overflow: hidden; +} +.typed-cursor{ + opacity: 1; + -webkit-animation: blink 0.7s infinite; + -moz-animation: blink 0.7s infinite; + animation: blink 0.7s infinite; + display: none; +} +@keyframes blink{ + 0% { opacity:1; } + 50% { opacity:0; } + 100% { opacity:1; } +} +@-webkit-keyframes blink{ + 0% { opacity:1; } + 50% { opacity:0; } + 100% { opacity:1; } +} +@-moz-keyframes blink{ + 0% { opacity:1; } + 50% { opacity:0; } + 100% { opacity:1; } +} +/* +------------------------------------ +- Button Style +------------------------------------ +*/ +.btn { + height: 40px; + padding: 0px 55px; + line-height: 35px; + -webkit-border-radius: 30px; + -moz-border-radius: 30px; + -ms-border-radius: 30px; + -o-border-radius: 30px; + border-radius: 30px; + font-family: 'Montserrat', sans-serif; + font-size: 16px; + font-weight: 400; + -webkit-transition: all 0.3s ease-in-out; + -moz-transition: all 0.3s ease-in-out; + -ms-transition: all 0.3s ease-in-out; + -o-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; +} +.btn-fill { + background: #8cbdcf; + color: #fff; + font-weight: 400; + border-color: #8cbdcf; +} +.btn-fill:hover { + background: #74a9bc; + border-color: #74a9bc; + color: #fff !important; +} +.btn-outline { + background: transparent; + color: #8cbdcf; + font-weight: 400; + border-color: #8cbdcf; +} +.btn-outline:hover { + background: transparent; + border-color: #74a9bc; +} + +/* Blue */ +.btn-fill-blue { + background: #7d4ccc; + color: #fff; + font-weight: 400; + border-color: #7d4ccc; +} +.btn-fill-blue:hover { + background: #7045b6; + border-color: #7045b6; + color: #fff !important; +} +.btn-outline-blue { + background: transparent; + color: #7d4ccc; + font-weight: 400; + border-color: #7d4ccc; +} +.btn-outline-blue:hover { + background: transparent; + border-color: #7045b6; +} + +/* Megento */ +.btn-fill-megento { + background: #ed145b; + color: #fff !important; + font-weight: 400; + border-color: #ed145b; +} +.btn-fill-megento:hover { + background: #d31050; + border-color: #d31050; + color: #fff !important; +} +.btn-fill-megento:hover a { + color: #fff !important; +} +.btn-outline-megento { + background: transparent; + color: #ed145b; + font-weight: 400; + border-color: #ed145b; +} +.btn-outline-megento:hover { + background: transparent; + border-color: #d31050; +} +/* +------------------------------------ +- Form Elements +------------------------------------ +*/ + + +/* +------------------------------------ +- Page Header +------------------------------------ +*/ + +/* +------------------------------------ +- Bread Crumb +------------------------------------ +*/ + +/* +------------------------------------ +- Pagination +------------------------------------ +*/ + +/* +------------------------------------ +- Tab +------------------------------------ +*/ + +/* +--------------------------------- +- Customize Owl Carousel +--------------------------------- +*/ +.owl-carousel .owl-item img { + width: auto !important; + max-width: 100% !important; + margin: auto !important; +} +.owl-dots { + width: 100%; + height: 30px; + text-align: center; + position: absolute; + bottom: 5px; + left: 0px; +} +.owl-dot { + background: #ededed; + width: 12px; + height: 12px; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + -ms-border-radius: 50%; + -o-border-radius: 50%; + border-radius: 50%; + display: inline-block; + margin-right: 10px; +} +.owl-dot.active { + background: #666; + width: 12px; + height: 12px; + -webkit-border-radius: 50%; + -moz-border-radius: 50%; + -ms-border-radius: 50%; + -o-border-radius: 50%; + border-radius: 50%; +} \ No newline at end of file diff --git a/www/assets/css/font-awesome.min.css b/www/assets/css/font-awesome.min.css new file mode 100644 index 0000000..ee4e978 --- /dev/null +++ b/www/assets/css/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.4.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.4.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.4.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.4.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.4.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.4.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.4.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"} diff --git a/www/assets/css/owl.carousel.min.css b/www/assets/css/owl.carousel.min.css new file mode 100644 index 0000000..4c53dad --- /dev/null +++ b/www/assets/css/owl.carousel.min.css @@ -0,0 +1,6 @@ +/** + * Owl Carousel v2.1.1 + * Copyright 2013-2016 David Deutsch + * Licensed under MIT (https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE) + */ +.owl-carousel,.owl-carousel .owl-item{-webkit-tap-highlight-color:transparent;position:relative}.owl-carousel{display:none;width:100%;z-index:1}.owl-carousel .owl-stage{position:relative;-ms-touch-action:pan-Y}.owl-carousel .owl-stage:after{content:".";display:block;clear:both;visibility:hidden;line-height:0;height:0}.owl-carousel .owl-stage-outer{position:relative;overflow:hidden;-webkit-transform:translate3d(0,0,0)}.owl-carousel .owl-item{min-height:1px;float:left;-webkit-backface-visibility:hidden;-webkit-touch-callout:none}.owl-carousel .owl-item img{display:block;width:100%;-webkit-transform-style:preserve-3d}.owl-carousel .owl-dots.disabled,.owl-carousel .owl-nav.disabled{display:none}.owl-carousel .owl-dot,.owl-carousel .owl-nav .owl-next,.owl-carousel .owl-nav .owl-prev{cursor:pointer;cursor:hand;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel.owl-loaded{display:block}.owl-carousel.owl-loading{opacity:0;display:block}.owl-carousel.owl-hidden{opacity:0}.owl-carousel.owl-refresh .owl-item{display:none}.owl-carousel.owl-drag .owl-item{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.owl-carousel.owl-grab{cursor:move;cursor:grab}.owl-carousel.owl-rtl{direction:rtl}.owl-carousel.owl-rtl .owl-item{float:right}.no-js .owl-carousel{display:block}.owl-carousel .animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.owl-carousel .owl-animated-in{z-index:0}.owl-carousel .owl-animated-out{z-index:1}.owl-carousel .fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOut{0%{opacity:1}100%{opacity:0}}@keyframes fadeOut{0%{opacity:1}100%{opacity:0}}.owl-height{transition:height .5s ease-in-out}.owl-carousel .owl-item .owl-lazy{opacity:0;transition:opacity .4s ease}.owl-carousel .owl-item img.owl-lazy{-webkit-transform-style:preserve-3d;transform-style:preserve-3d}.owl-carousel .owl-video-wrapper{position:relative;height:100%;background:#000}.owl-carousel .owl-video-play-icon{position:absolute;height:80px;width:80px;left:50%;top:50%;margin-left:-40px;margin-top:-40px;background:url(owl.video.play.png) no-repeat;cursor:pointer;z-index:1;-webkit-backface-visibility:hidden;transition:-webkit-transform .1s ease;transition:transform .1s ease}.owl-carousel .owl-video-play-icon:hover{-webkit-transform:scale(1.3,1.3);-ms-transform:scale(1.3,1.3);transform:scale(1.3,1.3)}.owl-carousel .owl-video-playing .owl-video-play-icon,.owl-carousel .owl-video-playing .owl-video-tn{display:none}.owl-carousel .owl-video-tn{opacity:0;height:100%;background-position:center center;background-repeat:no-repeat;background-size:contain;transition:opacity .4s ease}.owl-carousel .owl-video-frame{position:relative;z-index:1;height:100%;width:100%} \ No newline at end of file diff --git a/www/assets/css/owl.theme.min.css b/www/assets/css/owl.theme.min.css new file mode 100644 index 0000000..bdab1ab --- /dev/null +++ b/www/assets/css/owl.theme.min.css @@ -0,0 +1,5 @@ +/** + * Owl Carousel v2.1.1 + * Copyright 2013-2016 David Deutsch + * Licensed under MIT (https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE) + */ diff --git a/www/assets/css/responsive-blue.css b/www/assets/css/responsive-blue.css new file mode 100644 index 0000000..356cbea --- /dev/null +++ b/www/assets/css/responsive-blue.css @@ -0,0 +1,256 @@ +/* Medium Layout: 1280px. */ + +@media only screen and (min-width: 992px) and (max-width: 1200px) {} +/* Tablet Layout: 768px. */ + +@media only screen and (min-width: 768px) and (max-width: 1024px) { + /* Header Section */ + .navbar-default { + min-height: 75px; + } + .navbar-header { + float: none; + } + .navbar-toggle { + display: block; + } + .navbar-collapse.collapse { + display: none!important; + } + .navbar-collapse.collapse.in { + display: block!important; + border-top: 1px solid #fff; + padding-top: 10px; + } + .collapsing { + overflow: hidden!important; + } + + .navbar-brand > img { + max-width: 70%; + } + .navbar-toggle { + margin-top: 20px; + border: 0px; + } + .navbar-default .navbar-toggle .icon-bar { + background-color: #fff; + } + .navbar-default .navbar-toggle:focus, + .navbar-default .navbar-toggle:hover { + background-color: transparent; + } + .navbar-default .navbar-collapse, + .navbar-default .navbar-form { + padding-top: 10px; + margin-top: 15px; + } + .navbar-default .navbar-right { + float: left !important; + margin-top: 5px !important; + } + .navbar-default .navbar-nav > li { + float: left !important; + width: 100%; + margin-bottom: 0px; + } + .navbar-default .navbar-nav > li > a { + padding: 15px 25px; + } + .navbar-default .navbar-nav > .active > a::after { + width: 5px; + height: 100%; + } + + /* Hero Section */ + .tab-slide .owl-stage-outer, + .tab-slide .owl-dots { + display: none; + } + .tab-carousel-caption { + width: 100%; + } + + /* Feature Section */ + .single-feature-item { + text-align: center; + } + .single-feature-slide { + margin-bottom: 60px; + } + + /* Pricing Section */ + .pricing-pill { + margin-bottom: 30px; + } + .pricing-table { + margin-top: 60px; + } + +} +/* Mobile Layout: 320px. */ + +@media only screen and (max-width: 767px) { + /* Header Section */ + + .navbar-default { + min-height: 75px; + } + .navbar-brand > img { + max-width: 70%; + } + .navbar-toggle { + margin-top: 20px; + border: 0px; + } + .navbar-default .navbar-toggle .icon-bar { + background-color: #fff; + } + .navbar-default .navbar-toggle:focus, + .navbar-default .navbar-toggle:hover { + background-color: transparent; + } + .navbar-default .navbar-collapse, + .navbar-default .navbar-form { + padding-top: 10px; + margin-top: 15px; + } + .navbar-default .navbar-nav { + margin-top: 5px !important; + } + .navbar-default .navbar-nav > li { + margin-bottom: 0px; + } + .navbar-default .navbar-nav > li > a { + padding: 15px 25px; + } + .navbar-default .navbar-nav > .active > a::after { + width: 5px; + height: 100%; + } + /* Hero Section */ + + .tab-carousel-inner { + position: relative; + min-height: 200px !important; + padding: 180px 10px 80px 10px; + right: 0px; + } + .tab-carousel-caption { + width: 100%; + padding: 85px 15px 40px 15px; + text-align: center; + } + .app-icon { + left: 10px; + } + .tab-carousel-box { + background: transparent; + box-shadow: none; + } + .tab-slide { + right: 0px; + display: none !important; + } + .hero-caption { + display: none; + } + /* Feature Section */ + + .single-feature-item { + text-align: center; + } + .single-feature-slide { + margin-bottom: 75px; + } + /* Pricing Section */ + + .pricing-table li { + width: 100%; + margin-bottom: 75px; + } + .pricing-table li:last-child { + margin-bottom: 0px; + } + .pricing-list li { + margin-bottom: 15px !important; + } + /* Download Section */ + + .store-icon a img { + max-width: 40%; + } + /* Footer Section */ + + .footer-box h2 { + font-size: 24px; + margin-bottom: 30px; + } + /* Copyright Section */ + + .copyright-area { + text-align: center; + } +} +/* Wide Mobile Layout: 480px. */ + +@media only screen and (min-width: 481px) and (max-width: 767px) { + /* Hero Section */ + + .hero-area { + min-height: 0px; + height: auto; + } + .hero-caption { + left: -120px; + top: 350px; + transform: rotateZ(-90deg); + } +} +/* Wide Mobile Layout: 480px. */ + +@media only screen and (min-width: 240px) and (max-width: 480px) { + /* Header Section */ + + .navbar-default { + min-height: 75px; + } + .navbar-default .navbar-brand { + width: 50%; + } + .navbar-brand > img { + max-width: 100%; + } + .navbar-toggle { + margin-top: 20px; + border: 0px; + } + .navbar-default .navbar-toggle .icon-bar { + background-color: #fff; + } + .navbar-default .navbar-toggle:focus, + .navbar-default .navbar-toggle:hover { + background-color: transparent; + } + .navbar-default .navbar-collapse, + .navbar-default .navbar-form { + padding-top: 10px; + margin-top: 15px; + } + .nav > li { + margin-bottom: 0px; + } + .navbar-default .navbar-nav > li > a { + padding: 15px 25px; + } + /* Hero Section */ + /*.hero-caption {left: -110px;} + .hero-caption .sublead {font-size:20px;margin-bottom: -10px;} + .hero-caption .lead {font-size: 40px;margin-bottom: -10px;} + .hero-caption .lead-text {font-size: 14px;}*/ + /* Pricing Section */ + + .pricing-pill li { + padding: 10px 25px; + } +} \ No newline at end of file diff --git a/www/assets/css/responsive-dark.css b/www/assets/css/responsive-dark.css new file mode 100644 index 0000000..83d375c --- /dev/null +++ b/www/assets/css/responsive-dark.css @@ -0,0 +1,265 @@ +/* Medium Layout: 1280px. */ + +@media only screen and (min-width: 992px) and (max-width: 1200px) {} + +/* Tablet Layout: 768px. */ +@media only screen and (min-width: 768px) and (max-width: 1024px) { + /* Header Section */ + .navbar-default { + min-height: 75px; + } + .navbar-header { + float: none; + } + .navbar-toggle { + display: block; + } + .navbar-collapse.collapse { + display: none!important; + } + .navbar-collapse.collapse.in { + display: block!important; + border-top: 1px solid #fff; + padding-top: 10px; + } + .collapsing { + overflow: hidden!important; + } + + .navbar-brand > img { + max-width: 70%; + } + .navbar-toggle { + margin-top: 20px; + border: 0px; + } + .navbar-default .navbar-toggle .icon-bar { + background-color: #fff; + } + .navbar-default .navbar-toggle:focus, + .navbar-default .navbar-toggle:hover { + background-color: transparent; + } + .navbar-default .navbar-collapse, + .navbar-default .navbar-form { + padding-top: 10px; + margin-top: 15px; + } + .navbar-default .navbar-right { + float: left !important; + margin-top: 5px !important; + } + .navbar-default .navbar-nav > li { + float: left !important; + width: 100%; + margin-bottom: 0px; + } + .navbar-default .navbar-nav > li > a { + padding: 15px 25px; + } + .navbar-default .navbar-nav > .active > a::after { + width: 5px; + height: 100%; + } + + /* Hero Section */ + .dark-mockup-slider-area { + top: 40px; + } + .dark-mockup-slider, + .dark-mockup-slider-area { + display: none; + } + .hero-caption { + height: 100vh; + } + .hero-caption-inner .lead { + font-size: 120px; + margin: 20px 0px; + } + .hero-caption-inner, + .hero-caption-inner .lead-text { + text-align: center; + } + .hero-caption-inner .sublead { + text-align: center; + } + + /* Feature Section */ + .single-feature-item { + text-align: center; + } + .single-feature-slide { + margin-bottom: 60px; + } + + /* Pricing Section */ + .pricing-pill { + margin-bottom: 30px; + } + .pricing-table { + margin-top: 60px; + } +} + +/* Mobile Layout: 320px. */ +@media only screen and (max-width: 767px) { + /* Header Section */ + + .navbar-default { + min-height: 75px; + background: rgba(1,1,1,0.8); + } + .navbar-brand > img { + max-width: 70%; + } + .navbar-toggle { + margin-top: 20px; + border: 0px; + } + .navbar-default .navbar-toggle .icon-bar { + background-color: #fff; + } + .navbar-default .navbar-toggle:focus, + .navbar-default .navbar-toggle:hover { + background-color: transparent; + } + .navbar-default .navbar-collapse, + .navbar-default .navbar-form { + padding-top: 10px; + margin-top: 15px; + } + .navbar-default .navbar-nav { + margin-top: 5px !important; + } + .navbar-default .navbar-nav > li { + margin-bottom: 0px; + } + .navbar-default .navbar-nav > li > a { + padding: 15px 25px; + } + .navbar-default .navbar-nav > .active > a::after { + width: 5px; + height: 100%; + } + /* Hero Section */ + + .dark-mockup-slider-area { + top: 40px; + } + .dark-mockup-slider, + .dark-mockup-slider-area { + display: none; + } + .hero-caption { + height: 100vh; + } + .hero-caption-inner .lead { + font-size: 60px; + margin: 20px 0px; + } + .hero-caption-inner, + .hero-caption-inner .lead-text { + text-align: center; + } + .hero-caption-inner .sublead { + text-align: center; + } + + + /* Feature Section */ + + .single-feature-item { + text-align: center; + } + .feature-right .single-feature-item:last-child { + margin-bottom: 0px; + } + .single-feature-slide { + margin-bottom: 75px; + } + /* Pricing Section */ + + .pricing-table li { + width: 100%; + margin-bottom: 75px; + } + .pricing-table li:last-child { + margin-bottom: 0px; + } + .pricing-list li { + margin-bottom: 15px !important; + } + /* Download Section */ + + .store-icon a img { + max-width: 40%; + } + /* Footer Section */ + + .footer-box h2 { + font-size: 24px; + margin-bottom: 30px; + } + /* Copyright Section */ + + .copyright-area { + text-align: center; + } +} +/* Wide Mobile Layout: 480px. */ + +@media only screen and (min-width: 481px) and (max-width: 767px) { + /* Hero Section */ + + .hero-area { + min-height: 0px; + height: auto; + } + .hero-caption { + left: -120px; + top: 350px; + transform: rotateZ(-90deg); + } +} +/* Wide Mobile Layout: 480px. */ + +@media only screen and (min-width: 240px) and (max-width: 480px) { + /* Header Section */ + + .navbar-default { + min-height: 75px; + } + .navbar-default .navbar-brand { + width: 50%; + } + .navbar-brand > img { + max-width: 100%; + } + .navbar-toggle { + margin-top: 20px; + border: 0px; + } + .navbar-default .navbar-toggle .icon-bar { + background-color: #fff; + } + .navbar-default .navbar-toggle:focus, + .navbar-default .navbar-toggle:hover { + background-color: transparent; + } + .navbar-default .navbar-collapse, + .navbar-default .navbar-form { + padding-top: 10px; + margin-top: 15px; + } + .nav > li { + margin-bottom: 0px; + } + .navbar-default .navbar-nav > li > a { + padding: 15px 25px; + } + /* Pricing Section */ + .pricing-pill li { + padding: 10px 25px; + } +} \ No newline at end of file diff --git a/www/assets/css/responsive.css b/www/assets/css/responsive.css new file mode 100644 index 0000000..49c1d6e --- /dev/null +++ b/www/assets/css/responsive.css @@ -0,0 +1,276 @@ +/* Medium Layout: 1280px. */ + +@media only screen and (min-width: 992px) and (max-width: 1200px) {} + +/* Tablet Layout: 768px. */ +@media only screen and (min-width: 768px) and (max-width: 1024px) { + + /* Header Section */ + .navbar-default { + min-height: 75px; + } + .navbar-header { + float: none; + } + .navbar-toggle { + display: block; + } + .navbar-collapse.collapse { + display: none!important; + } + .navbar-collapse.collapse.in { + display: block!important; + border-top: 1px solid #fff; + padding-top: 10px; + } + .collapsing { + overflow: hidden!important; + } + + .navbar-brand > img { + max-width: 70%; + } + .navbar-toggle { + margin-top: 20px; + border: 0px; + } + .navbar-default .navbar-toggle .icon-bar { + background-color: #fff; + } + .navbar-default .navbar-toggle:focus, + .navbar-default .navbar-toggle:hover { + background-color: transparent; + } + .navbar-default .navbar-collapse, + .navbar-default .navbar-form { + padding-top: 10px; + margin-top: 15px; + } + .navbar-default .navbar-right { + float: left !important; + /*margin-top: 5px !important;*/ + } + .navbar-default .navbar-nav > li { + float: left !important; + width: 100%; + margin-bottom: 0px; + } + .navbar-default .navbar-nav > li > a { + padding: 15px 25px; + } + .navbar-default .navbar-nav > .active > a::after { + width: 5px; + height: 100%; + } + + /* Hero Section */ + .ball, + .paper, + .coffee, + .plant, + .glass { + display: none; + } + .hero-caption { + left: 30px; + padding-right: 0px; + } + .hero-caption .lead { + font-size: 84px; + } + + /* Feature Section */ + .single-feature-item { + text-align: center; + } + .single-feature-slide { + margin-bottom: 60px; + } + + /* Pricing Section */ + .pricing-pill { + margin-bottom: 30px; + } + .pricing-table { + margin-top: 60px; + } +} + +/* Mobile Layout: 320px. */ +@media only screen and (max-width: 767px) { + /* Header Section */ + + .navbar-default { + min-height: 75px; + } + .navbar-brand > img { + max-width: 70%; + } + .navbar-toggle { + margin-top: 20px; + border: 0px; + } + .navbar-default .navbar-toggle .icon-bar { + background-color: #fff; + } + .navbar-default .navbar-toggle:focus, + .navbar-default .navbar-toggle:hover { + background-color: transparent; + } + .navbar-default .navbar-collapse, + .navbar-default .navbar-form { + padding-top: 10px; + margin-top: 15px; + } + .navbar-default .navbar-nav { + margin-top: 5px !important; + } + .navbar-default .navbar-nav > li { + margin-bottom: 0px; + } + .navbar-default .navbar-nav > li > a { + padding: 15px 25px; + } + .navbar-default .navbar-nav > .active > a::after { + width: 5px; + height: 100%; + } + /* Hero Section */ + + .hero-area { + min-height: 0px; + height: 100vh; + } + .mockup-slider { + top: 80px; + bottom: 0px; + } + .hero-social-share { + text-align: center; + } + .hero-caption { + left: -120px; + transform: rotateZ(-90deg); + display: none; + } + .hero-caption .sublead { + font-size: 24px; + margin-bottom: -10px; + } + .hero-caption .lead { + font-size: 48px; + margin-bottom: -10px; + } + .hero-caption .lead-text { + font-size: 16px; + } + /* Feature Section */ + + .single-feature-item { + text-align: center; + } + .single-feature-slide { + margin-bottom: 75px; + } + /* Pricing Section */ + + .pricing-table li { + width: 100%; + margin-bottom: 75px; + } + .pricing-table li:last-child { + margin-bottom: 0px; + } + .pricing-list li { + margin-bottom: 15px !important; + } + /* Download Section */ + + .store-icon a img { + max-width: 40%; + } + /* Footer Section */ + + .footer-box h2 { + font-size: 24px; + margin-bottom: 30px; + } + /* Copyright Section */ + + .copyright-area { + text-align: center; + } +} +/* Wide Mobile Layout: 480px. */ + +@media only screen and (min-width: 481px) and (max-width: 767px) { + /* Hero Section */ + + .hero-area { + min-height: 0px; + height: auto; + } + .hero-caption { + left: -120px; + top: 350px; + transform: rotateZ(-90deg); + } +} +/* Wide Mobile Layout: 480px. */ + +@media only screen and (min-width: 240px) and (max-width: 480px) { + /* Header Section */ + + .navbar-default { + min-height: 75px; + } + .navbar-default .navbar-brand { + width: 50%; + } + .navbar-brand > img { + max-width: 100%; + } + .navbar-toggle { + margin-top: 20px; + border: 0px; + } + .navbar-default .navbar-toggle .icon-bar { + background-color: #fff; + } + .navbar-default .navbar-toggle:focus, + .navbar-default .navbar-toggle:hover { + background-color: transparent; + } + .navbar-default .navbar-collapse, + .navbar-default .navbar-form { + padding-top: 10px; + margin-top: 15px; + } + .nav > li { + margin-bottom: 0px; + } + .navbar-default .navbar-nav > li > a { + padding: 15px 25px; + } + /* Hero Section */ + + .hero-caption { + left: -110px; + } + .hero-caption .sublead { + font-size: 20px; + margin-bottom: -10px; + } + .hero-caption .lead { + font-size: 40px; + margin-bottom: -10px; + } + .hero-caption .lead-text { + font-size: 14px; + } + /* Pricing Section */ + + .pricing-pill li { + padding: 10px 25px; + } +} \ No newline at end of file diff --git a/www/assets/css/style.blue.css b/www/assets/css/style.blue.css new file mode 100644 index 0000000..8256c32 --- /dev/null +++ b/www/assets/css/style.blue.css @@ -0,0 +1,700 @@ +/* +====================================== +Table of Contents +====================================== +- Basic Style + - Links + - Section Title Style +- Home Page + - Preloader + - Header Section + - Scroll Navigation Section + - Hero Section + - Feature Section + - Pricing Section + - Subscribe Section +====================================== +*/ +/* +------------------------------------ +- Basic Style +------------------------------------ +*/ +body { + background: #fffcf4; +} +/* Section Title Style */ +.section-title { + width: 100%; + height: auto; + margin-bottom: 90px; +} +.title-left { + margin-bottom: 40px; +} +.section-title h2 { + font-family: 'Raleway', sans-serif; + font-weight: 400; + font-size: 36px; + color: #696969; + letter-spacing: 0px; + margin-bottom: 0px; + margin-top: 10px; +} +.section-title span { + font-family: 'Raleway', sans-serif; + font-weight: 700; + font-size: 24px; + letter-spacing: 0px; + color: #7d4ccc; +} +.section-title span.small { + font-family: 'Raleway', sans-serif; + font-weight: 600; + font-size: 18px; + letter-spacing: 0px; + color: #7d4ccc; +} +.section-title p { + margin-top: 35px; + color: #212121; +} +.section-title-2 { + width: 100%; + height: auto; + text-align: center; + margin-bottom: 55px; +} +.section-title-2 h2 { + font-family: 'Raleway', sans-serif; + font-size: 36px; + font-weight: 400; + color: #212121; + margin-bottom: 30px; +} + +/* +---------------------------------- +- Preloader +---------------------------------- +*/ +.preloader-area { + position: fixed; + width: 100%; + height: 100%; + top: 0px; + left: 0px; + bottom: 0px; + right: 0px; + background: rgba(255,255,255,0.95); + z-index: 1000000; +} +.preloader-inner { + display: table; + position: relative; + width: 100%; + height: 100%; +} +.preloader { + width: 60px; + height: 60px; + display: table-cell; + vertical-align: middle; + margin: auto; + padding: 0px; + text-align: center; +} +.preloader span { + position: absolute; + display: inline-block; + width: 60px; + height: 60px; + border-radius: 100%; + background: #000000; + -webkit-animation: preloader 1.6s linear infinite; + animation: preloader 1.6s linear infinite; +} +.preloader span:last-child { + animation-delay:-0.8s; + -webkit-animation-delay:-0.8s; +} +@keyframes preloader { + 0% {transform: scale(0, 0);opacity:0.5;} + 100% {transform: scale(1, 1);opacity:0;} +} +@-webkit-keyframes preloader { + 0% {-webkit-transform: scale(0, 0);opacity:0.5;} + 100% {-webkit-transform: scale(1, 1);opacity:0;} +} + + +/* +---------------------------------- +- Header Section +---------------------------------- +*/ +.navbar-area {} +.navbar-default { + /*background: rgba(167,193,198,0.45);*/ + background: rgba(1,1,1,0.8); + border-bottom: 1px solid rgba(255,255,255,0.3); + min-height: 110px; + -webkit-transition: all 0.3s ease-in-out; + -moz-transition: all 0.3s ease-in-out; + -ms-transition: all 0.3s ease-in-out; + -o-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; +} +.navbar-default .navbar-nav > li > a { + color: #fff; + padding: 40px 25px; +} +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:active, +.navbar-default .navbar-nav > li > a:focus { + color: #7d4ccc; + text-decoration: none; + outline: 0; +} + +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:focus, +.navbar-default .navbar-nav > .active > a:hover { + background: none; + color: #7d4ccc; + position: relative; + z-index: 1; +} +.navbar-default .navbar-nav > .active > a:after { + content: ""; + position: absolute; + width: 100%; + height: 5px; + background: #7d4ccc; + top: 0px; + left: 0px; + z-index: -1; +} +.navbar-right, .navbar-nav > li { + margin: 0px; +} +.navbar-dark { + background: rgba(1,1,1,0.9);} + + +/* +---------------------------------- +- Hero Section +---------------------------------- +*/ +.hero-area { + width: 100%; + height: 100vh; + background: #F4F4F5; + position: relative; + z-index: 0; + overflow: hidden; +} +.tab-carousel-area { + position: relative; + width: 100%; + height: auto; +} +.tab-carousel-inner { + position: absolute; + top: 0px; + right: -30px; + width: 100%; + min-height: 700px; + background: #FFFCF4; + z-index: 10; + padding: 250px 70px 190px 40px; + overflow: hidden; +} +.tab-carousel-box { + position: relative; + width: 100%; + min-height: 310px; + background: #fff; + -moz-box-shadow: 1px 10px 72px -15px #ddd; + -webkit-box-shadow: 1px 10px 72px -15px #ddd; + -ms-box-shadow: 1px 10px 72px -15px #ddd; + -o-box-shadow: 1px 10px 72px -15px #ddd; + box-shadow: 1px 10px 72px -15px #ddd; +} +.tab-slide { + position: absolute; + width: 100%; + height: auto; + top: -90px; + right: -210px; + z-index: 10; +} +.tab-slide .item { + width: 100%; + height: auto; + text-align: right !important; +} +.tab-carousel-caption { + width: 50%; + height: 100%; + padding: 85px 20px 40px 50px; + position: relative; +} +.tab-slide .owl-dot { + background: #ededed; +} +.tab-slide .owl-dot.active { + background: #662d91; +} +.caption-title { + color: #7d4ccc; + font-size: 38px; + margin-bottom: 0px; + font-weight: 700; +} +.caption-subtitle { + color: #7d4ccc; + margin-bottom: 20px; + font-weight: 700; +} +.app-icon { + position: absolute; + width: 73px; + height: 73px; + top: -20px; + left: 45px; + z-index: 10; +} +.hero-caption { + position: relative; + width: 100%; + height: 740px; +} +.hero-caption-inner { + position: absolute; + width: 100%; + height: auto; + bottom: 50px; + right: -80px; + z-index: 11; + transform: rotateZ(-90deg); +} +.hero-caption-inner .lead { + font-family: 'Raleway', sans-serif; + font-size: 120px; + font-weight: 300; + color: #212121; + margin-bottom: 0px; +} +.hero-caption-inner .sublead { + font-family: 'Montserrat', sans-serif; + font-size: 48px; + font-weight: 700; + color: #662d91; + margin-bottom: -20px; + display: block; + padding-left: 85px; +} +/* +---------------------------------- +- Feature Section +---------------------------------- +*/ +.feature-area, +.single-feature-item { + width: 100%; + height: auto; + cursor: pointer; +} +.single-feature-item { + margin-bottom: 80px; +} +.single-feature-item h4 { + font-size: 20px; + margin-bottom: 20px; +} +.single-feature-item.active h4 { + color: #7d4ccc; +} +.single-feature-item p { + margin: 0; +} +.single-feature-slide { + width: 100%; + height: auto; + text-align: center; + overflow: hidden; +} +.single-feature-slide .tab-img { + display: none; + margin: auto; +} +.single-feature-slide .tab-img.active { + display: block; +} +/* +---------------------------------- +- Pricing Section +---------------------------------- +*/ +.pricing-area { + width: 100%; + height: auto; +} +.pricing-content p { + font-family: 'Montserrat', sans-serif; + font-size: 18px; + font-weight: 300; +} +.pricing-content p.fade-text { + font-weight: 400; + color: #8c8f94; +} +.pricing-content p.fade-text a { + text-decoration: underline; +} +.pill-title { + font-weight: 600; + font-size: 16px; + color: #26272d; +} +.pricing-pill { + margin: 10px 0px 80px 0px; + padding: 5px; + list-style: none; + width: auto; + height: auto; + display: inline-block; + border: 1px solid #d5d6d7; + -webkit-border-radius: 35px; + -moz-border-radius: 35px; + -ms-border-radius: 35px; + -o-border-radius: 35px; + border-radius: 35px; +} +.pricing-pill li { + display: inline-block; + margin: 0px; + padding: 10px 30px; + cursor: pointer; + font-weight: 700; + font-size: 16px; +} +.pricing-pill li.active { + background: #fff; + -webkit-border-radius: 35px; + -moz-border-radius: 35px; + -ms-border-radius: 35px; + -o-border-radius: 35px; + border-radius: 35px; + color: #26292c; + -webkit-box-shadow: 0px 0px 20px 0px #e7e7e8; + -moz-box-shadow: 0px 0px 20px 0px #e7e7e8; + -ms-box-shadow: 0px 0px 20px 0px #e7e7e8; + -o-box-shadow: 0px 0px 20px 0px #e7e7e8; + box-shadow: 0px 0px 20px 0px #e7e7e8; +} +.pricing-table, +.pricing-list { + margin: 30px 0px 0px 0px; + padding: 0px; +} +.pricing-table li { + display: inline-block; + width: 49%; + background: #ebebed; + padding: 40px 15px; + text-align: center; +} +.pricing-table li .lead { + font-family: 'Raleway', sans-serif; + font-size: 32px; + font-weight: 400; + color: #26272d; + margin-bottom: 30px; +} +.pricing-table li .price-tag { + display: inline-block; + border: 1px solid #d4d4d5; + width: auto; + height: 30px; + border-radius: 30px; + text-align: center; + line-height: 25px; + padding: 0px 15px; + margin-bottom: 50px; +} +.pricing-table li .sublead { + font-family: 'Raleway', sans-serif; + font-size: 20px; + font-weight: 400; + color: #8c8f94; +} +.pricing-list { + width: 100%; + height: auto; + margin: 45px 0px; +} +.pricing-list li { + display: block; + width: 100%; + height: auto; + padding: 5px 10px; + text-align: center; + background: transparent; +} +.pricing-list li p { + margin: 0px; + font-style: 16px; + position: relative; + display: inline-block; +} +.pricing-list li p:before { + position: absolute; + content: ""; + background-image: url('../img/tic.png'); + background-repeat: no-repeat; + background-position: center; + width: 14px; + height: 10px; + top: 10px; + left: -20px; +} +.pricing-table li.active { + position: relative; + z-index: 1; +} +.pricing-table li.active:after { + position: absolute; + content: ""; + width: 110%; + height: 110%; + top: -5%; + left: -5%; + background: #fff; + z-index: -1; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + -ms-border-radius: 15px; + -o-border-radius: 15px; + border-radius: 15px; + -webkit-box-shadow: 0px 0px 20px 0px #e7e7e8; + -moz-box-shadow: 0px 0px 20px 0px #e7e7e8; + -ms-box-shadow: 0px 0px 20px 0px #e7e7e8; + -o-box-shadow: 0px 0px 20px 0px #e7e7e8; + box-shadow: 0px 0px 20px 0px #e7e7e8; +} +.pricing-table li.active .btn-outline-blue { + background: #7d4ccc; + color: #fff; + font-weight: 400; + border-color: #7d4ccc; +} +.pricing-table li.active .btn-outline-blue:hover { + background: #7045b6; + border-color: #7045b6; + color: #fff !important; +} +/* +---------------------------------- +- Subscribe Section +---------------------------------- +*/ +.subscribe-area { + width: 100%; + height: auto; + background-image: url('../img/subscribe-bg.jpg'); + background-repeat: no-repeat; + background-position: center; + background-size: cover; + background-attachment: fixed; + position: relative; + z-index: 1; +} +.subscribe-area:after { + position: absolute; + content: ""; + width: 100%; + height: 100%; + background: #111; + opacity: 0.3; + z-index: -1; + top: 0px; + left: 0px; +} +.subscribe-area h4 { + font-family: 'Raleway', sans-serif; + font-size: 24px; + font-weight: 400; + color: #fff; + margin-bottom: 20px; +} +.form-subscribe { + background: transparent; + text-align: center; + border: 0px; + border-bottom: 1px solid #f9f9f9; + box-shadow: none !important; + color: #f9f9f9; +} +/* +---------------------------------- +- Download Section +---------------------------------- +*/ +.download-area { + width: 100%; + height: auto; + background-image: url('../img/shape.png'); + background-repeat: no-repeat; + background-position: bottom center; + background-size: contain; +} +.download-app { + width: 100%; + height: auto; + margin-top: 100px; +} + +/* +---------------------------------- +- Footer Section +---------------------------------- +*/ +.footer-area { + width: 100%; + height: auto; + padding: 80px 0px; + background-image: url('../img/footer-bg.jpg'); + background-repeat: no-repeat; + background-position: center; + background-size: cover; + background-attachment: fixed; + position: relative; + z-index: 1; + color: #fff; +} +.footer-area:after { + position: absolute; + content: ""; + width: 100%; + height: 100%; + background: #111; + opacity: 0.9; + z-index: -1; + top: 0px; + left: 0px; +} +.footer-area h1, +.footer-area h2, +.footer-area h3, +.footer-area h4, +.footer-area p, +.footer-area span, +.footer-area a { + color: #fff !important; +} +.footer-area a:hover { + color: #7d4ccc !important; +} +.footer-logo h2 { + font-size: 30px; +} +.footer-logo h2 span.thin { + font-family: 'Raleway', sans-serif; + font-size: 30px; + font-weight: 400 !important; +} +.footer-logo p { + font-size: 14px; +} +.footer-box { + width: 100%; + height: auto; + margin-bottom: 50px; +} +.footer-box h2 { + margin-bottom: 50px; +} +.footer-box h4 { + text-transform: uppercase; + margin-bottom: 35px; +} +.footer-menu { + padding: 0px; + margin: 0px; +} +.contact-content { + position: relative; +} +.contact-content h3, +.contact-content span.thin { + font-family: 'Raleway', sans-serif; + font-size: 24px; + font-weight: 300; +} +.contact-content p { + font-family: 'Raleway', sans-serif; + font-size: 14px; + font-weight: 300; + margin-bottom: 0px; +} +.social-icon { + padding: 0px; + margin: 25px 0 0 0; +} +.social-icon li { + display: inline-block; + margin: 0px; +} +.social-icon li a { + padding: 10px; + display: block; + width: 40px; + text-align: center; + border: 1px solid #fff; + margin-right: 10px; +} +.vr-title-area { + position: absolute; + width: auto; + height: auto; + top: 92px; + left: -90px; + -webkit-transform: rotateZ(-90deg); + -moz-transform: rotateZ(-90deg); + -ms-transform: rotateZ(-90deg); + -o-transform: rotateZ(-90deg); + transform: rotateZ(-90deg); +} +.download-link { + margin-bottom: 50px; +} +.download-link a { + font-size: 14px; +} +/* +---------------------------------- +- Copyright Section +---------------------------------- +*/ +.copyright-area { + width: 100%; + min-height: 70px; + padding: 25px 0px; + text-align: right; +} +.copyright-area span { + color: #696969; +} + + + + +/* +---------------------------------- +- +---------------------------------- +*/ +/* Your css code */ diff --git a/www/assets/css/style.css b/www/assets/css/style.css new file mode 100644 index 0000000..777f959 --- /dev/null +++ b/www/assets/css/style.css @@ -0,0 +1,686 @@ +/* +Template Name: Appsvision +Template URI: http://craftytheme.com/demo/html/appsvision +Author Name: Md.Rabiul Islam +Author URI: http://craftytheme.com +====================================== +Table of Contents +====================================== +- Home Page + - Preloader + - Header Section + - Hero Section + - Feature Section + - Pricing Section + - Subscribe Section +- Basic Style + - Section Title +====================================== +*/ + +/* +---------------------------------- +- Preloader +---------------------------------- +*/ +.preloader-area { + position: fixed; + width: 100%; + height: 100%; + top: 0px; + left: 0px; + bottom: 0px; + right: 0px; + background: rgba(255,255,255,0.95); + z-index: 1000000; +} +.preloader-inner { + display: table; + position: relative; + width: 100%; + height: 100%; +} +.preloader { + width: 60px; + height: 60px; + display: table-cell; + vertical-align: middle; + margin: auto; + padding: 0px; + text-align: center; +} +.preloader span { + position: absolute; + display: inline-block; + width: 60px; + height: 60px; + border-radius: 100%; + background: #000000; + -webkit-animation: preloader 1.6s linear infinite; + animation: preloader 1.6s linear infinite; +} +.preloader span:last-child { + animation-delay:-0.8s; + -webkit-animation-delay:-0.8s; +} +@keyframes preloader { + 0% {transform: scale(0, 0);opacity:0.5;} + 100% {transform: scale(1, 1);opacity:0;} +} +@-webkit-keyframes preloader { + 0% {-webkit-transform: scale(0, 0);opacity:0.5;} + 100% {-webkit-transform: scale(1, 1);opacity:0;} +} + + +/* +---------------------------------- +- Header Section +---------------------------------- +*/ +.navbar-area {} +.navbar-default { + background: rgba(167,193,198,0.45); + border-bottom: 1px solid rgba(255,255,255,0.3); + min-height: 110px; + -webkit-transition: all 0.3s ease-in-out; + -moz-transition: all 0.3s ease-in-out; + -ms-transition: all 0.3s ease-in-out; + -o-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; +} +.navbar-default .navbar-nav > li > a { + color: #fff; + padding: 40px 25px; +} +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:active, +.navbar-default .navbar-nav > li > a:focus { + color: #74a9bc; + text-decoration: none; + outline: 0; +} + +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:focus, +.navbar-default .navbar-nav > .active > a:hover { + background: none; + color: #74a9bc; + position: relative; + z-index: 1; +} +.navbar-default .navbar-nav > .active > a:after { + content: ""; + position: absolute; + width: 100%; + height: 5px; + background: #74a9bc; + top: 0px; + left: 0px; + z-index: -1; +} +.navbar-right, .navbar-nav > li { + margin: 0px; +} +.navbar-dark { + background: rgba(1,1,1,0.8); +} +/* +---------------------------------- +- Hero Section +---------------------------------- +*/ +.hero-area { + width: 100%; + min-height: 100vh; + background-image: url('../img/bg.jpg'); + background-repeat: no-repeat; + background-position: center; + background-size: cover; + position: relative; + z-index: 0; + overflow: hidden; +} +.ball, .paper, .coffee, .plant, .glass { + position: absolute; +} +.ball { + top: 100px; + left: -30px; + z-index: -1; +} +.paper { + bottom: -65px; + left: -150px; + z-index: -2; +} +.coffee { + bottom: -255px; + left: -190px; + z-index: -1; +} +.plant { + right: 70px; + top: 35px; + z-index: -1; +} +.glass { + right: 75px; + bottom: 120px; + z-index: -1; +} +.mockup-slider-area { + min-height: 950px; + position: relative; +} +.mockup-slider { + position: absolute; + width: 100%; + height: auto; + left: 0px; + bottom: 200px; + z-index: 2; +} +.hero-social-share { + text-align: right; +} +.hero-social-share span { + color: #fff; + display: inline-block; + margin-right: 20px; +} +.hero-social-share a { + color: #fff; + display: inline-block; + width: 30px; + height: 30px; +} +.hero-caption { + position: absolute; + width: 100%; + height: auto; + top: 200px; + left: 100px; + padding-right: 50px; + z-index: 3; +} +.hero-caption .sublead { + display: block; + text-align: right; + font-family: 'Montserrat', sans-serif; + font-weight: 700; + font-size: 48px; + color: #fff; + margin-bottom: 0px; +} +.hero-caption .lead { + display: block; + text-align: right; + font-family: 'Raleway', sans-serif; + font-weight: 300; + font-size: 98px; + color: #fff; + margin-bottom: 0px; +} +.hero-caption .lead-text { + display: block; + text-align: right; + font-family: 'Montserrat', sans-serif; + font-weight: normal; + font-size: 24px; + color: #fff; +} +/* +---------------------------------- +- Feature Section +---------------------------------- +*/ +.feature-area, +.single-feature-item { + width: 100%; + height: auto; + cursor: pointer; +} +.single-feature-item { + margin-bottom: 80px; +} +.single-feature-item h4 { + font-size: 20px; + margin-bottom: 20px; +} +.single-feature-item.active h4 { + color: #8cbdcf; +} +.single-feature-item p { + margin: 0; +} +.single-feature-slide { + width: 100%; + height: auto; + text-align: center; + overflow: hidden; +} +.single-feature-slide .tab-img { + display: none; + margin: auto; +} +.single-feature-slide .tab-img.active { + display: block; +} +/* +---------------------------------- +- Pricing Section +---------------------------------- +*/ +.pricing-area { + width: 100%; + height: auto; +} +.pricing-content p { + font-family: 'Montserrat', sans-serif; + font-size: 18px; + font-weight: 300; +} +.pricing-content p.fade-text { + font-weight: 400; + color: #8c8f94; +} +.pricing-content p.fade-text a { + text-decoration: underline; +} +.pill-title { + font-weight: 600; + font-size: 16px; + color: #26272d; +} +.pricing-pill { + margin: 10px 0px 80px 0px; + padding: 5px; + list-style: none; + width: auto; + height: auto; + display: inline-block; + border: 1px solid #d5d6d7; + -webkit-border-radius: 35px; + -moz-border-radius: 35px; + -ms-border-radius: 35px; + -o-border-radius: 35px; + border-radius: 35px; +} +.pricing-pill li { + display: inline-block; + margin: 0px; + padding: 10px 30px; + cursor: pointer; + font-weight: 700; + font-size: 16px; +} +.pricing-pill li.active { + background: #fff; + -webkit-border-radius: 35px; + -moz-border-radius: 35px; + -ms-border-radius: 35px; + -o-border-radius: 35px; + border-radius: 35px; + color: #26292c; + -webkit-box-shadow: 0px 0px 20px 0px #e7e7e8; + -moz-box-shadow: 0px 0px 20px 0px #e7e7e8; + -ms-box-shadow: 0px 0px 20px 0px #e7e7e8; + -o-box-shadow: 0px 0px 20px 0px #e7e7e8; + box-shadow: 0px 0px 20px 0px #e7e7e8; +} +.pricing-table, +.pricing-list { + margin: 30px 0px 0px 0px; + padding: 0px; +} +.pricing-table li { + display: inline-block; + width: 49%; + background: #ebebed; + padding: 40px 15px; + text-align: center; +} +.pricing-table li .lead { + font-family: 'Raleway', sans-serif; + font-size: 32px; + font-weight: 400; + color: #26272d; + margin-bottom: 30px; +} +.pricing-table li .price-tag { + display: inline-block; + border: 1px solid #d4d4d5; + width: auto; + height: 30px; + border-radius: 30px; + text-align: center; + line-height: 25px; + padding: 0px 15px; + margin-bottom: 50px; +} +.pricing-table li .sublead { + font-family: 'Raleway', sans-serif; + font-size: 20px; + font-weight: 400; + color: #8c8f94; +} +.pricing-list { + width: 100%; + height: auto; + margin: 45px 0px; +} +.pricing-list li { + display: block; + width: 100%; + height: auto; + padding: 5px 10px; + text-align: center; + background: transparent; +} +.pricing-list li p { + margin: 0px; + font-style: 16px; + position: relative; + display: inline-block; +} +.pricing-list li p:before { + position: absolute; + content: ""; + background-image: url('../img/tic.png'); + background-repeat: no-repeat; + background-position: center; + width: 14px; + height: 10px; + top: 10px; + left: -20px; +} +.pricing-table li.active { + position: relative; + z-index: 1; +} +.pricing-table li.active:after { + position: absolute; + content: ""; + width: 110%; + height: 110%; + top: -5%; + left: -5%; + background: #fff; + z-index: -1; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + -ms-border-radius: 15px; + -o-border-radius: 15px; + border-radius: 15px; + -webkit-box-shadow: 0px 0px 20px 0px #e7e7e8; + -moz-box-shadow: 0px 0px 20px 0px #e7e7e8; + -ms-box-shadow: 0px 0px 20px 0px #e7e7e8; + -o-box-shadow: 0px 0px 20px 0px #e7e7e8; + box-shadow: 0px 0px 20px 0px #e7e7e8; +} +.pricing-table li.active .btn-outline { + background: #8cbdcf; + color: #fff; + font-weight: 400; + border-color: #8cbdcf; +} +.pricing-table li.active .btn-outline:hover { + background: #74a9bc; + border-color: #74a9bc; + color: #fff !important; +} +/* +---------------------------------- +- Subscribe Section +---------------------------------- +*/ +.subscribe-area { + width: 100%; + height: auto; + background-image: url('../img/subscribe-bg.jpg'); + background-repeat: no-repeat; + background-position: center; + background-size: cover; + background-attachment: fixed; + position: relative; + z-index: 1; +} +.subscribe-area:after { + position: absolute; + content: ""; + width: 100%; + height: 100%; + background: #111; + opacity: 0.3; + z-index: -1; + top: 0px; + left: 0px; +} +.subscribe-area h4 { + font-family: 'Raleway', sans-serif; + font-size: 24px; + font-weight: 400; + color: #fff; + margin-bottom: 20px; +} +.form-subscribe { + background: transparent; + text-align: center; + border: 0px; + border-bottom: 1px solid #f9f9f9; + box-shadow: none !important; + color: #f9f9f9; +} +/* +---------------------------------- +- Download Section +---------------------------------- +*/ +.download-area { + width: 100%; + height: auto; + background-image: url('../img/shape.png'); + background-repeat: no-repeat; + background-position: bottom center; + background-size: contain; +} +.download-app { + width: 100%; + height: auto; + margin-top: 100px; +} + +/* +---------------------------------- +- Footer Section +---------------------------------- +*/ +.footer-area { + width: 100%; + height: auto; + padding: 80px 0px; + background-image: url('../img/footer-bg.jpg'); + background-repeat: no-repeat; + background-position: center; + background-size: cover; + background-attachment: fixed; + position: relative; + z-index: 1; + color: #fff; +} +.footer-area:after { + position: absolute; + content: ""; + width: 100%; + height: 100%; + background: #111; + opacity: 0.9; + z-index: -1; + top: 0px; + left: 0px; +} +.footer-area h1, +.footer-area h2, +.footer-area h3, +.footer-area h4, +.footer-area p, +.footer-area span, +.footer-area a { + color: #fff; +} +.footer-area a:hover, +.footer-area a:active, +.footer-area a:focus { + color: #74a9bc; +} +.footer-logo h2 { + font-size: 30px; +} +.footer-logo h2 span.thin { + font-family: 'Raleway', sans-serif; + font-size: 30px; + font-weight: 400 !important; +} +.footer-logo p { + font-size: 14px; +} +.footer-box { + width: 100%; + height: auto; + margin-bottom: 50px; +} +.footer-box h2 { + margin-bottom: 50px; +} +.footer-box h4 { + text-transform: uppercase; + margin-bottom: 35px; +} +.footer-menu { + padding: 0px; + margin: 0px; +} +.contact-content { + position: relative; +} +.contact-content h3, +.contact-content span.thin { + font-family: 'Raleway', sans-serif; + font-size: 24px; + font-weight: 300; +} +.contact-content p { + font-family: 'Raleway', sans-serif; + font-size: 14px; + font-weight: 300; + margin-bottom: 0px; +} +.social-icon { + padding: 0px; + margin: 25px 0 0 0; +} +.social-icon li { + display: inline-block; + margin: 0px; +} +.social-icon li a { + padding: 10px; + display: block; + width: 40px; + text-align: center; + border: 1px solid #fff; + margin-right: 10px; +} +.vr-title-area { + position: absolute; + width: auto; + height: auto; + top: 92px; + left: -90px; + -webkit-transform: rotateZ(-90deg); + -moz-transform: rotateZ(-90deg); + -ms-transform: rotateZ(-90deg); + -o-transform: rotateZ(-90deg); + transform: rotateZ(-90deg); +} +.download-link { + margin-bottom: 50px; +} +.download-link a { + font-size: 14px; +} +/* +---------------------------------- +- Copyright Section +---------------------------------- +*/ +.copyright-area { + width: 100%; + min-height: 70px; + padding: 25px 0px; + text-align: right; +} +.copyright-area span { + color: #696969; +} + +/* +------------------------------------ +- Section Title (Default) +------------------------------------ +*/ +.section-title { + width: 100%; + height: auto; + margin-bottom: 90px; +} +.title-left { + margin-bottom: 40px; +} +.section-title h2 { + font-family: 'Raleway', sans-serif; + font-weight: 400; + font-size: 36px; + color: #696969; + letter-spacing: 0px; + margin-bottom: 0px; + margin-top: 10px; +} +.section-title span { + font-family: 'Raleway', sans-serif; + font-weight: 700; + font-size: 24px; + letter-spacing: 0px; + color: #8cbdcf; +} +.section-title span.small { + font-family: 'Raleway', sans-serif; + font-weight: 600; + font-size: 18px; + letter-spacing: 0px; + color: #8cbdcf; +} +.section-title p { + margin-top: 35px; + color: #212121; +} +.section-title-2 { + width: 100%; + height: auto; + text-align: center; + margin-bottom: 55px; +} +.section-title-2 h2 { + font-family: 'Raleway', sans-serif; + font-size: 36px; + font-weight: 400; + color: #212121; + margin-bottom: 30px; +} +/* +---------------------------------- +- +---------------------------------- +*/ +/* Your css code */ diff --git a/www/assets/css/style.dark.css b/www/assets/css/style.dark.css new file mode 100644 index 0000000..ec317f3 --- /dev/null +++ b/www/assets/css/style.dark.css @@ -0,0 +1,736 @@ +/* +====================================== +Table of Contents +====================================== +- Home Page + - Preloader + - Header Section + - Scroll Navigation Section + - Hero Section + - Feature Section + - Pricing Section + - Subscribe Section + - Download Section + - Footer Section +====================================== +*/ + +/* +---------------------------------- +- General Style +---------------------------------- +*/ +/* +------------------------------------ +- Section Title +------------------------------------ +*/ +.section-title { + width: 100%; + height: auto; + margin-bottom: 90px; +} +.title-left { + margin-bottom: 40px; +} +.section-title h2 { + font-family: 'Raleway', sans-serif; + font-weight: 400; + font-size: 36px; + color: #fff; + letter-spacing: 0px; + margin-bottom: 0px; + margin-top: 10px; +} +.section-title span { + font-family: 'Raleway', sans-serif; + font-weight: 700; + font-size: 24px; + letter-spacing: 0px; + color: #f9f9f9; +} +.section-title span.small { + font-family: 'Raleway', sans-serif; + font-weight: 600; + font-size: 18px; + letter-spacing: 0px; + color: #f9f9f9; +} +.section-title p { + margin-top: 35px; + color: #fff; +} +.section-title-2 { + width: 100%; + height: auto; + text-align: center; + margin-bottom: 55px; +} +.section-title-2 h2 { + font-family: 'Raleway', sans-serif; + font-size: 36px; + font-weight: 400; + color: #fff; + margin-bottom: 30px; +} +/* +---------------------------------- +- Preloader +---------------------------------- +*/ +.preloader-area { + position: fixed; + width: 100%; + height: 100%; + top: 0px; + left: 0px; + bottom: 0px; + right: 0px; + background: rgba(255,255,255,0.95); + z-index: 1000000; +} +.preloader-inner { + display: table; + position: relative; + width: 100%; + height: 100%; +} +.preloader { + width: 60px; + height: 60px; + display: table-cell; + vertical-align: middle; + margin: auto; + padding: 0px; + text-align: center; +} +.preloader span { + position: absolute; + display: inline-block; + width: 60px; + height: 60px; + border-radius: 100%; + background: #000000; + -webkit-animation: preloader 1.6s linear infinite; + animation: preloader 1.6s linear infinite; +} +.preloader span:last-child { + animation-delay:-0.8s; + -webkit-animation-delay:-0.8s; +} +@keyframes preloader { + 0% {transform: scale(0, 0);opacity:0.5;} + 100% {transform: scale(1, 1);opacity:0;} +} +@-webkit-keyframes preloader { + 0% {-webkit-transform: scale(0, 0);opacity:0.5;} + 100% {-webkit-transform: scale(1, 1);opacity:0;} +} +/* +---------------------------------- +- Header Section +---------------------------------- +*/ +.navbar-area {} +.navbar-default { + background: transparent; + border-bottom: none; + min-height: 110px; + -webkit-transition: all 0.3s ease-in-out; + -moz-transition: all 0.3s ease-in-out; + -ms-transition: all 0.3s ease-in-out; + -o-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; +} +.navbar-default .navbar-nav > li > a { + color: #fff; + padding: 40px 25px; +} +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:active, +.navbar-default .navbar-nav > li > a:focus { + color: #d31050; + text-decoration: none; + outline: 0; +} + +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:focus, +.navbar-default .navbar-nav > .active > a:hover { + background: none; + color: #d31050; + position: relative; + z-index: 1; +} +.navbar-default .navbar-nav > .active > a:after { + content: ""; + position: absolute; + width: 100%; + height: 5px; + background: #d31050; + top: 0px; + left: 0px; + z-index: -1; +} +.navbar-right, .navbar-nav > li { + margin: 0px; +} +.navbar-dark { + background: rgba(1,1,1,0.8); +} + + +/* +---------------------------------- +- Hero Section +---------------------------------- +*/ +.hero-area { + width: 100%; + min-height: 100vh; + background: #15181d; + position: relative; + z-index: 0; + display: table; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -ms-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.hero-area:after { + content: ""; + position: absolute; + width: 100%; + height: 100%; + top: 0px; + left: 0px; + background-image: url('../img/dark-hero-bg.jpg'); + background-size: cover; + background-repeat: no-repeat; + background-position: center center; + opacity: 0.11; + z-index: -1; +} +.dark-mockup-slider-area { + width: 100%; + min-height: 100vh; + position: relative; +} +.dark-mockup-slider { + position: absolute; + width: 100%; + height: auto; + right: 0px; + bottom: 0%; +} +.dark-mockup-slide .owl-item img { + text-align: right !important; + margin-right: -8px !important; +} +.hero-caption { + position: relative; + width: 100%; + height: 750px; + display: table; +} +.hero-caption-inner { + display: table-cell; + vertical-align: middle; + width: 100%; + height: auto; + text-align: right +} +.hero-caption-inner .lead { + font-family: 'Raleway', sans-serif; + font-size: 120px; + font-weight: 300; + color: #fff; + margin-bottom: 0px; +} +.hero-caption-inner .sublead { + font-family: 'Montserrat', sans-serif; + font-size: 48px; + font-weight: 700; + color: #FF2549; + margin-bottom: -20px; + display: block; + padding-left: 85px; +} +.hero-caption-inner .lead-text { + display: block; + text-align: right; + font-family: 'Montserrat', sans-serif; + font-weight: normal; + font-size: 24px; + color: #fff; +} +.dark-mockup-slide .owl-dots { + position: absolute; + bottom: 280px; + left: -210px; + transform: rotate(90deg); + /*overflow: hidden;*/ +} +.dark-mockup-slide .owl-dot { + width: 15px; + height: 15px; + margin-right: 20px; + -webkit-transition: all 0.3s ease-in-out; + -moz-transition: all 0.3s ease-in-out; + -ms-transition: all 0.3s ease-in-out; + -o-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; +} +.dark-mockup-slide .owl-dot.active { + background: #ff2549; + position: relative; + margin: 0px 30px; + -webkit-transition: all 0.3s ease-in-out; + -moz-transition: all 0.3s ease-in-out; + -ms-transition: all 0.3s ease-in-out; + -o-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; +} +.dark-mockup-slide .owl-dot.active:after { + content: ""; + width: 40px; + height: 40px; + border-radius: 50%; + background: #ff2549; + position: absolute; + opacity: 0.4; + top: -13px; + left: -13px; +} +.vr-line { + display: block; + position: absolute; + left: -28px; + bottom: 30px; + width: 1px; + height: 90%; + background: #f9f9f9; + opacity: 0.2; + z-index: -2; +} +/* +---------------------------------- +- Feature Section +---------------------------------- +*/ +.feature-area { + background-image: url('../img/dark-bg.jpg'); + background-repeat: no-repeat; + background-position: center bottom; + background-size: cover; + background-attachment: fixed; + width: 100%; + height: auto; +} +.single-feature-item { + width: 100%; + height: auto; + cursor: pointer; +} +.single-feature-item { + margin-bottom: 80px; +} +.single-feature-item h4 { + font-size: 20px; + margin-bottom: 20px; +} +.single-feature-item.active h4 { + color: #ed145b; +} +.single-feature-item p { + margin: 0; +} +.single-feature-slide { + width: 100%; + height: auto; + text-align: center; + overflow: hidden; +} +.single-feature-slide .tab-img { + display: none; + margin: auto; +} +.single-feature-slide .tab-img.active { + display: block; +} +/* +---------------------------------- +- Pricing Section +---------------------------------- +*/ +.pricing-area { + width: 100%; + height: auto; + background-image: url('../img/dark-bg.jpg'); + background-repeat: no-repeat; + background-position: center bottom; + background-size: cover; +} +.pricing-content p { + font-family: 'Montserrat', sans-serif; + font-size: 18px; + font-weight: 300; +} +.pricing-content p.fade-text { + font-weight: 400; + color: #8c8f94; +} +.pricing-content p.fade-text a { + text-decoration: underline; +} +.pill-title { + font-weight: 600; + font-size: 16px; + color: #f9f9f9; +} +.pricing-pill { + margin: 10px 0px 80px 0px; + padding: 5px; + list-style: none; + width: auto; + height: auto; + display: inline-block; + border: 1px solid #d5d6d7; + -webkit-border-radius: 35px; + -moz-border-radius: 35px; + -ms-border-radius: 35px; + -o-border-radius: 35px; + border-radius: 35px; +} +.pricing-pill li { + display: inline-block; + margin: 0px; + padding: 10px 30px; + cursor: pointer; + font-weight: 700; + font-size: 16px; +} +.pricing-pill li.active { + background: #fff; + -webkit-border-radius: 35px; + -moz-border-radius: 35px; + -ms-border-radius: 35px; + -o-border-radius: 35px; + border-radius: 35px; + -webkit-box-shadow: 0px 0px 5px 0px #e7e7e8; + -moz-box-shadow: 0px 0px 5px 0px #e7e7e8; + -ms-box-shadow: 0px 0px 5px 0px #e7e7e8; + -o-box-shadow: 0px 0px 5px 0px #e7e7e8; + box-shadow: 0px 0px 5px 0px #e7e7e8; +} +.pricing-pill li.active span { + color: #212121; +} +.pricing-table, +.pricing-list { + margin: 30px 0px 0px 0px; + padding: 0px; +} +.pricing-table li { + display: inline-block; + width: 49%; + background: #ebebed; + padding: 40px 15px; + text-align: center; +} +.pricing-table li .lead-title { + font-family: 'Raleway', sans-serif; + font-size: 32px; + font-weight: 400; + color: #26272d; + margin-bottom: 30px; +} +.pricing-table li .price-tag { + display: inline-block; + border: 1px solid #d4d4d5; + width: auto; + height: 30px; + border-radius: 30px; + text-align: center; + line-height: 25px; + color: #212121; + padding: 0px 15px; + margin-bottom: 50px; +} +.pricing-table li .sublead { + font-family: 'Raleway', sans-serif; + font-size: 20px; + font-weight: 400; + color: #8c8f94; +} +.pricing-list { + width: 100%; + height: auto; + margin: 45px 0px; +} +.pricing-list li { + display: block; + width: 100%; + height: auto; + padding: 5px 10px; + text-align: center; + background: transparent; +} +.pricing-list li p { + margin: 0px; + font-style: 16px; + color: #212121; + position: relative; + display: inline-block; +} +.pricing-list li p:before { + position: absolute; + content: ""; + background-image: url('../img/tic.png'); + background-repeat: no-repeat; + background-position: center; + width: 14px; + height: 10px; + top: 10px; + left: -20px; +} +.pricing-table li.active { + position: relative; + z-index: 1; +} +.pricing-table li.active:after { + position: absolute; + content: ""; + width: 110%; + height: 110%; + top: -5%; + left: -5%; + background: #fff; + z-index: -1; + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + -ms-border-radius: 15px; + -o-border-radius: 15px; + border-radius: 15px; + -webkit-box-shadow: 0px 0px 5px 0px #e7e7e8; + -moz-box-shadow: 0px 0px 5px 0px #e7e7e8; + -ms-box-shadow: 0px 0px 5px 0px #e7e7e8; + -o-box-shadow: 0px 0px 5px 0px #e7e7e8; + box-shadow: 0px 0px 5px 0px #e7e7e8; +} +.pricing-table li.active .btn-outline-megento { + background: #ed145b; + color: #fff; + font-weight: 400; + border-color: #ed145b; +} +.pricing-table li.active .btn-outline-megento:hover { + background: #d31050; + border-color: #d31050; + color: #fff !important; +} +/* +---------------------------------- +- Subscribe Section +---------------------------------- +*/ +.subscribe-area { + width: 100%; + height: auto; + background-image: url('../img/subscribe-bg.jpg'); + background-repeat: no-repeat; + background-position: center; + background-size: cover; + background-attachment: fixed; + position: relative; + z-index: 1; +} +.subscribe-area:after { + position: absolute; + content: ""; + width: 100%; + height: 100%; + background: #111; + opacity: 0.3; + z-index: -1; + top: 0px; + left: 0px; +} +.subscribe-area h4 { + font-family: 'Raleway', sans-serif; + font-size: 24px; + font-weight: 400; + color: #fff; + margin-bottom: 20px; +} +.form-subscribe { + background: transparent; + text-align: center; + border: 0px; + border-bottom: 1px solid #f9f9f9; + box-shadow: none !important; + color: #f9f9f9; +} +/* +---------------------------------- +- Download Section +---------------------------------- +*/ +.download-area { + width: 100%; + height: auto; + background-image: url('../img/dark-bg.jpg'); + background-repeat: no-repeat; + background-position: center bottom; + background-attachment: fixed; + background-size: cover; +} +.download-app { + width: 100%; + height: auto; + margin-top: 100px; +} + +/* +---------------------------------- +- Footer Section +---------------------------------- +*/ +.footer-area { + width: 100%; + height: auto; + padding: 80px 0px; + background-image: url('../img/footer-bg.jpg'); + background-repeat: no-repeat; + background-position: center; + background-size: cover; + background-attachment: fixed; + position: relative; + z-index: 1; + color: #fff; +} +.footer-area:after { + position: absolute; + content: ""; + width: 100%; + height: 100%; + background: #111; + opacity: 0.9; + z-index: -1; + top: 0px; + left: 0px; +} +.footer-area h1, +.footer-area h2, +.footer-area h3, +.footer-area h4, +.footer-area p, +.footer-area span, +.footer-area a, +.footer-area li a { + color: #fff !important; +} +.footer-area li a:hover { + color: #d31050 !important; +} +.footer-logo h2 { + font-size: 30px; +} +.footer-logo h2 span.thin { + font-family: 'Raleway', sans-serif; + font-size: 30px; + font-weight: 400 !important; +} +.footer-logo p { + font-size: 14px; +} +.footer-box { + width: 100%; + height: auto; + margin-bottom: 50px; +} +.footer-box h2 { + margin-bottom: 50px; +} +.footer-box h4 { + text-transform: uppercase; + margin-bottom: 35px; +} +.footer-menu { + padding: 0px; + margin: 0px; +} +.contact-content { + position: relative; +} +.contact-content h3, +.contact-content span.thin { + font-family: 'Raleway', sans-serif; + font-size: 24px; + font-weight: 300; +} +.contact-content p { + font-family: 'Raleway', sans-serif; + font-size: 14px; + font-weight: 300; + margin-bottom: 0px; +} +.social-icon { + padding: 0px; + margin: 25px 0 0 0; +} +.social-icon li { + display: inline-block; + margin: 0px; +} +.social-icon li a { + padding: 10px; + display: block; + width: 40px; + text-align: center; + border: 1px solid #fff; + margin-right: 10px; +} +.vr-title-area { + position: absolute; + width: auto; + height: auto; + top: 92px; + left: -90px; + -webkit-transform: rotateZ(-90deg); + -moz-transform: rotateZ(-90deg); + -ms-transform: rotateZ(-90deg); + -o-transform: rotateZ(-90deg); + transform: rotateZ(-90deg); +} +.download-link { + margin-bottom: 50px; +} +.download-link a { + font-size: 14px; +} +/* +---------------------------------- +- Copyright Section +---------------------------------- +*/ +.copyright-area { + width: 100%; + min-height: 70px; + padding: 25px 0px; + text-align: right; +} +.copyright-area span { + color: #696969; +} + + + + +/* +---------------------------------- +- +---------------------------------- +*/ +/* Your css code */ diff --git a/www/assets/css/typography.css b/www/assets/css/typography.css new file mode 100644 index 0000000..d42680a --- /dev/null +++ b/www/assets/css/typography.css @@ -0,0 +1,261 @@ +/* +Table Of Contents +========================= +- Default Typography +========================= +*/ +/* +-------------------------- +- Default Typography +-------------------------- +*/ +h1, h2, h3, h4, h5, h6 { + margin: 0; + font-family: 'Raleway', sans-serif; + font-weight: 700; + color: #696969; + letter-spacing: 0px; +} +.dark h1, .dark h2, .dark h3, .dark h4, .dark h5, .dark h6 { + margin: 0; + font-family: 'Raleway', sans-serif; + font-weight: 700; + color: #fff; + letter-spacing: 0px; +} + + +h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { + font-weight: inherit; + font-family: 'Montserrat', sans-serif; +} +h1 { + font-size: 36px; + line-height: 70px; + letter-spacing: -1px; + margin-bottom: 20px; +} +h2 { + font-size: 32px; + line-height: 40px; + margin-bottom: 20px; +} +h3 { + font-size: 24px; + line-height: 30px; + margin-bottom: 20px; +} +h4 { + font-size: 18px; + line-height: 27px; +} +h5 { + font-size: 16px; + line-height: 24px; +} +h6 { + font-size: 14px; + line-height: 24px; +} + +p { + margin: 0 0 20px 0; + font-family: 'Montserrat', sans-serif; + font-weight: 400; + font-size: 16px; + color: #3c3c3c; + letter-spacing: 0px; + line-height: 28px; +} +.dark p { + margin: 0 0 20px 0; + font-family: 'Montserrat', sans-serif; + font-weight: 400; + font-size: 16px; + color: #f9f9f9; + letter-spacing: 0px; + line-height: 28px; +} +p img { + margin: 0; +} +span { + font-family: 'Montserrat', sans-serif; + font-weight: 400; + font-size: 16px; + color: #3c3c3c; + letter-spacing: 0px; + line-height: 28px; +} +.dark span { + font-family: 'Montserrat', sans-serif; + font-weight: 400; + font-size: 16px; + color: #f9f9f9; + letter-spacing: 0px; + line-height: 28px; +} +/* em and strong */ +em { + font: 15px/30px; +} +strong, +b { + font: 15px/30px; +} +small { + font-size: 11px; + line-height: inherit; +} + + +/* blockquotes */ +blockquote { + margin: 10px 0px; + padding-left: 40px; + position: relative; + border-left: 0px; +} +blockquote:before { + content: "\201C"; + opacity: 0.5; + font-size: 80px; + line-height: 0px; + margin: 0; + font-family: arial, sans-serif; + position: absolute; + top: 30px; + left: 0; +} +blockquote p { + font-family: 'Raleway', sans-serif; + font-style: italic; + padding: 0; + font-size: 18px; + line-height: 36px; +} +blockquote cite { + display: block; + font-size: 12px; + font-style: normal; + line-height: 18px; +} +blockquote cite:before { content: "\2014 \0020"; } +blockquote cite a, +blockquote cite a:visited { color: #8B9798; border: none } + +/* abbreviations */ +abbr { + color: #444; + font-family: 'Montserrat', sans-serif; + font-weight: 700; + font-variant: small-caps; + text-transform: lowercase; + letter-spacing: .6px; + +} +abbr:hover { cursor: help; } + +/* links */ +a, a:visited { + text-decoration: none; + font-family: 'Montserrat', sans-serif; + font-weight: 400; + font-size: 16px; + color: #8cbdcf; + letter-spacing: 0px; + transition: all 0.3s ease-in-out; + -webkit-transition: all 0.3s ease-in-out; + -moz-transition: all 0.3s ease-in-out; + -o-transition: all 0.3s ease-in-out; + outline: 0; +} +a:hover, a:active, a:focus { + color: #74a9bc; + text-decoration: none; + outline: 0; +} +/* Blue Version */ +.blue a, .blue a:visited { + color: #7d4ccc; +} +.blue a:hover, .blue a:active, .blue a:focus { + color: #7045b6; +} +/* Dark Version */ +.dark a, .dark a:visited { + color: #ed145b; +} +.dark a:hover, .dark a:active, .dark a:focus { + color: #d31050; +} + +p a, +p a:visited { + line-height: inherit; + outline: 0; +} + + +/* list */ +ul, +ol { + margin-bottom: 24px; + margin-top: 12px; +} +ul { + list-style: none outside; +} +ol { + list-style: decimal; +} +ol, +ul.square, +ul.circle, +ul.disc { + margin-left: 30px; +} +ul.square { + list-style: square outside; +} +ul.circle { + list-style: circle outside; +} +ul.disc { + list-style: disc outside; +} +ul ul, +ul ol, +ol ol, +ol ul { + margin: 6px 0 6px 30px; +} +ul ul li, +ul ol li, +ol ol li, +ol ul li { + margin-bottom: 6px; +} +li { + font-family: 'Montserrat', sans-serif; + font-weight: 400; + font-size: 16px; + color: #3c3c3c; + letter-spacing: 0px; + line-height: 18px; + margin-bottom: 12px; +} +ul.large li { } +li p { + font-family: 'Montserrat', sans-serif; + font-weight: 400; + font-size: 16px; + color: #3c3c3c; + letter-spacing: 0px; + line-height: 18px; +} + +/* definition list */ +dl { margin: 12px 0; } +dt { margin: 0; color:#11ABB0; } +dd { margin: 0 0 0 20px; } diff --git a/www/assets/fonts/FontAwesome.otf b/www/assets/fonts/FontAwesome.otf new file mode 100644 index 0000000000000000000000000000000000000000..681bdd4d4c8dddbaeb4d4f2a1f58c38cad92afe0 GIT binary patch literal 106260 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�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 literal 0 HcmV?d00001 diff --git a/www/assets/fonts/fontawesome-webfont.eot b/www/assets/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..a30335d748c65c0bab5880b4e6dba53f5c79206c GIT binary patch literal 68875 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

7r8$?kb-D3z%-c} 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 F002TuuHFCu literal 0 HcmV?d00001 diff --git a/www/assets/fonts/fontawesome-webfont.svg b/www/assets/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000..6fd19ab --- /dev/null +++ b/www/assets/fonts/fontawesome-webfont.svg @@ -0,0 +1,640 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/www/assets/fonts/fontawesome-webfont.ttf b/www/assets/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d7994e13086b1ac1a216bd754c93e1bccd65f237 GIT binary patch literal 138204 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 literal 0 HcmV?d00001 diff --git a/www/assets/fonts/fontawesome-webfont.woff b/www/assets/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..6fd4ede0f30f170eecb4156beb7235bf01fff00b GIT binary patch literal 81284 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äY>7uxS6S37IVP_>DW-kg%dn+sFHLnFhvXTU%&ox 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 ZUtABnb?tu62nVk>KX+wfW(Hek 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/www/assets/fonts/glyphicons-halflings-regular.ttf b/www/assets/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1413fc609ab6f21774de0cb7e01360095584f65b GIT binary patch literal 45404 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 G`u_lkUM?>H literal 0 HcmV?d00001 diff --git a/www/assets/fonts/glyphicons-halflings-regular.woff2 b/www/assets/fonts/glyphicons-halflings-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..64539b54c3751a6d9adb44c8e3a45ba5a73b77f0 GIT binary patch literal 18028 zcmV(~K+nH-Pew8T0RR9107h&84*&oF0I^&E07eM_0Rl|`00000000000000000000 z0000#Mn+Uk92y`7U;vDA2m}!b3WBL5f#qcZHUcCAhI9*rFaQJ~1&1OBl~F%;WnyLq z8)b|&?3j;$^FW}&KmNW53flIFARDZ7_Wz%hpoWaWlgHTHEHf()GI0&dMi#DFPaEt6 zCO)z0v0~C~q&0zBj^;=tv8q{$8JxX)>_`b}WQGgXi46R*CHJ}6r+;}OrvwA{_SY+o zK)H-vy{l!P`+NG*`*x6^PGgHH4!dsolgU4RKj@I8Xz~F6o?quCX&=VQ$Q{w01;M0? zKe|5r<_7CD z=eO3*x!r$aX2iFh3;}xNfx0v;SwBfGG+@Z;->HhvqfF4r__4$mU>Dl_1w;-9`~5rF~@!3;r~xP-hZvOfOx)A z#>8O3N{L{naf215f>m=bzbp7_(ssu&cx)Qo-{)!)Yz3A@Z0uZaM2yJ8#OGlzm?JO5gbrj~@)NB4@?>KE(K-$w}{};@dKY#K3+Vi64S<@!Z{(I{7l=!p9 z&kjG^P~0f46i13(w!hEDJga;*Eb z`!n|++@H8VaKG<9>VDh(y89J#=;Z$ei=GnD5TesW#|Wf)^D+9NKN4J3H5PF_t=V+Z zdeo8*h9+8&Zfc?>>1|E4B7MAx)^uy$L>szyXre7W|81fjy+RZ1>Gd}@@${~PCOXo) z$#HZd3)V3@lNGG%(3PyIbvyJTOJAWcN@Uh!FqUkx^&BuAvc)G}0~SKI`8ZZXw$*xP zum-ZdtPciTAUn$XWb6vrS=JX~f5?M%9S(=QsdYP?K%Odn0S0-Ad<-tBtS3W06I^FK z8}d2eR_n!(uK~APZ-#tl@SycxkRJ@5wmypdWV{MFtYBUY#g-Vv?5AEBj1 z`$T^tRKca*sn7gt%s@XUD-t>bij-4q-ilku9^;QJ3Mpc`HJ_EX4TGGQ-Og)`c~qm51<|gp7D@ zp#>Grssv^#A)&M8>ulnDM_5t#Al`#jaFpZ<#YJ@>!a$w@kEZ1<@PGs#L~kxOSz7jj zEhb?;W)eS}0IQQuk4~JT30>4rFJ3!b+77}>$_>v#2FFEnN^%(ls*o80pv0Q>#t#%H z@`Yy-FXQ9ULKh{Up&oA_A4B!(x^9&>i`+T|eD!&QOLVd(_avv-bFX~4^>o{%mzzrg_i~SBnr%DeE|i+^}|8?kaV(Z32{`vA^l!sp15>Z72z52FgXf z^8ZITvJ9eXBT1~iQjW|Q`Fac^ak$^N-vI^*geh5|*CdMz;n16gV_zk|Z7q8tFfCvU zJK^Pptnn0Rc~egGIAK}uv99VZm2WLPezQQ5K<`f zg{8Ll|GioPYfNheMj-7-S87=w4N0WxHP`1V6Y)0M&SkYzVrwp>yfsEF7wj&T0!}dB z)R~gGfP9pOR;GY_e0~K^^oJ-3AT+m~?Al!{>>5gNe17?OWz)$)sMH*xuQiB>FT2{i zQ>6U_8}Ay~r4li;jzG+$&?S12{)+<*k9 z<^SX#xY|jvlvTxt(m~C7{y{3g>7TX#o2q$xQO|fc<%8rE@A3=UW(o?gVg?gDV!0q6O!{MlX$6-Bu_m&0ms66 znWS&zr{O_4O&{2uCLQvA?xC5vGZ}KV1v6)#oTewgIMSnBur0PtM0&{R5t#UEy3I9) z`LVP?3f;o}sz*7g5qdTxJl^gk3>;8%SOPH@B)rmFOJ)m6?PlYa$y=RX%;}KId{m9R#2=LNwosF@OTivgMqxpRGe}5=LtAn?VVl6VWCFLD z7l#^^H8jY~42hR)OoVF#YDW(md!g(&pJ;yMj|UBAQa}UH?ED@%ci=*(q~Opn>kE2Q z_4Kgf|0kEA6ary41A;)^Ku(*nirvP!Y>{FZYBLXLP6QL~vRL+uMlZ?jWukMV*(dsn zL~~KA@jU)(UeoOz^4Gkw{fJsYQ%|UA7i79qO5=DOPBcWlv%pK!A+)*F`3WJ}t9FU3 zXhC4xMV7Z%5RjDs0=&vC4WdvD?Zi5tg4@xg8-GLUI>N$N&3aS4bHrp%3_1u9wqL)i z)XQLsI&{Hd&bQE!3m&D0vd!4D`l1$rt_{3NS?~lj#|$GN5RmvP(j3hzJOk=+0B*2v z)Bw133RMUM%wu_+$vbzOy?yk#kvR?xGsg-ipX4wKyXqd zROKp5))>tNy$HByaEHK%$mqd>-{Yoj`oSBK;w>+eZ&TVcj^DyXjo{DDbZ>vS2cCWB z(6&~GZ}kUdN(*2-nI!hvbnVy@z2E#F394OZD&Jb04}`Tgaj?MoY?1`{ejE2iud51% zQ~J0sijw(hqr_Ckbj@pm$FAVASKY(D4BS0GYPkSMqSDONRaFH+O2+jL{hIltJSJT~e)TNDr(}=Xt7|UhcU9eoXl&QZRR<9WomW%&m)FT~j zTgGd3-j}Uk%CRD;$@X)NNV9+RJbifYu>yr{FkO;p>_&njI> zyBHh_72bW;8}oGeY0gpHOxiV597j7mY<#?WMmkf5x~Kfk*re(&tG_mX<3&2cON*2u%V29tsXUv{#-ijs2>EuNH-x3) zPBpi+V6gI=wn}u164_j8xi-y(B?Au2o;UO=r6&)i5S3Mx*)*{_;u}~i4dh$`VgUS- zMG6t*?DXDYX0D2Oj31MI!HF>|aG8rjrOPnxHu4wZl;!=NGjjDoBpXf?ntrwt^dqxm zs(lE@*QB3NH)!`rH)5kks-D89g@UX&@DU9jvrsY)aI=9b4nPy3bfdX_U;#?zsan{G>DKob2LnhCJv8o}duQK)qP{7iaaf2=K`a-VNcfC582d4a z>sBJA*%S|NEazDxXcGPW_uZ&d7xG`~JB!U>U(}acUSn=FqOA~(pn^!aMXRnqiL0;? zebEZYouRv}-0r;Dq&z9>s#Rt1HL`0p4bB)A&sMyn|rE_9nh z?NO*RrjET8D4s(-`nS{MrdYtv*kyCnJKbsftG2D#ia@;42!8xd?a3P(&Y?vCf9na< zQ&Ni*1Qel&Xq{Z?=%f0SRqQt5m|Myg+8T=GDc)@^};=tM>9IDr7hdvE9-M@@<0pqv45xZTeNecbL- zWFQt4t`9>j8~X%lz}%We>Kzh_=`XO}!;4!OWH?=p*DOs#Nt({k^IvtBEL~Qafn)I^ zm*k{y7_bIs9YE}0B6%r`EIUH8US+MGY!KQA1fi-jCx9*}oz2k1nBsXp;4K<_&SN}}w<)!EylI_)v7}3&c)V;Cfuj*eJ2yc8LK=vugqTL><#65r6%#2e| zdYzZ)9Uq7)A$ol&ynM!|RDHc_7?FlWqjW>8TIHc`jExt)f5W|;D%GC#$u!%B*S%Z0 zsj&;bIU2jrt_7%$=!h4Q29n*A^^AI8R|stsW%O@?i+pN0YOU`z;TVuPy!N#~F8Z29 zzZh1`FU(q31wa>kmw{$q=MY>XBprL<1)Py~5TW4mgY%rg$S=4C^0qr+*A^T)Q)Q-U zGgRb9%MdE-&i#X3xW=I`%xDzAG95!RG9)s?v_5+qx`7NdkQ)If5}BoEp~h}XoeK>kweAMxJ8tehagx~;Nr_WP?jXa zJ&j7%Ef3w*XWf?V*nR)|IOMrX;$*$e23m?QN` zk>sC^GE=h6?*Cr~596s_QE@>Nnr?{EU+_^G=LZr#V&0fEXQ3IWtrM{=t^qJ62Sp=e zrrc>bzX^6yFV!^v7;>J9>j;`qHDQ4uc92eVe6nO@c>H=ouLQot``E~KLNqMqJ7(G+?GWO9Ol+q$w z!^kMv!n{vF?RqLnxVk{a_Ar;^sw0@=+~6!4&;SCh^utT=I zo&$CwvhNOjQpenw2`5*a6Gos6cs~*TD`8H9P4=#jOU_`%L!W;$57NjN%4 z39(61ZC#s7^tv`_4j}wMRT9rgDo*XtZwN-L;Qc$6v8kKkhmRrxSDkUAzGPgJ?}~_t zkwoGS4=6lsD`=RL|8L3O9L()N)lmEn-M15fRC{dhZ}7eYV%O-R^gsAp{q4 z!C1}_T8gy^v@SZ5R&Li5JMJy+K8iZw3LOGA0pN1~y@w7RRl#F()ii6Y5mr~Mdy@Kz z@FT4cm^I&#Fu_9IX(HAFP{XLbRALqm&)>m_we>a`hfv?eE|t z?YdDp2yAhj-~vuw^wzVDuj%w?exOcOT(ls(F*ceCe(C5HlN{lcQ;}|mRPqFDqLEzw zR7ldY+M6xe$$qLwekmk{Z&5cME$gpC?-8)f0m$rqaS|mj9ATNJvvyCgs(f2{r;2E!oy$k5{jik#(;S>do<#m0wVcU<}>)VtYmF9O0%(C>GDzPgh6X z9OkQLMR~y7=|MtaU!LDPPY7O)L{X#SC+M|v^X2CZ?$GS>U_|aC(VA(mIvCNk+biD| zSpj>gd(v>_Cbq>~-x^Y3o|?eHmuC?E&z>;Ij`%{$Pm$hI}bl0Kd`9KD~AchY+goL1?igDxf$qxL9< z4sW@sD)nwWr`T>e2B8MQN|p*DVTT8)3(%AZ&D|@Zh6`cJFT4G^y6`(UdPLY-&bJYJ z*L06f2~BX9qX}u)nrpmHPG#La#tiZ23<>`R@u8k;ueM6 znuSTY7>XEc+I-(VvL?Y>)adHo(cZ;1I7QP^q%hu#M{BEd8&mG_!EWR7ZV_&EGO;d(hGGJzX|tqyYEg2-m0zLT}a{COi$9!?9yK zGN7&yP$a|0gL`dPUt=4d^}?zrLN?HfKP0_gdRvb}1D73Hx!tXq>7{DWPV;^X{-)cm zFa^H5oBDL3uLkaFDWgFF@HL6Bt+_^g~*o*t`Hgy3M?nHhWvTp^|AQDc9_H< zg>IaSMzd7c(Sey;1SespO=8YUUArZaCc~}}tZZX80w%)fNpMExki-qB+;8xVX@dr; z#L52S6*aM-_$P9xFuIui;dN#qZ_MYy^C^hrY;YAMg;K`!ZpKKFc z9feHsool)`tFSS}Su|cL0%F;h!lpR+ym|P>kE-O`3QnHbJ%gJ$dQ_HPTT~>6WNX41 zoDEUpX-g&Hh&GP3koF4##?q*MX1K`@=W6(Gxm1=2Tb{hn8{sJyhQBoq}S>bZT zisRz-xDBYoYxt6--g2M1yh{#QWFCISux}4==r|7+fYdS$%DZ zXVQu{yPO<)Hn=TK`E@;l!09aY{!TMbT)H-l!(l{0j=SEj@JwW0a_h-2F0MZNpyucb zPPb+4&j?a!6ZnPTB>$t`(XSf-}`&+#rI#`GB> zl=$3HORwccTnA2%>$Nmz)u7j%_ywoGri1UXVNRxSf(<@vDLKKxFo;5pTI$R~a|-sQ zd5Rfwj+$k1t0{J`qOL^q>vZUHc7a^`cKKVa{66z?wMuQAfdZBaVVv@-wamPmes$d! z>gv^xx<0jXOz;7HIQS z4RBIFD?7{o^IQ=sNQ-k!ao*+V*|-^I2=UF?{d>bE9avsWbAs{sRE-y`7r zxVAKA9amvo4T}ZAHSF-{y1GqUHlDp4DO9I3mz5h8n|}P-9nKD|$r9AS3gbF1AX=2B zyaK3TbKYqv%~JHKQH8v+%zQ8UVEGDZY|mb>Oe3JD_Z{+Pq%HB+J1s*y6JOlk`6~H) zKt)YMZ*RkbU!GPHzJltmW-=6zqO=5;S)jz{ zFSx?ryqSMxgx|Nhv3z#kFBTuTBHsViaOHs5e&vXZ@l@mVI37<+^KvTE51!pB4Tggq zz!NlRY2ZLno0&6bA|KHPYOMY;;LZG&_lzuLy{@i$&B(}_*~Zk2 z>bkQ7u&Ww%CFh{aqkT{HCbPbRX&EvPRp=}WKmyHc>S_-qbwAr0<20vEoJ(!?-ucjE zKQ+nSlRL^VnOX0h+WcjGb6WI(8;7bsMaHXDb6ynPoOXMlf9nLKre;w*#E_whR#5!! z!^%_+X3eJVKc$fMZP;+xP$~e(CIP1R&{2m+iTQhDoC8Yl@kLM=Wily_cu>7C1wjVU z-^~I0P06ZSNVaN~A`#cSBH2L&tk6R%dU1(u1XdAx;g+5S^Hn9-L$v@p7CCF&PqV{Z?R$}4EJi36+u2JP7l(@fYfP!=e#76LGy^f>~vs0%s*x@X8`|5 zGd6JOHsQ=feES4Vo8%1P_7F5qjiIm#oRT0kO1(?Z_Dk6oX&j=Xd8Klk(;gk3S(ZFnc^8Gc=d;8O-R9tlGyp=2I@1teAZpGWUi;}`n zbJOS_Z2L16nVtDnPpMn{+wR9&yU9~C<-ncppPee`>@1k7hTl5Fn_3_KzQ)u{iJPp3 z)df?Xo%9ta%(dp@DhKuQj4D8=_!*ra#Ib&OXKrsYvAG%H7Kq|43WbayvsbeeimSa= z8~{7ya9ZUAIgLLPeuNmSB&#-`Je0Lja)M$}I41KHb7dQq$wgwX+EElNxBgyyLbA2* z=c1VJR%EPJEw(7!UE?4w@94{pI3E%(acEYd8*Wmr^R7|IM2RZ-RVXSkXy-8$!(iB* zQA`qh2Ze!EY6}Zs7vRz&nr|L60NlIgnO3L*Yz2k2Ivfen?drnVzzu3)1V&-t5S~S? zw#=Sdh>K@2vA25su*@>npw&7A%|Uh9T1jR$mV*H@)pU0&2#Se`7iJlOr$mp79`DKM z5vr*XLrg7w6lc4&S{So1KGKBqcuJ!E|HVFB?vTOjQHi)g+FwJqX@Y3q(qa#6T@3{q zhc@2T-W}XD9x4u+LCdce$*}x!Sc#+rH-sCz6j}0EE`Tk*irUq)y^za`}^1gFnF)C!yf_l_}I<6qfbT$Gc&Eyr?!QwJR~RE4!gKVmqjbI+I^*^ z&hz^7r-dgm@Mbfc#{JTH&^6sJCZt-NTpChB^fzQ}?etydyf~+)!d%V$0faN(f`rJb zm_YaJZ@>Fg>Ay2&bzTx3w^u-lsulc{mX4-nH*A(32O&b^EWmSuk{#HJk}_ULC}SB(L7`YAs>opp9o5UcnB^kVB*rmW6{s0&~_>J!_#+cEWib@v-Ms`?!&=3fDot`oH9v&$f<52>{n2l* z1FRzJ#yQbTHO}}wt0!y8Eh-0*|Um3vjX-nWH>`JN5tWB_gnW%; zUJ0V?_a#+!=>ahhrbGvmvObe8=v1uI8#gNHJ#>RwxL>E^pT05Br8+$@a9aDC1~$@* zicSQCbQcr=DCHM*?G7Hsovk|{$3oIwvymi#YoXeVfWj{Gd#XmnDgzQPRUKNAAI44y z{1WG&rhIR4ipmvBmq$BZ*5tmPIZmhhWgq|TcuR{6lA)+vhj(cH`0;+B^72{&a7ff* zkrIo|pd-Yxm+VVptC@QNCDk0=Re%Sz%ta7y{5Dn9(EapBS0r zLbDKeZepar5%cAcb<^;m>1{QhMzRmRem=+0I3ERot-)gb`i|sII^A#^Gz+x>TW5A& z3PQcpM$lDy`zb%1yf!e8&_>D02RN950KzW>GN6n@2so&Wu09x@PB=&IkIf|zZ1W}P zAKf*&Mo5@@G=w&290aG1@3=IMCB^|G4L7*xn;r3v&HBrD4D)Zg+)f~Ls$7*P-^i#B z4X7ac=0&58j^@2EBZCs}YPe3rqgLAA1L3Y}o?}$%u~)7Rk=LLFbAdSy@-Uw6lv?0K z&P@@M`o2Rll3GoYjotf@WNNjHbe|R?IKVn*?Rzf9v9QoFMq)ODF~>L}26@z`KA82t z43e!^z&WGqAk$Ww8j6bc3$I|;5^BHwt`?e)zf|&+l#!8uJV_Cwy-n1yS0^Q{W*a8B zTzTYL>tt&I&9vzGQUrO?YIm6C1r>eyh|qw~-&;7s7u1achP$K3VnXd8sV8J7ZTxTh z5+^*J5%_#X)XL2@>h(Gmv$@)fZ@ikR$v(2Rax89xscFEi!3_;ORI0dBxw)S{r50qf zg&_a*>2Xe{s@)7OX9O!C?^6fD8tc3bQTq9}fxhbx2@QeaO9Ej+2m!u~+u%Q6?Tgz{ zjYS}bleKcVhW~1$?t*AO^p!=Xkkgwx6OTik*R3~yg^L`wUU9Dq#$Z*iW%?s6pO_f8 zJ8w#u#Eaw7=8n{zJ}C>w{enA6XYHfUf7h)!Qaev)?V=yW{b@-z`hAz;I7^|DoFChP z1aYQnkGauh*ps6x*_S77@z1wwGmF8ky9fMbM$dr*`vsot4uvqWn)0vTRwJqH#&D%g zL3(0dP>%Oj&vm5Re%>*4x|h1J2X*mK5BH1?Nx_#7( zepgF`+n)rHXj!RiipusEq!X81;QQBXlTvLDj=Qub(ha&D=BDx3@-V*d!D9PeXUY?l zwZ0<4=iY!sUj4G>zTS+eYX7knN-8Oynl=NdwHS*nSz_5}*5LQ@=?Yr?uj$`C1m2OR zK`f5SD2|;=BhU#AmaTKe9QaSHQ_DUj1*cUPa*JICFt1<&S3P3zsrs^yUE;tx=x^cmW!Jq!+hohv_B> zPDMT0D&08dC4x@cTD$o1$x%So1Ir(G3_AVQMvQ13un~sP(cEWi$2%5q93E7t{3VJf%K? zuwSyDke~7KuB2?*#DV8YzJw z&}SCDexnUPD!%4|y~7}VzvJ4ch)WT4%sw@ItwoNt(C*RP)h?&~^g##vnhR0!HvIYx z0td2yz9=>t3JNySl*TszmfH6`Ir;ft@RdWs3}!J88UE|gj_GMQ6$ZYphUL2~4OY7} zB*33_bjkRf_@l;Y!7MIdb~bVe;-m78Pz|pdy=O*3kjak63UnLt!{^!!Ljg0rJD3a~ z1Q;y5Z^MF<=Hr}rdoz>yRczx+p3RxxgJE2GX&Si)14B@2t21j4hnnP#U?T3g#+{W+Zb z5s^@>->~-}4|_*!5pIzMCEp|3+i1XKcfUxW`8|ezAh>y{WiRcjSG*asw6;Ef(k#>V ztguN?EGkV_mGFdq!n#W)<7E}1#EZN8O$O|}qdoE|7K?F4zo1jL-v}E8v?9qz(d$&2 zMwyK&xlC9rXo_2xw7Qe0caC?o?Pc*-QAOE!+UvRuKjG+;dk|jQhDDBe?`XT7Y5lte zqSu0t5`;>Wv%|nhj|ZiE^IqA_lZu7OWh!2Y(627zb=r7Ends}wVk7Q5o09a@ojhH7 zU0m&h*8+j4e|OqWyJ&B`V`y=>MVO;K9=hk^6EsmVAGkLT{oUtR{JqSRY{Qi{kKw1k z6s;0SMPJOLp!som|A`*q3t0wIj-=bG8a#MC)MHcMSQU98Juv$?$CvYX)(n`P^!`5| zv3q@@|G@6wMqh;d;m4qvdibx2Yjml}vG9mDv&!0ne02M#D`Bo}xIB0VWh8>>WtNZQ z$&ISlJX;*ORQIO;k62qA{^6P%3!Z=Y1EbmY02{w^yB$`;%!{kur&XTGDiO2cjA)lr zsY^XZWy^DSAaz;kZ_VG?uWnJR7qdN18$~)>(kOoybY0~QYu9||K#|$Mby{3GduV~N zk9H7$7=RSo+?CUYF502`b76ytBy}sFak&|HIwRvB=0D|S`c#QCJPq zP)uOWI)#(n&{6|C4A^G~%B~BY21aOMoz9RuuM`Ip%oBz+NoAlb7?#`E^}7xXo!4S? zFg8I~G%!@nXi8&aJSGFcZAxQf;0m}942=i#p-&teLvE{AKm7Sl2f}Io?!IqbC|J;h z`=5LFOnU5?^w~SV@YwNZx$k_(kLNxZDE z3cf08^-rIT_>A$}B%IJBPcN^)4;90BQtiEi!gT#+EqyAUZ|}*b_}R>SGloq&6?opL zuT_+lwQMgg6!Cso$BwUA;k-1NcrzyE>(_X$B0HocjY~=Pk~Q08+N}(|%HjO_i+*=o z%G6C6A30Ch<0UlG;Zdj@ed!rfUY_i9mYwK8(aYuzcUzlTJ1yPz|Bb-9b33A9zRhGl>Ny-Q#JAq-+qtI@B@&w z$;PJbyiW=!py@g2hAi0)U1v=;avka`gd@8LC4=BEbNqL&K^UAQ5%r95#x%^qRB%KLaqMnG|6xKAm}sx!Qwo}J=2C;NROi$mfADui4)y(3wVA3k~{j^_5%H)C6K zlYAm1eY**HZOj($)xfKIQFtIVw$4&yvz9>(Crs>Gh{ zya6-FG7Dgi92#K)64=9Csj5?Zqe~_9TwSI!2quAwa1w-*uC5!}xY`?tltb0Hq740< zsq2QelPveZ4chr$=~U3!+c&>xyfvA1`)owOqj=i4wjY=A1577Gwg&Ko7;?il9r|_* z8P&IDV_g2D{in5OLFxsO!kx3AhO$5aKeoM|!q|VokqMlYM@HtsRuMtBY%I35#5$+G zpp|JOeoj^U=95HLemB04Yqv{a8X<^K9G2`&ShM_6&Bi1n?o?@MXsDj9Z*A3>#XK%J zRc*&SlFl>l)9DyRQ{*%Z+^e1XpH?0@vhpXrnPPU*d%vOhKkimm-u3c%Q^v3RKp9kx@A2dS?QfS=iigGr7m><)YkV=%LA5h@Uj@9=~ABPMJ z1UE;F&;Ttg5Kc^Qy!1SuvbNEqdgu3*l`=>s5_}dUv$B%BJbMiWrrMm7OXOdi=GOmh zZBvXXK7VqO&zojI2Om9};zCB5i|<210I{iwiGznGCx=FT89=Ef)5!lB1cZ6lbzgDn07*he}G&w7m!;|E(L-?+cz@0<9ZI~LqYQE7>HnPA436}oeN2Y(VfG6 zxNZuMK3Crm^Z_AFeHc~CVRrSl0W^?+Gbteu1g8NGYa3(8f*P{(ZT>%!jtSl6WbYVv zmE(37t0C8vJ6O-5+o*lL9XRcFbd~GSBGbGh3~R!67g&l)7n!kJlWd)~TUyXus#!&G6sR%(l(h1$xyrR5j_jM1zj#giA&@(Xl26@n<9>folx!92bQ z24h570+<)4!$!IQ(5yOU|4_E6aN@4v0+{Kx~Z z;q7fp%0cHziuI%!kB~w}g9@V+1wDz0wFlzX2UOvOy|&;e;t!lAR8tV2KQHgtfk8Uf zw;rs!(4JPODERk4ckd5I2Vq|0rd@@Mwd8MID%0^fITjYIQom^q;qhP8@|eJx{?5xX zc1@Fj*kDknlk{c-rnCloQ3hGh7OU+@efO3>fkRMcM>J?AeVP& zlfzX%cdp=N+4S#E*%^=BQ+N`A7C}|k%$|QUn0yI6S3$MS-NjO!4hm55uyju)Q6e!} z*OVO@A#-mfC9Pha6ng((Xl^V7{d+&u+yx)_B1{~t7d5e8L^i4J>;x<7@5;+l7-Gge zf#9diXJ$&v^rbN5V(ee%q0xBMEgS6%qZm7hNUP%G;^J44I!BmI@M*+FWz0!+s;+iQ zU4CuI+27bvNK8v>?7PZnVxB=heJ&_ymE0nN^W#-rqB%+JXkYGDuRw>JM_LdtLkiq* z6%%3&^BX$jnM@2bjiGc-DymKly)wVkA-pq;jSWL#7_*moZZ4I|-N}o8SK?sIv)p|c zu~9-B%tMc=!)YMFp*SiC0>kfnH8+X5>;+FFVN{~a9YVdIg1uGkZ~kegFy{^PU(4{( z`CbY`XmVA3esai686Yw8djCEyF7`bfB^F1)nwv+AqYLZ&Zy=eFhYT2uMd@{sP_qS4 zbJ&>PxajjZt?&c<1^!T|pLHfX=E^FJ>-l_XCZzvRV%x}@u(FtF(mS+Umw$e+IA74e>gCdTqi;6&=euAIpxd=Y3I5xWR zBhGoT+T`V1@91OlQ}2YO*~P4ukd*TBBdt?Plt)_ou6Y@Db`ss+Q~A-48s>?eaJYA2 zRGOa8^~Em}EFTmKIVVbMb|ob)hJJ7ITg>yHAn2i|{2ZJU!cwt9YNDT0=*WO7Bq#Xj zg@FjEaKoolrF8%c;49|`IT&25?O$dq8kp3#la9&6aH z6G|{>^C(>yP7#Dr$aeFyS0Ai_$ILhL43#*mgEl(c*4?Ae;tRL&S7Vc}Szl>B`mBuI zB9Y%xp%CZwlH!3V(`6W4-ZuETssvI&B~_O;CbULfl)X1V%(H7VSPf`_Ka9ak@8A=z z1l|B1QKT}NLI`WVTRd;2En5u{0CRqy9PTi$ja^inu){LJ&E&6W%JJPw#&PaTxpt?k zpC~gjN*22Q8tpGHR|tg~ye#9a8N<%odhZJnk7Oh=(PKfhYfzLAxdE36r<6a?A;rO&ELp_Y?8Pdw(PT^Fxn!eG_|LEbSYoBrsBA|6Fgr zt5LntyusI{Q2fdy=>ditS;}^B;I2MD4=(>7fWt0Jp~y=?VvfvzHvQhj6dyIef46J$ zl4Xu7U9v_NJV?uBBC0!kcTS0UcrV7+@~is?Fi+jrr@l3XwD|uG zr26jUWiv>Ju48Y^#qn7r9mwIH-Pv6Y|V|V-GZ&+&gQ?S?-`&ts{@5GXPqbmyZjUACC&oVXfNwUX0}ba(v978 zp8z!v9~8Zx8qB@7>oFPDm^iR@+yw`79YF)w^OHB_N;&&x7c3l^3!)IY#)}x)@D(iNaOm9 zC=^*!{`7={3*S=%iU=KsPXh=DDZcc``Ss>057i{pdW8M@4q+Ba@Tt%OytH!4>rbIbQw^-pR zGGYNPzw@n=PV@)b7yVbFr;glF*Qq3>F9oBN5PUXt!?2mdGcpv^o1?Thp`jP10G2Yi z(c93td3F3SW!Le5DUwdub!aDKoVLU6g!O?Ret21l$qOC;kdd@L#M&baVu&JZGt&<6 z!VCkvgRaav6QDW2x}tUy4~Y5(B+#Ej-8vM?DM-1?J_*&PntI3E96M!`WL#<&Z5n2u zo`P!~vBT$YOT~gU9#PB)%JZ zcd_u=m^LYzC!pH#W`yA1!(fA;D~b zG#73@l)NNd;n#XrKXZEfab;@kQRnOFU2Th-1m<4mJzlj9b3pv-GF$elX7ib9!uILM_$ke zHIGB*&=5=;ynQA{y7H93%i^d)T}y@(p>8vVhJ4L)M{0Q*@D^+SPp`EW+G6E%+`Z;u zS3goV@Dic7vc5`?!pCN44Ts@*{)zwy)9?B||AM{zKlN4T}qQRL2 zgv+{K8bv7w)#xge16;kI1fU87!W4pX)N&|cq8&i^1r`W|Hg4366r(?-ecEJ9u&Eaw zrhyikXQB>C9d>cpPGiu=VU3Z-u4|0V_iap!_J3o+K_R5EXk@sfu~zHwwYkpncVh!R zqNe7Cmf_|Wmeq4#(mIO&(wCK@b4(x0?W1Qtk(`$?+$uCJCGZm_%k?l32vuShgDFMa ztc`{$8DhB9)&?~(m&EUc=LzI1=qo#zjy#2{hLT_*aj<618qQ7mD#k2ZFGou&69;=2 z1j7=Su8k}{L*h&mfs7jg^PN&9C1Z@U!p6gXk&-7xM~{X`nqH#aGO`;Xy_zbz^rYacIq0AH%4!Oh93TzJ820%ur)8OyeS@K?sF1V(iFO z37Nnqj1z#1{|v7=_CX`lQA|$<1gtuNMHGNJYp1D_k;WQk-b+T6VmUK(x=bWviOZ~T z|4e%SpuaWLWD?qN2%`S*`P;BQBw(B__wTD6epvGdJ+>DBq2oVlf&F*lz+#avb4)3P1c^Mf#olQheVvZ|Z5 z>xXfgmv!5Z^SYn+_x}K5B%G^sRwiez&z9|f!E!#oJlT2kCOV0000$L_|bHBqAarB4TD{W@grX1CUr72@caw0faEd7-K|4L_|cawbojjHdpd6 zI6~Iv5J?-Q4*&oF000000FV;^004t70Z6Qk1Xl{X9oJ{sRC2(cs?- literal 0 HcmV?d00001 diff --git a/www/assets/img/amazon-store.png b/www/assets/img/amazon-store.png new file mode 100644 index 0000000000000000000000000000000000000000..d5908dc7e37aa1b04f02207fea42691b29c2b0ee GIT binary patch literal 4229 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 literal 0 HcmV?d00001 diff --git a/www/assets/img/app-store.png b/www/assets/img/app-store.png new file mode 100644 index 0000000000000000000000000000000000000000..91cbf687b20a4484cf795a5001d5e54dae52c50b GIT binary patch literal 3511 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 W3)+fm&%fFEmBJcZVQNl$#r+TO2^KQ| literal 0 HcmV?d00001 diff --git a/www/assets/img/ball.png b/www/assets/img/ball.png new file mode 100644 index 0000000000000000000000000000000000000000..c547c3ba559481fa91bca8b309dda33f85c96720 GIT binary patch literal 14589 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%0Dl+w<|0oD~ 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 literal 0 HcmV?d00001 diff --git a/www/assets/img/bg.jpg b/www/assets/img/bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d92aa6e6810c2e781b2c45efe2ba40049d6e3537 GIT binary patch literal 67590 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 B+Y?83$V{iLou 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

?Owd! zkxMmI|AO^c|H1o0UbV{l3%a=(pc|m6XED$BlY+z%%sarZYGC6%S|}6>Uy7cPdIT@C zsMyVsdd`lvB=a$YeL3sSDAVlhI@gy8lhGMuXO$*)&B{7k%_9kxx*%`sKG@Z!nRB`C zOSO@o&>8gg7&=|EzK~_k)~?cxW(ck#tg23fm-(Z52Bj-k@{4sJ_c6IkL)f?5H5H2H zmFhGKk=31sAcKxoxeg8ZUJ6lgMdsB6p=74>o9@-#$`-G)H_R@+wr#7at4Vi@pyh;@ zJ2f+3*VWJ+ColKjEEEcbPbc_St-`QL)B)XS%01|t$v*NvqldkF$s!42y2-ez3?87H zRVil)exb4+xWN|>Px0bsFM0mXN-Vj9DeJkXcv*Fk*^25L4l|}vSKL#O$F-O+vyXJ7 zd*IPh&}B=f3EXZ(_M;cQ^F?P_jI)1TGxJ@L>mf*ACV^8~=uFNA=+3t@A-GVM79Zn zJg%fxz5G>RGEG+Q6vsUTk>{+j>Qc;vYBx}9GzL!2#Pi^w^I6FO69TsSL_&PlIR$7d zN@d*$crKNYoG3s!tf=6}ltG*D?r%dJ%IdCC42AFy8R{Naf(Gle#p3N?y;`XKbVXXK6-8qb(EiIToEbnrw$cLFz zimdOvrv~y>k%^M>6bgkeAo!VAy~{F1B*cAo=V7NFijimk*a#{b;;etvi0hyiS2r&c zmZP|)D+7<+ZKojK%1y<+v^l%S#QvZc8YsYMc(k27p=BRTx|y)|fV^>igCh0HPhOEo zt}TcH1vN*9$?iJ6Gm}UsjZnQ1RHGgQa}{*H(*&>1j%rrBPD!x@l96+G~K>Os;Z`Z;qd%7Td*%+V-A-_75e z2&UH+ha3DV=lTp%)}3o0+JgiT1gTd|?_7OJR9v0~V}(MY@M#1;d$Ga12(khr=XoDx zJ&|MsqX#qKoj>>mJ54rq282Up?Ul_PpuMD-OhkpF_ZQnVL_ocS@6Hx3>)C_rxjIqY z$vp=EO}vcx+NqU{o{W*oP-Yr(S0t($F}bW;hpsh9%&2^1>I{XTg zYlOwcnJP2N=hsBQ1ran)6V$r`+~{b|!(O zYmf#Je7RMDX#&p{+<#G4-({FNkn83ipF!~Df;08J?jpI6+57U}|NYyq<#~DHQSRpw zBkH_W(=}Ch(@b#x>^rtlC=_0X+s0>hw1YGGeDso;$1GV_Ogm1KPbRaz%3{0m}Y& znEBnH8~dGjl-k|R4A#}k_3zz0XV-12=Ycy9^=x|uu`lg@p-|XDPhJ)cdtCt4OT%SI zc67=vP>5{H9BE<)7}p%ib*W_QN975xvUO3w0`p>QK^9M~7<56<)`F(V6kBw(dhj-xWNx;1K%>T@i~H3X2&}To8+~8Z*|4l9E5hXjjB2z6#8OrS z@76l;=I^DRJoiSt+w${_OmJ`JHe;3X+NxOP!dJfG(wo+Dhd(gH%d(-hCG z3OOlK=Kd2E8Z(9=ZGf(e;OAZ!L_Z2F8u9{MnBc-~#|0D4F1DLvfjM90Gw%`^E^t(R zB-XLH1!Q=2tKz0r?8vp66b!`OhS~lTcV+_am-dcFHbfRUDg=edvJPko31@#Mv`wK}qCS%`P(g|-B3+BkB6ks` zAzxomZ-%@KL10ciN`qKi&7C<1bR!(#v7r%bZC87|Ly#vX;#ofdCS^lpk)uLdw}Ry) zCn^K2#tnGX$tzvC3+f`*7>Icotw=;t1T}ZnJc+d0?mkuIGRmrAgE%Yci&|+?35)^1 zLJ{fguNoBeO_Hph*U_=LfN4TEp^5@7*9PVqbD0~VcANUI*E%=*zF}aSMS&*=!XN@ceUFL=L-O68HIi*Cp z?#QdVHeK3yPDswxly!& z*MjF#bo_uXBuDVh)cZk4?NzDoE^s^IGxWdj% zwwA59wIuM%Jow!;;_>h184&4?v+mY2Alu4D(bZFA&nY*jTXGKS8nw-HQO_uqF;+ok z<^tprD3j*%&N;gI!>gFb#=KI&*)6!f>ox3n>_4KOk4nbF=gCF$U7XWl=BT?KH(aZA z!^XR|P$(3hBKTKcz*&Kq%dlpJTSGT9?sRSsRFq)Umu^RMtwhi)Ts6VO~!6 zv40b!*|oGE;>E+6_Co|4{24B+Wg^b9ngOrTcG4mq8)yGG1W9C_yzNRvaRJ5W7EaG$OYD}$Qa^UWtqWD#sm=nMe`S%L?(OQ0J-gA zW`Q`xTvyw05~GMD&*1M7U^AgsC=?10FN+=LoLzrtl|cpK z*4;D7+Gb62vJ9^B*H#&3RqUl6{t%hntj)b!zGWThNV11YlElShYTpOE{&|WF-igQd z@e}Vg{sX#OWDAH=B%uKXY^OPYmAwRA!xP%WomXhwd(-d=fi z^f`m$-|@_ENdQ~f{X(G-68xy*e+Hy7YQo|ktU&B;6WO^FDYhC$kbJkxip|7ho z9DEGqoqrX{X+eO?s~3vI4EQdpK-?4#(9P47RAQQI-H|tbin4xfBLHs!ksl_TIou{l;wrys4HxU7CN^L(f81%eIx^hAk%g9gm~GoxBmLO zj@WT%1_4LMo^(QyUA5oSd{^}eaLylG9<%?dc-RG1D(jea@9prbV^NSCU2A7|h>hdg3Ch>ioQ_;(;O1%M)voT1fmo6k z1-Tq_^LLd$dS)K5)BX0@uBGk5&zb9tn@>?=uB=g2ziR(23bjt z27E@IB_TV~h5;?tQDjSXPz1DWKuLN4?HLad7~DPVZ+M@DcSUW72wK+9uyYJM3Gvw8 z3(H&wR;8U?U&8l7wj1ImTaF;|OM9B@rh+@An|D$l7l}%Ko-8-T~_mxm%rV8$ztCVYG))Hc`#_dR+RV|n+J4MH;HYX~0 zhPjTBl*}DZ_FQh8-;X*zw`BgR?R0pX%k{b(h-+$8T@^RFYQg!q`RP^_S!UWzK-MPrY33*_o^{5ihkWCzI2VZxz(2 zMpNs`fO39Nl7~|qM^+ONy|~zlQoWd9h+T))q`H@qBEGIBBq}iLbPO{HmJaL}oAOIK z^RR9k!QoD3wqZZRpWS;CzTN=AI4BEMCpT#UDej27Uq{jx4v;5uAAGfazMlNq5sYWn zM`Hxzmvy3@37OvMg4z-is$^?`mrnt)-aZOGqx-})e%fjNG?RoBQJQ%M9pYX&MAAeBXRgj;XMC;(kA*_vFCh3CaRBn>ED>>cUHyPud%KfKj|h%) z#b7B*H`y(0W=a~g4wrq;ogLgE$e6NnJH(6OAG}{mR;v*MzQAsp7mf1@pLleu;6me7 z)327>y9pX5y#$ANF;B!&oEZ?WCbE7zb4+QwJG|tj1^1b9w8=W%@@I!3H<6WKLtJ={ zAefyS#|{xl@x3#GU|>gw5BM(5eC&?EM)e63+Eprh4zz@fPUJf39t08Yy6zC}D~RNf zk$zu2`=fpoSwIbOe|7k}8+VP={O6t(XA(%W1+lWYJj8n-3U;SSUQOhU!LF>fS9ZTp z_{$0Ym5d;QjMfY?no+metoT(ms&N?|R|x84Lo1Oy#EWAJLh3S%4O$YR+<^Gy;);%e z*yfNs#e&Gb%O)Q1dRt}DIYl;V-7Y)*97Lc_LEhENOj%Bz$$V4RomrsL@hH>i@J>O% zqYIEK`rEmeGIysQ+;h?QhMAWzq&#X|)Zv?iWnHVYhDeIMG?Qfo_N02dc7rWAUiCfK zeVT&_CsA~(fjxLWx&V_&t|H!7vf`O@QubNizw7V}5sbQV&txg?`wj&o>Jd^+t znYF7|jg(Ze=URN%MMf}cYk?B9qK?#1^VqQL}r-aXYSzu>=%(o8Ga{IbjRJ20JtUN1F`S*x*q0!hY04@&-WnFv(AG9@rvP< z0^8m9ccD=DLvRa7N%W9#P9Ux&y$c{B3%`iCyJA46j~<9SBhKXIs2V15foazGgU1vMWFeKzNZBj0<3n_9`o=ZBB}5k#@H8`b)Oc~WbBOcl@Gd`&R4_4AEUUSye1Jxm75 zWm5(oWi(Oop9%^F^z!n7#|*Oa1@8fYR5Byy@Nr){K1?>1$9K@SBgx3Bkw5T0Yd*xw zYaRb{gS_zhoZ>~R#_B%Koq_=-T!+cB4GNr;8%0+5ha}6};QK5f32u}xzN!i6$m>uB z;%qhGiy1j1IfL_a#oAFuz9W{yxm6RuXZO`J#;p=f6Y%yR=(zj;;oDg+k$n6Z{>*pfY_~mLO}W6FqFWFzX1&#xTUXo4_L?MFX)1_r#<1 zrE-7i=0EoWWxXXo#GPco74}W|rRbGZoQRi#@Aj1{OU^Gw2I zhk236E9=lqTG%#7em3tSxm!fy_}*054Z42HygW4UBmyq`qB8G5UR1WD zt&Flm!(=+t%e#rJsPdf#e8H?D7DEu3dxm)iFX!mxr0gyuefbpMTUQ27@tqTo^#JSf zvu1xFUma;CD>vbteWI)##C3`S$0$=B)qb>qgew_{A|siDh|91?M2v|56ObMRel9qg z8`;$sWRCkrR#s)J5oBVc%y34|kvyYZ*Xl_AH_Y<{W=>|7o;zOjF3^htu;@A3k*`EW zB-|CFw;-9b+aN3|OjawP9e$OzBX_k?S$fs4WYxs;_Ep^!-;14|w;aqKVxA3}M+3h8 zYbU77-tmP(;SVPGz+SgWMLeSA;oYLGtW&7kcJ`g97;6SuROgPPh_Iz84&O&VTfMDk+q|*yj{Ay9>SCmxGz&m?OKJnF?=2D+PU zvdi+h45K5POyF8FrcvERbZoBC+6~^iP7%0Xa}bORJ;=BI6plWVB#k9dU6R2N$jz zp$l$0{+s2WNmh9+NM*-{|Hs~&#ay?wSwUmY_5DQ^MPD=`6jiiJkbu%d0ZJE|prQy0 zF{P+@p?INOkZ9tCM!gb((Ga{4m7o_IMdOXe3u8xu5?i7dVwETaQ3MsFIeSj`_IqDz zea}0ZXP>`2-#Ke0JLf&`x8J?jnrk-W8FM`2amUl=4dJz4K7mf?Q`HvLHEptqt-uEF zz|Kw+a5-0*iJleY3}C$$_d4*_U1=LYT7#rvz=+Zzt8vt+@Cy-uDOM9EK!muK5kN+g z2C<(fcpl9tb8(42RN#)~?65ftvnFiAQZMs2$tPc(0!_Sid`dx!tGuiVgTVxbE~uDd ztyd>)Q;gwM1S_2~GS?ZHfUth&DxWo>Pe!&N&K4n#Zg_jL){!Wwps}v$(*$K`e9r~q zuXeT1QFBFgV3=z6UKjOG^p4{@)phI7Om1{QTZwJKXzaphyMjB8J!SHmn|T%tfVfSY zX*D50IMd2k#{3-#UX}pZi!fVEO0=LWajH`6x4@{4z&0W#RDN zQ2||&!axuoRVp-^_mI*i2T)h#mj3qD?GWm^t~de^&sEl}@kVa)b?Hgw0$%<0+m)+Tc}CxCBU6 zz@O=(rwH`axCFc`!AVJm0C)9BpD~2WA~Lz)%n*1e5S;>kmZ0jKhu8@opexln*~|{l z+5y0nya)qwM_4-*d*4Y=e`ak}$?Gb>AC2|f+4?@?eZSy6+B-o{x450Enp{Z=MFz|U zK>_hxnf)*eUOV%0hahTzySlNlRri?7HuGv%`vL%b2Si*lt6OX}R{&3JZYYa9wrOs1PaP1g3iq%8Yl=-9PXa;*(7GTld2G9CvyQEG z_chSZ&DnvWRl%0}e>V0vvfGi<_iyN=VAoG>ope6gPhKlhBfm33Ku zlj?)r=-2d}6K|7q8BsQ&PYZ6~mCtL{>2rWlb2+NDrXmv#6A-79I9$O0YFGRG0Q|HO zYykuT?YFK#2Ggo9v8i_x<^Zp6XA9U(FjI>xkT4rOV-BYPglA@Fl||plO$OfP7AVaz z)0L~LjSyfqIh|DI=zLGED3)TCRS=kxvE630p9pAckfefvjvd{3T*J&EHlDgCBktq~ zBpBPsxiBuEch@uxKmq~1Dv7#NU~D(Y26u8a8sOOdjkAOV_z4=GT(1Uixt>Hi0b!o?E(l|?(gp3T1F|Q+uD7?-n$8k- zU-uPP4IJnfn7i85uJ#eNcYzUe>`f=yXT?7{UifMg-(fRhEbtUSqB4Zljb;Y$TmkbU z_v#XXRZ`%ieImfy`SWg1^qFGanL|%yiVp!wySW$)#2(-Ygf5s&I}jrIL%SG(G0q|L_0I0Czbu=y}|f?*iF zZCH^JHi`*uZ<$!FY8lBGjRjp9c8P0Vf<0v{`qAvmn!tI3u6|qlHvwLV&p?xf-XvhU zK_6{{Y+kHjmjg}HFoG<|1h_|iJyEKGgF0QR<8hjC#>Nt3*pxPZKCvk$Yf_gpqnv#b zv!~osm`hC!I9)zaDpoWC_)Fm4S&1evxkG@(60Vc~y9zq%IOzNxpyfs*1iEb8xIkLH zX9nQd$yI^bf0CS%CE_~CPaQ8a1d}6-8MQ{h1PpZ@{lo;{YJF!CP)4QR%UAcC57gq*5nvJGrD*xec&A^^-(_^D%$ z$e3`IEWR7p&*t(#u3nmwbk)2AbbW|JT+0e;%{D9~0$A;g2{oo%5-tl0YaoL{Z~)l~ z)jgN;JexaR|5bGp2j{QxRg%Iy&i_wBF zD8$@U-ZifE46xNgJPY8SV#BXGdd5yJu?REU%?U3 zIAA#@smg2p?j#r7jj;r?7P|4wY!}mKIxvpL+)yVWI|MjO+`j_d+w|2C>uRUIf?IQ* zk(H$V4dNPBbBqDLj)mLb5I%q6!xLv^%Ujp78$PUi(>=|q_Ph&yIq%i3cD1iFz)t`} zRetTXw8;TI{is`%JBe;nY#vIBTG?_YGf5ltHh`M}4aZVfpLh^p&!j)MvN%_k4e(Wc z+4Fhb zC(m&2hhg)U0P`-WN$Z8OYfUE>D$v>R<^d|OQvEW`bC`H5MMGG(I&vYW5nsqU@^oJy z(~T{+UoAnFBI~>^ zqF)_T4zZ~w(Di8m)Pk<&>H-WFC^#Lmx?Tlb)%_>Nk^$`_uxbtL1sWABb?gLFf7kK7n%B7+eLoCXanFE_D+kDu zgN*7Qww~64aCKhSF`x(;mYhA2PfSK*&UOQ@PO#o7jMyorrsiuUYM9NkvRY0#D(<8M z@cCcLVM@sW5dt~jtp`5Dcd!b+)#7=PdC7_ub_k`bUF~XL=Qaa)?lQuig?crk{AbE$ zyWoQ{(XanK7nNFgo74)jVRjc@C%vh!gD|5?igWh9f4%P4Kw~xnp2~W%z=wI|FT!4} z#s)IXy*pM(0T8EuuOLtrx2k=8h`;Ulma~3Jr&225SjdvGB?1HGbO6>sDZetIkI{z- zSQK!*g?Y`aVV!kk0>Z4|*@V}8&j3hgU_n{2wMp(t1@Y>h(#s`XGS{$Y_2b`%G+SR^_0AB(5#4vYRLB)8vYLskoN*=%{0Aq*6j~&6+&3qC-yU1b) z!o;ay=N;K-DzIcA^40O@Y}HvAyHz%WiEQn7PG)7g`3dgS!*rq@H=GWjae?C&n@_T< zWQERB(k#3713W(f4M5^@HMRhmjO|VCD?5Cr0^F(4QGNds>~{*_I{>s>z^W^kVgVlm zTr9X^pQ+r7b^x`>KG9Vq2C}rxjfMGTg0DmjtVTeQNF}z8J7zuY5sb|01l>T-7S{zs zin(Wjz;5(A`yPZ~lM!Om1Y}#x0~LTB@O1_fQFyhhUG1yX-og6@t7F_9HdVI)C(A0b~Nt2b9%~ve>$O^0$_JsXjGrplYvwyk&T^c_N;WOwFo;6LD+0U45fft zjddj%JFoF>9CWHi*F|wnvSfpgd3RE3C z4`@loB7esgnoi;xW9R0}=PmG)g%#LARnVn+;MdLKK<}tjX|U^kvTDB$Xu||(b#r%Y zrAuT}R-iS(YluE#z-q#4)3*VfAVF2C_&7wcr^bJ3%gmJo&Vim2hkMS-(of|YB(Hf_ zDcSvgkRTP{MeS0>-C;hD5eDu#Z}YtgNGUx(o&cU8b770%$&H7UXVrPHTK7Ba)~9J* zt4|kjsQ@&QQq_el1uUb{SDpEo617J&5In?KozMy9XK5&tjWQC*NiDB-wX1!N0RBd{ zr`%1paw9YMosHZ9q8nLcUjP3c0d}hJNA*@;;EX-Q&o%Hk0$^oMKF?T=j_|%($SQ%n zPr$2!I>57#s}EO}d4pHEUFd1?*{1CJwQeqzxo5}7)$VWvAnGjj5+jxhiFE>Tc5i@| ze{^2cfQ{7vQZodDi6nse{^X?Pk}r1v9ImE>3wi*3Qps|0&={uHcM=js+h|pAm+eZ$D8Dcq@+lUAyNsX75tCJc$}m^ z+_+V4Gft|aoKYC_w+(x^(et$i0nocS?*N|I<`_<8FPQ>MHdkQ!w)Rt!VyW-nf$>z5 zo^&q`JgdZZ7_hE_4wclbPO^povk62h;JXFm%zW%8c*1(6>4HEPj!uX{rp>Dng;x_{W$&IAd7b`jHLk8%`AjY1MC>8Etu&o zK*k{8#3e~OpLWG;viGxOuX7?88Vso_TE^JG4j4z+__}`C5MZj~?xdVg-23avR4NSQ zY)v7sxMom7;lbDZDtL{DI_>jaj(`~jb&zYP=4f~StFSu#an_p{&&H94oV zPSs}yFjsSJSL+E&Y(4PSa3PI>j)NNON0ob!m~oc0y3uprfdJqL>##Z@bz@MSx_1(U zSwgKk)jTKdPVxMJORImit9`{=s+yXd9TF?oao%Adge`O~@$I~!C~Yp=Fj(QK%J{2$ z7zNB9;EpHCLXiQt1@EDq7GY*r=aMoRa8~`~*u#$Q+F8yyM%h&hPK>Q{T~drzhh5r& z@lyz|oRVDU2nZYn~Fa^Kc zu%jIt*)4)SC-K-Oz*Z-%HOEG=zUQ@MnDr+SO3uZ{Jx7&*%H9KH>4+;#2l&Ks2y(&I zElF&>OFFOPY2xk4$|NLK-IE61+9SK<^G*I1;7)Q$@^mr#SG(F*7~rG9>cB9^is?{= zcRB%pvN&7l6}cJWcZXP1W&!I5d~ulyP-|epblsC|nyT^IXAWz`ORWNq)5GJpJVIFt5*G}P~6im9{rOPU-^=&oA5Sy@aXqhG8P;#xB$>dtS8`b}DH*SF^OgvY_Q$UuA~pRHdz>Id89awW~eZl$^jZB8e^Su(uFk67Y^a zi-42~Z(-pmQ2#Y&OP38XwDS z9_pSH7#Iz9m}ytjNmXKBU0_r{`(^?Hc4Ea`eTHDG&tu6|k#&r-o9}63R;Nxbx&D03 z>C`6$Iccl`UQ^80ss(Lzssfk=uUCf|ABiZL4HkL9pK#P?1hT$Btd(x=rRvWeUA#Mm zgSc+x)TZ{QlxxAB(S)x|tqcq%o-?OV0cY~6?=br#u;7D?wN9|{dZNwd#rggZd}vdA zn7w(5eYe|pmyG9XS8D)#gauPE$4(>d5(#&Mb$|gon=mDH^R0`(4cayn&!4Eq_pG77aol<*vU&_rvP0>u#UY6UC4)# z0x)B|x~Zt#0}$}l$sGZBZH^6nB84VnI+3MoFu~#$#K?e`(!KufAkR3>Ul%9?y<}3g z4otD;3_~oOiIi#PRqErKceCMZ%cOiL2G;9|%{=X)8@!NJeO4?7jJf`>wLS%kcyeA} z?P_0WfbZlto#aIbW)sMoS6B5_v1)1|sGnDpU>y*s?_*Yul{t0!2g880CBVI6GT9L_ zdrq@#qBpW(GOeZ3kgBSp%%Ne0jUMnvzbZKFXf!(;Tmn=zIB>bO~fRUT&CO#u*h z0Pc)MS4`$Xt|b*XORSk<+8z6=PTG_UOsWp+64cq)b}mY6t~t4)d&Z8T?iNx~Ebl}w z85Lpo_D;OFYWR;Q z=Hu0_b~OR;UBsL!<}rrj*wk1_bWq?nR?YIg#V5+KIb_xoy9E)9^D+If& z<_D7*)jntUKAQ~h5by2Ixow{L4neR2OG?J(>_5+AVKzVCdH%a~%Yh>VkkkRc6Z*6d z;K`b)5;#I&unl=L8h!89_X(dv1GAQQ$RacWYz2m0fbQ7--3VM3kmSM6U80j?#BB-SV5;NWK1kO zDx3l&IZM6K04&uZV4A)>gZ_i`%_1A+5}SSXHLnS=6I|<^j;&qZ!ob_gx;tz*&L0_s z<=$cOWzTUMHeB7~YOvyIJhM$IdH-+2^eTrD#n5g8-d7n{8$Bz`1)s>Cl2W_n=Til0 z^}b~SS*P(v0QxF`OtPHB0C(zu48ew~eqzCv@|o{cPiEJv7~+nlt#d|7E>2xg?&bx| z+*d?|1BD&-TahDZ1Ql+~c1RZ`V`B_?M~1^>d~BYp6R6pE=B#+4BBxR<2zDBm5^^tg z|7sV&Z!j&L-#wE7-;wbEy0kb01Pk7|g)MMPEJW;ms;X(-tkb5-DonzF5+}`Af}KeK zdYBE3xt*wF!4%vjc3v?+%2%F&g=wy}zITOjm{_-z(B__X8vo8AM19w6+=r4VIPki} zIC0i`5J7jxM|?NHma|J#n)n$QT)-!Nc8CyVeY*wg3~1M;dOdiO;Z-MX6JFOp!o4~P zkOS)jUP9xXc^nYl4N{4bI?nmZ{jE#ZO{NSfD4fuzW^N3#3f7JYbAda|{tEPEP0nU^ zn7J^_GpQEZfG*s3wX0n%fCRw1=D5wcbG*!S`_q8a#F}=P5a4Y=Dz_1D!i+HO;kkYC z@^3C+Iw!xff>rgi5AZ@WiWQphNB&Nm&XP;F34jKACpJKKEm~oWxj@G;ZmQfo+i;G+ z;&l?fR3C5hY+PM~PLU-h&v0x!!Y2HzbtA}lVb_z;z?Qr9@4^_|swxq?hq5?%r5PS8^mjt2quj!9F}7*!g6 ziogXVkU?MwQ=%^6%lO!N+Dml(x3CiZ*btxJkxkpXUBIn8&l zgrdjKpMdLu&-b_p__!IM=PXC30mw-z0q_c$3vcre&ewkkmag{Yg4Y3017=_rew8G- z3@}pt!%Df2Cm78w0O=%S4Fd3Wl37`xl`6Lmcne9OS6Ld!k`aVw^GqQTq$}(pLW%Loybl#^*-F#NrmWuoCMFV&E*Uz;5|wI zraUFJP7QMnsUX;Hu-0t+xOxF9vEBuxNm`hGr=Cfj1KT_crOB_AZWTee$!Cs6ka~gq zt9>B>ez(XC468EmoXuF>jG2a>W#6ZuU^gQBy1*QU9qxF%Gn=%Hx9%yb8sND=$O^y% zq@R@Q$^A1<=)op7Jz+>|+gh?YPr9 zkMaysKvu8Y7s>@}XWS&g)?J8X{GF1;?qF)s_N!W%6aL^e44os_HXTsZJrqenW zbifcs%3TV`vYlFqmsV8Kh~lC7+oYX?58ntuL$b&z9{wgq1Z z^J-W7+_!gOqev4$$q&>f#++c>23~(YTR7gpJ?GhV&%k6VN1Y0m7d~YBS7FEj@0ZN{ z{Z;AmMSv*N51-#Z1@ojf_bHecm?*P3j$qRA{ZEkG42#jt1=`Y%O*P2 zjU9_N4V%oy&W5h8i6)?Dxd}-|*Ga;5;LY9h!1KrHYJNK=5YRb0DR6LsMyk^4P8yOM zPsbzQBn=$_18Sohpc_@+c-5Is31$}t z6oP=T82}<<>63+`a^6x*XJ=jPfO-`ex$4;4%m*g@QJ5dDI3iejxvz6tmbHnKX z`0zmf;&u*?D~C(J-`KL5bLNq;ZU--Q~)hWDO3Flc3p{dVY0zjHvb)X z((n9~q|w!`_PJ>94A@Q+JV|yKyURes3Y(^?iu&quv%r(6Ucc*xw;FAh^jbHX30`$l z**ZEFBQ4&J@mmDM4#Nn$3Xc<9lG0)I7~9Dh$SIz~63mTS*p=QN$hK&s!Gtr*)&-r+ zJ53;_K;9$)Q%a0Z8{>xeieJ!jCp5sHV%?N(eFU~FS=^4svvc4146)$GS~t1c0YXM9 zbSw!Wf*KgoBAtYR0G?&~WCoC5=XR2{rJ4e4{ta?1K(9bt_oMFombSNlS?Y1kwL z(9V)soofv%&Y^(j3d}8&xWG*Gq&HMY^NLOGut}9EIZg{wtwdT2TQQr@4X%HO_;&SJrt9|qUKWQZ$px7aD-h%z@9PzpW zCh7Qm2{!T|8;+{Xs;bv+d|0rGl?|^Te3jQ|GV&cz!>-}{Js`~3M79~N3p!hn7ku7? zvKQ?Xib7y%lW%m#Gukm;K+lgKc$=^b0d#g@_cydmsRn}6e9t)u*x+`XZVV+htpzr+=0_E)gSwOJK z-pq)VP9Wl{u(Lvj3}2wRwqNaPA7y)Iz!Vx$Ii6U!yPz(4$*W3vAPl@Z+Fj(N;GCsj zgOXLglWoZ9=#(YNZun#JX~6snOvyWNO*;aZb{^3HPpV?N{aPkIf$h%5-*KODQjXDJ zuibGttB4A+!OX_EPrxGqNOfO_nVSlnPiW~6ldK^y`y2i=aFV&Z#2iRKi6!DWFY--* z+H8PJCFvOAzCTSurK`S-27~Uv3&g3w76d?j=0mJ=8{An&t=DMo5A1ob&`+x|Ph9}n ztzgUu0t6uLY)=_Mvm0Y>29`b5q=5;DU;>up*riMW+&D_({3b}rA@-ZwX+6B1_I0-R zrecy;yV^(1;CB}_xAE)-%aYhyKv#4d9aS%y#({Ejn4v$Mmpsrb)&uCoVpiN{K+CM=lT0oMJH7~m=Ek{W z`T;KwNb^$J$EtfC0W_(A%q8|I9X&#zGtf)Q2e?GAt{IHgWaG64{|wx^qDJ*vU9#+a zGN5B@CcsbD-08#?q(PEuFq=;GTqj{f7knYKlz7V+?~e7RA_Ybm)9F3TG8m@M+(=_K$j@Z2o5=dkC!@V4qTW5ahC7ajXZl^~zU8^9+Et7o~; zlm4*NJ9lkP;-%KaN%q|Hzpc_Q>eQ`%Ka=9lCgFqzp>nmWeKZU{kZsZwU{V%Z&MVqU zD;Bt}TNRaI8h@s9X9ZH~Vzmh1bYO)61IOyHoPdQ7j~`h9u!(+!O$V%(*+i8z;JnE# z5e%ior3qeB0C=lKPh-!W7{IWC&g*&!rt#UuJ_W|EifETHN=)~Fmv+I7jl}*cMl=D& zbZ?yss3U+um8XLMxLsAwR6!Zgl{h=e;$1+f`frK#f&Dy@lk2-Aiwk<{+A&R_jRqma zzGs^2QUO*%=4QK(n5{tqqd7I`V3}Kgo0aaX!Js)Np>h|jiZL_P^!+J_} zi21LIoSkK>XR!b76fCF&|BJ!D+UEk`tHr4^z`I3N*oMpWhAttB0sM}4v~$5&1oR)! zntQf^v!qt0`D5=(KE|5>P?fZ}knIoMaWZ4hRk5d6cOaMa$C!V%$sA!bs|i{Td?i0> z72tL(JZBi|%uhZgX)3n1qciTX=$!<5=bkkT`wQq|V?eg%d)7-ojgO91qpNt!-aDV{ zU!bS^PGpN?R~^8v_ogb9x`1?litBNEM>-*LvcZn#+&!y~p@B=(9wt~B0Ti;&PQbpK z(8>b(?sX)$yskTyD}1;G$(BwbfLtBgkr^Os&k_17t;JWn+D8rWJH=d5nSIAh1X>^Etbr)1pA^Q_r$ugN`insx*diUWlYE-8^aI`HX5L96vi51L3c%5958Un zOX_}|onY1S)_$DkJ(u_gr6$7q7e|WdjoXE+6kRskn(Pv&G9h(uH2-Q zHSuf^3hJbML7$$pVp^5VoA8AylSJxjSNrG~d{BoaO2OD7(;3!q1s4XD1A4Ggu8KPq9BJ!2#3VI|e8P2H`(Mt`ez}J9Ko}j(wWqy$jmi!7&>PKrbJyhV)7iVa1Yp&_ zY4c@LAywUTH?G~;{~e9{spGEeRX-a2l>Fe&pL;X+o$6v#!hnq-1mKqJ0@ZWr6enUQ z7Ac{+12kPfILXEqKxz@hlL)3J~w=xe%V{nHxED>o8 zm>zhW1Lf9BN7lH)g^H+f{f^M@>@z2NR>&;KJ8ST7Pmpa_h1{!s=38Q5x{Rhv5^}5q zNMMkPtqifyR7PZpja@CETQIA`fNfUc)on~LjBsTa&ex!hx(~e7$=8KvnazehBbSW4 zkp0*d>+Iw;+w?oLz+~fi7^ZI;Ha0mxDZOn+hdV_-ra1uT^x@@cZoUNtJ{6%*jZWdIcv#ke+j%jK4+ix z%E%vLGS_>rfFrRa8`^%+vF7Tu1E!z0`1|uSdP2=r#;n>Ide`qnP#$ek|*l ztGY>4=Eo(ODW``S#$_r<#hyKoOT7bGckhB3B|#a1l^spS(19OUm9@GxsVcDS9^D!; zLccosodcSV)njs>8Cd7hBvcTdg$i7^dHxKr&BmHtgMOHMNz5*rYYxCNZS}y1*3WEj z>IN}8kXecpQ1jUtL8v^Ny1%5Nd}_U7Mdp?XEK=3oB&$^cK%!otzD*FKl6E`tj|uJir0fEjO)MLmEa0l+!U6jUFOy+Rp6iRMy=F=A4j6%a z-ZU(sOXi*pFfa_*fLK@RI&y>eEbq#1l!c>XR+AnYhPh_*O65xo!y>b>RNu?wEIX{D zE;)HN*n61%ch$6Akv;cW%2h{6O(%FV>G^l>!1K>o?ng?lWy#aCv2UyKpa_N3$0?D2 z3npISoaNw=3Qf)Yg*rZema%LOKu5Tf!EK!7cq7n1}RYMcXJ8lfsF!}QfQ8~zBJ-T_}#(#fve<~7B0S^)%hY=B8YeN!INl z$RZU`ZD`5g5dG^a^C~Bs^Jg5*XD~<*sm3}BGTGiTp&f7-Ni!Qk>FYf)$Du@UsIf7c zftahBtb+P_-3RH%176;SFn=#r|7u_J_O7{+IB#2aOvtp=ZX;4b#UQNSFdGL;(gC<6 zqb9lmKH2N>Szm&$#5)8?tMZVAx3VAxtQWK-s20mQ(5vV>k$vRV_neP+5diBpAU#Pw z9OH^`GBU!rW#bqDc&jAxEdW@CR3s`@WK@&NX^FS_3|CMJWbs-8kS=_fC13Ap3I=E! z2Ky#J(0TDd0o|-}-x2y(IWyF%uSyfh7SBysYjq;PHoAqLv*}6Hs32sCv4a3yJB8a^-GJnR#9U1rNKI=H0w9|t z5Wg9cp=&4VSVllgQdn@Y8jOF}V$(TTsRY^~0O*GHX&)w#Tk!5I5MXLF)(Tfew>p>| z$S21tU!|UoCeQl;f5Pm7$=M)1mRa|bJTi?Z7+jD@rO{x(mzi6N#JPnzc;0)}8pHzc zDR2S`X$SNyd#`r2uSx4jbRfWa%KY#63M|%K$znuK@T-O#(K`+SHAq#5|@Vd0Wh17{D_HbGXIWO=A=A zQiSBlbtCt6?$0BfN~9ABChLM2N9yy{`ZY~(v(5MJ0C2liaZ}C&;3ZZ}m#$6*VHjwb z`O8kM>-RZt{Vm3YD?sORH74>Y`2n3@F~}TBr)XQODM{*6|EA-9{5-y7LHJATv4ysyf&l3qAT3E1a4 zCUgtN6X;7h6!Yd-e>ZkJe%GVH6gy9HClNqnV_b$na3@9x0oe*cu41{B6HX-tTs7Ps zfUZh(UGTP|j937CodLE+IEG&ZS-ZK;k48Z6*xwPJEjx_?dif3N6x2QQ-PnIvfOD?p zGM-$6)Y{@ClFD_B}Yv8zDffUkz9Haxcw9eC@+;8-BW2rc*|pCuUD z6@bq+eKgI9K`J)n7NP1$!7R$sW(vG@J=)NE*_&YFCvufRw+T7$vKtIg9WzH^TPv%^ z9BL3)>)qJ!A%K&r-db6~BY@HbEYSp(fcLLvzTZk-w+-RIJMEkz$WRifbZX|3i<3NNn4i<>V&_`i=~1$*O>5RfuhQ#mtS#z&1XJLzqmXwSO4VP_wSHTnJxzZYF~AL z-_ff&5CIW6Cr6UxU7c9TAsG3(i7oho9@Vz49(Qj7z?q9e1ystG&AIk00W7<+mE;4i zk|G(Cy2M6(1~w}^-=u*a22j`22DIjr0Ub=tN zalB9xs*Y67%||x(CweD(Oitz;FPyd-gaJl_Ra3xBN$u3yIYMAFn$K=T zoUDB^!-)u>-Lj^6o+JEj8-~z1Xh1xx2`-6CV{{Ty!2u;F%W=VkBRdjPUe`XBM{oop zW&{TP{7jc15r7Z#2VhP&-1r2t8%|nRK%OBpZ0OD#mXw@|jHP@Mm^DZx&K~g65SO63 z$#a~@MY9|U1#rt!wZEV_Z`GW4gcihJFv2yuF*(he(y1`q*>|sYwJ)2&cg&zW%I$2P z-NkGN@ReLE7PRh>MgA*9<|^rM8fM2W&MR!93;t+SCDf{9SLVyFHtAuQj!xyoDZs!q zjD-WpNe<%jGeEB09fL1;%Sxs7Pr(5zegnKs0#}xk^<-x^Ku@X?i{^%t+=?K+Cso;1 zKIA(9N%lTf)F`p!Y+TiXcb(*N=4RziGL$?H;5jCvu}&;=zd)8;x#DN3GVwI`>7-K- zq{k+#zuRNj8pB+tU_PhTEIG60Dv)Fz`8%w81Kvg%Vvf3Ga<;a(z@$^BLDeKsK_Aoc z4?$|ES{%>HR#<+|M$cFwRYXpeqw5-0zrUXD9mtlM7mI(juNlC1EGyu3@ZGAdOv;ip zjqG|hVU1>4xEb3%Lgc)VtHso#W_l1xJkoS)r+Ea!3T{XoBxbE-SxKr(wa zlf1X~69ecfXMmA5PLfi`qH+jQBu>4)d1A>I3C>)#btVOw=Gq5x&eRZV(-8knj!4r4 z9IDc6lFur6VW-mi3}CxcI|J~NIhI$au*m_g3OGancRo#7W-WRR2CjCsuXuacV9(H) zpdBerWkDT~sSErvjIU$9SNVCGYo6eK>}&8Udptk{}(*$vj5mkkYT-^pH{Yrfd62z#}HlSBXEd^}D%*kOuQ@w{3 zg1hwmfSh1mLH}c|Su3(Wn_~SwgDy3O)n4QzoNBxPIiI3FJ2oDdVW%Bg=Hz>XEkCRNe5&pP0IUmdpQD$sfud4lgJxUQHjD)8y#&;UMXfd%*-i_;0OrB<4Ffae0i1ZZp>UC`FALx5Xn zr#uCVe6}L21j{nxSIMb12@;e|>ToCK7#VHb8pyP;=`h5o>18Wd;AlIdFnB{6$i>)#kX){cTD2g3Wk#~2~W0Ti; z)TiX48gV{ zIl;{VpaWU*r9gEj$AoG4lT=~`5H+Ez-a6~J4oFV{LYg;#KB5P_?!-6X1rd4&#Du+W^Ffziz6{3Pzza1;Au4@n$QuT*pY}GoPbkXed zK}et>7|kBM$xg#38E2Dx zzRIyl7Pv}g^M0w$Mq=iT%P^_Pr6;`xqB?Kkf_A8Sy-noBcC+s%w1t1d%r8T z!j%zMtomqNJNviY=o41nyn>@@b$XCMffa#KY?e9&akV9O2(m$dUDB#|*tt$MVmB^F z0AvoF?ZC!80|4uHtJ5-fJsl=W!G z1aeeyqu2MmBkV8Wk0_bu&9Q=`EQkoKC_64w36?7Wodun&l-yC+Lf6r{JFW5vK>?7Z zR)DUsn`{yj@LJ+`6_}*scr-x=t9FcXk4}QH;q7D*05%JhhY4sCh)){!R7H9l;P}j3 zKfkwDq1wiz*^Q+mr(<(*ihi!-Lj`|oZ9D{V-C8@%wNF7*0KR@l%1v@ag$fqk{Bp_b&gO6% zrhI_s3?76DVW303Zx4fGfY~pvcD1J&e1rwSC4Z!f zo30R&0wn|98Kkm-3OGBRbN$^SpaBNJRDCqlF@k`TEm$-5{myP|8aB!S{TaZj>+d8X znjt`R1w>ThZ~go8#&CmAescHXq$Yy=g#C9K ze3)@HLLktoI|B2Z)Bcu%QQ&PNeznlNH2}Q2o*76d$J(oPxz5>lgG9$ zm_T8Nh1Vrat-!dcfeXOT?{BnVl8VNmv8b+fpM1!aM24wqn) zS<>M-kxV&#bl7$!S6B_Em?ckDJ?Lz(`)U)OBtTS!dl*0k*_f1vwL0bKB>S>WrUM|@ zHID#Nlk6r*U|W;+f5YbJ6k}>W!OpXB#h%v?&$XUn9PkOQ z2Xq~kL4qpg+wT%jCqA81kLrI`9BYccQK93`De+|Y=9^AvLJPyp2dN;Qbl&3 zDd4`^)g-`wrnpJR=NN{?o8X!D^NG)MpnC*X>xNz_Zl;-Y?g8pOb)qi8kc`j|syg5f z*TPN!mSE5}bTUx#6|ScZTYNXn$%bNvRbayy$!$Pf7oan+y#pf$!NPV#8}&3N1Pn+_@B%&0 zfKGs)E~@WmMZq?54Uz=79O=SjM-JGlT&J{O4e?Brh2a#S&)LqVL~3%|P7Y0X9CSm>(N`=@j7Qcnk;BJ@;Jwb_zn_(}4Ud zF!+MDcL6*kxrW=syS~(QgII*gS%M|48l)z!P8Ck@f53`{d>4s+VJID8PM` zHvtpOer$nDK1SG(6)+fKVN}IZs`LaQ@N(Cp#tPfqH@H*Cg4Ta70W!A%p3YAlArMjQ zDGb<1ZbYo$nqu))tqAq+teW9!5WeG5a3bpm#EEgkGI;Ol-Mj1A?4*I8eb-L8`F zB@$?oec)AY%4D|*kBugdyV@6w!FL6i)Mhan8=0H%PG4LnP$ywAX-@}qGGeu{RJMBy zIiV4SEmUm(C>y~6?(|YM^Dd#vO=eZ~bQ#9?7T9u_lZH;R)-%Pq*mo~@XBqY^w%Jry zV1|a7FDij|hCXzCIZ43lDtkHx6=Gi2x(V(WTCtCg(Q~yAW-~~b;K$Vm8OtMpTDDFt zF@Dt;hS}sdd?Gsg&e0%865s-~`G8AQ9RbKD=6r{s0D{Se2rSe*t`fY7tgWBqv!-BE zUEK;cJ|^Bu8C`L&Bn?th7!^EqPYl?Yn#e_|*vSv`*RTEBJ!u%^1VODW2YS*)CM{BZ zqxM*L8n~O!MV&Zob9!-{0!KAI7q}weveLYoW$-%yx>Hs@ZA?3WeCDpeBI6NQMFvWg z94AHfY~h}b;KO~#hEG~%E*>h$%q8}8WLKlXwAGW94Q;X6kyR+KXdwHDcg7Krr9^CV zJxKqp@Ew!9SDjuUfIK(W_Y-U?%ov!4(Pk$loxF+#ognMjcn6GCQoK5a>stG*<~pW4 za>ZeoVkdd4){8g86xaK3r(ATLV?lDffLRpT$pj3zcKTSBEbS`E4s%+N5?s~aYy(zd z0uB|>DfZrJ?OAYj;JH(#5rPu6sj0EoNhIE6Q*);+6S}~hnt$wQf1@Yc7|r#^oeIsy zv#u;(((k7#teqlcOlO{o>!?Iah(Jt{53X3yXsk<9u#O0yJ)!M%U3J;++*N>Zh~Q)d z@}%CEV{;GqD&7mcB6>Z6o8Y-u?6ik5(l>awuxU98 zH1kXM*I#(~|8Kp&{^rXPq@GS z%>DJp@2?+qfBj$g*Z*>VeV_a5o9?gw?d3DR^zygtIkP}=LCc4j?6{5*wmz!>cO#pg zT$z0&Ba&h6Frcxza6EDuE4Vp*YH-!^+6B4WE@FhhRbgUZ}!VMyv~&^6_Qz zoE50XBb zXROWx^X2a(@zo6wjb{b{AeNb5HD|>IyTh=-3%aggQd2^27`Suq;{#U*H-M74e@$Yqi{rDH){s8ko@a28q`trU% ze}DbBm)|}1?H_x8{f{r7`OPmuz-;<;rjLWHxn#7V(MyNa0b7d9Ek?|I0BI0W}#L9hq38^ch^zH zFWgb4V-_dg7OP^cHQQ9q-sjFg8ps~}H@wv#59s52AUmQY7JY}!+Kr)FZawM8Ar`zX z0*_9`N#@<(k%?`1t2AZLT7$C{*x&>PVL&KCz_Y@sP<>u2%i z{qOhJcfI`kA9(@!j{xDneF+2}0mA=a`m9TqjB;vpJB_b}Y(#K@`>TBb@KZFdqI1V& z0Y2N?m5QEb!%x>S4A5}Q2Fil^x(MA)3-@Z=vtlG)f4+eq#V!#*RPFWwE}7W@P_X2? zw8uTnhFmu(~&5|G^Fv$4a*o0A4X z1m61zMxB90G?-1L>1EOv#{#Q)piWRAKs0kMVZhKmQxLGW0z24osZsBrBItM~4@OBc zoKypXC08dkoy6lhe4|Mmd#-|qy-|KbZ{UfT~fYsFWxoj?0~ov!O!US5y( zQ}JHD^Jsqp?`1!az5OBW`Hx?K{-1gY3jXBF&j{ow%$(dW-=_>b7JBll3;cfp0e)B3 z&|wup0P{1+sGR~Bi9u%9k!-5~ZY$=j>j0ggg#y$eHr5;Y?h%5B6c~_gWpp?oJO_-bK|+yCPwXQFh1IE=WWOMqIx!roEHkU$4E(?r+n_DSyKy zT(W>2VSSheIM#c0Yje6T2iBbx>x9<1yGr8#KjmS;0Kzq@K#R?{8G_D9{$H&f1HO8+ zI`OV+*)5Er*Y`anFyH@$6@P&HZ+ijDKjP)z6mIy2j{rY?>GbmtdwIRKU-k0e?|xzb z|7*OL_x$&GFZ=m!_=@l~xH?xN#wmFFMC@jL*ZPJZ82ZnBYmr`6vpSqTG%OKi}J zg@rkF00lw%zEFJ&X!$|{#IOJFfU(ObVdFvp$&Q)Q##-3+O4vGy0hw+wo6=okiECvS5Ywv;WnOKkQFUJI@yI*A=;8wA8A zx(OqCYp{~e$63j04(NnQ1u7?e@{~&C1$4685+Dl#WPn^VV_Q4!HxOen0Y&G4bPncj z(C$HQ3|2gTZVH5*(X4GGz0r| za-&#G#Y(F8F_5JkZx*zM+XZ8tF*OX6&E~%Y!w!Jf3b*Vz)KgJ578EHlOd#iifoZ@v z>tj_2js+jP5p*RvDtmt=PHrZ!eI_w`3c`xDgOD@zgp%dPeDe!9{e>?~{o}ungw`Jq zZZY~rZa?7k^CMCCuX_RY{}tZr`5)~5fARA3cM%-2$T(a0bQa22`+@=dRN@=R9?j4E zJp&d?EXK;Nv9gCXA?ex5dmA5W_( z)Jy0j`l|7plBah7iwtlL!p^djuZg~c1d~KS1XHdskgB$<0{C>Iv%|bmfwl?=9eCc* z3FyGvO5KXhP2-%+t)qEjk#eo3A!1bE=AK0zcOBpQN(fDGmo3$I^@P)%2D9s^Aby4C zuAI?ajgoT$@uPji3k&_%;=T0dC*EH_y}ajYz4pjE_>Py?!>033zOeg$0Pkfz5Agrp z;BGrh5DkE@bbbW^UqFCA;1d@Wn0L~EiGKOyr2l6ur&^4hOhEz5ZB7z^o^7a-CM?3L zp12l{y!PQvNtLe25oW~`t= zC;&dcV3Y5tr{T)YjpZsl0R2zHd)vyN|3YMa>4H*Uk@kIGUOxu!Wlewag~@+Nc^*l- ze+chggwAU&dv>p~on&QwwJ#Wh-|=on1F!-5NGUOY>34umpmZML%(2D+&}rT?49o5u zL>6Hk0iOU2aQBHNP8SAxg{1&(3AqCst2Qqe^i_s)1V-Fd&UFE3vdd&lRst?*{C4dG z6L3h@ovObfuF+jv$L6vVsG$*`C!`#bxd>rsO5Uzk4 z#Q1XGuioSOS{0>wT>HZ<=4ZV8_rcmfbmZUo^1ch)e|6gTdHL@TdI_d}^ZoVT++Y75 z-s|@N^ZV=nCS&4&mKG*y^3^`)48Gb7JNB4PPtKSM_U}N?-+LL5kUZ{Z6Re#l1M{6{ zpk=`)C3X@8mtld>V5-=CcY#L=tQ4qU;C6KEJ*x69D|5aYfJ}i%COc5Uz!KM6l_X_A57S6fFeJ{*7RqjVquwN-CLtyM(z>$2! z2f1!HRvmk*0;gweI-O(EY>c6Sw^EHM=F|v*+GwovN{Xk*9<~lC`5VOdOz<3((YS6$ ze!T`W3tsv-k!vYH>^F6+FrwoDDu3F`>zCnuMcD8C@^9aGL8q^2`-Yd-M8)AgZ2a3lt8T??0xR^Wk12RPx3cxtxQGo z#uET~ir~!crH2VFU9-B+<)`_`cLn#{}S&#_g}}(aeBU=;JH)ft9_0DemD89%TPKUWRm}M z?FZ}Pet;)8)=m9JK%D}U2MHovwb&^(c!-US6&X5%RafF&xn!{SGyBciVC9%YkV~+2 zGMf(g+Kr&gF^+)O@-la&RB0IvaQA7PS{Ue11#nov00D?pkdlgLjQ|8xu;r?>f&jA) zAX35OXgr^km#`W@``nkGfLkxBF~imcmE*7jkcL>tHnL`Yh&jkUSLGz7zMO%r2Hx5} zf~=`WgH%cZJj-2BR-vP@4zqEkDzO6Dv1mLouheHMDd-aKU!?Dh9yzc=Re-_@$ zaK80|Mjr)sd%XVY`|HQyeRA%9aDV;&`|A(B0R0<2JPA)ufLHsR0{qSu){FS z>}Y%o(C%1$XX~0ymlU9%&_#U|kY@}u11Ty1UC_~h>iooHSqItTcv?g)XaV)cgzB+q^F0Ea&r z@9i3Y#s!By+ICLPeX#of+5Poz++Y9J{q<+aT6?uG7{JG;1k(_U8?%*6x=s{!d7)>) z*GYI?f+4I6;u0IL0&5U`zyh1|X6&RA2MHV?z#aoM>R5k3%P#8Xr))vlhB`$6g9adU z5*XD_Gq8$@fdqW=nYtIn)+rDJO4ks*>vpS1t3NYT>8GWRhF~UcRFO zG4*c@AcKI(S}cfJ88RTY8U)5L?0ZV|broM<}9aUDy$|2|{++TkS-aEB?>jnBgSM5i> zyngll^`G2d|Mva$uj9SdCad#;Fs`rmIRNu<5tM7aD@n`+1thF5AS0Gmw=dW0=W)^%jrnfQ&aU~CHn&2o(K*x4=1#1m$QLQ4lgi)O3l4c>p&-8hPn6L zNDw#09PGG{Z9zm$6ErO76TN!EfYR58AX!+j0KAo8O+gkswA+u0s=ws^`t{&dWv}-6 zX^(OA^Iu+n>;3gRUjY9fA!~UeTdwwz1N@DiCQE@r<-7chmU)5OOeVPj8XKu%pf_0% zH(5BBVc7ug)H6;%fmu{db3Y9DED~6p{qvQj+=ADaE8u|u%-p8Go8Z75xdXm>ECP^l ziD+H__;iBOskWPvzSU_=_w+(l0PfgWb_*3v`23dL2*_L^s#;J=>DPgt^N?auhZr-R zKw*K`4cYKX-AjyJ=6{|FmL;PBAlu=Mz)CZqsECDW*4t-_a=Cg5iYQRU+l~+zvHU0} z@f?OoVZW~=$~2#$5~K&Xyy(1E)X$mb{SU_e7u{b!@BaEp7wq}MwZG>6`t5jMIO|`* z`-I%@!uu+^oqghJA2Glmcs|iWX~H`NXB5bD%rwjf%{F!Am)sf5N!JO%t}MYGGe?bK zHe6Raz6K{Z!G@-SCL7r=pRtis1aUhAKrWGRLF@3hxPQiy0r{9eRR&e}zR2^bfguB` z+koIME4|^}h&uP+z&+seW7ND+#m8XSXEoP`8MEmGN&(?i;7Kv0t|DqDpzQ=$>2#9K zv5B{Z`WUIAijHlw2DtT4&0EEYr$SMaJWH31KMYZ$f`jB`KMX^EmP!J=eh0|7f!Grk z0rRTbF3dfi$L#rp_YiB<_riO(m0x*({fhhRhv0oe?bW`R?QvrB3tj@e2aEr(*!&%M zpPcImsjGeD0RNeXnDmv2C44rS&#{-gu@NwK6AeI8!3Xn8XZqibEL8wukX&GLE1M6y z_d{%WTYT>n->vkUD(FIBlNmr#AQ#{cKWxEKNzbg>r3ye?AmP~E1Z15hD8S`u_4%^8 z0s~rSn@(ZS48E2LE}ki-R-cK|xU0FFm}M9It03L2UrC}h!EW>k3v;ETXH zhZvCeq-V5FfN?g77e$z;0H;&!8Q_V|DnVI+?N_Vfb24?xjZp=l*!W1N4E1jg5zsC& zR?qSrHkMhP4tDL2WXp#%;~~fSi5JYd+NpiZ%j=O;{W#J2UH8|&dw>0D_>=yteWU>2 zF@^{%Y>NCCQ>&Pv4ui=S-OBzh_$sy)MApUrhPNKlOrrBiU=tZ=M!Du?Sf>g)Zg{I( zJxg>_;w8)mb?zI*PQe5(9dM(hHVT+2-97V2SB&a5_rbuD1A`S1JNTLn48W^3WC~J;tqG&iZyUPq z0PDjEoqS!1mB;UX*b8X;8}PnR)zz-%+An;0J=pwz3h#?&{kgD@U+p6W_z2OPbBS@k zcc1I@?9W)WDc03p{}P`&;WhRuAW>kAc_*JY3@Exv~fiuQrZUKxH zm|^lYb_$VBLR3DC8bcHQG~oQbQvkwA0)ZLUmQGb;bt;$wbv70|Y`G(9#uEX%`^*|V zC}M@l5L59o<$k3CKxGFw(UT`Ktv#z4Tx&Wkv*xJaWrsD05g*LB;o)Kb>+s(8@&{bd z=4wy0UwnUkJKnqP{9e4TjC+H(Siagv2JpLO%$>%*t7&$}+ir7VR&36drR#X%s)APi zZS}0K>>$c}S(Vsn`g0qGPHof)fU>_=VC4)X&JIFbFrU+G)HRr5iE_yy$$^t?SThBf zQzE#ksH$XFI|Na#_Cww54>D#LYg|9?M!<*)lG(Mvu+1*7CON4jR~6*~!+us{T%9r~ z|My|mk8Q>o#Mn-2m79mEYOz{NUEahrL3?NIM(7&`kO5zC3-C@?%n?SBHLMc)c`TgQ zsYCRmBaOCLD*&ytPxT;Nz|8uvo=&RwpU3+=qw$AH(;^-Y#waM-K24AY_|{OD=N-Kp2zfWDFe^lr6~2HgO6tyUjhZB+G+< zNygBy$pjIsDAu_a1X77{j2TtWbAl(Ux?_BGwCpzK1T57CHsMc16sy3zpH;Qrlysc{ z(Go#Q0?3SYS8g~i2vik(Q=sjh(+(i9{+qK&Wq$PM`=8{wfds(QfH4LR=Ftv*JP{Qo*~9hH~F|TCS2uWl{>V<9^rx)#+FY3hLr^I{obw z{ais-Eq0-*c(Oo9C44y$oPb0}k3O0pVj>sEfnXk0V7tWUrteABLlKxkuO)=_P`O31nr-K_et6h!2d_DZuxuyd1gq+RjB-y=Kt?5l)(tdis~5bCqRWsfc2!kGRddW)KB{2XNlo0n9AaE|k|R43 zsu_YXmh3*kU7i5#u5%s>Q;-Did31m$0+~!>p5TZJ%WAW6$Ae1l<$- zbjl?SC$|4Q4i~hc!TIMykSb~|P-~Tw_b}J4WFra^bS`MATm7u>kN38hk3v;HxG~nQ zcC|03J*-uK>;3gh@2}r-fBnJx>(4jI-K%{h03QL&J4X+-VL7Hy`7}E=N*(9E7N=Rr zTG}d=I1F2-Y%UoX27EyvRS3o1tJ0_{fQQE4!vrSNfaP?b3T!G?IF)2iHj2*81%zo- z341D#7$SHAay8R5x11ln3l1QHv`v^#r{z~UE6L|wNt716)_Ohxic&E%7UWDZeq2Gd zft<@S8{!UW%Gj6lr4>SUzWV|J>@tZ>gKmjEwNrPiKp zf~ESbUQaOG{Z#@<6>bC>4=N|;98CPE`|Iz$zkV(*o&D9mw(Y^>|L*(iU%S8l>HF*d zxWN6#(Pk6OvrXJ>>>IvN6buklRVUe|G7YdgYs@RNb(WeevA9D3%DSjeXbB1{(auV? zgD{H=+-XE@(l9{P1!FA8K-jpQ2Y34Z^j@_ovrU&hqh){zV_uVU4eJYK!^h@AO6J9r z!O0NgCXJ6B`gw)%#DanipZGWgpkrem4Wgjh#-2ePkc;d&HzF0lF~^6 zo!>kg2Tqd2>I1O#V8CnZyKYWOhQ|KwFu^HXCl#yj@`>Df;v|z!-ow_LI!7P(_Ji)P z--P#C`)|D9%GEvt?NLDOr{g`7|4-gufA;E<&u*IyP@jOit891%$Ex^=)4noR$yLU6 zn#f_mz0z?*Ff@$OT45uY1iS$sYDRD14l%0q{F%91g)OSA(;^#m4Ke`E>Z>uq*l-vC z$pH95t_EC#jv3fSHpY$yh)Tt-Ii?paLp?CUAigswp_#e3N2P3WrW-;DRZ_W$_(^{Xy$f3?q8`=3E+$dYrWwm z2m?7mSOvgc1{ugMNGf66Y0b9@WI9ZGx<>`Vo%AOKN;NnEat#F)c&9PIiZUt7SY{c@ z`ellsvYV#?^b6ai+zkiB53wGz`%kv6=XqT7tq*leyf?Mt`yZ(gn~iUkLDW zyGi!S$M3$+{q-B}ufP7~=c`@qv)X)Df_8A2DUAsZI=_G&r-B=_K zyscuo!IPJOw^cOj#(Xa1w9I`@a48U=lL!@PSkQ@(sc+a3xRPQx&9|z$I0O&|xE^`K zC(U)U?1uqTj_FkX+Z&lFPaC&lN@rkHw+QT>@giqM(_jFU3cOTc2m&q-5nK*vCmQGU zQ@?}x!FMYHSNWa;uBjN&HUWiN*PQ&rf$B*}0rhhyh-B~EC7^$nMVruWOda!tj{F7C zCwR==3??99fkEeVp!Sz@)JX;sioM_F`KaHY_qNCH|FZk*AGp7M#sy8T_K~!2y}y3P z{q+;>uYU&bi(_5wBLVnM52-fQx&sXqN#7sGbyt4lr`Z8pHY0%99|3ry!u;5H8RJqQdf zV>uP5xRH(R%w*pPNMU;E^Ts{JX2KXZb(~yvpMaK~D8~;3Cd|3vxQ%duYvcz3w^di~ zPA8mWk<&-JYagaxoDTXKCn*Q`Am-5$Acry7?C++SO8`H~SRn}7WDLXHPYNIro*m$Q z$r-E4f|ChtUCO{C!1G)bux5q1CbSa{^MD5dic>s$m_B9!WFk-?*0l+K5~F~ta*P>I z&PSNfP~&EhHIWs5V?f-k{f<;h#DQ|0I!>?iHM}e9{Ofxj&*PWhUw_vH?yvTdx4-HB z`d9C-Uv__e@2fjL+W=pI?^I!S!#jwK2Ga)Ugk8XE`WZ{)7`m!oR}2@^q%*Lx@KzRd zW^+CfU`ti(Tmn4b!X~aH6zut?Bwj!#zjj#J3Ko=%tAf~V!14K-mbkZ#tQ}{TtL%Fh zwBwGlhXuU!D*?7-&8L!T-DyefugZwJq(|kBvqeywY!g8O8^E6`4f5<2vA~MkDd`~l zp4vA9xq9sq!D&hYW&OOw+PfQI)6Gj&aTQ{&EqKYL%L7r@uM%8$_{^gL#5W1LCb;9$ zYy_MWzCae6!{_;Xp2P3(Jxu;zj`x;>57zTXTyW%SpM&;D4*wVLufPB5im!irR-%(O zgS5#wxrPfe9Lvdo0Aoj!uQZd>RDeIBU3gsZ!jAZz#pEW8YDzc+34R#RP*REwt;bhv zC<~aJ>?SeRib-_22QG*l(Dsoa{fkBb;{p?B^{RlU3yzj~|0d65n>m&Wp*favnXy!V zzfBO;DdOd%En9%gBvW!h-UwqD=-IT6K#-_loVg4+r?Al=FBplV2pa~fL9XYVGoXqQ zs>--%JcDy?RN9LU5qQXnEOtk^oF<2M6QY|44AHo%;Smv8fJdfz<44jX(G(k0bjWoBG6$0-3}o9 z8PJ}jM2sj~dYxT=&Cye`}6LvfA9t5U*P^~pZE6b?yui>fBnR(E53dJ|C!{dEr5!1z~};Pwb=r^dZ#-T zaM!Pxvjv{4dMnqYHkaK93hMpT)vY-vcya-^rRS_8U-r3)#;~|dSz=veHA?_r z#Lk_lRA3G9%$YWykt*{9>^J$l4WD%U`klY>{`$`Q>)S8rakVc{d-&!5^LQ^yyV};)E`XHOAN@P?3yt1LQId&YtQ!KKoOqx!bmH?>}xe$~(6<7weZ8N6W zJRayfoInIuOs7A>d_CXeVL*DFKMT6B7eo-G?pXz64je0nzZPg?YvVNQ>SzS_1KIoE zS>H~0hF%qLW9w?|&qIt|W*4c(eg)9gZLId`BxB^j+l2KxZ(jfAOXRx_=%jbn&$Ul~ z@%{Dp;k|G8)voqMYmbwwf9L-CrB_#c?E(I$X}ihz0lrG33J$t#ykn5qdtU$l25m)H zH;dOz;Ow-skgFK74JjqoK`@vQKUb$6z*h@~0E!d509Ng*4PHQ|N|Vn0eM8niGiEe_ zCsjR{jfE8gNkAtcD!o1nTGY5#jIX+1b*=STFY=7tyxh>f>g?a0$km#rf(}02f6te>-(Kx%AA5WF zyD?(iWhrayrL|^ZzgCih}H(SrHah<&(Jr{!wKh z?0Tx)V;FLR{r^HfN$La*41~MDcR(k&vhSXO$mqxp+3BV_$(v?RaB{KPAe$KRqsIR< z>)1NVWV7Mb}H<$>#w$*i7{24*^DV$&{PUacuW!Df#?`L&|F?&;&Z8jKZ^nDK zovVG70sg0v!*qiHSCC4vl+Re~DNlS>-hMZjG?(DH@RqGV+fP;&^9<4!xNM*UOqrIR z+0IqQ3h)}}3dYoPSt6KYL6lAp6#D3=y-saUysWv=W17D z?NQ|IpL+>_ul7|2_-;c@ze^kOMwU-h<|_di6`(jkcY|i*E1;?#`IY@*0EcNjAvUuu z?s=8#UGQ!nEQypQxt;rPk&Rvze5t{at9t9fSE*TlXG2o_ICsuT0C!e#Ck1T% zUrhf*qC%VhMai=8g^k+7R1~o^PSv#0)rLweap4ag>;T@k2^krcQOaoeq zv%|W{*!cRs37*T~P5|Fy~aELx8jPl@!?K`dk65%JA2dwexp89Csd? z`(OM5TCR4rtM%HCyuW@g-k*A1?W+Xv9Y9D&zid--%=8YQvB8hdl?>(e?+&xMud+!W zDn1D4Q-oeJ7I}yn5V^0O)E(RL0=C#JPGxP>-f(0ml`{PGpA=2EHM_ZXb-=1nnRA8oj$k}x>pK~DBR8aS+NRAx5^sjcct9`omWA3lt zb$|Vwt1G_x0KX%}8DB;)fB@p%2CkT|TiLMKCbqyCW0lBNnRdrK9wZQ8jMRkBJLp(n zIv;nJh`d4{ZuGqD6_6e9k{6al>5l!U_*=$;F0z4Fzz7kjs08AA^0Q5#qVDt4B;*bg zP^s^7!LJHtMhF(_df`r;I!-u>;Z|dX)p<~-S4`IC62n#B)%#q?wy~Xx(n+S3*!y7u zTP91ato=6ksXX7++Q6#CvTC#JyQleF_W4X&IZbdm#h7)@J51vb=mg-`_x{ZL>+iU~ ze&_`!u6DIAyZzMr>v!K@Kl$p4FTaiN{Lb%;?}2wtaqcQGzzxvVU>*2L$Hxmg(N=vY z2#7mNO&A*m!I*slts(97E8B$6fb77Be)y9B=Cf4k?5Pg)D!HDodzIh?@D)&<48gJa zs-HjrnMy81d4|(4im46(@S*N@8c?s?nRcU(74Ss}Dj)!qnrjRg&k$JbMi8jh1C@k3 z1px0RdsbF^JrP`_wG3u_vO-)ecys+Y@qA)({j7za)Cka;{Sn5(6l>}f!O#-Va6mhq zsahuPly1Q%R@YM>_HU`u?s=`O@2}760Y?7r`|H~-C~>u`eMQ?Jy1)MR`|A&1U7_3W z`8~hK{`(A@p<|u40SAg1VSvyvnA@GPSF^d{iiZKSTU z?-b1H>+f!O>)Bij<}AW84tR?~#wt43mnxZHG8>mT*g1Vjm2HRE&|m-NW&*_xpFCUd zKb@YW#9ikQwZfc0x$pm%y?2YXZOg8M+8A@+Td!L#m#bX1E9FOAIVt&iv%R$rGS7B#0OFMKqOd(ke6j+ z{3xgHo@209?Y(@*?z6Sl$2#ZieO{wWQ|Iix*P4$p$D{Q=T5mmb7=U@&P8WT}InYW; zYBnJ__7@gKc9m^2DN5BwU4U+-Sk;XKnMn+H;hZ`!KHG*2yhr*>+=XDz8-Z+vE-c3! z+xVVJ;&@i%g~tHCE5Rs`ETXO|2v-uEPsl;8=w;F02h)eIxSn0Zl1T zQCp^2&Dy9~NhrjI#g zlx6@E%Q;|Uo6*&ZiI`>;fYn^kjN@3LX<5;cVpW3U+~Oj+Zmw|2%Z{$2+B-TrQ7b)0 z$XVMvjs7N_DK;k{IO8pGhPE(oIR|4b=vPRe+d_L4@%()P>@!|GQ_E2f%Ghp>SI;>3 zamS81_g};vE$4F!LM&VMX!eu1lh9oDf&qR8(y}U?vs=&Vy2=@7&~$}LK#i)H$?lI8 z4vGm?OuDfO&=~1KQPG7_JDkJC7C9D$W9M$+^Hl&;1*Vz-PcHhVk|k9XwT3ooIF_PU z3CKtQuuIZZDov5v<e{50<9Im?zUdtCdu)A1*<)Tv%Lz;}yj z<_OG!dzW~{qM${9D3HaKJ*Sf%nk(YR3VA{x1gg^MMII@v%~aOu_nI|klV z^vp>QGBBpzwd4A-sGg#LxnxD=pfOsKqll?QyxD65xf)Nu!kI1xfXv<_ix4;A>^R4T z0ZE9qbm}@vYBFof%QZIm#Qk{Q2A}LX^L%VaGCHEwJi`p7$W=7%1VpPMcq&@YG~a7- ze~QYd+OvQc%0u$rvt;WEP9I_kzN$}*lE|zrSRai+g-f8}L#N{(!jke^w(P0wJm&r# zERFmp1Na$FSS2q;Fd6|1+eUYbUyLqh#g9setaSmJ*kT{$F&(I4*HUdA+o6FMn;M@p zM&l6{p=uVq1}%-3=}s$2Qr3nnKf-|@2kx42LNZ->2K-#*WLBvd;JY+^0=TnhW)adE z(5jMHuXVzil;o^4(xJKc%9?r49X^rO1rSt)*=j&H8@DP6bO+~;v*@=g_NCq_%-mK; z|Eo#gihXn!V{JUo7Qk{fZLD?;HXJqQLE4Rh^hyFS@jg`*XjVW_i5v7Jn8EIEq%K|l z|NBqJKZxsgq?avQ_I!4hpZ)hw#}BTic<}%~o8&VvF}uLIN~@iKY_}C%1t?~e0Klu> zC@`g>o{9&roStqXc5KUjOB^lcDDC09N}oEb0y;*-6p+dywAWO3jbMj47L1$hc-1PQ zQuWseRwHdk0oV?`3j+cw9Vo2e+;7DtXS-1>nu>|OsM=5M5_B^UMA^$&_-#Y3-LKj& z3qoW``|&&#I@0axP&oRUbCT8Pvz^W8cvkVA9W^Hg7+3{bRSd2e=d6nPaRXQH0ghC@ zc<*s%vPF=QJ!|og6y|DZd)yEwTh1J98;&8I8NF2eEINulW z$|PW&l6!zT!4Ht61w6`6@t5 z1ux3d6UV6%$A|TSA{J;mW1gv`Fk?nTy;>FPz&RXMj#doMmefdG0%`y zs0HSe$B}$LlLgIo(;UBCIRzEZMwRSlo>w~@n{k}kE)?MP{FURO1QyuX*`X8TUBzFu z7Ag8td{-Yi9Y1qA{vehf_p)WLiv1g>D+08u#8Y;C2euXOyhH2lE9X@KUKJ$=JXNThzS@M7#&(Jr^&~oVDqo;r zu1J!aYa;(&z4I!Z5EsO#V6faC*Dg< z)(w^)v|+B86ys5s^6W~}AM~8jBPk?vl=yvhmRl;Kx4oN1d=_20h zGnwQgkQYQ7>mxWvSIsxo0BObxpAA|R0USGYa&9*Oo;evX?W7{#PKUpc_H|XO$3Q_z zKywxSkG=nD0xJlChnT;zL(_0#W!{qsA@-E1=jVCSm-H}|IFwdjvtK)(49G**=~hO7FE=Tj83AQ zvaHH4jKk7!Ol01`qwmhSR67h+IC+3pVZvlTFW~f_aUQ9nueHSCRkaRW(WXuSXP@XZ zswkL>q_e0!qi$8>Osm3U)i`Zc^aoXxih*&pd&=g1RzPe7>dvWEPVe}*2nwyNziCyiCeb<`S|AdD(l1sp5fjscVL^Jl&Le_+9b zWy@Y^JMXTYsXD)NHN~?5{8_#1EJ~SGJ5>=ZMIUiWF)9K$QwBbQI+g4>g4dAd@|$+LNgVMhFqCOEy7t_19`Pm7$9Du6AH5^D9CfN{#wOzJNi$9 zkF=|Cz#NZe0FbMmoaw3eq-_=8jbkaRWDDc?#Ls2L&s-9xb7CNzAJsQ%0>ssB;CO#= z=Z{^tCHJI)D5}U6Q`AuvSYsUprLE5rpX=~!o0u!db9Nl_7~D>usv=v&9L+fYiXw+_ zPtl=aj>D&MS2gp~3mz<6_R8B?AOGLO%9D8}fZvm-4ovhctA^=-NEMMnRyZnhcv-Z$ z3GmJI>&L}-1E;dE^IqitE{pwc02z}(+@NJ1L7a(Uf+%{U1La-?5;sVb0BL1c{Nmm%Uc7LytOKY|LkozC(RqGHGR4Ap=M zz$@WIaMr~$Z{Ql>Ab=DCut!dC!*v?xu5Xm&JAjwjR7Hwh^g7Z~M({FQQ5DFOZk2QF zC=+g%MO6xg7_%AOB0k3kO;2O|ZUqplxz7xs#^;Z_d^>oexZ5d;&KnZIjszUX`M}kn zPyvsU^f#8M$_mA`#F2}Ejtx4o+0`$I(Q~zCbmKT7yoWC4@R)zGL2LGZ@pSz7f(6T# zy>|95pN_w8HN!l>cXDhlVpb;puO$C6zz=Bk2nIN_!b%J*jM3CRM7w%$2rBu`*>1x3 zne=6BixwP(8v%|-rzC<(l>p3kKWY+LbD+Ipt`hBx)3|}lE#gYx&W%? zU8IopahF(L1qayJNWT_%rl|<_p zB_+zWF#vm^+%)o?3QhAEKYNRZ3OS?ZbTh!LhsALGc?(e~)#fTP%c5qpYB)*~5&|4& zlr5GE0CAtHjsRQK`^2?i7JgSzmGxJbqky3=A!&E!1XO6fc(o(qoR=8cR2ubB&Qc|R zDmqmmV39eYs$FBGx*8CvKwt!SqxO283{GS_FKoV1^X3MhbKs)w@qJd~0K4ShtX2uL zhNIjr+kJ@%)l7zR>|0y7w=H?zLVj1tb8V)-jPK_hO!=vMkiTr%ve(mo@9Fr7)eIis zI{=?i3fS)%=UYW5*`&^@#xfAfc)kkwG0t<0)<-S-G2sk2CfCNQi*dn10B4LA6n6#U zqJ1M4-7X@kE~za7iyb^l&)$2cZNCX{+z6m{l#5K#aAsGAMfx&MJPe?#qD|E~85mLb z@A@)xY%8v-MWG6#xgt_Z&!15$p2a~_4ia;!nwbwe8T&D*x0885?f5w@`AljQ!I^gz zvsrsp=o}g6yl(=uci~hpS{?`xcU7x1IppXVC_X=vVpR$1Rm^Fz&3EHuj@SON)A9E% zIIwKlYmaCD%<1^f)f5`wyNFmf3wFVrB%*T&nuz8(&;T6iInHr#TF(W1dwc`m`kkR{ zGyyPTo2dj=;8@^F0#yMsK6k^h+OBIuCMQ|Jb*mX5D99CAl+)P_SX7EPtdA&K zR#wbO(WF!qv`*d&>-VhRHh8&6_OptbH(XCSQaJ|I%q16~rN*e^tvlz`1teV6RV43q zMx}?fXD0bu66am@lS=xkn#a}rS)q%j#lN{AK?UF8DkLc4if3i&MT$D*90Vq$u!%l2 zKIi9fr<(K01qYTbd+qIa;4a~ITTStNg|3_=SQaGM1c1#Ft{XUoC7Tmi@S_Q*0ML>DisO!- zo2xK5jN{+8WXwld<4YTzHSa&apunB{=CV~cdUH8Zx zg#e{D;FJp&{kxp|7Q7%6yLTs<$uyi5mp6i^U9>l#Bf~ubi3~`y=A1eeA62{P8+t-PvMxjQ&y*$35;2F^9gw zR|bZ0p5i-F6`7sF6Tlbbwrp$5%0k{8_c;#?4oP1+2dm=v`aZ_p5Q1 zH)v{5~#E_s~MgT;Ai01$-FV(;3WF8$S{y| zt)rx&Qo(VFkR84<=7xufd*ie1qWxW&_-3MM=fAx_0bIHP3~W(V?a#oRqUkVTQH>*) z^|4Oge^yL~?G8BFhAO00C&4C*8oEfeb9Rd8^Bp>Op@=b4u54q#S4CytDHES}c{fbv zuq6FfId%=cy0)X96*IT69YVn8qhv(@vwMm=hbrHJjV)KjS5?`r#u=HRKW=zfEmj38 z*p8qI6vQ!J!FO%gT%*>e^S_@t9e)H%^M2W~H_?9I>G)?Cz|W&mGrx1PWe@-h6X%T4 zy%~;sjA)HCk`dTf(+;c%PJ@@@i$H?uci)D;u_RkpgdgH=d zp^GbxZLpKJsK$Y7$RppX_*F)UVKR(Nt6mjQbBW6e=(ogiaY?IAlb<;p4Stu!Id%H?BE*GY@u%8Japh#-IhhzF89!r=p>86u?Tx7;L<76 zROrOs*p3@`(k=`@bGZ<}97U@qfGScL6!$wTa^-e6;%8aE=mH3-@#A>)5Fl|zuV3Y@ z6f@qK1I>0pqC?at=a7s?-4f@XjRlp+oGJXwIsxik6>xdY*@~$!j?+`@-(|Td%;8|a131lRJny+;?YStgu**!8NK-c=S`Dt4h&{ z!-gFt{H6Vrzac_XoBD`aqD)qO)dC@q=P z(mlm#pfRHojQos6>MRCw(JA*tQ|t4>QKrk7eQxhN*O$HuuL2Thm*BTeNRf4?RJpqN zKT06lnK}k1qzsxJ7DqqV<{)1f0-hFw#S@0M#-J4u5ONZtv4jl<2{%sST?TW)_-1a} zXuW=oY1J%4lh>*rW+t7BVtjuS6#T|SvpuKE1hnu-vdqYPqOH;H7GM!Bci+rb1hvs& zdA{OgryO``L7zjG3$~*5+}ugQmNVVUCcQ4w5adoiR3$=)*mD$5kSrT?8eCR+6sRDe zH!{1TWV4Uw#(GXbw@<)o>V7th_H^sabTsSz+jC>j>mK`hLS3~S0|h6i{BP}71;4FU zGK7Th*L{Tp@7?{qO>-?r*Stk^OCB|GH@@lpBKgK)Hf`CTLi<8^`>zNO2qd2wp=Wer zy8=QQeCORNsVGJE7Yjq^f|EOI&lv3he$7AYyWPNSGf~Hz(Y@;bTQWRUC9n)9KZCC+wmh zy=bE}%iox0!YlN$W1_CRZ@hvebj(m9+d1(8yQBCs~7FxqruQ>>^z#nJou=;;n6~K6Phd$t=#9RY|-9bzv*E0jy;@Q`SGOS z1}2NY%6J>H(19Gpd&~htVmoy6afE3q7ZPCW;FZP|%+!MSdLyjr~8_jZ(k1MiH zQLAO`F-DTjb)+{65UjfsOqlH1tDAS;C>Ua)Qq z$uw(lbs?YW*8ZC%~!~Hk6*<7u~i6$(_pc9Z%1BMhw8vgzm&BHNGs^g7JA57DB-E_-i={p z&W8v;>g)+jwRqZZufMaw?M#oZ_GKRb%R&DCBTWSEx!)gvuAvK_M6C|NrwRg`+$+pL zCB+P$kSY1Fatl}tDOFskK*dg8}$EcpERT1Ebp=M|C8BM4W zz|qyy@`z{Qxv36GW|B3^0KQgD&0%NhhR`aD1bli2ZU>LqJE9 zc+_4)Af@xx)avo)kp25QCYwEVb`@`3_8(-g+}wT%1|x+4`jmN+LoX>6K zak|f(yxC~;Y$C|yhE*`;27Rov7}uF6_X}=Pe`Q6z%O(L0q*^P@1Dq}&?j1%-jZFlgbn9@h_r9V6NhBZxqZVXTZWhr7U+aE#Q? ziAsC!*q;>PEQv!LBuE@IO@1Un6lDtfP~E7T-HSGr~MQpU{!tJGaikV-avPMs95$HT5ZYvoK+f17l_H^eUIEg!>90`C$ybfOyMFqH>qVMviIQa5mvU-@v7CsY z>~RFnJ}2b4Xw+K$WPhk$a;e;5l7uYN`El29X9W^88f^8$nfEBmK3Jg#S zp#l>VoEb%88q+I5<)#%@r6q$Evdq#F=?5rrAx99MpPkY5nLB|-{cDt>txP`xX--laDU3jKWD%=|am*O-nm(a1a%;R7jD+`|SW?i%MNdiT#IEtVmImF=}=H)$^_^TpZ z`kaSvOp}5%F5zzRcgFn4kA>0wrw(WDZh0;~&yLnk`A~v~mv?>2z>W0Vz9h#W{-Bu2 zvxqyH0J6{TP|?_@=6VEl?MBqM_zjq0ut);XNa(LNRSn_Jkt<(7-SA?^%P39d21~=M zvRVn*jctCdGYegvPew9ZlmU60Y4U?D?JCk;S_QON*V=!uOKvss>2(kf)F#EGIt;6l zP~7cxGwH^+ZkgH`?~5O5$^_Cs7!VJ>u1w23|F-xb5)gzXCzOcoVIuU1WJbIeRW67P zC?^`s>;Cmn>4TOwy6qy_5r0#hP;Zoffe&_f3|GBvT{1F%keqJ{cQar_cFWSflBGB# z+4kahQzM)3&U!n!58>GNH{HxYeX`YM2~?2216}{H{lVe;F=H(I@pZeZ3g8WDjyn-g zbMR;rZ-q31{l-fH_PN`RdSHGn&BBS5>6XD8HaIZ&p(_2XRT2 ziY)gkG7QZ&89_P!W3H1F_+8i)<2fO#O9>?vOV&D;#p-?yd@FsnY=`mSJXwXVcGok?@&4n!5Ya2FzCo|A z5m17H)97{0BpF?;=+0kmWTUUlWKRFp(t3Yh^#?Ug|xm&N$=z=6;-qV7& zN)kN~bmcISC}ptZGc*VO8g4&Ugzf^&-&c@j0V%69h7EF&!_iX7`U&}J7+)^FNX`uu z)XahZ$cCB0o1&@GXAZ)JODi%FpTJf7c5VQ-R>hGUWP8~3um%BBp#l3zM5NTZz0r^kBS1QS;g3{PcB1WWtDsyWo}!}|8QR4Jszs}AC2(cJGkAc3 zA`yTP(aM?ZT9N>D84go`w7<~h1dgp*^2!RnB$z~%-_3*}w=KjzZxE!87jF3{*9t*1 zCZc&7J3R*exnH4|iIzIzgWO2#e6=rWDS{U5G%KCQv}ajYq@B!J6Pf&S%phCT?X7WW zDpUu5Pr8)P2!$~YD{4!yEWOFYsj`oLxHTFGTT|s zJfAu&@H<6wQ9u?Sj1d@YccL3?&PqGAfy!R*FS8D;;&F}cik9tb07;4ylAxo6c^SJ? z0taTs^J5Cxke7A=W>=#Vcf+&iA{0pdW{32;Tq6K#B#s2`HUB(vjOqZ?!jC8>W>~H( z>yvpD0(_#DOn7Ibuf62`#0B(RoF>kr@M1_qo5pr|L1B{;%R}Bs)%ql+AKl0_L8;*W z9Zx+102(-VYf5vXZ8+aoK@{87j8EuCf9OFZP*aSYt0xJ5rs+vWvXHM(JTtfr#7I^BiP;Sa=!dtEeG}w< zLxU8Ectif=RO1HxyWPpF>KlE@$cYexkTNox4Zdx|k4o_JUiw%ekZ4hfw<)hgVpP+UUzKeTd0VZzI_m1d4w|jaRN@JQ(I#TCrua#vO_U4d@MG_8h%{ZS`F>;6bv-(Z%?Wn%zWPes0H_( zdFi%a+>db|4&Y-W%X|ocEqNvNr;9aq@cES=h!&?QI@i_049=1Khbnl6%YT}MFfWJQ zf=#kO63Njdps73}qo94BrSHM`H;@uv(H7Mg+RlHwhjXnv{bYU1&@R5M-+oI7TOB$^ zRr9V5pTdB)6>9*cE}e<6NUPTeHlkgHJ79*YoLZ?$`Em6(N!03s8@f;&?zm};Jg2ka z&lR=&84NU0g6Pl{Cmo_=l!#nNwS%mG3cGo$|A>dn^Uu^W_4E2N)ClzuQx?M12Gvxy z=D*-<=3KKK&Uz{&?vW zg!jz~*YiF6CPK&P;-C5=&OpjK8`^DPyAZ~2o2CS1?Faeu{`5vcG*|81Ba#UVimUH2 z=6MHXkqsLb&y&F_I$EO&+CuQ4nuUy!(4T!bZBz1K*ZCrxS6`@;D_hTB)i9FJJZ71ErNCE^|8bRXNE60&Cb~~uu?&wzc;QqW*2;Dba zr8`vK$+9&&od#8l7QbZ?U%42uuv!{AX$S1@@#SgYBSL|k@ZcqBi+akq3V~`bqT#pU z^8Niy-MaZ&8-~XwY#XPZuVq!m<+WmgX*fAU<({GoZ`Qh_ET9t|u9te;03J1dDG)Nf zR~-Y3n`E1Ql)^M`O(uZqT9-gaNs^??_ARH`685!wQ=9iH3xZ4OUT1_S^4$mQuxV%! zr|TNFI`UX6u@x{iM;7jt$o{??V8;6J)3dh1_5$ZC&A{Hz0~@VPJ>HxkiV2nPuep)4 z`)Y$;Tq_NzB)r1i@1NIe7-zL!08)8P?D8}{_vDXxTbG0OLcm*k24%b~4qJIl|4IOA zcQ>J4uTOKgt%)jbVv0MC9GPej9`QL^ge2eKNcnSK6RKn%L)gnpFHF6yiDA50nxgm7 z=6%3f?vqlcNi^>YOgACg;SaHkQ(T28kJMa##2#I?~ zkh?=pAv0*sZ5D417#k)Skg40s50TaS14J&LZM!*bQWdzy6uMfpg4$cJG7!I0{3oYP z=@B_@pGXPe0ZYs*R?uh6a0~j|N*c}dBNnvWBk@eQjuy9MZ&p)DLVSz}xZa2wE<1n6 zQBVu`YA1xQZY{u+%(3nHK)Cede0sj4XwNs*LR;?#GX_^+8G}RjUCzXX$9fvH{fyq(+9in$7u!sS0Qb&*F&omu*q1yeJG(o-PgMAeEA)%wA#NAk!j^8MV#l zsFC>Phc`s_`zU&=kd}%pW^I#kUcUj_RZcEQ<;>0673{#m@oR^8P{=NVWQkZ#r_-L? zHaFluRSX5&29Ag&S%i1!+R2u~tp2ZJCKd+^BnucEEY@}iXa+vi^8TiV{tCCQ+1tU>v>_< z;%M=VeB8RR8ZPVdcTWp`iMeO?`>0F+H9*^R+LI800m^6xOrdgY9wZNKh!gpA(+vSx zPAZd1mMtt2Q>};MsD6pc5X0y~^y_T0D1V=?$TQ&}YA?QaXZ)^7&RI$8 zC`UQt4s^^uUP2vKDe@sR;(0}|fLKVmaG&)`U(ffRZ$~#YND%<9#+b#^07k$EZd$jS z3H;}>tGME2-lI!(>CM%N4`tmHA0tr9CSP-VbFL?x%YtIjcesA{PU85T1TR?Ei>f zUvyDE3biE}s9cwpFwJX!yZ^1l?1SQ(*7!?UdTCUv6Pj*n56?dL-z=2A5{rFsTA80J z!_En?2Z+c0au(^z8OEHDl@i&Tr%aNjE9~f#xp^>^iV$8imtH^bYKOn0lwZxm1;vo2 z8zHnk=}JyCm3OMQ-aysn0DI8P>?9+rtkM@t_ZXOEz=Bu z?olAPDH8wJext}cW~vW7`xx#ox%Q^qLB9(^lBvtFmYPnzRRV2)&<*| zp7$~dD3&@+DHqb*&V|nDJ7Nlnr;%Ex%ytjBreIZr-Y`xDJyQ}xWtl7|txos?(F z1pOCvL{9!V`eZ)CCbD(c(hn>C2u!NVo5!q~if69kQw#^a;tnP(QDc`&0v;1Hgjs@U z<>*ViFZoGB&&70r>iTc&26!hUje%d6+(;Z($J#Z(+(gn=7;$ZY$7r(zl+$_u&rLb4 zmtT{KLwFeZy<}-dA-Cd@^t3X;@5o#48`@dKT#Xo`o+n2J3@5oErpLc z!JlbN_Wu+!#@P;$ywLU=l-^Wa%7MMuvZg`KF_Ir^M$+RI389(r-RNNCSP``MV(Lx zmSowD`f(m_g;9!O^&Y!6Zc&eBM3R4LV&0L0NS_f-aug|W7NYHZYJS{ipb8f%)n^El`PqND{-vlpIz%6%3Hob62!=eP1zwjHso@ zbu#oP%EFT?w*{dD|44knY+kYKHfT-3!f}un?it<13rGxpPDbVKjwUx53<#-t`VM&0 z_LD~YkJ^U(sx78TJ4h=A5<=L8l##`4WhLBym6+>J9Ix1DC^JiyjS0Hu9i%=JAzajR ziP#o|53Gn{5=oo5X_KfnlF+NWr&p0Hq#v}$H}~Gw_&qMM*#! zTtDab?>t*av8!kgobvawpnGc%Oe>sB9>Q$09y8n^LBIeMH{FxJtDGfrdGr8N4B=BM z3<72`ctOOsWwcpkt@UZ@g=+is7kfL`KFYs9>wvwK>0D<4ux%=_{w4X~4LUZnMLPR|16saI$^5~ubKZlqj9s=7OTzpI7!Hag$ zKdSiqWZ}fj;hC`?6Te`=zUY z;TCqeIC~zzPViI4m7V@h znutE!@j~~&@lplA)7(2H%@oUZSg&EZ1ti~!T+Et0a+wQ~?glK*U zb_vuL1AT5RUW-s7oxDXad{y6Cs5UWMn4ycNwugyr#zsGp)g?=dLpZgTckyAX)BpK9 zS9cVQkJfy4(>_{f+=DX(e|=4`amCbz;awwQ;9tX@r!DAC50n58z`aMQsj0RKbURIbZZ5j-X`>5{b~@V~)o%%K&WA3Fqtl zrC{z}QjyS%55hRKij)K9>=g|}R-~%OB+^MdaW)Att5jr#PQ%>~p*+X=2TZF?FI=Lp zMPlwjDiP*Q!Web@M!u=``Lq&3IYv*W7jH3A=b}#wyDyZY;CO~`Zsuv>nRr7!ce=H4 ztG$TPzv2PHfrPcKGySNu8AB0IiM_NQBq60_wb-wp^jQa#6V$m5aj=(&4w|}J z?s?lw?6_~_iE_-E$EJ@7Ka?5tZd6|`|?3px;QJFp%34iy+ zBHN@LO;Iyp_fL>z|I>KQQUFktP`&&aW$VdK21c9jVawFp%2~weT z&^A#jKVoBzgT2<<BN z*HnnpVXp?+A*Ki|>95SWqY2d7`Bdao)j+~n-@inZM>{um#Gj+~D|a#?pU;GAx{*vw z;^@Ul?qara-eU;~ov*|@&Bg0JX@Pko`HGVQN63&&zufq5Xrk98LfA@)(Kg4*?o9SQ zOo*lgxP-**Tt>F8lD8t=s3QT+$bx-R$21b6sB)m3{-AaF$r6bq6grhjx&jS(wBs zQ0M^p;#X1&`s<3EDEEMk!p{_4Nf0`FLNKWf5VV=xh1?7o^#NvV6FOz`UuE z3ax^FcFjP~6!&xH>s%Tt+kr!zJnHiA7xOIn=l#NeAu5sy_n$M{QzsrT8XmHxRG8@a zU+q5yS#8GsqqzwWY2D)nA@7Z`{ZbBtoJN<1^^Dz&m1Xg)pM+eOgQ2R;k%s*kHZRB< zFjetkw8t!6_?6E`$@O#r^}KiAfxQ+SBb!WGs%1n0}WAk<>>K+u=ZB9&%Fbl0Qy^kzB?0w^95@Z zkHi&{sYZ8JX%FR(|NjOa+NFNGS z&1QoF3p4#7)2lAxugOblvaIG9WjU5%GM_UQAFGFwN0MCQeAVb3wGzAJvh~JllHcgq z!_r+gzMi^wd~q2?ifr z&kTJ#GQR7}+O{*d08sRu$N2D)xh3R{L}cfqY7QJ5FGJO!CNhvlUPSyndiVtbx8n~J zPu#9b^wZa{|44^WM5FmgX8CFZ8MW@hNx3xazs$<$M zg+s$`%sWd$Thpgy2}z~I0GPIBUGg@AfHS>9J^_3(RAL}$YYkEb5=c?pZI1k{cY92fOm~D z$AY$1%!M@i_wxWjZ($O@*DBEglKU!Ja5aalvi+DyA(18lF1M44w7ZOh#&L)Pu58bM0Yun$YVSNKQk{O=C3TA`smivGPQ`_ zdmzr~`iqTxg7=hUdt~}B$(-DtyN=EM$iC`7hXR#!AwOD?^K>nBfYoz1A9~(69!*Ut z?Zfc|J)r7c#ToWoC_3f9zG-N+RseDMjqKlVvDwIVPvJEqN{fF-vv@IRlryPZO~RZX zk&1o!UJE@4^G`cQITJE?TiBWa(8W&2-GJTLRkjKmh=^UO5(Z{@x+sh>01hzlR(d#W z1!fkhZ}fp9*A61jb;@bKQ6ztCu+U3ezd~oLJPt~BuPW%E3U~`te;ud4212t1l;VA6 z!a3}!pFz2F(w$bo73x}jwgbUlb0j}J@z`F&osuo8vbf2ZYkTs|hr6&QFf$FP9tN1> zDj)0O1EV9ZFhE^OGqs0gr`E3tUXh>{Q1h-rsw=p@nQzAagTRJ|=LdOBOXsyM#tnDL z7}xr5D&8?=Dd!1)OUOhA7A-Q67xs{4_+`W0^qZ=qLL1^`YOu~4{`Rjbp<^{4CstI*_K;fRFzmK^~M9-x3k)BdV(!5Ad5B06*iSPl`@j$dsO?hY~r1+ ze-=gi0b+$NKK73`o*`V;Lw^Z1UL7kMpVjXy3HyqfcL$&@39{sasm~Og8ROQ@;y@&} zlo(kbB)G2)S_W|!*8ATGkGyX<@MHu4AS|Q(il1eg+}wqHXKGYm7zgiQ=1x^GR1u!) z!)MLsrWAyP2R~!yjRBfmrH#0s(U3Tds_&wYMQgGcw6S&>ixnzWct(uzm}Gv=Eci;F zUI{Sjm4sGCKT?o25sLE{3ipv#uh1IE01BCqE`lc6)7~pBnozYa-t!k5$#9zIC&UB4 z0wq#HCjKGf`h=qJy7~9<_>*DMrDi6?wIbTRgNPAuozwKcAu`svt&_+dNzOc~@bIQ& z7IJ%SqGaYGK81E_Nza`MMhITj*6~pG>bZ+oh<2F82!DL41nBZWIU3e%wbaq03vdLD zS#@kCAf!`Bj}S&mv~s1OEru=r3A>ko_+4?68SJ)_Go2L-_21Ph(Z>l80s{Za$u|%h zf@ls!y${H#!Fr>9+8Ne839`RBj_ZB23o-^DqCY#x$qr`@d~JMNDc?$uU8unRjArTv zcE0wyp2hz^<8u)IKh?r`Bq|ZGPUcPQEx&m3>TWN0FlTo!+pq-fefrxxM4-QF3Am74 z6yroz@+;Lo3-=U$Mh$W8=U&#WV+eUmzu6m-ZV@;Lzw0^{E3>QZdhJSH;t`Ct!B8bYHiunsGO3 zK5w_sjgyO{(5Bnkh{(j~&3G3b@*F#qn(%=h(>8o>POj6-82CITS>O~TvO;GES3(dX zhi;_k{lW+jG0|mIVVT>h?-T60Q60_x(MLTKdS-W(G%#BshaU3o85S{fn2*C zk^o6ok)KW9GvQd^ro)6~DYi3Wr0T#IT$gkxsTiG*&dV*n%SjY51}w9f}`MYG_BK3`0FZqsa==aj}uji|Mmj85kb{n zn}}!*t6uTJ0)!%6zYO8L&WJpPEkj8EpIvPxF_wd4Os#%!Gbhz+4NHb8IlyHq--#sm zd=ts5i-MjH08Vqhny8lktYBW(b(f^0O6)W9fI=zVgmFYX_@MVd)1kDdoRW7#B=JuM zS-yseAyBw@x0X1F^t8Q8$&ycwK`FdiSJ?z?X4I7&j@koD%drQs0*04)9c5v$XucaZ zB+Hg9&e06*U5fZX=yjijwi013-n@-0{ODA4Q18dp) zPuAn9N>bxxp6E#b@kX+V+|;+I=3hnTyfqhkyl%bm|9z9v?ctnKl;Aw)PMqW1z+qBU zb#H!A_oz!^k~>X9=@9{(O1T$P8iJ8|Qq^${Q(C!4sn($J32phjn~^>8(c0bNO!(#b zN{_c9?IWJ|V=InOU1Yod2~f$xiDV+$_0Pbh(^Nxg`{w0*Vrlw1`X>-0l4i68N(@3bQGG`E$1-KaX+ z5pfzKjiwJzwjx(g;q6pgJ7sni5BUfNu%Nv#Z#boli0$wpH;tOftqHO8r`X==i0ap8 zPmVTx1k>gzA{tQDmP0xsi;1Co%ZG2c&jyD5`SN}c?~g;D(dGOGoMFAbb5a`MEwo7D z*vHm6P!0~rYq(h>cdP10`Z*G*Oz(VSso7+YiC@w;=zd z4ucc{iema~V$8x=X=Z$F6(SNqv}1rSEr|rGm+!xgSa_yB`?YG9E+-O=xLmWTkXNzo z*<>Sz^(Gzhv^|97FCTYci9&6XI;o@5-{DUkA!9<&x zzgEwqn>vKmzX!CLz2f=eH#L4g6R)&YfrH?Reu1EHbp4EN=qJR_UU_G`b$Zw-uuUil z;i~%WMnqJIb;Pj;{w@2}FWtRK>zs>)<_GKExjdDY>K^MkF~?hOR3xZwbX$!%&B0pe zM-5M1r#VpEtEjkE0$#s*bMZ(mm!BphN%l45+JQfBip&5O;m65A4))s6E|3-CU&p1hiYY_u$rZYTe0J)O4PHI^Q+4!o2l_;~b#=?@5 zR3XwI6T}iZ6w$ryK7cBjf%hXf2w+P+T_t5EzVMbfBMkTYqYo1Sp<7M^`XVxmxL49f zfi|8cD{B$)CVHi;*>=TqH{(Eo7Ne2vAnZj(1fKgvR^jdB z4fQ_y@)gCN9*TC6EOH?|A`B;pa8;%JYngz<`#4rBqHoMecc_;g;FB%cIDPG9w%;WS zaXu=7EY_W0DhkQ&gS|tSSQy;t>G`=AaQ*<^QHX(%@XZypsTgeUFX%ig#5`pklS8Go z7U#|_U$Lb74R^dT5e-IpLer%$X+KsqIAW}$rk{*0KE_Tpr%N;S^`T9NHD(JjoffLD zw9i&M_wdr*J*A8R_3s+I`m(;+t@$}D$3*uZM@ATo6X_FGI}Idh48WoiZ+|e)GQi#S za%t9oTC#4^(Rwj*D>R>SkJY0RJ**AjJ}NZTCZB{ zl>o|S#I*Q^6R>zS(&uI5v8-hjYUlOKM&;XIE8)lUI~j3Se`!~Lz}iVSEUl;*#Tg>w|3n)g|5rDKM7g))9=!~)r51gz424nOw+Nvq+}C({RJe-*w8d=O z1=PF8X47=KJYnU<(eZ04?j=fn*<{mg5H9?$Av_n7`n$>)R_U{vD!JgkO?85GqY3d zWEB~I(DgMX<0DIpC90QCwAo0uNk@Zi;)WVAq!;Rlxd{exZE; zR#JTS+rraR0xyq4vef4Ng#H8@q-Est{nXg^F74)3 z<~GM((WmXSG0*6&G{_|TdfWeg+JgAUu%l0$U1{aZG1qZWbbj}%RM1&tna$-*0_WH& zA_X%?Qlycxedo;=Z)pFE0bbNB@>MiIWQE8!Xd!$MvbK&n!Dt;?AvAp=D9t_C+}htu zhmc(g_)yXyaDD;?dU6tJIvQCn?eiuacBwKy7yk9E>bF(cTCqvTqi?Z!CVPLGT^_+T z&<$pl1_#X$%p-OV^w`2W&1#0|y4Vfy*u<6K;@aL^vwvP$sb-YdcC9JUCh{&#L{`-8 zhnrVLKxNsllCW8cdu$`!dSyY+>+{y3i^nv$_W#~v#Bt->IDRwhFG|Mw{dls`U()k_ zI3Nxc0AJgPDD+2hV9>_^ovKez{E9c$g42AI^yD0Z4ZqJ|fqaMCaxpjFuW0lgUPajY zT^rzD^|{ybLMX8IX|wTlT2S44PUw=bNG6BT_cEW!v>AmBIHh!;Mxlu6_^1iuQbq|U zbjBLKU&_I3LgJ+Tvcou`om=c{CjV#dh)*FH`6C?ZzxM~c6zghIaV!m6U zqlwPQyIRn|6oft;U2A1}y??IsgFnFy-j}<%0}th@4+&}>{sYo3p2%?mO1iv=CS%Sx zIhPJ@8Mmhdz1w63PrLteu;yxSB*IO*azQKfSBsloB58_=OV}opJSUHA`U)6G{RBQu zHk+Pq-To3gn{U@^3#v+?dv&Qyc^h^CWuYPPqs5i^ymC>MF}Mn(BJ-eKzZ!dRe~>VS zdi_F{yq;})luhoO&fmf`<{uBM4`3KeRXpJv#rF8cojGfLc9sb8--jo0OeUhb@F|uz z3Woz23Uoip^+UQjiAxc2kt}Tm`tZzq9q%|ILL|aIY*NA`A>Dj4orX4Q*04F9J4!G- zvA0W}Up1=|3rBQiLN_1;$bC7cs3hw4cx&+jQ?wIvIN+*}JzPZ5Zh7jsqHbi;=?=zx zK$3=oM z?wtB9y&E4Z(+ClMWis3XIu1y+twW}B_uF@ysA!iW78-zVNL0r}38{2h!)}gH4zcc@ zjKw^&PPnJV$^fb^{v`{yo~(s5F$3QzN0gYVh6NcKa$HYHlC8fe=H`gVs6U|CPUhg& z_s^lry6X%pW19VPf+@i3)Oq+~Bp9xRX}BrY`1lL6Ceg#)@NZRJI#|Al)|!m{)6Z0g z6^aA4nuN!XE?BFSUdU=t2l!3GF4x!*w+HW6!(2{NJhXT0Bf%bBl{e8cCo3IviHX`U z0mP}QjGbCG)=Hh-SI$KV&Ft_Ay5(uwf_>l8!IQ z15@F$G~y?zE5eYN{LF{#VT5wPGP+CIv?^LSI@p*$hxt@@&VNj>o!S8Vym4q77a>`Iz$uC zI3;aPb379iEHEFj0B@&ox^eT}Xznp-?GX1BZu>EkXI*!Ka}t4``v~c0|E5^QavT(zZ#H!rN5%P3BAvFD% z2{(&O|Hd68@v1JWpz&WUZ*C0vAu`oZ)A*)Z{(B=tPHyqcwSVcN3?PB_ym2kefN)VK zqB1;92H-~w(?mQodwIh04#&oJ5R)rgAfzc9f*s@S<)>F=4q6e}p!LC&9>jR`Y`MJi zW=p2(T&Ndj87l~cKHZ@wosb}Ey4?Pd9UKj`x+mmvXFfMGX8RE_D4iEIh6L_hq_Sv?5=o&t;@}xp|7f zAloatcm3N1bNnnnbkLLwcbMZYq6aT4HnNNay-CxYASd1cQSA8RDzZtRgo2FHXaCwzTjEK^x-4Xn#^lNCt)4s`U5g+rfBCajgQ>;7_O5l z2respT|<$1-w2i7#o?8ErwyT0{};ali(JjF4wwXf!B`mv^0&4HVTBCN%QbN!8Be>f+sRcv{2{ij{Dhd*gY3J z&q@w-lwGvNo;oJUON!}bSX1Ifm4=W~&v?uO6|&L4J1A>!hFi`Q_al7wnd*MAL-i;Y zttZIyaI0FglMgI-&Z@xl9E&QiU+Dk~lFdtYwDgg0v^FEbQrv3Hfr0lEExm)c=ht}F zkrTDA{&%+K_dUJ0&p81Fpj2>aBE}S@2SkJE*G|Th1>oCz;BDi2y9L_kG;3Tr!!fPy z(w3=8Hfk5nodWT}=7K`^JVv@k^%b<=m{8m|J6I&7!KTf?y3?9nvF8Qa0Gj;x; zjxRLRHyqxk+`2QZ88%jLb8_>WXC>F7W^ugkeV$9-=uB@?VJpQw zKHG-y?~91beNbgv#ULEd`4Z{114-aY|3clw>5!${(1F%9TSNWR3&|3WZOyOoY0iu^ z==pv!{-DKb3l?-~-CI1R@5TDMh_~viHFEl? z^z52hKb%T0eS-AUtKbO)?wP+91Euu`M=yQ?d$NsLW|W0b3H?&Jnnf1j+{IWDX_v31 zNNHq+iyR*3ksr9DqzjcLzc~Q%^E7P_0X-FR!Gj^en#Fxhy_#kWGHh;?z}$uETfaYt z+8){zrs@hJ6$iSnCEI#fM;q$(SSD*d_k>+@#KQ|~i{3O|dJ1$oJPw^Gu?y9sucXr^ zIfal=jq^^3h}b^yMcbn15o}wOi<5giEvio5oN^3%qEgUmwyB7HXO>?=xI8*UJXL4z z>&keW|Bt4xaEP*fqTQvtyF|Jrq`N~zkd|(wVd-2@q`R9BP`Z_lC6`=8x>stE4(Yn< z@80|V2lGDj#GEs8PM&PoWwpf*s@uwvmxgvvv1-3-c;Gd3_M%!Sg9?kJP$ran`oij3 z#}@(;9cgL|9(q@8rq>j?Pkk+Gokl;Q8_FTUmomn`?BfrGfjqNLBWe~CG zGz|aBH|6;=@uhzR4@@>Ivuve)V6$f{M^F>#x|*`nnXx>Yd0wq4ef2-7SqH)|{Pi}y zg+aJ)I1)P51;lgKK=i{yA`iXMjxao4_B1E`Vhd^9(tOup@$L!SjK5Ic_z*12;@`jd zEQtG3Kqyb56#uV+4dA=mv6V5vBR05JA*Vshd9_scD5&y zn4Ly;h~~{brbRwIf%n=6RMZJbs&dpOhebN!etRIL9LHBJ^w&EdkzikWyVzGL?eyCo zJ{_)ylw=|JJlS=!XkYWfE`Sox)^Pe7=X}s4i%$G$LqD=$?YDJI-C3yqXK4cqJCZMT zvHYdWWd3*BqOQApobiD(@yx=C((i|=s{BL08q6eI%%qMa(S%KZH277(RoO`u^&N-N ze9+XW&+pw*@EimLa>5e1B;ujEKj?(VbpP)LH1Z|Le!3$X(KedH{@4b|UH(yv(HeRo zWbwFfcwmF_P~$i!45wn+#JmvA1a!t!e2e>At<*>?2Gej;DINnyaorv-yT=n9+Y{>t z`%~yR`~^$@O?X3GoA;Y8_7&|(z<>bB35#Os776nmd2R<>&RXDT=gz!_6tYd8=b@Ji zRFU@dC|G6PY7pJl_cW8|nA^xu)c(yX2_3DZ0Z*>0AF}HMK$v4oUBu4v4Qj88Gx8Xb zx>f2rf2;S(M1K1VTvGoSDCLl1%?WA_#H9Zq@gw%2io;O2CeFFroiU*k1;U^ zz`852t3GgPz?EvDLI>Ws@&sRA-ba2L*pryTJ-ufZb;2lHdgF*3tcsQp*K$?mqolH+ zNXs2xc461*M`v;WNxa#H&d|Q8>EJWqi5pC)(~qxeb}X=LsG#R&8V|J=WnNrEhr18n zQu(pEd9M0I1B^a8aRUf|WaNyKCHs+JMMR_!r<$+;pa)D@9B{#BoW+Uuo+=-{+j)3FU^vSkrh1t#^WK}v3}N@)+de-k z)ULEmBTpJgcIZxhvLsF<0L)arS-OwL6-s8`3|D#(K`Gh5rr)I?WIopvl|i}A1I8aB zvFYKl7Gfh;TSoo{`tfC!a`Y*+@`tYV~~U)H-!+L|ZOv{bBZn z?%z}}s%fVugG=}2$xf|J_QjnY^J0S?6n1v`t7cy@mun#bU6-Y}CJO;)NDY^XaQ4*E zFV)@tPd*o#)8eQ>87}`yLDYVsMDUEGJvoOJMA8I}d}E<9p-p5$CXR)~cmxH>ZKcHl zoZ``XWWhn-BnDEwB-`lhn8CKQ6iGS{Ds*{xWeuN~sdQ?-byIn)dhqnjVRIxdoW$7V zuzsrI5COp?{0o3PSchq(qZ53(Z|)eQOVQ{uV#zH15R)wZ)+?{49gGH*et3S$1iK9P zS*5dNNa3SG%Jh%P}l^M)FAw6P1v|!Xf5oNfNO{N@e%8SKo038okc4Pq4gEzga z3-z0SW;g!Vu_7h=h+zyO+qIEw3u-c_{N${1=qVIzPb>d)n?=0W8y_QB-G)7#Oz?d| z<$>;neuhU;0@szTJZ76ja`Yq2L4@v#s zVdDY-dPBxF?N{MAfF)j=1kR_}Q;}(h48@9AGCP|-R!pR@?EwD~m8@)@s4gDAot%)y ze+Iv^8G&1eW{rdEB>6qoGK70$O;xL6d4o%j?jskt=|a<_Q6*r?8EzCXD%1>%Lfs3O zr2l?(B4F;Zp`CC5<@VC5@n4@n6ST#Bpb^4=%hldh%N1c-RXnE&KP765eO-`6jr|AP zLr0I6if8~3o(9vC!#~9)^$gFCDe*zc6r|s$=u!iNHs<^~J-ueTeNp|JH9Bl;Ur9*N z1{5{YIBJ^HwH}ua{8B>uP7D|I3R;qMBb8ed_YeXExKOf^R-TJz2NF)80sZxv$yosb zy;Z!k4yGuqrRKm7<%Mr!-->ZJlgA<}za68->r~bUUm=-AziPnxkeHy>M^1CeV*>&H z?oSKumKSH)q%))Ub^+LVp4!%MfY>pMDeR)PG1lx~v(cYJ_rktm)|F)nm+Ale%eV|0HY&n_4&#??&H zFfnbZp6r}=R-xTh|F z`Cr_~78@Nm23JApSEls|;OL#X0gK{M8;1`Gy1|l>!Xdig?dR+^ZEaT_!Z>ur)>_XBD8nXZD$oSNE?2)y&-`Hdc)+0)jrj2 zO{)_zC;lF955s=J(*3^~0-Kc}II+*yU%QU*s&8p`^n-z~W6Ofmf}Ur&Bwmr6O0M^m z>;MA9Z(ZWd);^8D;20fO0L)|!g^*5HbLEqLTQS2f*2B(cwxr_TsZtQ+v0g-Npz=9y z1&~-vx}E0Re5EN(cfw(q2i#yJRtcH`s^|&*(9>~ZFG{TL&}iMcysBqS>~Bw`JsD}d zo9a=wxB}}Sj=-$nF5fIrK9HoW*}N_6PHRL1ItHD~=>L`7P314g5&JbS*E0a|AS93l z#Y!f=|KZeHE~g5o#;?g~FHH_o^k@+!fmCc8U+%QO`|fJub3F;~5|s@ZU1oN|&!}q0Ak{Q4_}t_xjUo$i!M9>& z!XGc_p<`qCP$^PjD7nB%1;P<6n7e%@$J%rfP0dun?Guc$@@FTO=DGe6L*dGm`~T;V zo)I#Z73YHb|MfYcg!4159}T-(C9YbcEY(-9X1{Uth?C_Gni9JrWlnYI4w`S7qqCyMG3W68{hD){!m3_wO6nZ(7e#mW*maPKii z8}Q_o-)E$pHT~9TrRiDJaV>Z!ogdSXHL6v;oMeR4111iXdd~OU4VUsXJ8P-V1_(iE zf4t5Ca?|z0 z*Qar~pntG0_My~u{>Si>my{bLu_A(Wh}~y}h@MWY;hzeIuihlcsiR&E#_4Fh5^^Gm z9XOO?!_dxlio4k7YxzB5L*Ht$S<;HDT9X{Tw{yX)wv2t+{SXZ7Y4vXl=^;+;`oxW{ z?2}6aqwbrgfK0QMqyr2uIW}dCm=086n5XpN8u_>xN|RhW9bNG_ukt>`Ut3@;>TMM> zZ&dcPRKycUXNpnM`pZ|}@X#`F$-7!N4GgkWB4uNUY}>`BiS1zaigheyCH#DSd7MB_ zZS%fLlN1VQYOKD=&{U&>9^;nZYRD(7bdGXv303ky=;ueIdd!~T$^EaEQz-I5$3P7) za>fn$WGTbC`yTzug{@*D`(^xxN6V-SwEeJypldD(!m5?|tVPFtzvjqq_8O(t&Z3Sq zDE#GmsULNP$aBvMuZhIV8|jt^dtXg5vWxFnU>s>CjYCtYcz@V3zWH2V*_;Rf$};nh^Fg2`!n<`pkHwI8RS{Q~{99L8%?y~> z;o`Vm^DOsT-;l(=FxQ{VEx3GXc}zLD57$L)E}F*VKs$wwC;J&Z*}U#d;!B8MwrSW zrgkQVO}Upo?4_0KNu^&Km7FLN^naNN{rZ8|Fj=8(RZ?H+ISdd4@f+2t}5i;Qvj*&E@@#m<*oO(6nJ;>t$A6N|fI zus%i_9B=^39C9m~kAC5S6CmR6MTW1vhO$_AOq}q45s`mMuYUqv35@>V?i&U&~uMdKu!?qy7pMH?{T1K!&SAJ+HRv zmIGe}?lwWf(uW2!k*{R)1KE5rTVlVWxx}Y#5})V$8U8&CY$e$j%)LUZu!h6Y-cj$& zHZtTZLdvFl1NbnHEtJ6)Y>-Z*SJ2Ng$R`OyQHU@f{Fou|+=bw~a`(qwTaFJJHT)*Z zWkm3<#hb3IK{bPtLLYdh5<|}Z@YmW6sG<|msr+o1=?#=gs`NO7G^9LY2I%{{rlDVz zt7MH$j$;DumaRLd!zHIt-$g37S9LOZSjc&NU-;LZC1mX=6Ac7 z^8J2OSE

3>n&O7H{f{B0_5df{8{U@NwT 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ⅇUz8drca?JFLCenW-Q&mQxr z#hwRGZ8oGKQkSWsqJ+EEPF8!bo92zfDj`v!#b@yMw}hOrbNA9 z10Q($@5mp5v0FHv2+3cca4Ga>aAx=XR4--+dp_PNg<_tu;@`Zy1RbB!+E4)~dGUw5 zH(vI(3PdToAI^;hMxHK44n!@Gm@E>SHAlIK?2We(hFtcd^}fu_Kr{Iw#PcO+cM=+O ziPBnb$8;{OGKnG z(FPmT02cdDT_ectFP0aO9)Bta_2Y6VJeSk8qLck^5yYPrY<&3i?peWunSEv6W2ZwT zo7AFOvhluHi+)>G&iW`O-EzVQQ4~et^SXofgKaQ1sDx+enkrH!45r)c<=TKlED$xI z0*IL=r+8X7Iiu;E(~RfEHSu+jcNE-B_wL*q537k3>qCj?5Ty=ATt#h>S1vNyQKj>w zVHgNu-Szih2gxvu8`z=_TN*@8r0HRq_OP_(z(v>vD^VM4<)cd3bob^jG)B~AiQpEg z&AmE-$M1bltaYBu)&2N3X0NvuJuo=XpmCo%;a&5Msm|IP`uRhjUy~};<=b0&nAV+e zSp@9@5dL9+cet7S&q5Q}YBr)JGa`LB7hTYJ2DSI1}O}zdj)p+_}-)BF;2tp(A_dg~VB4oZj1DwqBH@ z15XXyQ6dcuQhN9Wu)P8C&5df_-&GlL9VCDm^%-6fgLl8{WGKS~Hdx5Y#5rjFdIcl& z-E3jp5fi9V&c&N=?+$81}`0jf7#pvXL`Lc%4uvJ50Jw#FH zcbM?`1d}3Kpp+-2ovp=Q*K?(PFZ1rOt~-JdBhM_{CqRA5-PmrIH>v-Pgb)bGQqtV7 zO*|Q-FL9G&sq*;rSOHl^LlZ%CD#I!Jq`#X_+E)2{$9($v`IEBvd$z7;Jl%5uWu1;b&umrFN)wNBiP)~yzIQqd&!?I zihA<(fs)28N}m{C>9;B`698Uja-HD)v!uCl`&^7kFkL;w7}f?U2p%*MUeAYmTN`Ozz)mo620zdz68- z*k?)hVoLVxfgnu}s-Dr2J>3?+Q1mus{ZyDDC_*5ZW~!-fLayLm^IdO8FEc?W4WCd8 z@mB5HrgkjARy+vjDJ~L=^a!pJZw%5K@FL_SXwi77w;Yw1C;-SxP`+(hJrSnTS4+xs z3$PSe_f|MH8$H$tLYjZIr?Ojotq4o4AF07_Hj!#0>~f}mRjF_MY>?%VDi`%!*V{dE z9P+xU^IWB9(xWJ|jQ21ONA=Joo8uckM3w!KbFN$F4RY+a`>I4QqJEi@Y{;_dXGKJIr| zx73Vuyjv!Vt!Bs}y{(58)2bHlhAUK-uydwPFUAI1G{}Qg3BAv7zeV&pC9-(T>-0?* z#=9|~sZ4I$0>dpGW^L4nujNm$x5x(vZ#~M~%ARJ(IS8c~t-kX->B4|9im%9!y=v%) z-dZd>*oN#`u-DIDyzH4`qB`bV+ilh1`xpD?BF4y<2TE@%y}|jO7!lWbq{padrQ}?U zD8$Z9ND=M85RTnVAM?AD{8h#tFZeEigklpMx#q>ZRP}8nA@y$2g5M6je? z!Wn>4*a!XzXa!vkK_;h2-ty{2Kw9)fuKPC|NC{p=0NcBkB874Tkl1=7%V)*(=(={G z*eHthBPdNJru_bsT=_om_~FH70PtL#CL72SgVJh3;kFx8ax;*=#wMA`S`)*3vS{Gz zL|)r6I9icRu^{zPb>9J<=!;**K~e{Ng^2CfiBhLB2$4=K}%{Rl*+I& z-cc=9``Q^tC0vebJ1z3NTqH#NC^eAok@#IQmtzE3I*N?vQ!M`~M#@zZiX}7y&p(Enw zF8ZA$0B^NOZ_p8UK*mqWlR#3~>d0oGwmO6V z_P9XC0?DE;SK(ez=JB-!#=uhN8)A-gPWF{Q?^xR-ONUNylJqF(YN%J5r`=yR7O25l zI=XF=COE_dKXbN5<#tG(q{mKVX;Y+ZH$C-YF_Yvkt!p9td~lyBVfN+F{JxT%aRn(M zsXqWZJmBhV`E7SJhh_;iMk$q0taaVf9|RmIUDehy6&OYolur64Fh>aIZgrREW8E`9 zngxjM-RyfYsQKS^z@c{^Il05J`1hN#3?Tv@8ybEPmMv)Ali~p z$8+XBlh>lK0aE|mg!I;-8GBXU{1^D6opH_p+JK@G9fzIlowkvO=8<#c7ABoyx+XpN z74BV`yx4o-GkotSJqh(W;NbDAi?KRIPH&q+`^O+_pMwVm6)^5s;?f9OJZ_)6-qWd* zMjYg=9#6FuR!}4%&GHSppl6lvb1dLwf(_`WC%aF zT|%_A^N;(bSt$6YMbIkIm0%3-?mETCQ?wSSfxkJ`Z?fIq+yVcVUVbCZEP2;*R?Vl= zdN0ZEBp|AMC;XlNt&#n>Aop@Xe~nfOjaW9vwyK32Z9CG7C%;tJ&Yl&x1N9X$5f;W%%RtS&(k{s|*4N^^ZhxufxrM){DkPPMj-+uneDQ0;-g0w* zcS+}ApX#=OqNxpmoig8s4M@OGDL&m4$Hx+V=jLM4BKMCi(zVhr*9GKQN1XrbCV&QC zos5Tj#otw6U3rfnP;dOHM8Wbv3fnDT-vfr9K^CJv>J`1=SC((yYfSPBFZFV%yfuJf z;SQ`*16F-2^5hq zI36C{$M)+J=kVKWasLHl;QmcQ5UzH-Jh4S+LP{|B zTSs|GA3yc>qQ~iS=@6AV^kpcs=;o+Go1@x#0$rR`Ud}?T7$7 z-}YDLr#7e`fmG21$vy86xh_}2s(DLmNMCnQj9SYbTsnyAjfcT>KC_yo$`O^8o+P(r z?179axS!!7PcCH>_OZ*M3C_$;sQwm5{!bE03?E!d{EuO_ONxUMpaHqUC=-5-w{uNY zIKzjdyCxYeq;Y6$p}RBYy_J)R!t%nG4w7@*nXW5z<;+iIao>oMZVIc$AwSOMJ1rfs zb)w)pQoP*l3PPo?jDG^Tr@%so2tHtLEA6XARxlYN;-~;4|5a~5tf5TZh*N@=BAQ4n z`&AXH9U)oT@Ks8rQBs~YLM55jg9dll%#h$}@ybD{%eEL{(v~-cT%lB3bkU#p0k!M& z56^i8@(+JAL)L1C&Fd6eyRUlExXbV1Cv`BfQ0Xk~G!8f4y=6}>q<-+6_NoOLJfPn^ zkG}H+&(q+8k*Yz3JsaXjkSn@QWVWu^60M1(4mn5o!iWV_-sfTsy zO|z{#msgdYSGK@y%Db2j1CEGNTN1vJzlCd13KfmNUA*)VZ#|}_XFisut6#l(9OCB~ zdzcx%xbk;s(jzu7H|7m}Z~wKEh3Rc{StR9O*w#6@`|(fA(tcao5GYGVG>Vz;{9ncY zS@Q0B(bRDdlqt}8Gdb{_u0CCUIqqAe@Ke2XfYw**ZK82y5T z2%0MDwgws2CYDkr7c&{S_5|NOa}m&-%3dB7HWtHj!AMz5Zs8XMBJ^V0s}k>WK`J8gLm%hfR-mOMFa|F zt9)nu&uF*Gmbnh_01r*c?whPHzK<__IV$LP&@6*VB0 zeWDt)6;>uHI_RM|&BJQ>C@V=T&sfIrLpg6!-O9~0njkR1%uv2D<7`&fAV5b&-M#l{ z#f;gA@q>Q4ZM~bl0rC_}g@|Ljn>-~-UKJCq)_%NfNj!*NePUSfJtkLk);0fL_G0Tt zs%YkQ3kFc!kg>yr@hRqXKaou(NEl& zKHFc3&daoQ?k$gO^Q|;R8jFgM=(yCYc$NH}v_mDA5h^KoN*z`70=|FNu{h0xg+SdkaY z_9qu1>6g;CCp@UkPX)H?VXJo;z?-X!>&wc~=?Q}}G9uJO3unA3rH8pR6a7?g)_XCW z&0Y(7V^e1{@b;FwaxuCULukG~8Fbn8L1ueE^SWpF7j}pJZl1ZVxU0FWc6C{w+V*B5 zJLSBYrE@4`9XpNI>oN-c+1$mSFWaV>)c?@^u2rw>26b@|@RC8M94Pq7F`F@5D#_%XYbHwUryqX{rf z+__wB+d-~6f;(8=FFv{Ej85DBRF|&t^&>+w-bGCcH+5~G1}<_5W=~6`k7bHQGCyzc zdULWOtE##cnvJ{jiR`CKH{c=7i678%d->2iHSlS}W=C`Q%X9w%r=6=AuAq~}m9`BP zvG)njS#oK^=WMf-`e$IzvFv?3tTrhe;Mz8!b_3J(>LG)2g;-H`l>ZLg1w(HZAnf9~ z@m>&!^sxJ-copE;qs%8buh`RTJ( z4mWp>rnFe?gQt9R*}<@_5VNQ>7Cnh6n;@^}RcVQ3`0jpLicGZY%iy(LnLB2L|N45x z6JTQNhjQpRm?>EqzCBH~Iwj^-Re8p@4Ldc-ZrSPEOjB49d7(#x|7>UVO_*l#(o4EJ zgFsBwf?m~76^9R|5V^uzs|RL3-#@>uU7bSTuj#DVmgIGhE9Yr8e6agq(&XUSg6yvY z%a6R@j-~{wzvq{xx;yMBoJtn5Y&qCf3LA+7N(e9?(!GaczIR%Gpe*`8#J1c@bk3)+ zKb86`A^CpX{oJO*m#vfM=`YV)Unv@>jF~O~YH8aEgPa%Sb=X>Os`~Ni3OA!EY0XY- zzjxd+J*wwX1dvwt6J%mbL$q5ec5)uJQ2r9zp~>c87}qHcnbXfzio?rhXG(ojtnH&_!1Qd_ zvSrHzEkb28wju|+hb1h)_QDPj1d+g7YvU>pvukwr^bFBvrrUv<>+zjECM;(JmUhI8 zCh0y|@h386b1D6;A*k`}(tKg6uMri{QF@nf7(Y26SAa>`8lb}=*Se3hL#=nSFffj_ z2dQBf>gCI~eQTXG^~Q9~BF^kEPvscB1g@@(vgH4cBTCuL#Fr+~3C{Z{5uV8`W0G8| zR==xaou=+aj@uF>41qj*ktDo%`qa%aa{lpzidWJeH!UjRyi%c9S@78+t^h)q*tmaD zSE?o*wFMov@JU|O{hpfVEE_{Aj%|LCP4;a4zB}3Fk9n<@@^el~nqiQepVyA zQ(hyMuA8cziX_XPD|dl@SxUxMw?o}cN#4!!RFUtv`N z*-}nm|H@ra$OCi8{ZW}s0FqeJ{b5(F2jECXZ1XZ#OMNg=15g4@T3{t8aNTL zA058t0Fp6;4=S{!L$r8;XR72R6}E2jp(fm1w8b;{kTa+fTiVdi z;}r8_60NrqK=~8JMDjQGkIB&0yklH$V}DsuRAurq@OC)ZJiXFW9L!euqqY-Fu)=mr zIm|4ITe{LV$!6Y(j@r0ifrBf!Eq%*X=wFDr;Qcv&l(DQiULO2X%T)JP$!l*w=8 zcz+_x>v)$Aiq8|BQ{%Wa^V=Mi`O4rI^`h*7>fpG;kQwl4BitM2AiKAHY2oVo8*j!nK1^9OvN12`KwN_V=yir)@9>ev#`U{8~!Ii^tVo<-nuCA>$4H za~3D5TejJe#zcE#r06}uZ4GI@WR1@D?Qpg4<$2%M#3h7H=dE&#w@VV$zDR;i9@CO` zob8)J`6Rw0Jp}#M-O<_~7{(Di5)v7z=F~M7Vq#N<(+N>XK{ohEYq`>n$yY@1pSnkw zIpn32!fj)zIxuuksvuBpCNiqaUu9je+@m8qUvN*x@$KywD-Cg(d-h{H<5Gml^XEX- za`g9xGHKwGoz9>y5})b)q5G?>x{kg;gz{+#u*A#&3)Wp%Ia&~v)Mz!K1I^sxlIF^F z9l5lj$H4Al*kiZQLy!u{6+Siex-qlZgg8057r)Z(mQe|=7{jQO+fZdf`s+j|ljsFd z{;pKiLiskfCWE(l7R+`;j9dZkY;+(a+}kPK=@uBl%k#i;-E-VV3q@SUh`qUR@t|^o zs!@6icz`bFS6stIh20HzMaWG+*PSTV?JvWtV#E9C&#n26#txMr#8ofPW+N?Yy0(sE zvHPWVm1En!6Q7YQljjinR5UBNcnxvOb5NBrJ>E7wPMz|!sR)``T@JE3l} z+6Ji)eUyd-tzI5wy(Y-|baUIxOP`$IHWRx5)5aC;=T`xb?bY|w)|XwGVxG=qJRWD0 zmNp~%6!fTyE0syeqneVdmP@H%9tT@TP){$vsB7Gb+5$OwYJeP68wGv5;uV=F_ezhE zD;B1uuS(xZHxl=J#$;n~O_BtiBSP(^ZKRHQ_@xC7Vp@6RCps&|jQ2jCd8KydDz6L0{SH86kCf)kpIz~a zjlHQ96W4VFz*Tm(7951^5lq43-XT$aGnaD$WprE;kiTyYFeQsguD<2fd z)7co_CC699hvUW3O5#eIlW_XCHKXx3erp7HU7SKXV-dHWkTYA$M8&I% z=1SjDcOFcMnHDf4!w5>N{`L}|YUO-2E3PHq)Sqj_3;>44()u!vgX|}VLqs1`rG?pY zHw-;@r&+xZFT&=V8T_e&6b4ZB@b$m1A;vc#Iw;l2u$$gk0eX=UVl#|k+{`0LbZGHF zhuF7==llu^KYsZDSj|y@FJjZX19THdu)vsV4sg7(dbCHJGBaz$} zKsHFSszG%SB!#P%^MZ;V5_I)CX~~Yu4>Oj@b{SDklc4m zv|Nt0k^#1JY;3kh#L-Jte`XVgFx(e+GKi?pzX}CGo%7q4jSDVvs`t=G&~Kv0ZvMKa zH>MorG?vzD)mo$W5Gu9sTu8DHYlDsbs2R5tr+ixD+vo;j`esaZ`70h}17E}7210zT z#^Do080|p4yJ?n7j9bZc2UHXB2sm{6X6zTF@Jd60sz-^azSQB>cGHC~Q6bkvHKzp- z-4Wum<|UG{{6a}u5r)KD6N@6_b=(*fTTMq%aS`0sw~C#p{0(gD50_j6ttGMPQ?G{(vLA!m2*PH z-GQ68fPMaX8l?86oFS5fr#{_O_d#{Le1pBPlU5yDd(=2NnBF76)$-Q1{>IgknaI?y z;B6x?S#HFe%S!#^-Cy)%RQc1;kXH1;6%WMWg*k%~%{c(j+{R;C>-KDwuKiT;rnvK~ z^~Po+^GS603-cK(+yR>PZ!BDQXIid9m!n~h9)r9l9xKh$6DrdwO1>40Bhxihw}@=4 zC{41>&$gcJbhvWL=P)bSH03+rn|M&@tn*PjYKzmvrt+rs2yPa7%=7v;i_KWp3Gf^y zStn|aYKY>Av7g-n=1^s@ssAv#>m69-dpkRa3av8Vy}q=u9CerNS2!)!66QSflV(%# zQ2ZQq<5!d6Fts#W{HhqlaV#&@o ziCM8Yj0Hgk6T*U<4%3aiydl;9&IOo3%6VJk!DmxZDeMiueM;gk=asJ4p3k1C#Vc~Q zGG5KOzYf>+c9ffd6IgB&Sm=%Ooy)u~B(}JiCVOkGP<&{b?V2C*MQG|SJ80Uj*023S zydhTAT))Qgq!V6WC%`cMEF2Q2BW^@N7{Hg7OjB^3y-+_JE2mBw8P)JkbhVPvOl(JR zCTh}WO)A3n-}w8%Sz@vC%wL1UoW{Bn-35%Ow@RsqQ8td)H_Fy&+nlakuESXUjlgLvqKL6=Q|>Y%Zu;jF-i{{fFMKj( zjq(3jzidXBe9;YcnqRHL&zgQ5pwG*TYCnCj4x?CF_!wT|B`a%zwfVfF=n&;3`YQ#S zW#N%&=yTTT7m)EE`*bBm7KN0OACavUH(U+Z>g6VuMs@ylC;q@D_cgb;LnW&o2g zg-4U;^40@nSS!(p;+ij)(L?3%*ij+LC}7cc(?#)xIhTrvF4`d^>BN-Nq+)ry`~+%e z(Xg^t3+$V>Kl}{NbJo}-tKeutTkyaAvK@J^d~dRam5OXU8h5Wo{_uNW5CRnfiP(mq zjik@%b5^~Qd&ssbmVdgKmNd~;Gte|3)*%zez)7!xywd{# zKQ@c6CUfri-V#z;MhzPe|Fb;=?37VgS%t?S*ux|NgS8#<_!I&UOkR45+6W1E5{g*r zwhB@_(Tg}zl-DxyF0wTuRD9a~vMiol61 z>7}-{QipqVZwqMb_U(LiRVsNe*HRnuW-Um~^P#@!TWla>g@He!^s<`+<@QqB3jXgg z�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 literal 0 HcmV?d00001 diff --git a/www/assets/img/dark-hero-bg.jpg b/www/assets/img/dark-hero-bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0b509844cc18714288ba46585b78234377d49fb5 GIT binary patch literal 118773 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

-Oi)G01ypr^_B6xnqc78Bae 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 -#`068YplettN3|b|bX87|n-VfgZ-G4}d~+ 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 zⅇ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 literal 0 HcmV?d00001 diff --git a/www/assets/img/dark-slide-2.png b/www/assets/img/dark-slide-2.png new file mode 100644 index 0000000000000000000000000000000000000000..f004b4834e774ee559dc9cd06f95851cb0e0380a GIT binary patch literal 8099 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 Pf17JT_0`MO>>m6FJK*>~ literal 0 HcmV?d00001 diff --git a/www/assets/img/dark-slide-3.png b/www/assets/img/dark-slide-3.png new file mode 100644 index 0000000000000000000000000000000000000000..9da2670ed65f9f6d7c68c27b420a0bda9d064314 GIT binary patch literal 8619 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 literal 0 HcmV?d00001 diff --git a/www/assets/img/dark-slide-4.png b/www/assets/img/dark-slide-4.png new file mode 100644 index 0000000000000000000000000000000000000000..51dc667f64484bbd9c9a490fceb84af81cf2765a GIT binary patch literal 7596 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 CQ2K5F literal 0 HcmV?d00001 diff --git a/www/assets/img/dark-slide-5.png b/www/assets/img/dark-slide-5.png new file mode 100644 index 0000000000000000000000000000000000000000..eec002b832d48524ac02bb3dd0d866c69b8d7539 GIT binary patch literal 8163 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

vxG)6{wPdREmC{wpy$BTT6`%CQ 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 literal 0 HcmV?d00001 diff --git a/www/assets/img/iphone-mockup-3.png b/www/assets/img/iphone-mockup-3.png new file mode 100644 index 0000000000000000000000000000000000000000..a3196c33bfe75ab8b024c4662695daa09b04a2e9 GIT binary patch literal 60078 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

  • 0>Xl>tI)%&ub44bPLWfDdvgAzS6 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 Q8~^|S07*qoM6N<$f`2Gs=Kufz literal 0 HcmV?d00001 diff --git a/www/assets/img/iphone-mockup-4.png b/www/assets/img/iphone-mockup-4.png new file mode 100644 index 0000000000000000000000000000000000000000..44084ddb8383194e72c07b8635462b7ee46dfbc8 GIT binary patch literal 59874 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 XPwQsWrxVmF00000NkvXXu0mjf;dWTs literal 0 HcmV?d00001 diff --git a/www/assets/img/logo-blue.png b/www/assets/img/logo-blue.png new file mode 100644 index 0000000000000000000000000000000000000000..fc1cc43306de88859c9df084213d3fd4c82c9af1 GIT binary patch literal 6185 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 literal 0 HcmV?d00001 diff --git a/www/assets/img/logo-dark.png b/www/assets/img/logo-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..af19c63290dd6d6ad7588c6d08c89d5caa4367a2 GIT binary patch literal 6512 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 literal 0 HcmV?d00001 diff --git a/www/assets/img/logo.png b/www/assets/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..d006ddafaa1b1daac28f5d558495407e97803e85 GIT binary patch literal 5888 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 CKR?L; literal 0 HcmV?d00001 diff --git a/www/assets/img/mobile-mockup.png b/www/assets/img/mobile-mockup.png new file mode 100644 index 0000000000000000000000000000000000000000..90c533f65415be10aa26c115fb50a5cc12f52478 GIT binary patch literal 5673 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 literal 0 HcmV?d00001 diff --git a/www/assets/img/mobile-slide-1.png b/www/assets/img/mobile-slide-1.png new file mode 100644 index 0000000000000000000000000000000000000000..ce5765af57f720ca554ca89c0ca4649eff291931 GIT binary patch literal 7098 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 literal 0 HcmV?d00001 diff --git a/www/assets/img/mobile-slide-4.png b/www/assets/img/mobile-slide-4.png new file mode 100644 index 0000000000000000000000000000000000000000..cc13af29e2a17150804bc2b9a64a4abd4f77e1b9 GIT binary patch literal 7430 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 literal 0 HcmV?d00001 diff --git a/www/assets/img/mobile-slide-5.png b/www/assets/img/mobile-slide-5.png new file mode 100644 index 0000000000000000000000000000000000000000..7c6802bde1a726b359906bb309368348ebf7a070 GIT binary patch literal 7933 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 DBEO}! literal 0 HcmV?d00001 diff --git a/www/assets/img/mobile-slide-6.png b/www/assets/img/mobile-slide-6.png new file mode 100644 index 0000000000000000000000000000000000000000..f007e1f1ddd4d7b5086a0ac017db33ec814e25ec GIT binary patch literal 8369 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 literal 0 HcmV?d00001 diff --git a/www/assets/img/paper.png b/www/assets/img/paper.png new file mode 100644 index 0000000000000000000000000000000000000000..74acb8d8173b923fef1387071cee801c6d10a8a0 GIT binary patch literal 186207 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Ľ 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 literal 0 HcmV?d00001 diff --git a/www/assets/img/tab-slide-3.png b/www/assets/img/tab-slide-3.png new file mode 100644 index 0000000000000000000000000000000000000000..dbc600d48a2ec6d66eca63c501b260c3805e57a8 GIT binary patch literal 8533 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 VCG{6s{raQB9bKcFr4Wbk{{a4J`yBuP literal 0 HcmV?d00001 diff --git a/www/assets/img/tab-slide-4.png b/www/assets/img/tab-slide-4.png new file mode 100644 index 0000000000000000000000000000000000000000..e18a3ba87388165d36728406617305723df14ce7 GIT binary patch literal 7562 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 literal 0 HcmV?d00001 diff --git a/www/assets/img/tic.png b/www/assets/img/tic.png new file mode 100644 index 0000000000000000000000000000000000000000..aedf675f2cc8e0f05061e39c9ea0d978e89d55c9 GIT binary patch literal 1111 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 YYjBl))HvkG>Ytm%F)K{2iCg%;0FlOj;s5{u literal 0 HcmV?d00001 diff --git a/www/assets/js/bootstrap.min.js b/www/assets/js/bootstrap.min.js new file mode 100644 index 0000000..e79c065 --- /dev/null +++ b/www/assets/js/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.3.6 (http://getbootstrap.com) + * Copyright 2011-2015 Twitter, Inc. + * Licensed under the MIT license + */ +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>2)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.6",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.6",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),a(c.target).is('input[type="radio"]')||a(c.target).is('input[type="checkbox"]')||c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.6",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.6",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.6",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth

    ',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),c.isInStateTrue()?void 0:(clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide())},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.6",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.6",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.6",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file diff --git a/www/assets/js/html5shiv-printshiv.js b/www/assets/js/html5shiv-printshiv.js new file mode 100644 index 0000000..085708e --- /dev/null +++ b/www/assets/js/html5shiv-printshiv.js @@ -0,0 +1,524 @@ +/** +* @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed +*/ +;(function(window, document) { +/*jshint evil:true */ + /** version */ + var version = '3.7.3'; + + /** Preset options */ + var options = window.html5 || {}; + + /** Used to skip problem elements */ + var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i; + + /** Not all elements can be cloned in IE **/ + var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i; + + /** Detect whether the browser supports default html5 styles */ + var supportsHtml5Styles; + + /** Name of the expando, to work with multiple documents or to re-shiv one document */ + var expando = '_html5shiv'; + + /** The id for the the documents expando */ + var expanID = 0; + + /** Cached data for each document */ + var expandoData = {}; + + /** Detect whether the browser supports unknown elements */ + var supportsUnknownElements; + + (function() { + try { + var a = document.createElement('a'); + a.innerHTML = ''; + //if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles + supportsHtml5Styles = ('hidden' in a); + + supportsUnknownElements = a.childNodes.length == 1 || (function() { + // assign a false positive if unable to shiv + (document.createElement)('a'); + var frag = document.createDocumentFragment(); + return ( + typeof frag.cloneNode == 'undefined' || + typeof frag.createDocumentFragment == 'undefined' || + typeof frag.createElement == 'undefined' + ); + }()); + } catch(e) { + // assign a false positive if detection fails => unable to shiv + supportsHtml5Styles = true; + supportsUnknownElements = true; + } + + }()); + + /*--------------------------------------------------------------------------*/ + + /** + * Creates a style sheet with the given CSS text and adds it to the document. + * @private + * @param {Document} ownerDocument The document. + * @param {String} cssText The CSS text. + * @returns {StyleSheet} The style element. + */ + function addStyleSheet(ownerDocument, cssText) { + var p = ownerDocument.createElement('p'), + parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement; + + p.innerHTML = 'x'; + return parent.insertBefore(p.lastChild, parent.firstChild); + } + + /** + * Returns the value of `html5.elements` as an array. + * @private + * @returns {Array} An array of shived element node names. + */ + function getElements() { + var elements = html5.elements; + return typeof elements == 'string' ? elements.split(' ') : elements; + } + + /** + * Extends the built-in list of html5 elements + * @memberOf html5 + * @param {String|Array} newElements whitespace separated list or array of new element names to shiv + * @param {Document} ownerDocument The context document. + */ + function addElements(newElements, ownerDocument) { + var elements = html5.elements; + if(typeof elements != 'string'){ + elements = elements.join(' '); + } + if(typeof newElements != 'string'){ + newElements = newElements.join(' '); + } + html5.elements = elements +' '+ newElements; + shivDocument(ownerDocument); + } + + /** + * Returns the data associated to the given document + * @private + * @param {Document} ownerDocument The document. + * @returns {Object} An object of data. + */ + function getExpandoData(ownerDocument) { + var data = expandoData[ownerDocument[expando]]; + if (!data) { + data = {}; + expanID++; + ownerDocument[expando] = expanID; + expandoData[expanID] = data; + } + return data; + } + + /** + * returns a shived element for the given nodeName and document + * @memberOf html5 + * @param {String} nodeName name of the element + * @param {Document} ownerDocument The context document. + * @returns {Object} The shived element. + */ + function createElement(nodeName, ownerDocument, data){ + if (!ownerDocument) { + ownerDocument = document; + } + if(supportsUnknownElements){ + return ownerDocument.createElement(nodeName); + } + if (!data) { + data = getExpandoData(ownerDocument); + } + var node; + + if (data.cache[nodeName]) { + node = data.cache[nodeName].cloneNode(); + } else if (saveClones.test(nodeName)) { + node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode(); + } else { + node = data.createElem(nodeName); + } + + // Avoid adding some elements to fragments in IE < 9 because + // * Attributes like `name` or `type` cannot be set/changed once an element + // is inserted into a document/fragment + // * Link elements with `src` attributes that are inaccessible, as with + // a 403 response, will cause the tab/window to crash + // * Script elements appended to fragments will execute when their `src` + // or `text` property is set + return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node; + } + + /** + * returns a shived DocumentFragment for the given document + * @memberOf html5 + * @param {Document} ownerDocument The context document. + * @returns {Object} The shived DocumentFragment. + */ + function createDocumentFragment(ownerDocument, data){ + if (!ownerDocument) { + ownerDocument = document; + } + if(supportsUnknownElements){ + return ownerDocument.createDocumentFragment(); + } + data = data || getExpandoData(ownerDocument); + var clone = data.frag.cloneNode(), + i = 0, + elems = getElements(), + l = elems.length; + for(;i+~])(' + getElements().join('|') + ')(?=[[\\s,>+~#.:]|$)', 'gi'), + replacement = '$1' + shivNamespace + '\\:$2'; + + while (index--) { + pair = parts[index] = parts[index].split('}'); + pair[pair.length - 1] = pair[pair.length - 1].replace(reElements, replacement); + parts[index] = pair.join('}'); + } + return parts.join('{'); + } + + /** + * Removes the given wrappers, leaving the original elements. + * @private + * @params {Array} wrappers An array of printable wrappers. + */ + function removeWrappers(wrappers) { + var index = wrappers.length; + while (index--) { + wrappers[index].removeNode(); + } + } + + /*--------------------------------------------------------------------------*/ + + /** + * Shivs the given document for print. + * @memberOf html5 + * @param {Document} ownerDocument The document to shiv. + * @returns {Document} The shived document. + */ + function shivPrint(ownerDocument) { + var shivedSheet, + wrappers, + data = getExpandoData(ownerDocument), + namespaces = ownerDocument.namespaces, + ownerWindow = ownerDocument.parentWindow; + + if (!supportsShivableSheets || ownerDocument.printShived) { + return ownerDocument; + } + if (typeof namespaces[shivNamespace] == 'undefined') { + namespaces.add(shivNamespace); + } + + function removeSheet() { + clearTimeout(data._removeSheetTimer); + if (shivedSheet) { + shivedSheet.removeNode(true); + } + shivedSheet= null; + } + + ownerWindow.attachEvent('onbeforeprint', function() { + + removeSheet(); + + var imports, + length, + sheet, + collection = ownerDocument.styleSheets, + cssText = [], + index = collection.length, + sheets = Array(index); + + // convert styleSheets collection to an array + while (index--) { + sheets[index] = collection[index]; + } + // concat all style sheet CSS text + while ((sheet = sheets.pop())) { + // IE does not enforce a same origin policy for external style sheets... + // but has trouble with some dynamically created stylesheets + if (!sheet.disabled && reMedia.test(sheet.media)) { + + try { + imports = sheet.imports; + length = imports.length; + } catch(er){ + length = 0; + } + + for (index = 0; index < length; index++) { + sheets.push(imports[index]); + } + + try { + cssText.push(sheet.cssText); + } catch(er){} + } + } + + // wrap all HTML5 elements with printable elements and add the shived style sheet + cssText = shivCssText(cssText.reverse().join('')); + wrappers = addWrappers(ownerDocument); + shivedSheet = addStyleSheet(ownerDocument, cssText); + + }); + + ownerWindow.attachEvent('onafterprint', function() { + // remove wrappers, leaving the original elements, and remove the shived style sheet + removeWrappers(wrappers); + clearTimeout(data._removeSheetTimer); + data._removeSheetTimer = setTimeout(removeSheet, 500); + }); + + ownerDocument.printShived = true; + return ownerDocument; + } + + /*--------------------------------------------------------------------------*/ + + // expose API + html5.type += ' print'; + html5.shivPrint = shivPrint; + + // shiv for print + shivPrint(document); + + if(typeof module == 'object' && module.exports){ + module.exports = html5; + } + +}(typeof window !== "undefined" ? window : this, document)); diff --git a/www/assets/js/html5shiv.js b/www/assets/js/html5shiv.js new file mode 100644 index 0000000..45ea723 --- /dev/null +++ b/www/assets/js/html5shiv.js @@ -0,0 +1,326 @@ +/** +* @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed +*/ +;(function(window, document) { +/*jshint evil:true */ + /** version */ + var version = '3.7.3'; + + /** Preset options */ + var options = window.html5 || {}; + + /** Used to skip problem elements */ + var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i; + + /** Not all elements can be cloned in IE **/ + var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i; + + /** Detect whether the browser supports default html5 styles */ + var supportsHtml5Styles; + + /** Name of the expando, to work with multiple documents or to re-shiv one document */ + var expando = '_html5shiv'; + + /** The id for the the documents expando */ + var expanID = 0; + + /** Cached data for each document */ + var expandoData = {}; + + /** Detect whether the browser supports unknown elements */ + var supportsUnknownElements; + + (function() { + try { + var a = document.createElement('a'); + a.innerHTML = ''; + //if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles + supportsHtml5Styles = ('hidden' in a); + + supportsUnknownElements = a.childNodes.length == 1 || (function() { + // assign a false positive if unable to shiv + (document.createElement)('a'); + var frag = document.createDocumentFragment(); + return ( + typeof frag.cloneNode == 'undefined' || + typeof frag.createDocumentFragment == 'undefined' || + typeof frag.createElement == 'undefined' + ); + }()); + } catch(e) { + // assign a false positive if detection fails => unable to shiv + supportsHtml5Styles = true; + supportsUnknownElements = true; + } + + }()); + + /*--------------------------------------------------------------------------*/ + + /** + * Creates a style sheet with the given CSS text and adds it to the document. + * @private + * @param {Document} ownerDocument The document. + * @param {String} cssText The CSS text. + * @returns {StyleSheet} The style element. + */ + function addStyleSheet(ownerDocument, cssText) { + var p = ownerDocument.createElement('p'), + parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement; + + p.innerHTML = 'x'; + return parent.insertBefore(p.lastChild, parent.firstChild); + } + + /** + * Returns the value of `html5.elements` as an array. + * @private + * @returns {Array} An array of shived element node names. + */ + function getElements() { + var elements = html5.elements; + return typeof elements == 'string' ? elements.split(' ') : elements; + } + + /** + * Extends the built-in list of html5 elements + * @memberOf html5 + * @param {String|Array} newElements whitespace separated list or array of new element names to shiv + * @param {Document} ownerDocument The context document. + */ + function addElements(newElements, ownerDocument) { + var elements = html5.elements; + if(typeof elements != 'string'){ + elements = elements.join(' '); + } + if(typeof newElements != 'string'){ + newElements = newElements.join(' '); + } + html5.elements = elements +' '+ newElements; + shivDocument(ownerDocument); + } + + /** + * Returns the data associated to the given document + * @private + * @param {Document} ownerDocument The document. + * @returns {Object} An object of data. + */ + function getExpandoData(ownerDocument) { + var data = expandoData[ownerDocument[expando]]; + if (!data) { + data = {}; + expanID++; + ownerDocument[expando] = expanID; + expandoData[expanID] = data; + } + return data; + } + + /** + * returns a shived element for the given nodeName and document + * @memberOf html5 + * @param {String} nodeName name of the element + * @param {Document|DocumentFragment} ownerDocument The context document. + * @returns {Object} The shived element. + */ + function createElement(nodeName, ownerDocument, data){ + if (!ownerDocument) { + ownerDocument = document; + } + if(supportsUnknownElements){ + return ownerDocument.createElement(nodeName); + } + if (!data) { + data = getExpandoData(ownerDocument); + } + var node; + + if (data.cache[nodeName]) { + node = data.cache[nodeName].cloneNode(); + } else if (saveClones.test(nodeName)) { + node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode(); + } else { + node = data.createElem(nodeName); + } + + // Avoid adding some elements to fragments in IE < 9 because + // * Attributes like `name` or `type` cannot be set/changed once an element + // is inserted into a document/fragment + // * Link elements with `src` attributes that are inaccessible, as with + // a 403 response, will cause the tab/window to crash + // * Script elements appended to fragments will execute when their `src` + // or `text` property is set + return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node; + } + + /** + * returns a shived DocumentFragment for the given document + * @memberOf html5 + * @param {Document} ownerDocument The context document. + * @returns {Object} The shived DocumentFragment. + */ + function createDocumentFragment(ownerDocument, data){ + if (!ownerDocument) { + ownerDocument = document; + } + if(supportsUnknownElements){ + return ownerDocument.createDocumentFragment(); + } + data = data || getExpandoData(ownerDocument); + var clone = data.frag.cloneNode(), + i = 0, + elems = getElements(), + l = elems.length; + for(;ia?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},m.extend=m.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||m.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(m.isPlainObject(c)||(b=m.isArray(c)))?(b?(b=!1,f=a&&m.isArray(a)?a:[]):f=a&&m.isPlainObject(a)?a:{},g[d]=m.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},m.extend({expando:"jQuery"+(l+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===m.type(a)},isArray:Array.isArray||function(a){return"array"===m.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){return!m.isArray(a)&&a-parseFloat(a)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==m.type(a)||a.nodeType||m.isWindow(a))return!1;try{if(a.constructor&&!j.call(a,"constructor")&&!j.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(k.ownLast)for(b in a)return j.call(a,b);for(b in a);return void 0===b||j.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(b){b&&m.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(o,"ms-").replace(p,q)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=r(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(n,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(r(Object(a))?m.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(g)return g.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=r(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(f=a[b],b=a,a=f),m.isFunction(a)?(c=d.call(arguments,2),e=function(){return a.apply(b||this,c.concat(d.call(arguments)))},e.guid=a.guid=a.guid||m.guid++,e):void 0},now:function(){return+new Date},support:k}),m.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function r(a){var b="length"in a&&a.length,c=m.type(a);return"function"===c||m.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var s=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);m.find=s,m.expr=s.selectors,m.expr[":"]=m.expr.pseudos,m.unique=s.uniqueSort,m.text=s.getText,m.isXMLDoc=s.isXML,m.contains=s.contains;var t=m.expr.match.needsContext,u=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,v=/^.[^:#\[\.,]*$/;function w(a,b,c){if(m.isFunction(b))return m.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return m.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(v.test(b))return m.filter(b,a,c);b=m.filter(b,a)}return m.grep(a,function(a){return m.inArray(a,b)>=0!==c})}m.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?m.find.matchesSelector(d,a)?[d]:[]:m.find.matches(a,m.grep(b,function(a){return 1===a.nodeType}))},m.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(m(a).filter(function(){for(b=0;e>b;b++)if(m.contains(d[b],this))return!0}));for(b=0;e>b;b++)m.find(a,d[b],c);return c=this.pushStack(e>1?m.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(w(this,a||[],!1))},not:function(a){return this.pushStack(w(this,a||[],!0))},is:function(a){return!!w(this,"string"==typeof a&&t.test(a)?m(a):a||[],!1).length}});var x,y=a.document,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=m.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||x).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof m?b[0]:b,m.merge(this,m.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:y,!0)),u.test(c[1])&&m.isPlainObject(b))for(c in b)m.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}if(d=y.getElementById(c[2]),d&&d.parentNode){if(d.id!==c[2])return x.find(a);this.length=1,this[0]=d}return this.context=y,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):m.isFunction(a)?"undefined"!=typeof x.ready?x.ready(a):a(m):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),m.makeArray(a,this))};A.prototype=m.fn,x=m(y);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};m.extend({dir:function(a,b,c){var d=[],e=a[b];while(e&&9!==e.nodeType&&(void 0===c||1!==e.nodeType||!m(e).is(c)))1===e.nodeType&&d.push(e),e=e[b];return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),m.fn.extend({has:function(a){var b,c=m(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(m.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=t.test(a)||"string"!=typeof a?m(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&m.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?m.unique(f):f)},index:function(a){return a?"string"==typeof a?m.inArray(this[0],m(a)):m.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(m.unique(m.merge(this.get(),m(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}m.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return m.dir(a,"parentNode")},parentsUntil:function(a,b,c){return m.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return m.dir(a,"nextSibling")},prevAll:function(a){return m.dir(a,"previousSibling")},nextUntil:function(a,b,c){return m.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return m.dir(a,"previousSibling",c)},siblings:function(a){return m.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return m.sibling(a.firstChild)},contents:function(a){return m.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:m.merge([],a.childNodes)}},function(a,b){m.fn[a]=function(c,d){var e=m.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=m.filter(d,e)),this.length>1&&(C[a]||(e=m.unique(e)),B.test(a)&&(e=e.reverse())),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return m.each(a.match(E)||[],function(a,c){b[c]=!0}),b}m.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):m.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(c=a.memory&&l,d=!0,f=g||0,g=0,e=h.length,b=!0;h&&e>f;f++)if(h[f].apply(l[0],l[1])===!1&&a.stopOnFalse){c=!1;break}b=!1,h&&(i?i.length&&j(i.shift()):c?h=[]:k.disable())},k={add:function(){if(h){var d=h.length;!function f(b){m.each(b,function(b,c){var d=m.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&f(c)})}(arguments),b?e=h.length:c&&(g=d,j(c))}return this},remove:function(){return h&&m.each(arguments,function(a,c){var d;while((d=m.inArray(c,h,d))>-1)h.splice(d,1),b&&(e>=d&&e--,f>=d&&f--)}),this},has:function(a){return a?m.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],e=0,this},disable:function(){return h=i=c=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,c||k.disable(),this},locked:function(){return!i},fireWith:function(a,c){return!h||d&&!i||(c=c||[],c=[a,c.slice?c.slice():c],b?i.push(c):j(c)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!d}};return k},m.extend({Deferred:function(a){var b=[["resolve","done",m.Callbacks("once memory"),"resolved"],["reject","fail",m.Callbacks("once memory"),"rejected"],["notify","progress",m.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return m.Deferred(function(c){m.each(b,function(b,f){var g=m.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&m.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?m.extend(a,d):d}},e={};return d.pipe=d.then,m.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&m.isFunction(a.promise)?e:0,g=1===f?a:m.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&m.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;m.fn.ready=function(a){return m.ready.promise().done(a),this},m.extend({isReady:!1,readyWait:1,holdReady:function(a){a?m.readyWait++:m.ready(!0)},ready:function(a){if(a===!0?!--m.readyWait:!m.isReady){if(!y.body)return setTimeout(m.ready);m.isReady=!0,a!==!0&&--m.readyWait>0||(H.resolveWith(y,[m]),m.fn.triggerHandler&&(m(y).triggerHandler("ready"),m(y).off("ready")))}}});function I(){y.addEventListener?(y.removeEventListener("DOMContentLoaded",J,!1),a.removeEventListener("load",J,!1)):(y.detachEvent("onreadystatechange",J),a.detachEvent("onload",J))}function J(){(y.addEventListener||"load"===event.type||"complete"===y.readyState)&&(I(),m.ready())}m.ready.promise=function(b){if(!H)if(H=m.Deferred(),"complete"===y.readyState)setTimeout(m.ready);else if(y.addEventListener)y.addEventListener("DOMContentLoaded",J,!1),a.addEventListener("load",J,!1);else{y.attachEvent("onreadystatechange",J),a.attachEvent("onload",J);var c=!1;try{c=null==a.frameElement&&y.documentElement}catch(d){}c&&c.doScroll&&!function e(){if(!m.isReady){try{c.doScroll("left")}catch(a){return setTimeout(e,50)}I(),m.ready()}}()}return H.promise(b)};var K="undefined",L;for(L in m(k))break;k.ownLast="0"!==L,k.inlineBlockNeedsLayout=!1,m(function(){var a,b,c,d;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",k.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(d))}),function(){var a=y.createElement("div");if(null==k.deleteExpando){k.deleteExpando=!0;try{delete a.test}catch(b){k.deleteExpando=!1}}a=null}(),m.acceptData=function(a){var b=m.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b};var M=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,N=/([A-Z])/g;function O(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(N,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:M.test(c)?m.parseJSON(c):c}catch(e){}m.data(a,b,c)}else c=void 0}return c}function P(a){var b;for(b in a)if(("data"!==b||!m.isEmptyObject(a[b]))&&"toJSON"!==b)return!1; + +return!0}function Q(a,b,d,e){if(m.acceptData(a)){var f,g,h=m.expando,i=a.nodeType,j=i?m.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||m.guid++:h),j[k]||(j[k]=i?{}:{toJSON:m.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=m.extend(j[k],b):j[k].data=m.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[m.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[m.camelCase(b)])):f=g,f}}function R(a,b,c){if(m.acceptData(a)){var d,e,f=a.nodeType,g=f?m.cache:a,h=f?a[m.expando]:m.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){m.isArray(b)?b=b.concat(m.map(b,m.camelCase)):b in d?b=[b]:(b=m.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!P(d):!m.isEmptyObject(d))return}(c||(delete g[h].data,P(g[h])))&&(f?m.cleanData([a],!0):k.deleteExpando||g!=g.window?delete g[h]:g[h]=null)}}}m.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?m.cache[a[m.expando]]:a[m.expando],!!a&&!P(a)},data:function(a,b,c){return Q(a,b,c)},removeData:function(a,b){return R(a,b)},_data:function(a,b,c){return Q(a,b,c,!0)},_removeData:function(a,b){return R(a,b,!0)}}),m.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=m.data(f),1===f.nodeType&&!m._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=m.camelCase(d.slice(5)),O(f,d,e[d])));m._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){m.data(this,a)}):arguments.length>1?this.each(function(){m.data(this,a,b)}):f?O(f,a,m.data(f,a)):void 0},removeData:function(a){return this.each(function(){m.removeData(this,a)})}}),m.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=m._data(a,b),c&&(!d||m.isArray(c)?d=m._data(a,b,m.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=m.queue(a,b),d=c.length,e=c.shift(),f=m._queueHooks(a,b),g=function(){m.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return m._data(a,c)||m._data(a,c,{empty:m.Callbacks("once memory").add(function(){m._removeData(a,b+"queue"),m._removeData(a,c)})})}}),m.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthh;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},W=/^(?:checkbox|radio)$/i;!function(){var a=y.createElement("input"),b=y.createElement("div"),c=y.createDocumentFragment();if(b.innerHTML="
    a",k.leadingWhitespace=3===b.firstChild.nodeType,k.tbody=!b.getElementsByTagName("tbody").length,k.htmlSerialize=!!b.getElementsByTagName("link").length,k.html5Clone="<:nav>"!==y.createElement("nav").cloneNode(!0).outerHTML,a.type="checkbox",a.checked=!0,c.appendChild(a),k.appendChecked=a.checked,b.innerHTML="",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue,c.appendChild(b),b.innerHTML="",k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,k.noCloneEvent=!0,b.attachEvent&&(b.attachEvent("onclick",function(){k.noCloneEvent=!1}),b.cloneNode(!0).click()),null==k.deleteExpando){k.deleteExpando=!0;try{delete b.test}catch(d){k.deleteExpando=!1}}}(),function(){var b,c,d=y.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(k[b+"Bubbles"]=c in a)||(d.setAttribute(c,"t"),k[b+"Bubbles"]=d.attributes[c].expando===!1);d=null}();var X=/^(?:input|select|textarea)$/i,Y=/^key/,Z=/^(?:mouse|pointer|contextmenu)|click/,$=/^(?:focusinfocus|focusoutblur)$/,_=/^([^.]*)(?:\.(.+)|)$/;function aa(){return!0}function ba(){return!1}function ca(){try{return y.activeElement}catch(a){}}m.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=m.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return typeof m===K||a&&m.event.triggered===a.type?void 0:m.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(E)||[""],h=b.length;while(h--)f=_.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=m.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=m.event.special[o]||{},l=m.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&m.expr.match.needsContext.test(e),namespace:p.join(".")},i),(n=g[o])||(n=g[o]=[],n.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?n.splice(n.delegateCount++,0,l):n.push(l),m.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,n,o,p,q,r=m.hasData(a)&&m._data(a);if(r&&(k=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=_.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=m.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,n=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=n.length;while(f--)g=n[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(n.splice(f,1),g.selector&&n.delegateCount--,l.remove&&l.remove.call(a,g));i&&!n.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||m.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)m.event.remove(a,o+b[j],c,d,!0);m.isEmptyObject(k)&&(delete r.handle,m._removeData(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,l,n,o=[d||y],p=j.call(b,"type")?b.type:b,q=j.call(b,"namespace")?b.namespace.split("."):[];if(h=l=d=d||y,3!==d.nodeType&&8!==d.nodeType&&!$.test(p+m.event.triggered)&&(p.indexOf(".")>=0&&(q=p.split("."),p=q.shift(),q.sort()),g=p.indexOf(":")<0&&"on"+p,b=b[m.expando]?b:new m.Event(p,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=q.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:m.makeArray(c,[b]),k=m.event.special[p]||{},e||!k.trigger||k.trigger.apply(d,c)!==!1)){if(!e&&!k.noBubble&&!m.isWindow(d)){for(i=k.delegateType||p,$.test(i+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),l=h;l===(d.ownerDocument||y)&&o.push(l.defaultView||l.parentWindow||a)}n=0;while((h=o[n++])&&!b.isPropagationStopped())b.type=n>1?i:k.bindType||p,f=(m._data(h,"events")||{})[b.type]&&m._data(h,"handle"),f&&f.apply(h,c),f=g&&h[g],f&&f.apply&&m.acceptData(h)&&(b.result=f.apply(h,c),b.result===!1&&b.preventDefault());if(b.type=p,!e&&!b.isDefaultPrevented()&&(!k._default||k._default.apply(o.pop(),c)===!1)&&m.acceptData(d)&&g&&d[p]&&!m.isWindow(d)){l=d[g],l&&(d[g]=null),m.event.triggered=p;try{d[p]()}catch(r){}m.event.triggered=void 0,l&&(d[g]=l)}return b.result}},dispatch:function(a){a=m.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(m._data(this,"events")||{})[a.type]||[],k=m.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=m.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,g=0;while((e=f.handlers[g++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(e.namespace))&&(a.handleObj=e,a.data=e.data,c=((m.event.special[e.origType]||{}).handle||e.handler).apply(f.elem,i),void 0!==c&&(a.result=c)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(e=[],f=0;h>f;f++)d=b[f],c=d.selector+" ",void 0===e[c]&&(e[c]=d.needsContext?m(c,this).index(i)>=0:m.find(c,this,null,[i]).length),e[c]&&e.push(d);e.length&&g.push({elem:i,handlers:e})}return h]","i"),ha=/^\s+/,ia=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ja=/<([\w:]+)/,ka=/\s*$/g,ra={option:[1,""],legend:[1,"
    ","
    "],area:[1,"",""],param:[1,"",""],thead:[1,"","
    "],tr:[2,"","
    "],col:[2,"","
    "],td:[3,"","
    "],_default:k.htmlSerialize?[0,"",""]:[1,"X
    ","
    "]},sa=da(y),ta=sa.appendChild(y.createElement("div"));ra.optgroup=ra.option,ra.tbody=ra.tfoot=ra.colgroup=ra.caption=ra.thead,ra.th=ra.td;function ua(a,b){var c,d,e=0,f=typeof a.getElementsByTagName!==K?a.getElementsByTagName(b||"*"):typeof a.querySelectorAll!==K?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||m.nodeName(d,b)?f.push(d):m.merge(f,ua(d,b));return void 0===b||b&&m.nodeName(a,b)?m.merge([a],f):f}function va(a){W.test(a.type)&&(a.defaultChecked=a.checked)}function wa(a,b){return m.nodeName(a,"table")&&m.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function xa(a){return a.type=(null!==m.find.attr(a,"type"))+"/"+a.type,a}function ya(a){var b=pa.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function za(a,b){for(var c,d=0;null!=(c=a[d]);d++)m._data(c,"globalEval",!b||m._data(b[d],"globalEval"))}function Aa(a,b){if(1===b.nodeType&&m.hasData(a)){var c,d,e,f=m._data(a),g=m._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)m.event.add(b,c,h[c][d])}g.data&&(g.data=m.extend({},g.data))}}function Ba(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!k.noCloneEvent&&b[m.expando]){e=m._data(b);for(d in e.events)m.removeEvent(b,d,e.handle);b.removeAttribute(m.expando)}"script"===c&&b.text!==a.text?(xa(b).text=a.text,ya(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),k.html5Clone&&a.innerHTML&&!m.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&W.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}m.extend({clone:function(a,b,c){var d,e,f,g,h,i=m.contains(a.ownerDocument,a);if(k.html5Clone||m.isXMLDoc(a)||!ga.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(ta.innerHTML=a.outerHTML,ta.removeChild(f=ta.firstChild)),!(k.noCloneEvent&&k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||m.isXMLDoc(a)))for(d=ua(f),h=ua(a),g=0;null!=(e=h[g]);++g)d[g]&&Ba(e,d[g]);if(b)if(c)for(h=h||ua(a),d=d||ua(f),g=0;null!=(e=h[g]);g++)Aa(e,d[g]);else Aa(a,f);return d=ua(f,"script"),d.length>0&&za(d,!i&&ua(a,"script")),d=h=e=null,f},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,l,n=a.length,o=da(b),p=[],q=0;n>q;q++)if(f=a[q],f||0===f)if("object"===m.type(f))m.merge(p,f.nodeType?[f]:f);else if(la.test(f)){h=h||o.appendChild(b.createElement("div")),i=(ja.exec(f)||["",""])[1].toLowerCase(),l=ra[i]||ra._default,h.innerHTML=l[1]+f.replace(ia,"<$1>")+l[2],e=l[0];while(e--)h=h.lastChild;if(!k.leadingWhitespace&&ha.test(f)&&p.push(b.createTextNode(ha.exec(f)[0])),!k.tbody){f="table"!==i||ka.test(f)?""!==l[1]||ka.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ua(p,"input"),va),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ua(o.appendChild(f),"script"),g&&za(h),c)){e=0;while(f=h[e++])oa.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wa(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ua(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&za(ua(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ua(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fa,""):void 0;if(!("string"!=typeof a||ma.test(a)||!k.htmlSerialize&&ga.test(a)||!k.leadingWhitespace&&ha.test(a)||ra[(ja.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ia,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ua(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ua(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&na.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ua(i,"script"),xa),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ua(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,ya),j=0;f>j;j++)d=g[j],oa.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qa,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Ca,Da={};function Ea(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fa(a){var b=y,c=Da[a];return c||(c=Ea(a,b),"none"!==c&&c||(Ca=(Ca||m("':"vimeo"===f.type?c='':"vzaar"===f.type&&(c=''),a('
    '+c+"
    ").insertAfter(e.find(".owl-video")),this._playing=e.addClass("owl-video-playing"))},e.prototype.isInFullScreen=function(){var b=c.fullscreenElement||c.mozFullScreenElement||c.webkitFullscreenElement;return b&&a(b).parent().hasClass("owl-video-frame")},e.prototype.destroy=function(){var a,b;this._core.$element.off("click.owl.video");for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.Video=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this.core=b,this.core.options=a.extend({},e.Defaults,this.core.options),this.swapping=!0,this.previous=d,this.next=d,this.handlers={"change.owl.carousel":a.proxy(function(a){a.namespace&&"position"==a.property.name&&(this.previous=this.core.current(),this.next=a.property.value)},this),"drag.owl.carousel dragged.owl.carousel translated.owl.carousel":a.proxy(function(a){a.namespace&&(this.swapping="translated"==a.type)},this),"translate.owl.carousel":a.proxy(function(a){a.namespace&&this.swapping&&(this.core.options.animateOut||this.core.options.animateIn)&&this.swap()},this)},this.core.$element.on(this.handlers)};e.Defaults={animateOut:!1,animateIn:!1},e.prototype.swap=function(){if(1===this.core.settings.items&&a.support.animation&&a.support.transition){this.core.speed(0);var b,c=a.proxy(this.clear,this),d=this.core.$stage.children().eq(this.previous),e=this.core.$stage.children().eq(this.next),f=this.core.settings.animateIn,g=this.core.settings.animateOut;this.core.current()!==this.previous&&(g&&(b=this.core.coordinates(this.previous)-this.core.coordinates(this.next),d.one(a.support.animation.end,c).css({left:b+"px"}).addClass("animated owl-animated-out").addClass(g)),f&&e.one(a.support.animation.end,c).addClass("animated owl-animated-in").addClass(f))}},e.prototype.clear=function(b){a(b.target).css({left:""}).removeClass("animated owl-animated-out owl-animated-in").removeClass(this.core.settings.animateIn).removeClass(this.core.settings.animateOut),this.core.onTransitionEnd()},e.prototype.destroy=function(){var a,b;for(a in this.handlers)this.core.$element.off(a,this.handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.Animate=e}(window.Zepto||window.jQuery,window,document), +function(a,b,c,d){var e=function(b){this._core=b,this._timeout=null,this._paused=!1,this._handlers={"changed.owl.carousel":a.proxy(function(a){a.namespace&&"settings"===a.property.name?this._core.settings.autoplay?this.play():this.stop():a.namespace&&"position"===a.property.name&&this._core.settings.autoplay&&this._setAutoPlayInterval()},this),"initialized.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.autoplay&&this.play()},this),"play.owl.autoplay":a.proxy(function(a,b,c){a.namespace&&this.play(b,c)},this),"stop.owl.autoplay":a.proxy(function(a){a.namespace&&this.stop()},this),"mouseover.owl.autoplay":a.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.pause()},this),"mouseleave.owl.autoplay":a.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.play()},this),"touchstart.owl.core":a.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.pause()},this),"touchend.owl.core":a.proxy(function(){this._core.settings.autoplayHoverPause&&this.play()},this)},this._core.$element.on(this._handlers),this._core.options=a.extend({},e.Defaults,this._core.options)};e.Defaults={autoplay:!1,autoplayTimeout:5e3,autoplayHoverPause:!1,autoplaySpeed:!1},e.prototype.play=function(a,b){this._paused=!1,this._core.is("rotating")||(this._core.enter("rotating"),this._setAutoPlayInterval())},e.prototype._getNextTimeout=function(d,e){return this._timeout&&b.clearTimeout(this._timeout),b.setTimeout(a.proxy(function(){this._paused||this._core.is("busy")||this._core.is("interacting")||c.hidden||this._core.next(e||this._core.settings.autoplaySpeed)},this),d||this._core.settings.autoplayTimeout)},e.prototype._setAutoPlayInterval=function(){this._timeout=this._getNextTimeout()},e.prototype.stop=function(){this._core.is("rotating")&&(b.clearTimeout(this._timeout),this._core.leave("rotating"))},e.prototype.pause=function(){this._core.is("rotating")&&(this._paused=!0)},e.prototype.destroy=function(){var a,b;this.stop();for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.autoplay=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){"use strict";var e=function(b){this._core=b,this._initialized=!1,this._pages=[],this._controls={},this._templates=[],this.$element=this._core.$element,this._overrides={next:this._core.next,prev:this._core.prev,to:this._core.to},this._handlers={"prepared.owl.carousel":a.proxy(function(b){b.namespace&&this._core.settings.dotsData&&this._templates.push('
    '+a(b.content).find("[data-dot]").addBack("[data-dot]").attr("data-dot")+"
    ")},this),"added.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.dotsData&&this._templates.splice(a.position,0,this._templates.pop())},this),"remove.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.dotsData&&this._templates.splice(a.position,1)},this),"changed.owl.carousel":a.proxy(function(a){a.namespace&&"position"==a.property.name&&this.draw()},this),"initialized.owl.carousel":a.proxy(function(a){a.namespace&&!this._initialized&&(this._core.trigger("initialize",null,"navigation"),this.initialize(),this.update(),this.draw(),this._initialized=!0,this._core.trigger("initialized",null,"navigation"))},this),"refreshed.owl.carousel":a.proxy(function(a){a.namespace&&this._initialized&&(this._core.trigger("refresh",null,"navigation"),this.update(),this.draw(),this._core.trigger("refreshed",null,"navigation"))},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this.$element.on(this._handlers)};e.Defaults={nav:!1,navText:["prev","next"],navSpeed:!1,navElement:"div",navContainer:!1,navContainerClass:"owl-nav",navClass:["owl-prev","owl-next"],slideBy:1,dotClass:"owl-dot",dotsClass:"owl-dots",dots:!0,dotsEach:!1,dotsData:!1,dotsSpeed:!1,dotsContainer:!1},e.prototype.initialize=function(){var b,c=this._core.settings;this._controls.$relative=(c.navContainer?a(c.navContainer):a("
    ").addClass(c.navContainerClass).appendTo(this.$element)).addClass("disabled"),this._controls.$previous=a("<"+c.navElement+">").addClass(c.navClass[0]).html(c.navText[0]).prependTo(this._controls.$relative).on("click",a.proxy(function(a){this.prev(c.navSpeed)},this)),this._controls.$next=a("<"+c.navElement+">").addClass(c.navClass[1]).html(c.navText[1]).appendTo(this._controls.$relative).on("click",a.proxy(function(a){this.next(c.navSpeed)},this)),c.dotsData||(this._templates=[a("
    ").addClass(c.dotClass).append(a("")).prop("outerHTML")]),this._controls.$absolute=(c.dotsContainer?a(c.dotsContainer):a("
    ").addClass(c.dotsClass).appendTo(this.$element)).addClass("disabled"),this._controls.$absolute.on("click","div",a.proxy(function(b){var d=a(b.target).parent().is(this._controls.$absolute)?a(b.target).index():a(b.target).parent().index();b.preventDefault(),this.to(d,c.dotsSpeed)},this));for(b in this._overrides)this._core[b]=a.proxy(this[b],this)},e.prototype.destroy=function(){var a,b,c,d;for(a in this._handlers)this.$element.off(a,this._handlers[a]);for(b in this._controls)this._controls[b].remove();for(d in this.overides)this._core[d]=this._overrides[d];for(c in Object.getOwnPropertyNames(this))"function"!=typeof this[c]&&(this[c]=null)},e.prototype.update=function(){var a,b,c,d=this._core.clones().length/2,e=d+this._core.items().length,f=this._core.maximum(!0),g=this._core.settings,h=g.center||g.autoWidth||g.dotsData?1:g.dotsEach||g.items;if("page"!==g.slideBy&&(g.slideBy=Math.min(g.slideBy,g.items)),g.dots||"page"==g.slideBy)for(this._pages=[],a=d,b=0,c=0;e>a;a++){if(b>=h||0===b){if(this._pages.push({start:Math.min(f,a-d),end:a-d+h-1}),Math.min(f,a-d)===f)break;b=0,++c}b+=this._core.mergers(this._core.relative(a))}},e.prototype.draw=function(){var b,c=this._core.settings,d=this._core.items().length<=c.items,e=this._core.relative(this._core.current()),f=c.loop||c.rewind;this._controls.$relative.toggleClass("disabled",!c.nav||d),c.nav&&(this._controls.$previous.toggleClass("disabled",!f&&e<=this._core.minimum(!0)),this._controls.$next.toggleClass("disabled",!f&&e>=this._core.maximum(!0))),this._controls.$absolute.toggleClass("disabled",!c.dots||d),c.dots&&(b=this._pages.length-this._controls.$absolute.children().length,c.dotsData&&0!==b?this._controls.$absolute.html(this._templates.join("")):b>0?this._controls.$absolute.append(new Array(b+1).join(this._templates[0])):0>b&&this._controls.$absolute.children().slice(b).remove(),this._controls.$absolute.find(".active").removeClass("active"),this._controls.$absolute.children().eq(a.inArray(this.current(),this._pages)).addClass("active"))},e.prototype.onTrigger=function(b){var c=this._core.settings;b.page={index:a.inArray(this.current(),this._pages),count:this._pages.length,size:c&&(c.center||c.autoWidth||c.dotsData?1:c.dotsEach||c.items)}},e.prototype.current=function(){var b=this._core.relative(this._core.current());return a.grep(this._pages,a.proxy(function(a,c){return a.start<=b&&a.end>=b},this)).pop()},e.prototype.getPosition=function(b){var c,d,e=this._core.settings;return"page"==e.slideBy?(c=a.inArray(this.current(),this._pages),d=this._pages.length,b?++c:--c,c=this._pages[(c%d+d)%d].start):(c=this._core.relative(this._core.current()),d=this._core.items().length,b?c+=e.slideBy:c-=e.slideBy),c},e.prototype.next=function(b){a.proxy(this._overrides.to,this._core)(this.getPosition(!0),b)},e.prototype.prev=function(b){a.proxy(this._overrides.to,this._core)(this.getPosition(!1),b)},e.prototype.to=function(b,c,d){var e;!d&&this._pages.length?(e=this._pages.length,a.proxy(this._overrides.to,this._core)(this._pages[(b%e+e)%e].start,c)):a.proxy(this._overrides.to,this._core)(b,c)},a.fn.owlCarousel.Constructor.Plugins.Navigation=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){"use strict";var e=function(c){this._core=c,this._hashes={},this.$element=this._core.$element,this._handlers={"initialized.owl.carousel":a.proxy(function(c){c.namespace&&"URLHash"===this._core.settings.startPosition&&a(b).trigger("hashchange.owl.navigation")},this),"prepared.owl.carousel":a.proxy(function(b){if(b.namespace){var c=a(b.content).find("[data-hash]").addBack("[data-hash]").attr("data-hash");if(!c)return;this._hashes[c]=b.content}},this),"changed.owl.carousel":a.proxy(function(c){if(c.namespace&&"position"===c.property.name){var d=this._core.items(this._core.relative(this._core.current())),e=a.map(this._hashes,function(a,b){return a===d?b:null}).join();if(!e||b.location.hash.slice(1)===e)return;b.location.hash=e}},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this.$element.on(this._handlers),a(b).on("hashchange.owl.navigation",a.proxy(function(a){var c=b.location.hash.substring(1),e=this._core.$stage.children(),f=this._hashes[c]&&e.index(this._hashes[c]);f!==d&&f!==this._core.current()&&this._core.to(this._core.relative(f),!1,!0)},this))};e.Defaults={URLhashListener:!1},e.prototype.destroy=function(){var c,d;a(b).off("hashchange.owl.navigation");for(c in this._handlers)this._core.$element.off(c,this._handlers[c]);for(d in Object.getOwnPropertyNames(this))"function"!=typeof this[d]&&(this[d]=null)},a.fn.owlCarousel.Constructor.Plugins.Hash=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){function e(b,c){var e=!1,f=b.charAt(0).toUpperCase()+b.slice(1);return a.each((b+" "+h.join(f+" ")+f).split(" "),function(a,b){return g[b]!==d?(e=c?b:!0,!1):void 0}),e}function f(a){return e(a,!0)}var g=a("").get(0).style,h="Webkit Moz O ms".split(" "),i={transition:{end:{WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd",transition:"transitionend"}},animation:{end:{WebkitAnimation:"webkitAnimationEnd",MozAnimation:"animationend",OAnimation:"oAnimationEnd",animation:"animationend"}}},j={csstransforms:function(){return!!e("transform")},csstransforms3d:function(){return!!e("perspective")},csstransitions:function(){return!!e("transition")},cssanimations:function(){return!!e("animation")}};j.csstransitions()&&(a.support.transition=new String(f("transition")),a.support.transition.end=i.transition.end[a.support.transition]),j.cssanimations()&&(a.support.animation=new String(f("animation")),a.support.animation.end=i.animation.end[a.support.animation]),j.csstransforms()&&(a.support.transform=new String(f("transform")),a.support.transform3d=j.csstransforms3d())}(window.Zepto||window.jQuery,window,document); \ No newline at end of file diff --git a/www/assets/js/theme.js b/www/assets/js/theme.js new file mode 100644 index 0000000..0561fca --- /dev/null +++ b/www/assets/js/theme.js @@ -0,0 +1,195 @@ +/* +========================================================= +- Table of Contents +========================================================= +- On Window Load + - Preloader +- On Dom Element Load + - Bootstrap Essentail + - Wow Js Init + - Adjust Header Menu On Scroll Down + - Smooth Scrolling Effect + - Hero Parallax (Default Home) + - Typed Js + - Hero Mockup Slider + - Dark Hero Mockup Slider + - Hero Tab Slider + - Tab Slider + - Tab Pricing Table +========================================================= +*/ +// On Window Load +$(window).load(function() { + "use strict"; + // Preloader + $('.preloader-area').fadeOut(); + $('.preloader-area').delay(350).fadeOut('slow'); + $('body').delay(550); +}); + +// On Dom Load +(function($) { + "use strict"; + // Bootstrap Essentail + $(".embed-responsive iframe").addClass("embed-responsive-item"); + $(".carousel-inner .item:first-child").addClass("active"); + $('[data-toggle="tooltip"]').tooltip(); + + // Wow js init + var wow = new WOW({ + boxClass: 'wow', // animated element css class (default is wow) + animateClass: 'animated', // animation css class (default is animated) + offset: 0, // distance to the element when triggering the animation (default is 0) + mobile: true, // trigger animations on mobile devices (default is true) + live: true, // act on asynchronously loaded content (default is true) + callback: function(box) { + // the callback is fired every time an animation is started + // the argument that is passed in is the DOM node being animated + }, + scrollContainer: null // optional scroll container selector, otherwise use window + }); + wow.init(); + + // Adjust Header Menu On Scroll Down + $(window).scroll(function() { + var wScroll = $(this).scrollTop(); + var wh = $(window).height(); + if (wScroll > 200) { + $(".navbar-default").addClass('navbar-dark'); + // $(".scroll-vertical-menu ").css('position','fixed'); + $(".nav-scroll").addClass('navbar-fixed-top'); + } else { + $(".navbar-default").removeClass('navbar-dark'); + $(".nav-scroll").removeClass('navbar-fixed-top'); + } + + heroParallax(); + }); + + // Hide Menu on clike (For Mobile Devices) + $('.navbar-nav li a').on('click', function() { + $('.navbar-collapse').removeClass('collapse in').addClass('collapse'); + }); + + // Smooth Scrolling Effect + $('.smoothscroll').on('click', function(e) { + e.preventDefault(); + var target = this.hash; + var navHeight = $('.navbar-default').height(); + + $('html, body').stop().animate({ + 'scrollTop': $(target).offset().top - navHeight + }, 1200); + }); + + // Hero Parallax + function heroParallax() { + var scrollPosition = $(window).scrollTop(); + $('.ball').css('left', (-30 - (scrollPosition * .6)) + 'px'); + $('.plant').css('right', (70 - (scrollPosition * .6)) + 'px'); + $('.paper').css('bottom', (-65 - (scrollPosition * .6)) + 'px'); + $('.coffee').css('left', (-190 - (scrollPosition * .6)) + 'px'); + $('.mockup-slider').css('bottom', (200 - (scrollPosition * .6)) + 'px'); + } + + // Typed Js + $(".lead").typed({ + strings: ["", "Creative"], + typeSpeed: 100, + }); + $(".lead-text").typed({ + strings: ["", "New Applatction For App"], + typeSpeed: 100, + startDelay: 1200 + }); + + // Hero Mockup Slider + function mockup_carousel() { + var owl = $("#mockup-slide"); + owl.owlCarousel({ + loop: true, + margin: 10, + responsiveClass: true, + navigation: true, + items: 1, + animateOut: 'fadeOut', + addClassActive: true, + dots: false, + autoplay: true, + autoplayTimeout: 5000, + mouseDrag: true, + touchDrag: true, + pullDrag: true, + responsive: {} + }); + } + mockup_carousel(); + + // Dark Hero Mockup Slider + function dark_mockup_carousel() { + var owl = $("#dark-mockup-slide"); + owl.owlCarousel({ + loop: true, + margin: 10, + responsiveClass: true, + navigation: true, + items: 1, + animateIn: 'slideInDown', + animateOut: 'slideOutRight', + addClassActive: true, + dots: true, + autoplay: true, + autoplayTimeout: 5000, + mouseDrag: false, + touchDrag: false, + pullDrag: false, + responsive: {} + }); + } + dark_mockup_carousel(); + + // Hero Tab Slider + function tab_carousel() { + var owl = $("#tab-slide"); + owl.owlCarousel({ + loop: true, + margin: 10, + responsiveClass: true, + navigation: true, + items: 1, + animateIn: 'slideInDown', + animateOut: 'slideOutRight', + addClassActive: true, + dots: true, + autoplay: true, + autoplayTimeout: 5000, + mouseDrag: false, + touchDrag: true, + pullDrag: false, + responsive: {} + }); + } + tab_carousel(); + + + // Tab Slider + $('.single-feature-item').on('click', function() { + $('.single-feature-item').removeClass('active'); + $(this).addClass('active'); + var val = $(this).attr('data-value'); + $('.single-feature-slide img').removeClass('active wow animated fadeIn'); + $('.single-feature-slide').find('img#' + val).addClass('active wow animated fadeIn'); + }); + + // Tab Pricing Table + $('.pricing-pill li').on('click', function() { + $('.pricing-pill li').removeClass('active'); + $('.pricing-table li').removeClass('active'); + $(this).addClass('active'); + var pricing = $(this).attr('data-value'); + $('.pricing-table li#' + pricing).addClass('active'); + }); + + ; + +}(jQuery)); \ No newline at end of file diff --git a/www/assets/js/typed.min.js b/www/assets/js/typed.min.js new file mode 100644 index 0000000..24921d4 --- /dev/null +++ b/www/assets/js/typed.min.js @@ -0,0 +1 @@ +!function(t){"use strict";var s=function(s,e){this.el=t(s),this.options=t.extend({},t.fn.typed.defaults,e),this.isInput=this.el.is("input"),this.attr=this.options.attr,this.showCursor=this.isInput?!1:this.options.showCursor,this.elContent=this.attr?this.el.attr(this.attr):this.el.text(),this.contentType=this.options.contentType,this.typeSpeed=this.options.typeSpeed,this.startDelay=this.options.startDelay,this.backSpeed=this.options.backSpeed,this.backDelay=this.options.backDelay,this.stringsElement=this.options.stringsElement,this.strings=this.options.strings,this.strPos=0,this.arrayPos=0,this.stopNum=0,this.loop=this.options.loop,this.loopCount=this.options.loopCount,this.curLoop=0,this.stop=!1,this.cursorChar=this.options.cursorChar,this.shuffle=this.options.shuffle,this.sequence=[],this.build()};s.prototype={constructor:s,init:function(){var t=this;t.timeout=setTimeout(function(){for(var s=0;s'+this.cursorChar+""),this.el.after(this.cursor)),this.stringsElement){this.strings=[],this.stringsElement.hide(),console.log(this.stringsElement.children());var e=this.stringsElement.children();t.each(e,function(e,i){s.strings.push(t(i).html())})}this.init()},typewrite:function(t,s){if(this.stop!==!0){var e=Math.round(70*Math.random())+this.typeSpeed,i=this;i.timeout=setTimeout(function(){var e=0,r=t.substr(s);if("^"===r.charAt(0)){var o=1;/^\^\d+/.test(r)&&(r=/\d+/.exec(r)[0],o+=r.length,e=parseInt(r)),t=t.substring(0,s)+t.substring(s+o)}if("html"===i.contentType){var n=t.substr(s).charAt(0);if("<"===n||"&"===n){var a="",h="";for(h="<"===n?">":";";t.substr(s+1).charAt(0)!==h&&(a+=t.substr(s).charAt(0),s++,!(s+1>t.length)););s++,a+=h}}i.timeout=setTimeout(function(){if(s===t.length){if(i.options.onStringTyped(i.arrayPos),i.arrayPos===i.strings.length-1&&(i.options.callback(),i.curLoop++,i.loop===!1||i.curLoop===i.loopCount))return;i.timeout=setTimeout(function(){i.backspace(t,s)},i.backDelay)}else{0===s&&i.options.preStringTyped(i.arrayPos);var e=t.substr(0,s+1);i.attr?i.el.attr(i.attr,e):i.isInput?i.el.val(e):"html"===i.contentType?i.el.html(e):i.el.text(e),s++,i.typewrite(t,s)}},e)},e)}},backspace:function(t,s){if(this.stop!==!0){var e=Math.round(70*Math.random())+this.backSpeed,i=this;i.timeout=setTimeout(function(){if("html"===i.contentType&&">"===t.substr(s).charAt(0)){for(var e="";"<"!==t.substr(s-1).charAt(0)&&(e-=t.substr(s).charAt(0),s--,!(0>s)););s--,e+="<"}var r=t.substr(0,s);i.attr?i.el.attr(i.attr,r):i.isInput?i.el.val(r):"html"===i.contentType?i.el.html(r):i.el.text(r),s>i.stopNum?(s--,i.backspace(t,s)):s<=i.stopNum&&(i.arrayPos++,i.arrayPos===i.strings.length?(i.arrayPos=0,i.shuffle&&(i.sequence=i.shuffleArray(i.sequence)),i.init()):i.typewrite(i.strings[i.sequence[i.arrayPos]],s))},e)}},shuffleArray:function(t){var s,e,i=t.length;if(i)for(;--i;)e=Math.floor(Math.random()*(i+1)),s=t[e],t[e]=t[i],t[i]=s;return t},reset:function(){var t=this;clearInterval(t.timeout);this.el.attr("id");this.el.empty(),"undefined"!=typeof this.cursor&&this.cursor.remove(),this.strPos=0,this.arrayPos=0,this.curLoop=0,this.options.resetCallback()}},t.fn.typed=function(e){return this.each(function(){var i=t(this),r=i.data("typed"),o="object"==typeof e&&e;r&&r.reset(),i.data("typed",r=new s(this,o)),"string"==typeof e&&r[e]()})},t.fn.typed.defaults={strings:["These are the default values...","You know what you should do?","Use your own!","Have a great day!"],stringsElement:null,typeSpeed:0,startDelay:0,backSpeed:0,shuffle:!1,backDelay:500,loop:!1,loopCount:!1,showCursor:!0,cursorChar:"|",attr:null,contentType:"html",callback:function(){},preStringTyped:function(){},onStringTyped:function(){},resetCallback:function(){}}}(window.jQuery); \ No newline at end of file diff --git a/www/assets/js/wow.min.js b/www/assets/js/wow.min.js new file mode 100644 index 0000000..0a646f2 --- /dev/null +++ b/www/assets/js/wow.min.js @@ -0,0 +1,2 @@ +/*! WOW - v1.1.3 - 2016-05-06 +* Copyright (c) 2016 Matthieu Aussaguel;*/(function(){var a,b,c,d,e,f=function(a,b){return function(){return a.apply(b,arguments)}},g=[].indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(b in this&&this[b]===a)return b;return-1};b=function(){function a(){}return a.prototype.extend=function(a,b){var c,d;for(c in b)d=b[c],null==a[c]&&(a[c]=d);return a},a.prototype.isMobile=function(a){return/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(a)},a.prototype.createEvent=function(a,b,c,d){var e;return null==b&&(b=!1),null==c&&(c=!1),null==d&&(d=null),null!=document.createEvent?(e=document.createEvent("CustomEvent"),e.initCustomEvent(a,b,c,d)):null!=document.createEventObject?(e=document.createEventObject(),e.eventType=a):e.eventName=a,e},a.prototype.emitEvent=function(a,b){return null!=a.dispatchEvent?a.dispatchEvent(b):b in(null!=a)?a[b]():"on"+b in(null!=a)?a["on"+b]():void 0},a.prototype.addEvent=function(a,b,c){return null!=a.addEventListener?a.addEventListener(b,c,!1):null!=a.attachEvent?a.attachEvent("on"+b,c):a[b]=c},a.prototype.removeEvent=function(a,b,c){return null!=a.removeEventListener?a.removeEventListener(b,c,!1):null!=a.detachEvent?a.detachEvent("on"+b,c):delete a[b]},a.prototype.innerHeight=function(){return"innerHeight"in window?window.innerHeight:document.documentElement.clientHeight},a}(),c=this.WeakMap||this.MozWeakMap||(c=function(){function a(){this.keys=[],this.values=[]}return a.prototype.get=function(a){var b,c,d,e,f;for(f=this.keys,b=d=0,e=f.length;e>d;b=++d)if(c=f[b],c===a)return this.values[b]},a.prototype.set=function(a,b){var c,d,e,f,g;for(g=this.keys,c=e=0,f=g.length;f>e;c=++e)if(d=g[c],d===a)return void(this.values[c]=b);return this.keys.push(a),this.values.push(b)},a}()),a=this.MutationObserver||this.WebkitMutationObserver||this.MozMutationObserver||(a=function(){function a(){"undefined"!=typeof console&&null!==console&&console.warn("MutationObserver is not supported by your browser."),"undefined"!=typeof console&&null!==console&&console.warn("WOW.js cannot detect dom mutations, please call .sync() after loading new content.")}return a.notSupported=!0,a.prototype.observe=function(){},a}()),d=this.getComputedStyle||function(a,b){return this.getPropertyValue=function(b){var c;return"float"===b&&(b="styleFloat"),e.test(b)&&b.replace(e,function(a,b){return b.toUpperCase()}),(null!=(c=a.currentStyle)?c[b]:void 0)||null},this},e=/(\-([a-z]){1})/g,this.WOW=function(){function e(a){null==a&&(a={}),this.scrollCallback=f(this.scrollCallback,this),this.scrollHandler=f(this.scrollHandler,this),this.resetAnimation=f(this.resetAnimation,this),this.start=f(this.start,this),this.scrolled=!0,this.config=this.util().extend(a,this.defaults),null!=a.scrollContainer&&(this.config.scrollContainer=document.querySelector(a.scrollContainer)),this.animationNameCache=new c,this.wowEvent=this.util().createEvent(this.config.boxClass)}return e.prototype.defaults={boxClass:"wow",animateClass:"animated",offset:0,mobile:!0,live:!0,callback:null,scrollContainer:null},e.prototype.init=function(){var a;return this.element=window.document.documentElement,"interactive"===(a=document.readyState)||"complete"===a?this.start():this.util().addEvent(document,"DOMContentLoaded",this.start),this.finished=[]},e.prototype.start=function(){var b,c,d,e;if(this.stopped=!1,this.boxes=function(){var a,c,d,e;for(d=this.element.querySelectorAll("."+this.config.boxClass),e=[],a=0,c=d.length;c>a;a++)b=d[a],e.push(b);return e}.call(this),this.all=function(){var a,c,d,e;for(d=this.boxes,e=[],a=0,c=d.length;c>a;a++)b=d[a],e.push(b);return e}.call(this),this.boxes.length)if(this.disabled())this.resetStyle();else for(e=this.boxes,c=0,d=e.length;d>c;c++)b=e[c],this.applyStyle(b,!0);return this.disabled()||(this.util().addEvent(this.config.scrollContainer||window,"scroll",this.scrollHandler),this.util().addEvent(window,"resize",this.scrollHandler),this.interval=setInterval(this.scrollCallback,50)),this.config.live?new a(function(a){return function(b){var c,d,e,f,g;for(g=[],c=0,d=b.length;d>c;c++)f=b[c],g.push(function(){var a,b,c,d;for(c=f.addedNodes||[],d=[],a=0,b=c.length;b>a;a++)e=c[a],d.push(this.doSync(e));return d}.call(a));return g}}(this)).observe(document.body,{childList:!0,subtree:!0}):void 0},e.prototype.stop=function(){return this.stopped=!0,this.util().removeEvent(this.config.scrollContainer||window,"scroll",this.scrollHandler),this.util().removeEvent(window,"resize",this.scrollHandler),null!=this.interval?clearInterval(this.interval):void 0},e.prototype.sync=function(b){return a.notSupported?this.doSync(this.element):void 0},e.prototype.doSync=function(a){var b,c,d,e,f;if(null==a&&(a=this.element),1===a.nodeType){for(a=a.parentNode||a,e=a.querySelectorAll("."+this.config.boxClass),f=[],c=0,d=e.length;d>c;c++)b=e[c],g.call(this.all,b)<0?(this.boxes.push(b),this.all.push(b),this.stopped||this.disabled()?this.resetStyle():this.applyStyle(b,!0),f.push(this.scrolled=!0)):f.push(void 0);return f}},e.prototype.show=function(a){return this.applyStyle(a),a.className=a.className+" "+this.config.animateClass,null!=this.config.callback&&this.config.callback(a),this.util().emitEvent(a,this.wowEvent),this.util().addEvent(a,"animationend",this.resetAnimation),this.util().addEvent(a,"oanimationend",this.resetAnimation),this.util().addEvent(a,"webkitAnimationEnd",this.resetAnimation),this.util().addEvent(a,"MSAnimationEnd",this.resetAnimation),a},e.prototype.applyStyle=function(a,b){var c,d,e;return d=a.getAttribute("data-wow-duration"),c=a.getAttribute("data-wow-delay"),e=a.getAttribute("data-wow-iteration"),this.animate(function(f){return function(){return f.customStyle(a,b,d,c,e)}}(this))},e.prototype.animate=function(){return"requestAnimationFrame"in window?function(a){return window.requestAnimationFrame(a)}:function(a){return a()}}(),e.prototype.resetStyle=function(){var a,b,c,d,e;for(d=this.boxes,e=[],b=0,c=d.length;c>b;b++)a=d[b],e.push(a.style.visibility="visible");return e},e.prototype.resetAnimation=function(a){var b;return a.type.toLowerCase().indexOf("animationend")>=0?(b=a.target||a.srcElement,b.className=b.className.replace(this.config.animateClass,"").trim()):void 0},e.prototype.customStyle=function(a,b,c,d,e){return b&&this.cacheAnimationName(a),a.style.visibility=b?"hidden":"visible",c&&this.vendorSet(a.style,{animationDuration:c}),d&&this.vendorSet(a.style,{animationDelay:d}),e&&this.vendorSet(a.style,{animationIterationCount:e}),this.vendorSet(a.style,{animationName:b?"none":this.cachedAnimationName(a)}),a},e.prototype.vendors=["moz","webkit"],e.prototype.vendorSet=function(a,b){var c,d,e,f;d=[];for(c in b)e=b[c],a[""+c]=e,d.push(function(){var b,d,g,h;for(g=this.vendors,h=[],b=0,d=g.length;d>b;b++)f=g[b],h.push(a[""+f+c.charAt(0).toUpperCase()+c.substr(1)]=e);return h}.call(this));return d},e.prototype.vendorCSS=function(a,b){var c,e,f,g,h,i;for(h=d(a),g=h.getPropertyCSSValue(b),f=this.vendors,c=0,e=f.length;e>c;c++)i=f[c],g=g||h.getPropertyCSSValue("-"+i+"-"+b);return g},e.prototype.animationName=function(a){var b;try{b=this.vendorCSS(a,"animation-name").cssText}catch(c){b=d(a).getPropertyValue("animation-name")}return"none"===b?"":b},e.prototype.cacheAnimationName=function(a){return this.animationNameCache.set(a,this.animationName(a))},e.prototype.cachedAnimationName=function(a){return this.animationNameCache.get(a)},e.prototype.scrollHandler=function(){return this.scrolled=!0},e.prototype.scrollCallback=function(){var a;return!this.scrolled||(this.scrolled=!1,this.boxes=function(){var b,c,d,e;for(d=this.boxes,e=[],b=0,c=d.length;c>b;b++)a=d[b],a&&(this.isVisible(a)?this.show(a):e.push(a));return e}.call(this),this.boxes.length||this.config.live)?void 0:this.stop()},e.prototype.offsetTop=function(a){for(var b;void 0===a.offsetTop;)a=a.parentNode;for(b=a.offsetTop;a=a.offsetParent;)b+=a.offsetTop;return b},e.prototype.isVisible=function(a){var b,c,d,e,f;return c=a.getAttribute("data-wow-offset")||this.config.offset,f=this.config.scrollContainer&&this.config.scrollContainer.scrollTop||window.pageYOffset,e=f+Math.min(this.element.clientHeight,this.util().innerHeight())-c,d=this.offsetTop(a),b=d+a.clientHeight,e>=d&&b>=f},e.prototype.util=function(){return null!=this._util?this._util:this._util=new b},e.prototype.disabled=function(){return!this.config.mobile&&this.util().isMobile(navigator.userAgent)},e}()}).call(this); \ No newline at end of file diff --git a/www/composer.json b/www/composer.json new file mode 100644 index 0000000..30630e2 --- /dev/null +++ b/www/composer.json @@ -0,0 +1,23 @@ +{ + "description": "The CodeIgniter framework", + "name": "codeigniter/framework", + "type": "project", + "homepage": "https://codeigniter.com", + "license": "MIT", + "support": { + "forum": "http://forum.codeigniter.com/", + "wiki": "https://github.com/bcit-ci/CodeIgniter/wiki", + "slack": "https://codeigniterchat.slack.com", + "source": "https://github.com/bcit-ci/CodeIgniter" + }, + "require": { + "php": ">=5.3.7" + }, + "suggest": { + "paragonie/random_compat": "Provides better randomness in PHP 5.x" + }, + "require-dev": { + "mikey179/vfsStream": "1.1.*", + "phpunit/phpunit": "4.* || 5.*" + } +} diff --git a/www/contributing.md b/www/contributing.md new file mode 100644 index 0000000..8edb510 --- /dev/null +++ b/www/contributing.md @@ -0,0 +1,95 @@ +# Contributing to CodeIgniter + + +CodeIgniter is a community driven project and accepts contributions of code and documentation from the community. These contributions are made in the form of Issues or [Pull Requests](http://help.github.com/send-pull-requests/) on the [CodeIgniter repository](https://github.com/bcit-ci/CodeIgniter) on GitHub. + +Issues are a quick way to point out a bug. If you find a bug or documentation error in CodeIgniter then please check a few things first: + +1. There is not already an open Issue +2. The issue has already been fixed (check the develop branch, or look for closed Issues) +3. Is it something really obvious that you can fix yourself? + +Reporting issues is helpful but an even better approach is to send a Pull Request, which is done by "Forking" the main repository and committing to your own copy. This will require you to use the version control system called Git. + +## Guidelines + +Before we look into how, here are the guidelines. If your Pull Requests fail +to pass these guidelines it will be declined and you will need to re-submit +when you’ve made the changes. This might sound a bit tough, but it is required +for us to maintain quality of the code-base. + +### PHP Style + +All code must meet the [Style Guide](https://codeigniter.com/user_guide/general/styleguide.html), which is +essentially the [Allman indent style](https://en.wikipedia.org/wiki/Indent_style#Allman_style), underscores and readable operators. This makes certain that all code is the same format as the existing code and means it will be as readable as possible. + +### Documentation + +If you change anything that requires a change to documentation then you will need to add it. New classes, methods, parameters, changing default values, etc are all things that will require a change to documentation. The change-log must also be updated for every change. Also PHPDoc blocks must be maintained. + +### Compatibility + +CodeIgniter recommends PHP 5.4 or newer to be used, but it should be +compatible with PHP 5.2.4 so all code supplied must stick to this +requirement. If PHP 5.3 (and above) functions or features are used then +there must be a fallback for PHP 5.2.4. + +### Branching + +CodeIgniter uses the [Git-Flow](http://nvie.com/posts/a-successful-git-branching-model/) branching model which requires all pull requests to be sent to the "develop" branch. This is +where the next planned version will be developed. The "master" branch will always contain the latest stable version and is kept clean so a "hotfix" (e.g: an emergency security patch) can be applied to master to create a new version, without worrying about other features holding it up. For this reason all commits need to be made to "develop" and any sent to "master" will be closed automatically. If you have multiple changes to submit, please place all changes into their own branch on your fork. + +One thing at a time: A pull request should only contain one change. That does not mean only one commit, but one change - however many commits it took. The reason for this is that if you change X and Y but send a pull request for both at the same time, we might really want X but disagree with Y, meaning we cannot merge the request. Using the Git-Flow branching model you can create new branches for both of these features and send two requests. + +### Signing + +You must sign your work, certifying that you either wrote the work or otherwise have the right to pass it on to an open source project. git makes this trivial as you merely have to use `--signoff` on your commits to your CodeIgniter fork. + +`git commit --signoff` + +or simply + +`git commit -s` + +This will sign your commits with the information setup in your git config, e.g. + +`Signed-off-by: John Q Public ` + +If you are using [Tower](http://www.git-tower.com/) there is a "Sign-Off" checkbox in the commit window. You could even alias git commit to use the `-s` flag so you don’t have to think about it. + +By signing your work in this manner, you certify to a "Developer's Certificate of Origin". The current version of this certificate is in the `DCO.txt` file in the root of this repository. + + +## How-to Guide + +There are two ways to make changes, the easy way and the hard way. Either way you will need to [create a GitHub account](https://github.com/signup/free). + +Easy way GitHub allows in-line editing of files for making simple typo changes and quick-fixes. This is not the best way as you are unable to test the code works. If you do this you could be introducing syntax errors, etc, but for a Git-phobic user this is good for a quick-fix. + +Hard way The best way to contribute is to "clone" your fork of CodeIgniter to your development area. That sounds like some jargon, but "forking" on GitHub means "making a copy of that repo to your account" and "cloning" means "copying that code to your environment so you can work on it". + +1. Set up Git (Windows, Mac & Linux) +2. Go to the CodeIgniter repo +3. Fork it +4. Clone your CodeIgniter repo: git@github.com:/CodeIgniter.git +5. Checkout the "develop" branch At this point you are ready to start making changes. +6. Fix existing bugs on the Issue tracker after taking a look to see nobody else is working on them. +7. Commit the files +8. Push your develop branch to your fork +9. Send a pull request [http://help.github.com/send-pull-requests/](http://help.github.com/send-pull-requests/) + +The Reactor Engineers will now be alerted about the change and at least one of the team will respond. If your change fails to meet the guidelines it will be bounced, or feedback will be provided to help you improve it. + +Once the Reactor Engineer handling your pull request is happy with it they will merge it into develop and your patch will be part of the next release. + +### Keeping your fork up-to-date + +Unlike systems like Subversion, Git can have multiple remotes. A remote is the name for a URL of a Git repository. By default your fork will have a remote named "origin" which points to your fork, but you can add another remote named "codeigniter" which points to `git://github.com/bcit-ci/CodeIgniter.git`. This is a read-only remote but you can pull from this develop branch to update your own. + +If you are using command-line you can do the following: + +1. `git remote add codeigniter git://github.com/bcit-ci/CodeIgniter.git` +2. `git pull codeigniter develop` +3. `git push origin develop` + +Now your fork is up to date. This should be done regularly, or before you send a pull request at least. diff --git a/www/i.php b/www/i.php new file mode 100644 index 0000000..c09baab --- /dev/null +++ b/www/i.php @@ -0,0 +1 @@ +=')) + { + error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT & ~E_USER_NOTICE & ~E_USER_DEPRECATED); + } + else + { + error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT & ~E_USER_NOTICE); + } + break; + + default: + header('HTTP/1.1 503 Service Unavailable.', TRUE, 503); + echo 'The application environment is not set correctly.'; + exit(1); // EXIT_ERROR +} + +/* + *--------------------------------------------------------------- + * SYSTEM DIRECTORY NAME + *--------------------------------------------------------------- + * + * This variable must contain the name of your "system" directory. + * Set the path if it is not in the same directory as this file. + */ + $system_path = 'system'; + +/* + *--------------------------------------------------------------- + * APPLICATION DIRECTORY NAME + *--------------------------------------------------------------- + * + * If you want this front controller to use a different "application" + * directory than the default one you can set its name here. The directory + * can also be renamed or relocated anywhere on your server. If you do, + * use an absolute (full) server path. + * For more info please see the user guide: + * + * https://codeigniter.com/user_guide/general/managing_apps.html + * + * NO TRAILING SLASH! + */ + $application_folder = 'application'; + +/* + *--------------------------------------------------------------- + * VIEW DIRECTORY NAME + *--------------------------------------------------------------- + * + * If you want to move the view directory out of the application + * directory, set the path to it here. The directory can be renamed + * and relocated anywhere on your server. If blank, it will default + * to the standard location inside your application directory. + * If you do move this, use an absolute (full) server path. + * + * NO TRAILING SLASH! + */ + $view_folder = ''; + + +/* + * -------------------------------------------------------------------- + * DEFAULT CONTROLLER + * -------------------------------------------------------------------- + * + * Normally you will set your default controller in the routes.php file. + * You can, however, force a custom routing by hard-coding a + * specific controller class/function here. For most applications, you + * WILL NOT set your routing here, but it's an option for those + * special instances where you might want to override the standard + * routing in a specific front controller that shares a common CI installation. + * + * IMPORTANT: If you set the routing here, NO OTHER controller will be + * callable. In essence, this preference limits your application to ONE + * specific controller. Leave the function name blank if you need + * to call functions dynamically via the URI. + * + * Un-comment the $routing array below to use this feature + */ + // The directory name, relative to the "controllers" directory. Leave blank + // if your controller is not in a sub-directory within the "controllers" one + // $routing['directory'] = ''; + + // The controller class file name. Example: mycontroller + // $routing['controller'] = ''; + + // The controller function you wish to be called. + // $routing['function'] = ''; + + +/* + * ------------------------------------------------------------------- + * CUSTOM CONFIG VALUES + * ------------------------------------------------------------------- + * + * The $assign_to_config array below will be passed dynamically to the + * config class when initialized. This allows you to set custom config + * items or override any default config values found in the config.php file. + * This can be handy as it permits you to share one application between + * multiple front controller files, with each file containing different + * config values. + * + * Un-comment the $assign_to_config array below to use this feature + */ + // $assign_to_config['name_of_config_item'] = 'value of config item'; + + + +// -------------------------------------------------------------------- +// END OF USER CONFIGURABLE SETTINGS. DO NOT EDIT BELOW THIS LINE +// -------------------------------------------------------------------- + +/* + * --------------------------------------------------------------- + * Resolve the system path for increased reliability + * --------------------------------------------------------------- + */ + + // Set the current directory correctly for CLI requests + if (defined('STDIN')) + { + chdir(dirname(__FILE__)); + } + + if (($_temp = realpath($system_path)) !== FALSE) + { + $system_path = $_temp.DIRECTORY_SEPARATOR; + } + else + { + // Ensure there's a trailing slash + $system_path = strtr( + rtrim($system_path, '/\\'), + '/\\', + DIRECTORY_SEPARATOR.DIRECTORY_SEPARATOR + ).DIRECTORY_SEPARATOR; + } + + // Is the system path correct? + if ( ! is_dir($system_path)) + { + header('HTTP/1.1 503 Service Unavailable.', TRUE, 503); + echo 'Your system folder path does not appear to be set correctly. Please open the following file and correct this: '.pathinfo(__FILE__, PATHINFO_BASENAME); + exit(3); // EXIT_CONFIG + } + +/* + * ------------------------------------------------------------------- + * Now that we know the path, set the main path constants + * ------------------------------------------------------------------- + */ + // The name of THIS file + define('SELF', pathinfo(__FILE__, PATHINFO_BASENAME)); + + // Path to the system directory + define('BASEPATH', $system_path); + + // Path to the front controller (this file) directory + define('FCPATH', dirname(__FILE__).DIRECTORY_SEPARATOR); + + // Name of the "system" directory + define('SYSDIR', basename(BASEPATH)); + + // The path to the "application" directory + if (is_dir($application_folder)) + { + if (($_temp = realpath($application_folder)) !== FALSE) + { + $application_folder = $_temp; + } + else + { + $application_folder = strtr( + rtrim($application_folder, '/\\'), + '/\\', + DIRECTORY_SEPARATOR.DIRECTORY_SEPARATOR + ); + } + } + elseif (is_dir(BASEPATH.$application_folder.DIRECTORY_SEPARATOR)) + { + $application_folder = BASEPATH.strtr( + trim($application_folder, '/\\'), + '/\\', + DIRECTORY_SEPARATOR.DIRECTORY_SEPARATOR + ); + } + else + { + header('HTTP/1.1 503 Service Unavailable.', TRUE, 503); + echo 'Your application folder path does not appear to be set correctly. Please open the following file and correct this: '.SELF; + exit(3); // EXIT_CONFIG + } + + define('APPPATH', $application_folder.DIRECTORY_SEPARATOR); + + // The path to the "views" directory + if ( ! isset($view_folder[0]) && is_dir(APPPATH.'views'.DIRECTORY_SEPARATOR)) + { + $view_folder = APPPATH.'views'; + } + elseif (is_dir($view_folder)) + { + if (($_temp = realpath($view_folder)) !== FALSE) + { + $view_folder = $_temp; + } + else + { + $view_folder = strtr( + rtrim($view_folder, '/\\'), + '/\\', + DIRECTORY_SEPARATOR.DIRECTORY_SEPARATOR + ); + } + } + elseif (is_dir(APPPATH.$view_folder.DIRECTORY_SEPARATOR)) + { + $view_folder = APPPATH.strtr( + trim($view_folder, '/\\'), + '/\\', + DIRECTORY_SEPARATOR.DIRECTORY_SEPARATOR + ); + } + else + { + header('HTTP/1.1 503 Service Unavailable.', TRUE, 503); + echo 'Your view folder path does not appear to be set correctly. Please open the following file and correct this: '.SELF; + exit(3); // EXIT_CONFIG + } + + define('VIEWPATH', $view_folder.DIRECTORY_SEPARATOR); + +/* + * -------------------------------------------------------------------- + * LOAD THE BOOTSTRAP FILE + * -------------------------------------------------------------------- + * + * And away we go... + */ +require_once BASEPATH.'core/CodeIgniter.php'; diff --git a/www/license.txt b/www/license.txt new file mode 100644 index 0000000..dcac585 --- /dev/null +++ b/www/license.txt @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 - 2018, British Columbia Institute of Technology + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. \ No newline at end of file diff --git a/www/readme.rst b/www/readme.rst new file mode 100644 index 0000000..b652008 --- /dev/null +++ b/www/readme.rst @@ -0,0 +1,70 @@ +################### +What is CodeIgniter +################### + +CodeIgniter is an Application Development Framework - a toolkit - for people +who build web sites using PHP. Its goal is to enable you to develop projects +much faster than you could if you were writing code from scratch, by providing +a rich set of libraries for commonly needed tasks, as well as a simple +interface and logical structure to access these libraries. CodeIgniter lets +you creatively focus on your project by minimizing the amount of code needed +for a given task. + +******************* +Release Information +******************* + +This repo contains in-development code for future releases. To download the +latest stable release please visit the `CodeIgniter Downloads +`_ page. + +************************** +Changelog and New Features +************************** + +You can find a list of all changes for each release in the `user +guide change log `_. + +******************* +Server Requirements +******************* + +PHP version 5.6 or newer is recommended. + +It should work on 5.3.7 as well, but we strongly advise you NOT to run +such old versions of PHP, because of potential security and performance +issues, as well as missing features. + +************ +Installation +************ + +Please see the `installation section `_ +of the CodeIgniter User Guide. + +******* +License +******* + +Please see the `license +agreement `_. + +********* +Resources +********* + +- `User Guide `_ +- `Language File Translations `_ +- `Community Forums `_ +- `Community Wiki `_ +- `Community Slack Channel `_ + +Report security issues to our `Security Panel `_ +or via our `page on HackerOne `_, thank you. + +*************** +Acknowledgement +*************** + +The CodeIgniter team would like to thank EllisLab, all the +contributors to the CodeIgniter project and you, the CodeIgniter user. diff --git a/www/system/.htaccess b/www/system/.htaccess new file mode 100644 index 0000000..97c65d2 --- /dev/null +++ b/www/system/.htaccess @@ -0,0 +1,6 @@ + + Require all denied + + + Deny from all + \ No newline at end of file diff --git a/www/system/core/Benchmark.php b/www/system/core/Benchmark.php new file mode 100644 index 0000000..d6e1336 --- /dev/null +++ b/www/system/core/Benchmark.php @@ -0,0 +1,133 @@ +marker[$name] = microtime(TRUE); + } + + // -------------------------------------------------------------------- + + /** + * Elapsed time + * + * Calculates the time difference between two marked points. + * + * If the first parameter is empty this function instead returns the + * {elapsed_time} pseudo-variable. This permits the full system + * execution time to be shown in a template. The output class will + * swap the real value for this variable. + * + * @param string $point1 A particular marked point + * @param string $point2 A particular marked point + * @param int $decimals Number of decimal places + * + * @return string Calculated elapsed time on success, + * an '{elapsed_string}' if $point1 is empty + * or an empty string if $point1 is not found. + */ + public function elapsed_time($point1 = '', $point2 = '', $decimals = 4) + { + if ($point1 === '') + { + return '{elapsed_time}'; + } + + if ( ! isset($this->marker[$point1])) + { + return ''; + } + + if ( ! isset($this->marker[$point2])) + { + $this->marker[$point2] = microtime(TRUE); + } + + return number_format($this->marker[$point2] - $this->marker[$point1], $decimals); + } + + // -------------------------------------------------------------------- + + /** + * Memory Usage + * + * Simply returns the {memory_usage} marker. + * + * This permits it to be put it anywhere in a template + * without the memory being calculated until the end. + * The output class will swap the real value for this variable. + * + * @return string '{memory_usage}' + */ + public function memory_usage() + { + return '{memory_usage}'; + } + +} diff --git a/www/system/core/CodeIgniter.php b/www/system/core/CodeIgniter.php new file mode 100644 index 0000000..962196b --- /dev/null +++ b/www/system/core/CodeIgniter.php @@ -0,0 +1,559 @@ + '_ENV', 'G' => '_GET', 'P' => '_POST', 'C' => '_COOKIE', 'S' => '_SERVER') as $key => $superglobal) + { + if (strpos($_registered, $key) === FALSE) + { + continue; + } + + foreach (array_keys($$superglobal) as $var) + { + if (isset($GLOBALS[$var]) && ! in_array($var, $_protected, TRUE)) + { + $GLOBALS[$var] = NULL; + } + } + } + } +} + + +/* + * ------------------------------------------------------ + * Define a custom error handler so we can log PHP errors + * ------------------------------------------------------ + */ + set_error_handler('_error_handler'); + set_exception_handler('_exception_handler'); + register_shutdown_function('_shutdown_handler'); + +/* + * ------------------------------------------------------ + * Set the subclass_prefix + * ------------------------------------------------------ + * + * Normally the "subclass_prefix" is set in the config file. + * The subclass prefix allows CI to know if a core class is + * being extended via a library in the local application + * "libraries" folder. Since CI allows config items to be + * overridden via data set in the main index.php file, + * before proceeding we need to know if a subclass_prefix + * override exists. If so, we will set this value now, + * before any classes are loaded + * Note: Since the config file data is cached it doesn't + * hurt to load it here. + */ + if ( ! empty($assign_to_config['subclass_prefix'])) + { + get_config(array('subclass_prefix' => $assign_to_config['subclass_prefix'])); + } + +/* + * ------------------------------------------------------ + * Should we use a Composer autoloader? + * ------------------------------------------------------ + */ + if ($composer_autoload = config_item('composer_autoload')) + { + if ($composer_autoload === TRUE) + { + file_exists(APPPATH.'vendor/autoload.php') + ? require_once(APPPATH.'vendor/autoload.php') + : log_message('error', '$config[\'composer_autoload\'] is set to TRUE but '.APPPATH.'vendor/autoload.php was not found.'); + } + elseif (file_exists($composer_autoload)) + { + require_once($composer_autoload); + } + else + { + log_message('error', 'Could not find the specified $config[\'composer_autoload\'] path: '.$composer_autoload); + } + } + +/* + * ------------------------------------------------------ + * Start the timer... tick tock tick tock... + * ------------------------------------------------------ + */ + $BM =& load_class('Benchmark', 'core'); + $BM->mark('total_execution_time_start'); + $BM->mark('loading_time:_base_classes_start'); + +/* + * ------------------------------------------------------ + * Instantiate the hooks class + * ------------------------------------------------------ + */ + $EXT =& load_class('Hooks', 'core'); + +/* + * ------------------------------------------------------ + * Is there a "pre_system" hook? + * ------------------------------------------------------ + */ + $EXT->call_hook('pre_system'); + +/* + * ------------------------------------------------------ + * Instantiate the config class + * ------------------------------------------------------ + * + * Note: It is important that Config is loaded first as + * most other classes depend on it either directly or by + * depending on another class that uses it. + * + */ + $CFG =& load_class('Config', 'core'); + + // Do we have any manually set config items in the index.php file? + if (isset($assign_to_config) && is_array($assign_to_config)) + { + foreach ($assign_to_config as $key => $value) + { + $CFG->set_item($key, $value); + } + } + +/* + * ------------------------------------------------------ + * Important charset-related stuff + * ------------------------------------------------------ + * + * Configure mbstring and/or iconv if they are enabled + * and set MB_ENABLED and ICONV_ENABLED constants, so + * that we don't repeatedly do extension_loaded() or + * function_exists() calls. + * + * Note: UTF-8 class depends on this. It used to be done + * in it's constructor, but it's _not_ class-specific. + * + */ + $charset = strtoupper(config_item('charset')); + ini_set('default_charset', $charset); + + if (extension_loaded('mbstring')) + { + define('MB_ENABLED', TRUE); + // mbstring.internal_encoding is deprecated starting with PHP 5.6 + // and it's usage triggers E_DEPRECATED messages. + @ini_set('mbstring.internal_encoding', $charset); + // This is required for mb_convert_encoding() to strip invalid characters. + // That's utilized by CI_Utf8, but it's also done for consistency with iconv. + mb_substitute_character('none'); + } + else + { + define('MB_ENABLED', FALSE); + } + + // There's an ICONV_IMPL constant, but the PHP manual says that using + // iconv's predefined constants is "strongly discouraged". + if (extension_loaded('iconv')) + { + define('ICONV_ENABLED', TRUE); + // iconv.internal_encoding is deprecated starting with PHP 5.6 + // and it's usage triggers E_DEPRECATED messages. + @ini_set('iconv.internal_encoding', $charset); + } + else + { + define('ICONV_ENABLED', FALSE); + } + + if (is_php('5.6')) + { + ini_set('php.internal_encoding', $charset); + } + +/* + * ------------------------------------------------------ + * Load compatibility features + * ------------------------------------------------------ + */ + + require_once(BASEPATH.'core/compat/mbstring.php'); + require_once(BASEPATH.'core/compat/hash.php'); + require_once(BASEPATH.'core/compat/password.php'); + require_once(BASEPATH.'core/compat/standard.php'); + +/* + * ------------------------------------------------------ + * Instantiate the UTF-8 class + * ------------------------------------------------------ + */ + $UNI =& load_class('Utf8', 'core'); + +/* + * ------------------------------------------------------ + * Instantiate the URI class + * ------------------------------------------------------ + */ + $URI =& load_class('URI', 'core'); + +/* + * ------------------------------------------------------ + * Instantiate the routing class and set the routing + * ------------------------------------------------------ + */ + $RTR =& load_class('Router', 'core', isset($routing) ? $routing : NULL); + +/* + * ------------------------------------------------------ + * Instantiate the output class + * ------------------------------------------------------ + */ + $OUT =& load_class('Output', 'core'); + +/* + * ------------------------------------------------------ + * Is there a valid cache file? If so, we're done... + * ------------------------------------------------------ + */ + if ($EXT->call_hook('cache_override') === FALSE && $OUT->_display_cache($CFG, $URI) === TRUE) + { + exit; + } + +/* + * ----------------------------------------------------- + * Load the security class for xss and csrf support + * ----------------------------------------------------- + */ + $SEC =& load_class('Security', 'core'); + +/* + * ------------------------------------------------------ + * Load the Input class and sanitize globals + * ------------------------------------------------------ + */ + $IN =& load_class('Input', 'core'); + +/* + * ------------------------------------------------------ + * Load the Language class + * ------------------------------------------------------ + */ + $LANG =& load_class('Lang', 'core'); + +/* + * ------------------------------------------------------ + * Load the app controller and local controller + * ------------------------------------------------------ + * + */ + // Load the base controller class + require_once BASEPATH.'core/Controller.php'; + + /** + * Reference to the CI_Controller method. + * + * Returns current CI instance object + * + * @return CI_Controller + */ + function &get_instance() + { + return CI_Controller::get_instance(); + } + + if (file_exists(APPPATH.'core/'.$CFG->config['subclass_prefix'].'Controller.php')) + { + require_once APPPATH.'core/'.$CFG->config['subclass_prefix'].'Controller.php'; + } + + // Set a mark point for benchmarking + $BM->mark('loading_time:_base_classes_end'); + +/* + * ------------------------------------------------------ + * Sanity checks + * ------------------------------------------------------ + * + * The Router class has already validated the request, + * leaving us with 3 options here: + * + * 1) an empty class name, if we reached the default + * controller, but it didn't exist; + * 2) a query string which doesn't go through a + * file_exists() check + * 3) a regular request for a non-existing page + * + * We handle all of these as a 404 error. + * + * Furthermore, none of the methods in the app controller + * or the loader class can be called via the URI, nor can + * controller methods that begin with an underscore. + */ + + $e404 = FALSE; + $class = ucfirst($RTR->class); + $method = $RTR->method; + + if (empty($class) OR ! file_exists(APPPATH.'controllers/'.$RTR->directory.$class.'.php')) + { + $e404 = TRUE; + } + else + { + require_once(APPPATH.'controllers/'.$RTR->directory.$class.'.php'); + + if ( ! class_exists($class, FALSE) OR $method[0] === '_' OR method_exists('CI_Controller', $method)) + { + $e404 = TRUE; + } + elseif (method_exists($class, '_remap')) + { + $params = array($method, array_slice($URI->rsegments, 2)); + $method = '_remap'; + } + elseif ( ! method_exists($class, $method)) + { + $e404 = TRUE; + } + /** + * DO NOT CHANGE THIS, NOTHING ELSE WORKS! + * + * - method_exists() returns true for non-public methods, which passes the previous elseif + * - is_callable() returns false for PHP 4-style constructors, even if there's a __construct() + * - method_exists($class, '__construct') won't work because CI_Controller::__construct() is inherited + * - People will only complain if this doesn't work, even though it is documented that it shouldn't. + * + * ReflectionMethod::isConstructor() is the ONLY reliable check, + * knowing which method will be executed as a constructor. + */ + elseif ( ! is_callable(array($class, $method))) + { + $reflection = new ReflectionMethod($class, $method); + if ( ! $reflection->isPublic() OR $reflection->isConstructor()) + { + $e404 = TRUE; + } + } + } + + if ($e404) + { + if ( ! empty($RTR->routes['404_override'])) + { + if (sscanf($RTR->routes['404_override'], '%[^/]/%s', $error_class, $error_method) !== 2) + { + $error_method = 'index'; + } + + $error_class = ucfirst($error_class); + + if ( ! class_exists($error_class, FALSE)) + { + if (file_exists(APPPATH.'controllers/'.$RTR->directory.$error_class.'.php')) + { + require_once(APPPATH.'controllers/'.$RTR->directory.$error_class.'.php'); + $e404 = ! class_exists($error_class, FALSE); + } + // Were we in a directory? If so, check for a global override + elseif ( ! empty($RTR->directory) && file_exists(APPPATH.'controllers/'.$error_class.'.php')) + { + require_once(APPPATH.'controllers/'.$error_class.'.php'); + if (($e404 = ! class_exists($error_class, FALSE)) === FALSE) + { + $RTR->directory = ''; + } + } + } + else + { + $e404 = FALSE; + } + } + + // Did we reset the $e404 flag? If so, set the rsegments, starting from index 1 + if ( ! $e404) + { + $class = $error_class; + $method = $error_method; + + $URI->rsegments = array( + 1 => $class, + 2 => $method + ); + } + else + { + show_404($RTR->directory.$class.'/'.$method); + } + } + + if ($method !== '_remap') + { + $params = array_slice($URI->rsegments, 2); + } + +/* + * ------------------------------------------------------ + * Is there a "pre_controller" hook? + * ------------------------------------------------------ + */ + $EXT->call_hook('pre_controller'); + +/* + * ------------------------------------------------------ + * Instantiate the requested controller + * ------------------------------------------------------ + */ + // Mark a start point so we can benchmark the controller + $BM->mark('controller_execution_time_( '.$class.' / '.$method.' )_start'); + + $CI = new $class(); + +/* + * ------------------------------------------------------ + * Is there a "post_controller_constructor" hook? + * ------------------------------------------------------ + */ + $EXT->call_hook('post_controller_constructor'); + +/* + * ------------------------------------------------------ + * Call the requested method + * ------------------------------------------------------ + */ + call_user_func_array(array(&$CI, $method), $params); + + // Mark a benchmark end point + $BM->mark('controller_execution_time_( '.$class.' / '.$method.' )_end'); + +/* + * ------------------------------------------------------ + * Is there a "post_controller" hook? + * ------------------------------------------------------ + */ + $EXT->call_hook('post_controller'); + +/* + * ------------------------------------------------------ + * Send the final rendered output to the browser + * ------------------------------------------------------ + */ + if ($EXT->call_hook('display_override') === FALSE) + { + $OUT->_display(); + } + +/* + * ------------------------------------------------------ + * Is there a "post_system" hook? + * ------------------------------------------------------ + */ + $EXT->call_hook('post_system'); diff --git a/www/system/core/Common.php b/www/system/core/Common.php new file mode 100644 index 0000000..6d60f23 --- /dev/null +++ b/www/system/core/Common.php @@ -0,0 +1,849 @@ +='); + } + + return $_is_php[$version]; + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('is_really_writable')) +{ + /** + * Tests for file writability + * + * is_writable() returns TRUE on Windows servers when you really can't write to + * the file, based on the read-only attribute. is_writable() is also unreliable + * on Unix servers if safe_mode is on. + * + * @link https://bugs.php.net/bug.php?id=54709 + * @param string + * @return bool + */ + function is_really_writable($file) + { + // If we're on a Unix server with safe_mode off we call is_writable + if (DIRECTORY_SEPARATOR === '/' && (is_php('5.4') OR ! ini_get('safe_mode'))) + { + return is_writable($file); + } + + /* For Windows servers and safe_mode "on" installations we'll actually + * write a file then read it. Bah... + */ + if (is_dir($file)) + { + $file = rtrim($file, '/').'/'.md5(mt_rand()); + if (($fp = @fopen($file, 'ab')) === FALSE) + { + return FALSE; + } + + fclose($fp); + @chmod($file, 0777); + @unlink($file); + return TRUE; + } + elseif ( ! is_file($file) OR ($fp = @fopen($file, 'ab')) === FALSE) + { + return FALSE; + } + + fclose($fp); + return TRUE; + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('load_class')) +{ + /** + * Class registry + * + * This function acts as a singleton. If the requested class does not + * exist it is instantiated and set to a static variable. If it has + * previously been instantiated the variable is returned. + * + * @param string the class name being requested + * @param string the directory where the class should be found + * @param mixed an optional argument to pass to the class constructor + * @return object + */ + function &load_class($class, $directory = 'libraries', $param = NULL) + { + static $_classes = array(); + + // Does the class exist? If so, we're done... + if (isset($_classes[$class])) + { + return $_classes[$class]; + } + + $name = FALSE; + + // Look for the class first in the local application/libraries folder + // then in the native system/libraries folder + foreach (array(APPPATH, BASEPATH) as $path) + { + if (file_exists($path.$directory.'/'.$class.'.php')) + { + $name = 'CI_'.$class; + + if (class_exists($name, FALSE) === FALSE) + { + require_once($path.$directory.'/'.$class.'.php'); + } + + break; + } + } + + // Is the request a class extension? If so we load it too + if (file_exists(APPPATH.$directory.'/'.config_item('subclass_prefix').$class.'.php')) + { + $name = config_item('subclass_prefix').$class; + + if (class_exists($name, FALSE) === FALSE) + { + require_once(APPPATH.$directory.'/'.$name.'.php'); + } + } + + // Did we find the class? + if ($name === FALSE) + { + // Note: We use exit() rather than show_error() in order to avoid a + // self-referencing loop with the Exceptions class + set_status_header(503); + echo 'Unable to locate the specified class: '.$class.'.php'; + exit(5); // EXIT_UNK_CLASS + } + + // Keep track of what we just loaded + is_loaded($class); + + $_classes[$class] = isset($param) + ? new $name($param) + : new $name(); + return $_classes[$class]; + } +} + +// -------------------------------------------------------------------- + +if ( ! function_exists('is_loaded')) +{ + /** + * Keeps track of which libraries have been loaded. This function is + * called by the load_class() function above + * + * @param string + * @return array + */ + function &is_loaded($class = '') + { + static $_is_loaded = array(); + + if ($class !== '') + { + $_is_loaded[strtolower($class)] = $class; + } + + return $_is_loaded; + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('get_config')) +{ + /** + * Loads the main config.php file + * + * This function lets us grab the config file even if the Config class + * hasn't been instantiated yet + * + * @param array + * @return array + */ + function &get_config(Array $replace = array()) + { + static $config; + + if (empty($config)) + { + $file_path = APPPATH.'config/config.php'; + $found = FALSE; + if (file_exists($file_path)) + { + $found = TRUE; + require($file_path); + } + + // Is the config file in the environment folder? + if (file_exists($file_path = APPPATH.'config/'.ENVIRONMENT.'/config.php')) + { + require($file_path); + } + elseif ( ! $found) + { + set_status_header(503); + echo 'The configuration file does not exist.'; + exit(3); // EXIT_CONFIG + } + + // Does the $config array exist in the file? + if ( ! isset($config) OR ! is_array($config)) + { + set_status_header(503); + echo 'Your config file does not appear to be formatted correctly.'; + exit(3); // EXIT_CONFIG + } + } + + // Are any values being dynamically added or replaced? + foreach ($replace as $key => $val) + { + $config[$key] = $val; + } + + return $config; + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('config_item')) +{ + /** + * Returns the specified config item + * + * @param string + * @return mixed + */ + function config_item($item) + { + static $_config; + + if (empty($_config)) + { + // references cannot be directly assigned to static variables, so we use an array + $_config[0] =& get_config(); + } + + return isset($_config[0][$item]) ? $_config[0][$item] : NULL; + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('get_mimes')) +{ + /** + * Returns the MIME types array from config/mimes.php + * + * @return array + */ + function &get_mimes() + { + static $_mimes; + + if (empty($_mimes)) + { + $_mimes = file_exists(APPPATH.'config/mimes.php') + ? include(APPPATH.'config/mimes.php') + : array(); + + if (file_exists(APPPATH.'config/'.ENVIRONMENT.'/mimes.php')) + { + $_mimes = array_merge($_mimes, include(APPPATH.'config/'.ENVIRONMENT.'/mimes.php')); + } + } + + return $_mimes; + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('is_https')) +{ + /** + * Is HTTPS? + * + * Determines if the application is accessed via an encrypted + * (HTTPS) connection. + * + * @return bool + */ + function is_https() + { + if ( ! empty($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) !== 'off') + { + return TRUE; + } + elseif (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && strtolower($_SERVER['HTTP_X_FORWARDED_PROTO']) === 'https') + { + return TRUE; + } + elseif ( ! empty($_SERVER['HTTP_FRONT_END_HTTPS']) && strtolower($_SERVER['HTTP_FRONT_END_HTTPS']) !== 'off') + { + return TRUE; + } + + return FALSE; + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('is_cli')) +{ + + /** + * Is CLI? + * + * Test to see if a request was made from the command line. + * + * @return bool + */ + function is_cli() + { + return (PHP_SAPI === 'cli' OR defined('STDIN')); + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('show_error')) +{ + /** + * Error Handler + * + * This function lets us invoke the exception class and + * display errors using the standard error template located + * in application/views/errors/error_general.php + * This function will send the error page directly to the + * browser and exit. + * + * @param string + * @param int + * @param string + * @return void + */ + function show_error($message, $status_code = 500, $heading = 'An Error Was Encountered') + { + $status_code = abs($status_code); + if ($status_code < 100) + { + $exit_status = $status_code + 9; // 9 is EXIT__AUTO_MIN + $status_code = 500; + } + else + { + $exit_status = 1; // EXIT_ERROR + } + + $_error =& load_class('Exceptions', 'core'); + echo $_error->show_error($heading, $message, 'error_general', $status_code); + exit($exit_status); + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('show_404')) +{ + /** + * 404 Page Handler + * + * This function is similar to the show_error() function above + * However, instead of the standard error template it displays + * 404 errors. + * + * @param string + * @param bool + * @return void + */ + function show_404($page = '', $log_error = TRUE) + { + $_error =& load_class('Exceptions', 'core'); + $_error->show_404($page, $log_error); + exit(4); // EXIT_UNKNOWN_FILE + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('log_message')) +{ + /** + * Error Logging Interface + * + * We use this as a simple mechanism to access the logging + * class and send messages to be logged. + * + * @param string the error level: 'error', 'debug' or 'info' + * @param string the error message + * @return void + */ + function log_message($level, $message) + { + static $_log; + + if ($_log === NULL) + { + // references cannot be directly assigned to static variables, so we use an array + $_log[0] =& load_class('Log', 'core'); + } + + $_log[0]->write_log($level, $message); + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('set_status_header')) +{ + /** + * Set HTTP Status Header + * + * @param int the status code + * @param string + * @return void + */ + function set_status_header($code = 200, $text = '') + { + if (is_cli()) + { + return; + } + + if (empty($code) OR ! is_numeric($code)) + { + show_error('Status codes must be numeric', 500); + } + + if (empty($text)) + { + is_int($code) OR $code = (int) $code; + $stati = array( + 100 => 'Continue', + 101 => 'Switching Protocols', + + 200 => 'OK', + 201 => 'Created', + 202 => 'Accepted', + 203 => 'Non-Authoritative Information', + 204 => 'No Content', + 205 => 'Reset Content', + 206 => 'Partial Content', + + 300 => 'Multiple Choices', + 301 => 'Moved Permanently', + 302 => 'Found', + 303 => 'See Other', + 304 => 'Not Modified', + 305 => 'Use Proxy', + 307 => 'Temporary Redirect', + + 400 => 'Bad Request', + 401 => 'Unauthorized', + 402 => 'Payment Required', + 403 => 'Forbidden', + 404 => 'Not Found', + 405 => 'Method Not Allowed', + 406 => 'Not Acceptable', + 407 => 'Proxy Authentication Required', + 408 => 'Request Timeout', + 409 => 'Conflict', + 410 => 'Gone', + 411 => 'Length Required', + 412 => 'Precondition Failed', + 413 => 'Request Entity Too Large', + 414 => 'Request-URI Too Long', + 415 => 'Unsupported Media Type', + 416 => 'Requested Range Not Satisfiable', + 417 => 'Expectation Failed', + 422 => 'Unprocessable Entity', + 426 => 'Upgrade Required', + 428 => 'Precondition Required', + 429 => 'Too Many Requests', + 431 => 'Request Header Fields Too Large', + + 500 => 'Internal Server Error', + 501 => 'Not Implemented', + 502 => 'Bad Gateway', + 503 => 'Service Unavailable', + 504 => 'Gateway Timeout', + 505 => 'HTTP Version Not Supported', + 511 => 'Network Authentication Required', + ); + + if (isset($stati[$code])) + { + $text = $stati[$code]; + } + else + { + show_error('No status text available. Please check your status code number or supply your own message text.', 500); + } + } + + if (strpos(PHP_SAPI, 'cgi') === 0) + { + header('Status: '.$code.' '.$text, TRUE); + return; + } + + $server_protocol = (isset($_SERVER['SERVER_PROTOCOL']) && in_array($_SERVER['SERVER_PROTOCOL'], array('HTTP/1.0', 'HTTP/1.1', 'HTTP/2'), TRUE)) + ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.1'; + header($server_protocol.' '.$code.' '.$text, TRUE, $code); + } +} + +// -------------------------------------------------------------------- + +if ( ! function_exists('_error_handler')) +{ + /** + * Error Handler + * + * This is the custom error handler that is declared at the (relative) + * top of CodeIgniter.php. The main reason we use this is to permit + * PHP errors to be logged in our own log files since the user may + * not have access to server logs. Since this function effectively + * intercepts PHP errors, however, we also need to display errors + * based on the current error_reporting level. + * We do that with the use of a PHP error template. + * + * @param int $severity + * @param string $message + * @param string $filepath + * @param int $line + * @return void + */ + function _error_handler($severity, $message, $filepath, $line) + { + $is_error = (((E_ERROR | E_PARSE | E_COMPILE_ERROR | E_CORE_ERROR | E_USER_ERROR) & $severity) === $severity); + + // When an error occurred, set the status header to '500 Internal Server Error' + // to indicate to the client something went wrong. + // This can't be done within the $_error->show_php_error method because + // it is only called when the display_errors flag is set (which isn't usually + // the case in a production environment) or when errors are ignored because + // they are above the error_reporting threshold. + if ($is_error) + { + set_status_header(500); + } + + // Should we ignore the error? We'll get the current error_reporting + // level and add its bits with the severity bits to find out. + if (($severity & error_reporting()) !== $severity) + { + return; + } + + $_error =& load_class('Exceptions', 'core'); + $_error->log_exception($severity, $message, $filepath, $line); + + // Should we display the error? + if (str_ireplace(array('off', 'none', 'no', 'false', 'null'), '', ini_get('display_errors'))) + { + $_error->show_php_error($severity, $message, $filepath, $line); + } + + // If the error is fatal, the execution of the script should be stopped because + // errors can't be recovered from. Halting the script conforms with PHP's + // default error handling. See http://www.php.net/manual/en/errorfunc.constants.php + if ($is_error) + { + exit(1); // EXIT_ERROR + } + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('_exception_handler')) +{ + /** + * Exception Handler + * + * Sends uncaught exceptions to the logger and displays them + * only if display_errors is On so that they don't show up in + * production environments. + * + * @param Exception $exception + * @return void + */ + function _exception_handler($exception) + { + $_error =& load_class('Exceptions', 'core'); + $_error->log_exception('error', 'Exception: '.$exception->getMessage(), $exception->getFile(), $exception->getLine()); + + is_cli() OR set_status_header(500); + // Should we display the error? + if (str_ireplace(array('off', 'none', 'no', 'false', 'null'), '', ini_get('display_errors'))) + { + $_error->show_exception($exception); + } + + exit(1); // EXIT_ERROR + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('_shutdown_handler')) +{ + /** + * Shutdown Handler + * + * This is the shutdown handler that is declared at the top + * of CodeIgniter.php. The main reason we use this is to simulate + * a complete custom exception handler. + * + * E_STRICT is purposively neglected because such events may have + * been caught. Duplication or none? None is preferred for now. + * + * @link http://insomanic.me.uk/post/229851073/php-trick-catching-fatal-errors-e-error-with-a + * @return void + */ + function _shutdown_handler() + { + $last_error = error_get_last(); + if (isset($last_error) && + ($last_error['type'] & (E_ERROR | E_PARSE | E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_COMPILE_WARNING))) + { + _error_handler($last_error['type'], $last_error['message'], $last_error['file'], $last_error['line']); + } + } +} + +// -------------------------------------------------------------------- + +if ( ! function_exists('remove_invisible_characters')) +{ + /** + * Remove Invisible Characters + * + * This prevents sandwiching null characters + * between ascii characters, like Java\0script. + * + * @param string + * @param bool + * @return string + */ + function remove_invisible_characters($str, $url_encoded = TRUE) + { + $non_displayables = array(); + + // every control character except newline (dec 10), + // carriage return (dec 13) and horizontal tab (dec 09) + if ($url_encoded) + { + $non_displayables[] = '/%0[0-8bcef]/i'; // url encoded 00-08, 11, 12, 14, 15 + $non_displayables[] = '/%1[0-9a-f]/i'; // url encoded 16-31 + $non_displayables[] = '/%7f/i'; // url encoded 127 + } + + $non_displayables[] = '/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]+/S'; // 00-08, 11, 12, 14-31, 127 + + do + { + $str = preg_replace($non_displayables, '', $str, -1, $count); + } + while ($count); + + return $str; + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('html_escape')) +{ + /** + * Returns HTML escaped variable. + * + * @param mixed $var The input string or array of strings to be escaped. + * @param bool $double_encode $double_encode set to FALSE prevents escaping twice. + * @return mixed The escaped string or array of strings as a result. + */ + function html_escape($var, $double_encode = TRUE) + { + if (empty($var)) + { + return $var; + } + + if (is_array($var)) + { + foreach (array_keys($var) as $key) + { + $var[$key] = html_escape($var[$key], $double_encode); + } + + return $var; + } + + return htmlspecialchars($var, ENT_QUOTES, config_item('charset'), $double_encode); + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('_stringify_attributes')) +{ + /** + * Stringify attributes for use in HTML tags. + * + * Helper function used to convert a string, array, or object + * of attributes to a string. + * + * @param mixed string, array, object + * @param bool + * @return string + */ + function _stringify_attributes($attributes, $js = FALSE) + { + $atts = NULL; + + if (empty($attributes)) + { + return $atts; + } + + if (is_string($attributes)) + { + return ' '.$attributes; + } + + $attributes = (array) $attributes; + + foreach ($attributes as $key => $val) + { + $atts .= ($js) ? $key.'='.$val.',' : ' '.$key.'="'.$val.'"'; + } + + return rtrim($atts, ','); + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('function_usable')) +{ + /** + * Function usable + * + * Executes a function_exists() check, and if the Suhosin PHP + * extension is loaded - checks whether the function that is + * checked might be disabled in there as well. + * + * This is useful as function_exists() will return FALSE for + * functions disabled via the *disable_functions* php.ini + * setting, but not for *suhosin.executor.func.blacklist* and + * *suhosin.executor.disable_eval*. These settings will just + * terminate script execution if a disabled function is executed. + * + * The above described behavior turned out to be a bug in Suhosin, + * but even though a fix was committed for 0.9.34 on 2012-02-12, + * that version is yet to be released. This function will therefore + * be just temporary, but would probably be kept for a few years. + * + * @link http://www.hardened-php.net/suhosin/ + * @param string $function_name Function to check for + * @return bool TRUE if the function exists and is safe to call, + * FALSE otherwise. + */ + function function_usable($function_name) + { + static $_suhosin_func_blacklist; + + if (function_exists($function_name)) + { + if ( ! isset($_suhosin_func_blacklist)) + { + $_suhosin_func_blacklist = extension_loaded('suhosin') + ? explode(',', trim(ini_get('suhosin.executor.func.blacklist'))) + : array(); + } + + return ! in_array($function_name, $_suhosin_func_blacklist, TRUE); + } + + return FALSE; + } +} diff --git a/www/system/core/Config.php b/www/system/core/Config.php new file mode 100644 index 0000000..8136dd2 --- /dev/null +++ b/www/system/core/Config.php @@ -0,0 +1,379 @@ +config =& get_config(); + + // Set the base_url automatically if none was provided + if (empty($this->config['base_url'])) + { + if (isset($_SERVER['SERVER_ADDR'])) + { + if (strpos($_SERVER['SERVER_ADDR'], ':') !== FALSE) + { + $server_addr = '['.$_SERVER['SERVER_ADDR'].']'; + } + else + { + $server_addr = $_SERVER['SERVER_ADDR']; + } + + $base_url = (is_https() ? 'https' : 'http').'://'.$server_addr + .substr($_SERVER['SCRIPT_NAME'], 0, strpos($_SERVER['SCRIPT_NAME'], basename($_SERVER['SCRIPT_FILENAME']))); + } + else + { + $base_url = 'http://localhost/'; + } + + $this->set_item('base_url', $base_url); + } + + log_message('info', 'Config Class Initialized'); + } + + // -------------------------------------------------------------------- + + /** + * Load Config File + * + * @param string $file Configuration file name + * @param bool $use_sections Whether configuration values should be loaded into their own section + * @param bool $fail_gracefully Whether to just return FALSE or display an error message + * @return bool TRUE if the file was loaded correctly or FALSE on failure + */ + public function load($file = '', $use_sections = FALSE, $fail_gracefully = FALSE) + { + $file = ($file === '') ? 'config' : str_replace('.php', '', $file); + $loaded = FALSE; + + foreach ($this->_config_paths as $path) + { + foreach (array($file, ENVIRONMENT.DIRECTORY_SEPARATOR.$file) as $location) + { + $file_path = $path.'config/'.$location.'.php'; + if (in_array($file_path, $this->is_loaded, TRUE)) + { + return TRUE; + } + + if ( ! file_exists($file_path)) + { + continue; + } + + include($file_path); + + if ( ! isset($config) OR ! is_array($config)) + { + if ($fail_gracefully === TRUE) + { + return FALSE; + } + + show_error('Your '.$file_path.' file does not appear to contain a valid configuration array.'); + } + + if ($use_sections === TRUE) + { + $this->config[$file] = isset($this->config[$file]) + ? array_merge($this->config[$file], $config) + : $config; + } + else + { + $this->config = array_merge($this->config, $config); + } + + $this->is_loaded[] = $file_path; + $config = NULL; + $loaded = TRUE; + log_message('debug', 'Config file loaded: '.$file_path); + } + } + + if ($loaded === TRUE) + { + return TRUE; + } + elseif ($fail_gracefully === TRUE) + { + return FALSE; + } + + show_error('The configuration file '.$file.'.php does not exist.'); + } + + // -------------------------------------------------------------------- + + /** + * Fetch a config file item + * + * @param string $item Config item name + * @param string $index Index name + * @return string|null The configuration item or NULL if the item doesn't exist + */ + public function item($item, $index = '') + { + if ($index == '') + { + return isset($this->config[$item]) ? $this->config[$item] : NULL; + } + + return isset($this->config[$index], $this->config[$index][$item]) ? $this->config[$index][$item] : NULL; + } + + // -------------------------------------------------------------------- + + /** + * Fetch a config file item with slash appended (if not empty) + * + * @param string $item Config item name + * @return string|null The configuration item or NULL if the item doesn't exist + */ + public function slash_item($item) + { + if ( ! isset($this->config[$item])) + { + return NULL; + } + elseif (trim($this->config[$item]) === '') + { + return ''; + } + + return rtrim($this->config[$item], '/').'/'; + } + + // -------------------------------------------------------------------- + + /** + * Site URL + * + * Returns base_url . index_page [. uri_string] + * + * @uses CI_Config::_uri_string() + * + * @param string|string[] $uri URI string or an array of segments + * @param string $protocol + * @return string + */ + public function site_url($uri = '', $protocol = NULL) + { + $base_url = $this->slash_item('base_url'); + + if (isset($protocol)) + { + // For protocol-relative links + if ($protocol === '') + { + $base_url = substr($base_url, strpos($base_url, '//')); + } + else + { + $base_url = $protocol.substr($base_url, strpos($base_url, '://')); + } + } + + if (empty($uri)) + { + return $base_url.$this->item('index_page'); + } + + $uri = $this->_uri_string($uri); + + if ($this->item('enable_query_strings') === FALSE) + { + $suffix = isset($this->config['url_suffix']) ? $this->config['url_suffix'] : ''; + + if ($suffix !== '') + { + if (($offset = strpos($uri, '?')) !== FALSE) + { + $uri = substr($uri, 0, $offset).$suffix.substr($uri, $offset); + } + else + { + $uri .= $suffix; + } + } + + return $base_url.$this->slash_item('index_page').$uri; + } + elseif (strpos($uri, '?') === FALSE) + { + $uri = '?'.$uri; + } + + return $base_url.$this->item('index_page').$uri; + } + + // ------------------------------------------------------------- + + /** + * Base URL + * + * Returns base_url [. uri_string] + * + * @uses CI_Config::_uri_string() + * + * @param string|string[] $uri URI string or an array of segments + * @param string $protocol + * @return string + */ + public function base_url($uri = '', $protocol = NULL) + { + $base_url = $this->slash_item('base_url'); + + if (isset($protocol)) + { + // For protocol-relative links + if ($protocol === '') + { + $base_url = substr($base_url, strpos($base_url, '//')); + } + else + { + $base_url = $protocol.substr($base_url, strpos($base_url, '://')); + } + } + + return $base_url.$this->_uri_string($uri); + } + + // ------------------------------------------------------------- + + /** + * Build URI string + * + * @used-by CI_Config::site_url() + * @used-by CI_Config::base_url() + * + * @param string|string[] $uri URI string or an array of segments + * @return string + */ + protected function _uri_string($uri) + { + if ($this->item('enable_query_strings') === FALSE) + { + is_array($uri) && $uri = implode('/', $uri); + return ltrim($uri, '/'); + } + elseif (is_array($uri)) + { + return http_build_query($uri); + } + + return $uri; + } + + // -------------------------------------------------------------------- + + /** + * System URL + * + * @deprecated 3.0.0 Encourages insecure practices + * @return string + */ + public function system_url() + { + $x = explode('/', preg_replace('|/*(.+?)/*$|', '\\1', BASEPATH)); + return $this->slash_item('base_url').end($x).'/'; + } + + // -------------------------------------------------------------------- + + /** + * Set a config file item + * + * @param string $item Config item key + * @param string $value Config item value + * @return void + */ + public function set_item($item, $value) + { + $this->config[$item] = $value; + } + +} diff --git a/www/system/core/Controller.php b/www/system/core/Controller.php new file mode 100644 index 0000000..ec9aa2a --- /dev/null +++ b/www/system/core/Controller.php @@ -0,0 +1,96 @@ + $class) + { + $this->$var =& load_class($class); + } + + $this->load =& load_class('Loader', 'core'); + $this->load->initialize(); + log_message('info', 'Controller Class Initialized'); + } + + // -------------------------------------------------------------------- + + /** + * Get the CI singleton + * + * @static + * @return object + */ + public static function &get_instance() + { + return self::$instance; + } + +} diff --git a/www/system/core/Exceptions.php b/www/system/core/Exceptions.php new file mode 100644 index 0000000..5a78376 --- /dev/null +++ b/www/system/core/Exceptions.php @@ -0,0 +1,274 @@ + 'Error', + E_WARNING => 'Warning', + E_PARSE => 'Parsing Error', + E_NOTICE => 'Notice', + E_CORE_ERROR => 'Core Error', + E_CORE_WARNING => 'Core Warning', + E_COMPILE_ERROR => 'Compile Error', + E_COMPILE_WARNING => 'Compile Warning', + E_USER_ERROR => 'User Error', + E_USER_WARNING => 'User Warning', + E_USER_NOTICE => 'User Notice', + E_STRICT => 'Runtime Notice' + ); + + /** + * Class constructor + * + * @return void + */ + public function __construct() + { + $this->ob_level = ob_get_level(); + // Note: Do not log messages from this constructor. + } + + // -------------------------------------------------------------------- + + /** + * Exception Logger + * + * Logs PHP generated error messages + * + * @param int $severity Log level + * @param string $message Error message + * @param string $filepath File path + * @param int $line Line number + * @return void + */ + public function log_exception($severity, $message, $filepath, $line) + { + $severity = isset($this->levels[$severity]) ? $this->levels[$severity] : $severity; + log_message('error', 'Severity: '.$severity.' --> '.$message.' '.$filepath.' '.$line); + } + + // -------------------------------------------------------------------- + + /** + * 404 Error Handler + * + * @uses CI_Exceptions::show_error() + * + * @param string $page Page URI + * @param bool $log_error Whether to log the error + * @return void + */ + public function show_404($page = '', $log_error = TRUE) + { + if (is_cli()) + { + $heading = 'Not Found'; + $message = 'The controller/method pair you requested was not found.'; + } + else + { + $heading = '404 Page Not Found'; + $message = 'The page you requested was not found.'; + } + + // By default we log this, but allow a dev to skip it + if ($log_error) + { + log_message('error', $heading.': '.$page); + } + + echo $this->show_error($heading, $message, 'error_404', 404); + exit(4); // EXIT_UNKNOWN_FILE + } + + // -------------------------------------------------------------------- + + /** + * General Error Page + * + * Takes an error message as input (either as a string or an array) + * and displays it using the specified template. + * + * @param string $heading Page heading + * @param string|string[] $message Error message + * @param string $template Template name + * @param int $status_code (default: 500) + * + * @return string Error page output + */ + public function show_error($heading, $message, $template = 'error_general', $status_code = 500) + { + $templates_path = config_item('error_views_path'); + if (empty($templates_path)) + { + $templates_path = VIEWPATH.'errors'.DIRECTORY_SEPARATOR; + } + + if (is_cli()) + { + $message = "\t".(is_array($message) ? implode("\n\t", $message) : $message); + $template = 'cli'.DIRECTORY_SEPARATOR.$template; + } + else + { + set_status_header($status_code); + $message = '

    '.(is_array($message) ? implode('

    ', $message) : $message).'

    '; + $template = 'html'.DIRECTORY_SEPARATOR.$template; + } + + if (ob_get_level() > $this->ob_level + 1) + { + ob_end_flush(); + } + ob_start(); + include($templates_path.$template.'.php'); + $buffer = ob_get_contents(); + ob_end_clean(); + return $buffer; + } + + // -------------------------------------------------------------------- + + public function show_exception($exception) + { + $templates_path = config_item('error_views_path'); + if (empty($templates_path)) + { + $templates_path = VIEWPATH.'errors'.DIRECTORY_SEPARATOR; + } + + $message = $exception->getMessage(); + if (empty($message)) + { + $message = '(null)'; + } + + if (is_cli()) + { + $templates_path .= 'cli'.DIRECTORY_SEPARATOR; + } + else + { + $templates_path .= 'html'.DIRECTORY_SEPARATOR; + } + + if (ob_get_level() > $this->ob_level + 1) + { + ob_end_flush(); + } + + ob_start(); + include($templates_path.'error_exception.php'); + $buffer = ob_get_contents(); + ob_end_clean(); + echo $buffer; + } + + // -------------------------------------------------------------------- + + /** + * Native PHP error handler + * + * @param int $severity Error level + * @param string $message Error message + * @param string $filepath File path + * @param int $line Line number + * @return void + */ + public function show_php_error($severity, $message, $filepath, $line) + { + $templates_path = config_item('error_views_path'); + if (empty($templates_path)) + { + $templates_path = VIEWPATH.'errors'.DIRECTORY_SEPARATOR; + } + + $severity = isset($this->levels[$severity]) ? $this->levels[$severity] : $severity; + + // For safety reasons we don't show the full file path in non-CLI requests + if ( ! is_cli()) + { + $filepath = str_replace('\\', '/', $filepath); + if (FALSE !== strpos($filepath, '/')) + { + $x = explode('/', $filepath); + $filepath = $x[count($x)-2].'/'.end($x); + } + + $template = 'html'.DIRECTORY_SEPARATOR.'error_php'; + } + else + { + $template = 'cli'.DIRECTORY_SEPARATOR.'error_php'; + } + + if (ob_get_level() > $this->ob_level + 1) + { + ob_end_flush(); + } + ob_start(); + include($templates_path.$template.'.php'); + $buffer = ob_get_contents(); + ob_end_clean(); + echo $buffer; + } + +} diff --git a/www/system/core/Hooks.php b/www/system/core/Hooks.php new file mode 100644 index 0000000..82c68b1 --- /dev/null +++ b/www/system/core/Hooks.php @@ -0,0 +1,266 @@ +item('enable_hooks') === FALSE) + { + return; + } + + // Grab the "hooks" definition file. + if (file_exists(APPPATH.'config/hooks.php')) + { + include(APPPATH.'config/hooks.php'); + } + + if (file_exists(APPPATH.'config/'.ENVIRONMENT.'/hooks.php')) + { + include(APPPATH.'config/'.ENVIRONMENT.'/hooks.php'); + } + + // If there are no hooks, we're done. + if ( ! isset($hook) OR ! is_array($hook)) + { + return; + } + + $this->hooks =& $hook; + $this->enabled = TRUE; + } + + // -------------------------------------------------------------------- + + /** + * Call Hook + * + * Calls a particular hook. Called by CodeIgniter.php. + * + * @uses CI_Hooks::_run_hook() + * + * @param string $which Hook name + * @return bool TRUE on success or FALSE on failure + */ + public function call_hook($which = '') + { + if ( ! $this->enabled OR ! isset($this->hooks[$which])) + { + return FALSE; + } + + if (is_array($this->hooks[$which]) && ! isset($this->hooks[$which]['function'])) + { + foreach ($this->hooks[$which] as $val) + { + $this->_run_hook($val); + } + } + else + { + $this->_run_hook($this->hooks[$which]); + } + + return TRUE; + } + + // -------------------------------------------------------------------- + + /** + * Run Hook + * + * Runs a particular hook + * + * @param array $data Hook details + * @return bool TRUE on success or FALSE on failure + */ + protected function _run_hook($data) + { + // Closures/lambda functions and array($object, 'method') callables + if (is_callable($data)) + { + is_array($data) + ? $data[0]->{$data[1]}() + : $data(); + + return TRUE; + } + elseif ( ! is_array($data)) + { + return FALSE; + } + + // ----------------------------------- + // Safety - Prevents run-away loops + // ----------------------------------- + + // If the script being called happens to have the same + // hook call within it a loop can happen + if ($this->_in_progress === TRUE) + { + return; + } + + // ----------------------------------- + // Set file path + // ----------------------------------- + + if ( ! isset($data['filepath'], $data['filename'])) + { + return FALSE; + } + + $filepath = APPPATH.$data['filepath'].'/'.$data['filename']; + + if ( ! file_exists($filepath)) + { + return FALSE; + } + + // Determine and class and/or function names + $class = empty($data['class']) ? FALSE : $data['class']; + $function = empty($data['function']) ? FALSE : $data['function']; + $params = isset($data['params']) ? $data['params'] : ''; + + if (empty($function)) + { + return FALSE; + } + + // Set the _in_progress flag + $this->_in_progress = TRUE; + + // Call the requested class and/or function + if ($class !== FALSE) + { + // The object is stored? + if (isset($this->_objects[$class])) + { + if (method_exists($this->_objects[$class], $function)) + { + $this->_objects[$class]->$function($params); + } + else + { + return $this->_in_progress = FALSE; + } + } + else + { + class_exists($class, FALSE) OR require_once($filepath); + + if ( ! class_exists($class, FALSE) OR ! method_exists($class, $function)) + { + return $this->_in_progress = FALSE; + } + + // Store the object and execute the method + $this->_objects[$class] = new $class(); + $this->_objects[$class]->$function($params); + } + } + else + { + function_exists($function) OR require_once($filepath); + + if ( ! function_exists($function)) + { + return $this->_in_progress = FALSE; + } + + $function($params); + } + + $this->_in_progress = FALSE; + return TRUE; + } + +} diff --git a/www/system/core/Input.php b/www/system/core/Input.php new file mode 100644 index 0000000..143babf --- /dev/null +++ b/www/system/core/Input.php @@ -0,0 +1,895 @@ +_allow_get_array = (config_item('allow_get_array') !== FALSE); + $this->_enable_xss = (config_item('global_xss_filtering') === TRUE); + $this->_enable_csrf = (config_item('csrf_protection') === TRUE); + $this->_standardize_newlines = (bool) config_item('standardize_newlines'); + + $this->security =& load_class('Security', 'core'); + + // Do we need the UTF-8 class? + if (UTF8_ENABLED === TRUE) + { + $this->uni =& load_class('Utf8', 'core'); + } + + // Sanitize global arrays + $this->_sanitize_globals(); + + // CSRF Protection check + if ($this->_enable_csrf === TRUE && ! is_cli()) + { + $this->security->csrf_verify(); + } + + log_message('info', 'Input Class Initialized'); + } + + // -------------------------------------------------------------------- + + /** + * Fetch from array + * + * Internal method used to retrieve values from global arrays. + * + * @param array &$array $_GET, $_POST, $_COOKIE, $_SERVER, etc. + * @param mixed $index Index for item to be fetched from $array + * @param bool $xss_clean Whether to apply XSS filtering + * @return mixed + */ + protected function _fetch_from_array(&$array, $index = NULL, $xss_clean = NULL) + { + is_bool($xss_clean) OR $xss_clean = $this->_enable_xss; + + // If $index is NULL, it means that the whole $array is requested + isset($index) OR $index = array_keys($array); + + // allow fetching multiple keys at once + if (is_array($index)) + { + $output = array(); + foreach ($index as $key) + { + $output[$key] = $this->_fetch_from_array($array, $key, $xss_clean); + } + + return $output; + } + + if (isset($array[$index])) + { + $value = $array[$index]; + } + elseif (($count = preg_match_all('/(?:^[^\[]+)|\[[^]]*\]/', $index, $matches)) > 1) // Does the index contain array notation + { + $value = $array; + for ($i = 0; $i < $count; $i++) + { + $key = trim($matches[0][$i], '[]'); + if ($key === '') // Empty notation will return the value as array + { + break; + } + + if (isset($value[$key])) + { + $value = $value[$key]; + } + else + { + return NULL; + } + } + } + else + { + return NULL; + } + + return ($xss_clean === TRUE) + ? $this->security->xss_clean($value) + : $value; + } + + // -------------------------------------------------------------------- + + /** + * Fetch an item from the GET array + * + * @param mixed $index Index for item to be fetched from $_GET + * @param bool $xss_clean Whether to apply XSS filtering + * @return mixed + */ + public function get($index = NULL, $xss_clean = NULL) + { + return $this->_fetch_from_array($_GET, $index, $xss_clean); + } + + // -------------------------------------------------------------------- + + /** + * Fetch an item from the POST array + * + * @param mixed $index Index for item to be fetched from $_POST + * @param bool $xss_clean Whether to apply XSS filtering + * @return mixed + */ + public function post($index = NULL, $xss_clean = NULL) + { + return $this->_fetch_from_array($_POST, $index, $xss_clean); + } + + // -------------------------------------------------------------------- + + /** + * Fetch an item from POST data with fallback to GET + * + * @param string $index Index for item to be fetched from $_POST or $_GET + * @param bool $xss_clean Whether to apply XSS filtering + * @return mixed + */ + public function post_get($index, $xss_clean = NULL) + { + return isset($_POST[$index]) + ? $this->post($index, $xss_clean) + : $this->get($index, $xss_clean); + } + + // -------------------------------------------------------------------- + + /** + * Fetch an item from GET data with fallback to POST + * + * @param string $index Index for item to be fetched from $_GET or $_POST + * @param bool $xss_clean Whether to apply XSS filtering + * @return mixed + */ + public function get_post($index, $xss_clean = NULL) + { + return isset($_GET[$index]) + ? $this->get($index, $xss_clean) + : $this->post($index, $xss_clean); + } + + // -------------------------------------------------------------------- + + /** + * Fetch an item from the COOKIE array + * + * @param mixed $index Index for item to be fetched from $_COOKIE + * @param bool $xss_clean Whether to apply XSS filtering + * @return mixed + */ + public function cookie($index = NULL, $xss_clean = NULL) + { + return $this->_fetch_from_array($_COOKIE, $index, $xss_clean); + } + + // -------------------------------------------------------------------- + + /** + * Fetch an item from the SERVER array + * + * @param mixed $index Index for item to be fetched from $_SERVER + * @param bool $xss_clean Whether to apply XSS filtering + * @return mixed + */ + public function server($index, $xss_clean = NULL) + { + return $this->_fetch_from_array($_SERVER, $index, $xss_clean); + } + + // ------------------------------------------------------------------------ + + /** + * Fetch an item from the php://input stream + * + * Useful when you need to access PUT, DELETE or PATCH request data. + * + * @param string $index Index for item to be fetched + * @param bool $xss_clean Whether to apply XSS filtering + * @return mixed + */ + public function input_stream($index = NULL, $xss_clean = NULL) + { + // Prior to PHP 5.6, the input stream can only be read once, + // so we'll need to check if we have already done that first. + if ( ! is_array($this->_input_stream)) + { + // $this->raw_input_stream will trigger __get(). + parse_str($this->raw_input_stream, $this->_input_stream); + is_array($this->_input_stream) OR $this->_input_stream = array(); + } + + return $this->_fetch_from_array($this->_input_stream, $index, $xss_clean); + } + + // ------------------------------------------------------------------------ + + /** + * Set cookie + * + * Accepts an arbitrary number of parameters (up to 7) or an associative + * array in the first parameter containing all the values. + * + * @param string|mixed[] $name Cookie name or an array containing parameters + * @param string $value Cookie value + * @param int $expire Cookie expiration time in seconds + * @param string $domain Cookie domain (e.g.: '.yourdomain.com') + * @param string $path Cookie path (default: '/') + * @param string $prefix Cookie name prefix + * @param bool $secure Whether to only transfer cookies via SSL + * @param bool $httponly Whether to only makes the cookie accessible via HTTP (no javascript) + * @return void + */ + public function set_cookie($name, $value = '', $expire = '', $domain = '', $path = '/', $prefix = '', $secure = NULL, $httponly = NULL) + { + if (is_array($name)) + { + // always leave 'name' in last place, as the loop will break otherwise, due to $$item + foreach (array('value', 'expire', 'domain', 'path', 'prefix', 'secure', 'httponly', 'name') as $item) + { + if (isset($name[$item])) + { + $$item = $name[$item]; + } + } + } + + if ($prefix === '' && config_item('cookie_prefix') !== '') + { + $prefix = config_item('cookie_prefix'); + } + + if ($domain == '' && config_item('cookie_domain') != '') + { + $domain = config_item('cookie_domain'); + } + + if ($path === '/' && config_item('cookie_path') !== '/') + { + $path = config_item('cookie_path'); + } + + $secure = ($secure === NULL && config_item('cookie_secure') !== NULL) + ? (bool) config_item('cookie_secure') + : (bool) $secure; + + $httponly = ($httponly === NULL && config_item('cookie_httponly') !== NULL) + ? (bool) config_item('cookie_httponly') + : (bool) $httponly; + + if ( ! is_numeric($expire)) + { + $expire = time() - 86500; + } + else + { + $expire = ($expire > 0) ? time() + $expire : 0; + } + + setcookie($prefix.$name, $value, $expire, $path, $domain, $secure, $httponly); + } + + // -------------------------------------------------------------------- + + /** + * Fetch the IP Address + * + * Determines and validates the visitor's IP address. + * + * @return string IP address + */ + public function ip_address() + { + if ($this->ip_address !== FALSE) + { + return $this->ip_address; + } + + $proxy_ips = config_item('proxy_ips'); + if ( ! empty($proxy_ips) && ! is_array($proxy_ips)) + { + $proxy_ips = explode(',', str_replace(' ', '', $proxy_ips)); + } + + $this->ip_address = $this->server('REMOTE_ADDR'); + + if ($proxy_ips) + { + foreach (array('HTTP_X_FORWARDED_FOR', 'HTTP_CLIENT_IP', 'HTTP_X_CLIENT_IP', 'HTTP_X_CLUSTER_CLIENT_IP') as $header) + { + if (($spoof = $this->server($header)) !== NULL) + { + // Some proxies typically list the whole chain of IP + // addresses through which the client has reached us. + // e.g. client_ip, proxy_ip1, proxy_ip2, etc. + sscanf($spoof, '%[^,]', $spoof); + + if ( ! $this->valid_ip($spoof)) + { + $spoof = NULL; + } + else + { + break; + } + } + } + + if ($spoof) + { + for ($i = 0, $c = count($proxy_ips); $i < $c; $i++) + { + // Check if we have an IP address or a subnet + if (strpos($proxy_ips[$i], '/') === FALSE) + { + // An IP address (and not a subnet) is specified. + // We can compare right away. + if ($proxy_ips[$i] === $this->ip_address) + { + $this->ip_address = $spoof; + break; + } + + continue; + } + + // We have a subnet ... now the heavy lifting begins + isset($separator) OR $separator = $this->valid_ip($this->ip_address, 'ipv6') ? ':' : '.'; + + // If the proxy entry doesn't match the IP protocol - skip it + if (strpos($proxy_ips[$i], $separator) === FALSE) + { + continue; + } + + // Convert the REMOTE_ADDR IP address to binary, if needed + if ( ! isset($ip, $sprintf)) + { + if ($separator === ':') + { + // Make sure we're have the "full" IPv6 format + $ip = explode(':', + str_replace('::', + str_repeat(':', 9 - substr_count($this->ip_address, ':')), + $this->ip_address + ) + ); + + for ($j = 0; $j < 8; $j++) + { + $ip[$j] = intval($ip[$j], 16); + } + + $sprintf = '%016b%016b%016b%016b%016b%016b%016b%016b'; + } + else + { + $ip = explode('.', $this->ip_address); + $sprintf = '%08b%08b%08b%08b'; + } + + $ip = vsprintf($sprintf, $ip); + } + + // Split the netmask length off the network address + sscanf($proxy_ips[$i], '%[^/]/%d', $netaddr, $masklen); + + // Again, an IPv6 address is most likely in a compressed form + if ($separator === ':') + { + $netaddr = explode(':', str_replace('::', str_repeat(':', 9 - substr_count($netaddr, ':')), $netaddr)); + for ($j = 0; $j < 8; $j++) + { + $netaddr[$j] = intval($netaddr[$j], 16); + } + } + else + { + $netaddr = explode('.', $netaddr); + } + + // Convert to binary and finally compare + if (strncmp($ip, vsprintf($sprintf, $netaddr), $masklen) === 0) + { + $this->ip_address = $spoof; + break; + } + } + } + } + + if ( ! $this->valid_ip($this->ip_address)) + { + return $this->ip_address = '0.0.0.0'; + } + + return $this->ip_address; + } + + // -------------------------------------------------------------------- + + /** + * Validate IP Address + * + * @param string $ip IP address + * @param string $which IP protocol: 'ipv4' or 'ipv6' + * @return bool + */ + public function valid_ip($ip, $which = '') + { + switch (strtolower($which)) + { + case 'ipv4': + $which = FILTER_FLAG_IPV4; + break; + case 'ipv6': + $which = FILTER_FLAG_IPV6; + break; + default: + $which = NULL; + break; + } + + return (bool) filter_var($ip, FILTER_VALIDATE_IP, $which); + } + + // -------------------------------------------------------------------- + + /** + * Fetch User Agent string + * + * @return string|null User Agent string or NULL if it doesn't exist + */ + public function user_agent($xss_clean = NULL) + { + return $this->_fetch_from_array($_SERVER, 'HTTP_USER_AGENT', $xss_clean); + } + + // -------------------------------------------------------------------- + + /** + * Sanitize Globals + * + * Internal method serving for the following purposes: + * + * - Unsets $_GET data, if query strings are not enabled + * - Cleans POST, COOKIE and SERVER data + * - Standardizes newline characters to PHP_EOL + * + * @return void + */ + protected function _sanitize_globals() + { + // Is $_GET data allowed? If not we'll set the $_GET to an empty array + if ($this->_allow_get_array === FALSE) + { + $_GET = array(); + } + elseif (is_array($_GET)) + { + foreach ($_GET as $key => $val) + { + $_GET[$this->_clean_input_keys($key)] = $this->_clean_input_data($val); + } + } + + // Clean $_POST Data + if (is_array($_POST)) + { + foreach ($_POST as $key => $val) + { + $_POST[$this->_clean_input_keys($key)] = $this->_clean_input_data($val); + } + } + + // Clean $_COOKIE Data + if (is_array($_COOKIE)) + { + // Also get rid of specially treated cookies that might be set by a server + // or silly application, that are of no use to a CI application anyway + // but that when present will trip our 'Disallowed Key Characters' alarm + // http://www.ietf.org/rfc/rfc2109.txt + // note that the key names below are single quoted strings, and are not PHP variables + unset( + $_COOKIE['$Version'], + $_COOKIE['$Path'], + $_COOKIE['$Domain'] + ); + + foreach ($_COOKIE as $key => $val) + { + if (($cookie_key = $this->_clean_input_keys($key)) !== FALSE) + { + $_COOKIE[$cookie_key] = $this->_clean_input_data($val); + } + else + { + unset($_COOKIE[$key]); + } + } + } + + // Sanitize PHP_SELF + $_SERVER['PHP_SELF'] = strip_tags($_SERVER['PHP_SELF']); + + log_message('debug', 'Global POST, GET and COOKIE data sanitized'); + } + + // -------------------------------------------------------------------- + + /** + * Clean Input Data + * + * Internal method that aids in escaping data and + * standardizing newline characters to PHP_EOL. + * + * @param string|string[] $str Input string(s) + * @return string + */ + protected function _clean_input_data($str) + { + if (is_array($str)) + { + $new_array = array(); + foreach (array_keys($str) as $key) + { + $new_array[$this->_clean_input_keys($key)] = $this->_clean_input_data($str[$key]); + } + return $new_array; + } + + /* We strip slashes if magic quotes is on to keep things consistent + + NOTE: In PHP 5.4 get_magic_quotes_gpc() will always return 0 and + it will probably not exist in future versions at all. + */ + if ( ! is_php('5.4') && get_magic_quotes_gpc()) + { + $str = stripslashes($str); + } + + // Clean UTF-8 if supported + if (UTF8_ENABLED === TRUE) + { + $str = $this->uni->clean_string($str); + } + + // Remove control characters + $str = remove_invisible_characters($str, FALSE); + + // Standardize newlines if needed + if ($this->_standardize_newlines === TRUE) + { + return preg_replace('/(?:\r\n|[\r\n])/', PHP_EOL, $str); + } + + return $str; + } + + // -------------------------------------------------------------------- + + /** + * Clean Keys + * + * Internal method that helps to prevent malicious users + * from trying to exploit keys we make sure that keys are + * only named with alpha-numeric text and a few other items. + * + * @param string $str Input string + * @param bool $fatal Whether to terminate script exection + * or to return FALSE if an invalid + * key is encountered + * @return string|bool + */ + protected function _clean_input_keys($str, $fatal = TRUE) + { + if ( ! preg_match('/^[a-z0-9:_\/|-]+$/i', $str)) + { + if ($fatal === TRUE) + { + return FALSE; + } + else + { + set_status_header(503); + echo 'Disallowed Key Characters.'; + exit(7); // EXIT_USER_INPUT + } + } + + // Clean UTF-8 if supported + if (UTF8_ENABLED === TRUE) + { + return $this->uni->clean_string($str); + } + + return $str; + } + + // -------------------------------------------------------------------- + + /** + * Request Headers + * + * @param bool $xss_clean Whether to apply XSS filtering + * @return array + */ + public function request_headers($xss_clean = FALSE) + { + // If header is already defined, return it immediately + if ( ! empty($this->headers)) + { + return $this->_fetch_from_array($this->headers, NULL, $xss_clean); + } + + // In Apache, you can simply call apache_request_headers() + if (function_exists('apache_request_headers')) + { + $this->headers = apache_request_headers(); + } + else + { + isset($_SERVER['CONTENT_TYPE']) && $this->headers['Content-Type'] = $_SERVER['CONTENT_TYPE']; + + foreach ($_SERVER as $key => $val) + { + if (sscanf($key, 'HTTP_%s', $header) === 1) + { + // take SOME_HEADER and turn it into Some-Header + $header = str_replace('_', ' ', strtolower($header)); + $header = str_replace(' ', '-', ucwords($header)); + + $this->headers[$header] = $_SERVER[$key]; + } + } + } + + return $this->_fetch_from_array($this->headers, NULL, $xss_clean); + } + + // -------------------------------------------------------------------- + + /** + * Get Request Header + * + * Returns the value of a single member of the headers class member + * + * @param string $index Header name + * @param bool $xss_clean Whether to apply XSS filtering + * @return string|null The requested header on success or NULL on failure + */ + public function get_request_header($index, $xss_clean = FALSE) + { + static $headers; + + if ( ! isset($headers)) + { + empty($this->headers) && $this->request_headers(); + foreach ($this->headers as $key => $value) + { + $headers[strtolower($key)] = $value; + } + } + + $index = strtolower($index); + + if ( ! isset($headers[$index])) + { + return NULL; + } + + return ($xss_clean === TRUE) + ? $this->security->xss_clean($headers[$index]) + : $headers[$index]; + } + + // -------------------------------------------------------------------- + + /** + * Is AJAX request? + * + * Test to see if a request contains the HTTP_X_REQUESTED_WITH header. + * + * @return bool + */ + public function is_ajax_request() + { + return ( ! empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest'); + } + + // -------------------------------------------------------------------- + + /** + * Is CLI request? + * + * Test to see if a request was made from the command line. + * + * @deprecated 3.0.0 Use is_cli() instead + * @return bool + */ + public function is_cli_request() + { + return is_cli(); + } + + // -------------------------------------------------------------------- + + /** + * Get Request Method + * + * Return the request method + * + * @param bool $upper Whether to return in upper or lower case + * (default: FALSE) + * @return string + */ + public function method($upper = FALSE) + { + return ($upper) + ? strtoupper($this->server('REQUEST_METHOD')) + : strtolower($this->server('REQUEST_METHOD')); + } + + // ------------------------------------------------------------------------ + + /** + * Magic __get() + * + * Allows read access to protected properties + * + * @param string $name + * @return mixed + */ + public function __get($name) + { + if ($name === 'raw_input_stream') + { + isset($this->_raw_input_stream) OR $this->_raw_input_stream = file_get_contents('php://input'); + return $this->_raw_input_stream; + } + elseif ($name === 'ip_address') + { + return $this->ip_address; + } + } + +} diff --git a/www/system/core/Lang.php b/www/system/core/Lang.php new file mode 100644 index 0000000..39fdd06 --- /dev/null +++ b/www/system/core/Lang.php @@ -0,0 +1,203 @@ +load($value, $idiom, $return, $add_suffix, $alt_path); + } + + return; + } + + $langfile = str_replace('.php', '', $langfile); + + if ($add_suffix === TRUE) + { + $langfile = preg_replace('/_lang$/', '', $langfile).'_lang'; + } + + $langfile .= '.php'; + + if (empty($idiom) OR ! preg_match('/^[a-z_-]+$/i', $idiom)) + { + $config =& get_config(); + $idiom = empty($config['language']) ? 'english' : $config['language']; + } + + if ($return === FALSE && isset($this->is_loaded[$langfile]) && $this->is_loaded[$langfile] === $idiom) + { + return; + } + + // Load the base file, so any others found can override it + $basepath = BASEPATH.'language/'.$idiom.'/'.$langfile; + if (($found = file_exists($basepath)) === TRUE) + { + include($basepath); + } + + // Do we have an alternative path to look in? + if ($alt_path !== '') + { + $alt_path .= 'language/'.$idiom.'/'.$langfile; + if (file_exists($alt_path)) + { + include($alt_path); + $found = TRUE; + } + } + else + { + foreach (get_instance()->load->get_package_paths(TRUE) as $package_path) + { + $package_path .= 'language/'.$idiom.'/'.$langfile; + if ($basepath !== $package_path && file_exists($package_path)) + { + include($package_path); + $found = TRUE; + break; + } + } + } + + if ($found !== TRUE) + { + show_error('Unable to load the requested language file: language/'.$idiom.'/'.$langfile); + } + + if ( ! isset($lang) OR ! is_array($lang)) + { + log_message('error', 'Language file contains no data: language/'.$idiom.'/'.$langfile); + + if ($return === TRUE) + { + return array(); + } + return; + } + + if ($return === TRUE) + { + return $lang; + } + + $this->is_loaded[$langfile] = $idiom; + $this->language = array_merge($this->language, $lang); + + log_message('info', 'Language file loaded: language/'.$idiom.'/'.$langfile); + return TRUE; + } + + // -------------------------------------------------------------------- + + /** + * Language line + * + * Fetches a single line of text from the language array + * + * @param string $line Language line key + * @param bool $log_errors Whether to log an error message if the line is not found + * @return string Translation + */ + public function line($line, $log_errors = TRUE) + { + $value = isset($this->language[$line]) ? $this->language[$line] : FALSE; + + // Because killer robots like unicorns! + if ($value === FALSE && $log_errors === TRUE) + { + log_message('error', 'Could not find the language line "'.$line.'"'); + } + + return $value; + } + +} diff --git a/www/system/core/Loader.php b/www/system/core/Loader.php new file mode 100644 index 0000000..c84aff3 --- /dev/null +++ b/www/system/core/Loader.php @@ -0,0 +1,1415 @@ + TRUE); + + /** + * List of paths to load libraries from + * + * @var array + */ + protected $_ci_library_paths = array(APPPATH, BASEPATH); + + /** + * List of paths to load models from + * + * @var array + */ + protected $_ci_model_paths = array(APPPATH); + + /** + * List of paths to load helpers from + * + * @var array + */ + protected $_ci_helper_paths = array(APPPATH, BASEPATH); + + /** + * List of cached variables + * + * @var array + */ + protected $_ci_cached_vars = array(); + + /** + * List of loaded classes + * + * @var array + */ + protected $_ci_classes = array(); + + /** + * List of loaded models + * + * @var array + */ + protected $_ci_models = array(); + + /** + * List of loaded helpers + * + * @var array + */ + protected $_ci_helpers = array(); + + /** + * List of class name mappings + * + * @var array + */ + protected $_ci_varmap = array( + 'unit_test' => 'unit', + 'user_agent' => 'agent' + ); + + // -------------------------------------------------------------------- + + /** + * Class constructor + * + * Sets component load paths, gets the initial output buffering level. + * + * @return void + */ + public function __construct() + { + $this->_ci_ob_level = ob_get_level(); + $this->_ci_classes =& is_loaded(); + + log_message('info', 'Loader Class Initialized'); + } + + // -------------------------------------------------------------------- + + /** + * Initializer + * + * @todo Figure out a way to move this to the constructor + * without breaking *package_path*() methods. + * @uses CI_Loader::_ci_autoloader() + * @used-by CI_Controller::__construct() + * @return void + */ + public function initialize() + { + $this->_ci_autoloader(); + } + + // -------------------------------------------------------------------- + + /** + * Is Loaded + * + * A utility method to test if a class is in the self::$_ci_classes array. + * + * @used-by Mainly used by Form Helper function _get_validation_object(). + * + * @param string $class Class name to check for + * @return string|bool Class object name if loaded or FALSE + */ + public function is_loaded($class) + { + return array_search(ucfirst($class), $this->_ci_classes, TRUE); + } + + // -------------------------------------------------------------------- + + /** + * Library Loader + * + * Loads and instantiates libraries. + * Designed to be called from application controllers. + * + * @param mixed $library Library name + * @param array $params Optional parameters to pass to the library class constructor + * @param string $object_name An optional object name to assign to + * @return object + */ + public function library($library, $params = NULL, $object_name = NULL) + { + if (empty($library)) + { + return $this; + } + elseif (is_array($library)) + { + foreach ($library as $key => $value) + { + if (is_int($key)) + { + $this->library($value, $params); + } + else + { + $this->library($key, $params, $value); + } + } + + return $this; + } + + if ($params !== NULL && ! is_array($params)) + { + $params = NULL; + } + + $this->_ci_load_library($library, $params, $object_name); + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Model Loader + * + * Loads and instantiates models. + * + * @param mixed $model Model name + * @param string $name An optional object name to assign to + * @param bool $db_conn An optional database connection configuration to initialize + * @return object + */ + public function model($model, $name = '', $db_conn = FALSE) + { + if (empty($model)) + { + return $this; + } + elseif (is_array($model)) + { + foreach ($model as $key => $value) + { + is_int($key) ? $this->model($value, '', $db_conn) : $this->model($key, $value, $db_conn); + } + + return $this; + } + + $path = ''; + + // Is the model in a sub-folder? If so, parse out the filename and path. + if (($last_slash = strrpos($model, '/')) !== FALSE) + { + // The path is in front of the last slash + $path = substr($model, 0, ++$last_slash); + + // And the model name behind it + $model = substr($model, $last_slash); + } + + if (empty($name)) + { + $name = $model; + } + + if (in_array($name, $this->_ci_models, TRUE)) + { + return $this; + } + + $CI =& get_instance(); + if (isset($CI->$name)) + { + throw new RuntimeException('The model name you are loading is the name of a resource that is already being used: '.$name); + } + + if ($db_conn !== FALSE && ! class_exists('CI_DB', FALSE)) + { + if ($db_conn === TRUE) + { + $db_conn = ''; + } + + $this->database($db_conn, FALSE, TRUE); + } + + // Note: All of the code under this condition used to be just: + // + // load_class('Model', 'core'); + // + // However, load_class() instantiates classes + // to cache them for later use and that prevents + // MY_Model from being an abstract class and is + // sub-optimal otherwise anyway. + if ( ! class_exists('CI_Model', FALSE)) + { + $app_path = APPPATH.'core'.DIRECTORY_SEPARATOR; + if (file_exists($app_path.'Model.php')) + { + require_once($app_path.'Model.php'); + if ( ! class_exists('CI_Model', FALSE)) + { + throw new RuntimeException($app_path."Model.php exists, but doesn't declare class CI_Model"); + } + + log_message('info', 'CI_Model class loaded'); + } + elseif ( ! class_exists('CI_Model', FALSE)) + { + require_once(BASEPATH.'core'.DIRECTORY_SEPARATOR.'Model.php'); + } + + $class = config_item('subclass_prefix').'Model'; + if (file_exists($app_path.$class.'.php')) + { + require_once($app_path.$class.'.php'); + if ( ! class_exists($class, FALSE)) + { + throw new RuntimeException($app_path.$class.".php exists, but doesn't declare class ".$class); + } + + log_message('info', config_item('subclass_prefix').'Model class loaded'); + } + } + + $model = ucfirst($model); + if ( ! class_exists($model, FALSE)) + { + foreach ($this->_ci_model_paths as $mod_path) + { + if ( ! file_exists($mod_path.'models/'.$path.$model.'.php')) + { + continue; + } + + require_once($mod_path.'models/'.$path.$model.'.php'); + if ( ! class_exists($model, FALSE)) + { + throw new RuntimeException($mod_path."models/".$path.$model.".php exists, but doesn't declare class ".$model); + } + + break; + } + + if ( ! class_exists($model, FALSE)) + { + throw new RuntimeException('Unable to locate the model you have specified: '.$model); + } + } + elseif ( ! is_subclass_of($model, 'CI_Model')) + { + throw new RuntimeException("Class ".$model." already exists and doesn't extend CI_Model"); + } + + $this->_ci_models[] = $name; + $model = new $model(); + $CI->$name = $model; + log_message('info', 'Model "'.get_class($model).'" initialized'); + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Database Loader + * + * @param mixed $params Database configuration options + * @param bool $return Whether to return the database object + * @param bool $query_builder Whether to enable Query Builder + * (overrides the configuration setting) + * + * @return object|bool Database object if $return is set to TRUE, + * FALSE on failure, CI_Loader instance in any other case + */ + public function database($params = '', $return = FALSE, $query_builder = NULL) + { + // Grab the super object + $CI =& get_instance(); + + // Do we even need to load the database class? + if ($return === FALSE && $query_builder === NULL && isset($CI->db) && is_object($CI->db) && ! empty($CI->db->conn_id)) + { + return FALSE; + } + + require_once(BASEPATH.'database/DB.php'); + + if ($return === TRUE) + { + return DB($params, $query_builder); + } + + // Initialize the db variable. Needed to prevent + // reference errors with some configurations + $CI->db = ''; + + // Load the DB class + $CI->db =& DB($params, $query_builder); + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Load the Database Utilities Class + * + * @param object $db Database object + * @param bool $return Whether to return the DB Utilities class object or not + * @return object + */ + public function dbutil($db = NULL, $return = FALSE) + { + $CI =& get_instance(); + + if ( ! is_object($db) OR ! ($db instanceof CI_DB)) + { + class_exists('CI_DB', FALSE) OR $this->database(); + $db =& $CI->db; + } + + require_once(BASEPATH.'database/DB_utility.php'); + require_once(BASEPATH.'database/drivers/'.$db->dbdriver.'/'.$db->dbdriver.'_utility.php'); + $class = 'CI_DB_'.$db->dbdriver.'_utility'; + + if ($return === TRUE) + { + return new $class($db); + } + + $CI->dbutil = new $class($db); + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Load the Database Forge Class + * + * @param object $db Database object + * @param bool $return Whether to return the DB Forge class object or not + * @return object + */ + public function dbforge($db = NULL, $return = FALSE) + { + $CI =& get_instance(); + if ( ! is_object($db) OR ! ($db instanceof CI_DB)) + { + class_exists('CI_DB', FALSE) OR $this->database(); + $db =& $CI->db; + } + + require_once(BASEPATH.'database/DB_forge.php'); + require_once(BASEPATH.'database/drivers/'.$db->dbdriver.'/'.$db->dbdriver.'_forge.php'); + + if ( ! empty($db->subdriver)) + { + $driver_path = BASEPATH.'database/drivers/'.$db->dbdriver.'/subdrivers/'.$db->dbdriver.'_'.$db->subdriver.'_forge.php'; + if (file_exists($driver_path)) + { + require_once($driver_path); + $class = 'CI_DB_'.$db->dbdriver.'_'.$db->subdriver.'_forge'; + } + } + else + { + $class = 'CI_DB_'.$db->dbdriver.'_forge'; + } + + if ($return === TRUE) + { + return new $class($db); + } + + $CI->dbforge = new $class($db); + return $this; + } + + // -------------------------------------------------------------------- + + /** + * View Loader + * + * Loads "view" files. + * + * @param string $view View name + * @param array $vars An associative array of data + * to be extracted for use in the view + * @param bool $return Whether to return the view output + * or leave it to the Output class + * @return object|string + */ + public function view($view, $vars = array(), $return = FALSE) + { + return $this->_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_prepare_view_vars($vars), '_ci_return' => $return)); + } + + // -------------------------------------------------------------------- + + /** + * Generic File Loader + * + * @param string $path File path + * @param bool $return Whether to return the file output + * @return object|string + */ + public function file($path, $return = FALSE) + { + return $this->_ci_load(array('_ci_path' => $path, '_ci_return' => $return)); + } + + // -------------------------------------------------------------------- + + /** + * Set Variables + * + * Once variables are set they become available within + * the controller class and its "view" files. + * + * @param array|object|string $vars + * An associative array or object containing values + * to be set, or a value's name if string + * @param string $val Value to set, only used if $vars is a string + * @return object + */ + public function vars($vars, $val = '') + { + $vars = is_string($vars) + ? array($vars => $val) + : $this->_ci_prepare_view_vars($vars); + + foreach ($vars as $key => $val) + { + $this->_ci_cached_vars[$key] = $val; + } + + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Clear Cached Variables + * + * Clears the cached variables. + * + * @return CI_Loader + */ + public function clear_vars() + { + $this->_ci_cached_vars = array(); + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Get Variable + * + * Check if a variable is set and retrieve it. + * + * @param string $key Variable name + * @return mixed The variable or NULL if not found + */ + public function get_var($key) + { + return isset($this->_ci_cached_vars[$key]) ? $this->_ci_cached_vars[$key] : NULL; + } + + // -------------------------------------------------------------------- + + /** + * Get Variables + * + * Retrieves all loaded variables. + * + * @return array + */ + public function get_vars() + { + return $this->_ci_cached_vars; + } + + // -------------------------------------------------------------------- + + /** + * Helper Loader + * + * @param string|string[] $helpers Helper name(s) + * @return object + */ + public function helper($helpers = array()) + { + is_array($helpers) OR $helpers = array($helpers); + foreach ($helpers as &$helper) + { + $filename = basename($helper); + $filepath = ($filename === $helper) ? '' : substr($helper, 0, strlen($helper) - strlen($filename)); + $filename = strtolower(preg_replace('#(_helper)?(\.php)?$#i', '', $filename)).'_helper'; + $helper = $filepath.$filename; + + if (isset($this->_ci_helpers[$helper])) + { + continue; + } + + // Is this a helper extension request? + $ext_helper = config_item('subclass_prefix').$filename; + $ext_loaded = FALSE; + foreach ($this->_ci_helper_paths as $path) + { + if (file_exists($path.'helpers/'.$ext_helper.'.php')) + { + include_once($path.'helpers/'.$ext_helper.'.php'); + $ext_loaded = TRUE; + } + } + + // If we have loaded extensions - check if the base one is here + if ($ext_loaded === TRUE) + { + $base_helper = BASEPATH.'helpers/'.$helper.'.php'; + if ( ! file_exists($base_helper)) + { + show_error('Unable to load the requested file: helpers/'.$helper.'.php'); + } + + include_once($base_helper); + $this->_ci_helpers[$helper] = TRUE; + log_message('info', 'Helper loaded: '.$helper); + continue; + } + + // No extensions found ... try loading regular helpers and/or overrides + foreach ($this->_ci_helper_paths as $path) + { + if (file_exists($path.'helpers/'.$helper.'.php')) + { + include_once($path.'helpers/'.$helper.'.php'); + + $this->_ci_helpers[$helper] = TRUE; + log_message('info', 'Helper loaded: '.$helper); + break; + } + } + + // unable to load the helper + if ( ! isset($this->_ci_helpers[$helper])) + { + show_error('Unable to load the requested file: helpers/'.$helper.'.php'); + } + } + + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Load Helpers + * + * An alias for the helper() method in case the developer has + * written the plural form of it. + * + * @uses CI_Loader::helper() + * @param string|string[] $helpers Helper name(s) + * @return object + */ + public function helpers($helpers = array()) + { + return $this->helper($helpers); + } + + // -------------------------------------------------------------------- + + /** + * Language Loader + * + * Loads language files. + * + * @param string|string[] $files List of language file names to load + * @param string Language name + * @return object + */ + public function language($files, $lang = '') + { + get_instance()->lang->load($files, $lang); + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Config Loader + * + * Loads a config file (an alias for CI_Config::load()). + * + * @uses CI_Config::load() + * @param string $file Configuration file name + * @param bool $use_sections Whether configuration values should be loaded into their own section + * @param bool $fail_gracefully Whether to just return FALSE or display an error message + * @return bool TRUE if the file was loaded correctly or FALSE on failure + */ + public function config($file, $use_sections = FALSE, $fail_gracefully = FALSE) + { + return get_instance()->config->load($file, $use_sections, $fail_gracefully); + } + + // -------------------------------------------------------------------- + + /** + * Driver Loader + * + * Loads a driver library. + * + * @param string|string[] $library Driver name(s) + * @param array $params Optional parameters to pass to the driver + * @param string $object_name An optional object name to assign to + * + * @return object|bool Object or FALSE on failure if $library is a string + * and $object_name is set. CI_Loader instance otherwise. + */ + public function driver($library, $params = NULL, $object_name = NULL) + { + if (is_array($library)) + { + foreach ($library as $key => $value) + { + if (is_int($key)) + { + $this->driver($value, $params); + } + else + { + $this->driver($key, $params, $value); + } + } + + return $this; + } + elseif (empty($library)) + { + return FALSE; + } + + if ( ! class_exists('CI_Driver_Library', FALSE)) + { + // We aren't instantiating an object here, just making the base class available + require BASEPATH.'libraries/Driver.php'; + } + + // We can save the loader some time since Drivers will *always* be in a subfolder, + // and typically identically named to the library + if ( ! strpos($library, '/')) + { + $library = ucfirst($library).'/'.$library; + } + + return $this->library($library, $params, $object_name); + } + + // -------------------------------------------------------------------- + + /** + * Add Package Path + * + * Prepends a parent path to the library, model, helper and config + * path arrays. + * + * @see CI_Loader::$_ci_library_paths + * @see CI_Loader::$_ci_model_paths + * @see CI_Loader::$_ci_helper_paths + * @see CI_Config::$_config_paths + * + * @param string $path Path to add + * @param bool $view_cascade (default: TRUE) + * @return object + */ + public function add_package_path($path, $view_cascade = TRUE) + { + $path = rtrim($path, '/').'/'; + + array_unshift($this->_ci_library_paths, $path); + array_unshift($this->_ci_model_paths, $path); + array_unshift($this->_ci_helper_paths, $path); + + $this->_ci_view_paths = array($path.'views/' => $view_cascade) + $this->_ci_view_paths; + + // Add config file path + $config =& $this->_ci_get_component('config'); + $config->_config_paths[] = $path; + + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Get Package Paths + * + * Return a list of all package paths. + * + * @param bool $include_base Whether to include BASEPATH (default: FALSE) + * @return array + */ + public function get_package_paths($include_base = FALSE) + { + return ($include_base === TRUE) ? $this->_ci_library_paths : $this->_ci_model_paths; + } + + // -------------------------------------------------------------------- + + /** + * Remove Package Path + * + * Remove a path from the library, model, helper and/or config + * path arrays if it exists. If no path is provided, the most recently + * added path will be removed removed. + * + * @param string $path Path to remove + * @return object + */ + public function remove_package_path($path = '') + { + $config =& $this->_ci_get_component('config'); + + if ($path === '') + { + array_shift($this->_ci_library_paths); + array_shift($this->_ci_model_paths); + array_shift($this->_ci_helper_paths); + array_shift($this->_ci_view_paths); + array_pop($config->_config_paths); + } + else + { + $path = rtrim($path, '/').'/'; + foreach (array('_ci_library_paths', '_ci_model_paths', '_ci_helper_paths') as $var) + { + if (($key = array_search($path, $this->{$var})) !== FALSE) + { + unset($this->{$var}[$key]); + } + } + + if (isset($this->_ci_view_paths[$path.'views/'])) + { + unset($this->_ci_view_paths[$path.'views/']); + } + + if (($key = array_search($path, $config->_config_paths)) !== FALSE) + { + unset($config->_config_paths[$key]); + } + } + + // make sure the application default paths are still in the array + $this->_ci_library_paths = array_unique(array_merge($this->_ci_library_paths, array(APPPATH, BASEPATH))); + $this->_ci_helper_paths = array_unique(array_merge($this->_ci_helper_paths, array(APPPATH, BASEPATH))); + $this->_ci_model_paths = array_unique(array_merge($this->_ci_model_paths, array(APPPATH))); + $this->_ci_view_paths = array_merge($this->_ci_view_paths, array(APPPATH.'views/' => TRUE)); + $config->_config_paths = array_unique(array_merge($config->_config_paths, array(APPPATH))); + + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Internal CI Data Loader + * + * Used to load views and files. + * + * Variables are prefixed with _ci_ to avoid symbol collision with + * variables made available to view files. + * + * @used-by CI_Loader::view() + * @used-by CI_Loader::file() + * @param array $_ci_data Data to load + * @return object + */ + protected function _ci_load($_ci_data) + { + // Set the default data variables + foreach (array('_ci_view', '_ci_vars', '_ci_path', '_ci_return') as $_ci_val) + { + $$_ci_val = isset($_ci_data[$_ci_val]) ? $_ci_data[$_ci_val] : FALSE; + } + + $file_exists = FALSE; + + // Set the path to the requested file + if (is_string($_ci_path) && $_ci_path !== '') + { + $_ci_x = explode('/', $_ci_path); + $_ci_file = end($_ci_x); + } + else + { + $_ci_ext = pathinfo($_ci_view, PATHINFO_EXTENSION); + $_ci_file = ($_ci_ext === '') ? $_ci_view.'.php' : $_ci_view; + + foreach ($this->_ci_view_paths as $_ci_view_file => $cascade) + { + if (file_exists($_ci_view_file.$_ci_file)) + { + $_ci_path = $_ci_view_file.$_ci_file; + $file_exists = TRUE; + break; + } + + if ( ! $cascade) + { + break; + } + } + } + + if ( ! $file_exists && ! file_exists($_ci_path)) + { + show_error('Unable to load the requested file: '.$_ci_file); + } + + // This allows anything loaded using $this->load (views, files, etc.) + // to become accessible from within the Controller and Model functions. + $_ci_CI =& get_instance(); + foreach (get_object_vars($_ci_CI) as $_ci_key => $_ci_var) + { + if ( ! isset($this->$_ci_key)) + { + $this->$_ci_key =& $_ci_CI->$_ci_key; + } + } + + /* + * Extract and cache variables + * + * You can either set variables using the dedicated $this->load->vars() + * function or via the second parameter of this function. We'll merge + * the two types and cache them so that views that are embedded within + * other views can have access to these variables. + */ + empty($_ci_vars) OR $this->_ci_cached_vars = array_merge($this->_ci_cached_vars, $_ci_vars); + extract($this->_ci_cached_vars); + + /* + * Buffer the output + * + * We buffer the output for two reasons: + * 1. Speed. You get a significant speed boost. + * 2. So that the final rendered template can be post-processed by + * the output class. Why do we need post processing? For one thing, + * in order to show the elapsed page load time. Unless we can + * intercept the content right before it's sent to the browser and + * then stop the timer it won't be accurate. + */ + ob_start(); + + // If the PHP installation does not support short tags we'll + // do a little string replacement, changing the short tags + // to standard PHP echo statements. + if ( ! is_php('5.4') && ! ini_get('short_open_tag') && config_item('rewrite_short_tags') === TRUE) + { + echo eval('?>'.preg_replace('/;*\s*\?>/', '; ?>', str_replace(' $this->_ci_ob_level + 1) + { + ob_end_flush(); + } + else + { + $_ci_CI->output->append_output(ob_get_contents()); + @ob_end_clean(); + } + + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Internal CI Library Loader + * + * @used-by CI_Loader::library() + * @uses CI_Loader::_ci_init_library() + * + * @param string $class Class name to load + * @param mixed $params Optional parameters to pass to the class constructor + * @param string $object_name Optional object name to assign to + * @return void + */ + protected function _ci_load_library($class, $params = NULL, $object_name = NULL) + { + // Get the class name, and while we're at it trim any slashes. + // The directory path can be included as part of the class name, + // but we don't want a leading slash + $class = str_replace('.php', '', trim($class, '/')); + + // Was the path included with the class name? + // We look for a slash to determine this + if (($last_slash = strrpos($class, '/')) !== FALSE) + { + // Extract the path + $subdir = substr($class, 0, ++$last_slash); + + // Get the filename from the path + $class = substr($class, $last_slash); + } + else + { + $subdir = ''; + } + + $class = ucfirst($class); + + // Is this a stock library? There are a few special conditions if so ... + if (file_exists(BASEPATH.'libraries/'.$subdir.$class.'.php')) + { + return $this->_ci_load_stock_library($class, $subdir, $params, $object_name); + } + + // Safety: Was the class already loaded by a previous call? + if (class_exists($class, FALSE)) + { + $property = $object_name; + if (empty($property)) + { + $property = strtolower($class); + isset($this->_ci_varmap[$property]) && $property = $this->_ci_varmap[$property]; + } + + $CI =& get_instance(); + if (isset($CI->$property)) + { + log_message('debug', $class.' class already loaded. Second attempt ignored.'); + return; + } + + return $this->_ci_init_library($class, '', $params, $object_name); + } + + // Let's search for the requested library file and load it. + foreach ($this->_ci_library_paths as $path) + { + // BASEPATH has already been checked for + if ($path === BASEPATH) + { + continue; + } + + $filepath = $path.'libraries/'.$subdir.$class.'.php'; + // Does the file exist? No? Bummer... + if ( ! file_exists($filepath)) + { + continue; + } + + include_once($filepath); + return $this->_ci_init_library($class, '', $params, $object_name); + } + + // One last attempt. Maybe the library is in a subdirectory, but it wasn't specified? + if ($subdir === '') + { + return $this->_ci_load_library($class.'/'.$class, $params, $object_name); + } + + // If we got this far we were unable to find the requested class. + log_message('error', 'Unable to load the requested class: '.$class); + show_error('Unable to load the requested class: '.$class); + } + + // -------------------------------------------------------------------- + + /** + * Internal CI Stock Library Loader + * + * @used-by CI_Loader::_ci_load_library() + * @uses CI_Loader::_ci_init_library() + * + * @param string $library_name Library name to load + * @param string $file_path Path to the library filename, relative to libraries/ + * @param mixed $params Optional parameters to pass to the class constructor + * @param string $object_name Optional object name to assign to + * @return void + */ + protected function _ci_load_stock_library($library_name, $file_path, $params, $object_name) + { + $prefix = 'CI_'; + + if (class_exists($prefix.$library_name, FALSE)) + { + if (class_exists(config_item('subclass_prefix').$library_name, FALSE)) + { + $prefix = config_item('subclass_prefix'); + } + + $property = $object_name; + if (empty($property)) + { + $property = strtolower($library_name); + isset($this->_ci_varmap[$property]) && $property = $this->_ci_varmap[$property]; + } + + $CI =& get_instance(); + if ( ! isset($CI->$property)) + { + return $this->_ci_init_library($library_name, $prefix, $params, $object_name); + } + + log_message('debug', $library_name.' class already loaded. Second attempt ignored.'); + return; + } + + $paths = $this->_ci_library_paths; + array_pop($paths); // BASEPATH + array_pop($paths); // APPPATH (needs to be the first path checked) + array_unshift($paths, APPPATH); + + foreach ($paths as $path) + { + if (file_exists($path = $path.'libraries/'.$file_path.$library_name.'.php')) + { + // Override + include_once($path); + if (class_exists($prefix.$library_name, FALSE)) + { + return $this->_ci_init_library($library_name, $prefix, $params, $object_name); + } + + log_message('debug', $path.' exists, but does not declare '.$prefix.$library_name); + } + } + + include_once(BASEPATH.'libraries/'.$file_path.$library_name.'.php'); + + // Check for extensions + $subclass = config_item('subclass_prefix').$library_name; + foreach ($paths as $path) + { + if (file_exists($path = $path.'libraries/'.$file_path.$subclass.'.php')) + { + include_once($path); + if (class_exists($subclass, FALSE)) + { + $prefix = config_item('subclass_prefix'); + break; + } + + log_message('debug', $path.' exists, but does not declare '.$subclass); + } + } + + return $this->_ci_init_library($library_name, $prefix, $params, $object_name); + } + + // -------------------------------------------------------------------- + + /** + * Internal CI Library Instantiator + * + * @used-by CI_Loader::_ci_load_stock_library() + * @used-by CI_Loader::_ci_load_library() + * + * @param string $class Class name + * @param string $prefix Class name prefix + * @param array|null|bool $config Optional configuration to pass to the class constructor: + * FALSE to skip; + * NULL to search in config paths; + * array containing configuration data + * @param string $object_name Optional object name to assign to + * @return void + */ + protected function _ci_init_library($class, $prefix, $config = FALSE, $object_name = NULL) + { + // Is there an associated config file for this class? Note: these should always be lowercase + if ($config === NULL) + { + // Fetch the config paths containing any package paths + $config_component = $this->_ci_get_component('config'); + + if (is_array($config_component->_config_paths)) + { + $found = FALSE; + foreach ($config_component->_config_paths as $path) + { + // We test for both uppercase and lowercase, for servers that + // are case-sensitive with regard to file names. Load global first, + // override with environment next + if (file_exists($path.'config/'.strtolower($class).'.php')) + { + include($path.'config/'.strtolower($class).'.php'); + $found = TRUE; + } + elseif (file_exists($path.'config/'.ucfirst(strtolower($class)).'.php')) + { + include($path.'config/'.ucfirst(strtolower($class)).'.php'); + $found = TRUE; + } + + if (file_exists($path.'config/'.ENVIRONMENT.'/'.strtolower($class).'.php')) + { + include($path.'config/'.ENVIRONMENT.'/'.strtolower($class).'.php'); + $found = TRUE; + } + elseif (file_exists($path.'config/'.ENVIRONMENT.'/'.ucfirst(strtolower($class)).'.php')) + { + include($path.'config/'.ENVIRONMENT.'/'.ucfirst(strtolower($class)).'.php'); + $found = TRUE; + } + + // Break on the first found configuration, thus package + // files are not overridden by default paths + if ($found === TRUE) + { + break; + } + } + } + } + + $class_name = $prefix.$class; + + // Is the class name valid? + if ( ! class_exists($class_name, FALSE)) + { + log_message('error', 'Non-existent class: '.$class_name); + show_error('Non-existent class: '.$class_name); + } + + // Set the variable name we will assign the class to + // Was a custom class name supplied? If so we'll use it + if (empty($object_name)) + { + $object_name = strtolower($class); + if (isset($this->_ci_varmap[$object_name])) + { + $object_name = $this->_ci_varmap[$object_name]; + } + } + + // Don't overwrite existing properties + $CI =& get_instance(); + if (isset($CI->$object_name)) + { + if ($CI->$object_name instanceof $class_name) + { + log_message('debug', $class_name." has already been instantiated as '".$object_name."'. Second attempt aborted."); + return; + } + + show_error("Resource '".$object_name."' already exists and is not a ".$class_name." instance."); + } + + // Save the class name and object name + $this->_ci_classes[$object_name] = $class; + + // Instantiate the class + $CI->$object_name = isset($config) + ? new $class_name($config) + : new $class_name(); + } + + // -------------------------------------------------------------------- + + /** + * CI Autoloader + * + * Loads component listed in the config/autoload.php file. + * + * @used-by CI_Loader::initialize() + * @return void + */ + protected function _ci_autoloader() + { + if (file_exists(APPPATH.'config/autoload.php')) + { + include(APPPATH.'config/autoload.php'); + } + + if (file_exists(APPPATH.'config/'.ENVIRONMENT.'/autoload.php')) + { + include(APPPATH.'config/'.ENVIRONMENT.'/autoload.php'); + } + + if ( ! isset($autoload)) + { + return; + } + + // Autoload packages + if (isset($autoload['packages'])) + { + foreach ($autoload['packages'] as $package_path) + { + $this->add_package_path($package_path); + } + } + + // Load any custom config file + if (count($autoload['config']) > 0) + { + foreach ($autoload['config'] as $val) + { + $this->config($val); + } + } + + // Autoload helpers and languages + foreach (array('helper', 'language') as $type) + { + if (isset($autoload[$type]) && count($autoload[$type]) > 0) + { + $this->$type($autoload[$type]); + } + } + + // Autoload drivers + if (isset($autoload['drivers'])) + { + $this->driver($autoload['drivers']); + } + + // Load libraries + if (isset($autoload['libraries']) && count($autoload['libraries']) > 0) + { + // Load the database driver. + if (in_array('database', $autoload['libraries'])) + { + $this->database(); + $autoload['libraries'] = array_diff($autoload['libraries'], array('database')); + } + + // Load all other libraries + $this->library($autoload['libraries']); + } + + // Autoload models + if (isset($autoload['model'])) + { + $this->model($autoload['model']); + } + } + + // -------------------------------------------------------------------- + + /** + * Prepare variables for _ci_vars, to be later extract()-ed inside views + * + * Converts objects to associative arrays and filters-out internal + * variable names (i.e. keys prefixed with '_ci_'). + * + * @param mixed $vars + * @return array + */ + protected function _ci_prepare_view_vars($vars) + { + if ( ! is_array($vars)) + { + $vars = is_object($vars) + ? get_object_vars($vars) + : array(); + } + + foreach (array_keys($vars) as $key) + { + if (strncmp($key, '_ci_', 4) === 0) + { + unset($vars[$key]); + } + } + + return $vars; + } + + // -------------------------------------------------------------------- + + /** + * CI Component getter + * + * Get a reference to a specific library or model. + * + * @param string $component Component name + * @return bool + */ + protected function &_ci_get_component($component) + { + $CI =& get_instance(); + return $CI->$component; + } +} diff --git a/www/system/core/Log.php b/www/system/core/Log.php new file mode 100644 index 0000000..a2b464c --- /dev/null +++ b/www/system/core/Log.php @@ -0,0 +1,296 @@ + 1, 'DEBUG' => 2, 'INFO' => 3, 'ALL' => 4); + + /** + * mbstring.func_overload flag + * + * @var bool + */ + protected static $func_overload; + + // -------------------------------------------------------------------- + + /** + * Class constructor + * + * @return void + */ + public function __construct() + { + $config =& get_config(); + + isset(self::$func_overload) OR self::$func_overload = (extension_loaded('mbstring') && ini_get('mbstring.func_overload')); + + $this->_log_path = ($config['log_path'] !== '') ? $config['log_path'] : APPPATH.'logs/'; + $this->_file_ext = (isset($config['log_file_extension']) && $config['log_file_extension'] !== '') + ? ltrim($config['log_file_extension'], '.') : 'php'; + + file_exists($this->_log_path) OR mkdir($this->_log_path, 0755, TRUE); + + if ( ! is_dir($this->_log_path) OR ! is_really_writable($this->_log_path)) + { + $this->_enabled = FALSE; + } + + if (is_numeric($config['log_threshold'])) + { + $this->_threshold = (int) $config['log_threshold']; + } + elseif (is_array($config['log_threshold'])) + { + $this->_threshold = 0; + $this->_threshold_array = array_flip($config['log_threshold']); + } + + if ( ! empty($config['log_date_format'])) + { + $this->_date_fmt = $config['log_date_format']; + } + + if ( ! empty($config['log_file_permissions']) && is_int($config['log_file_permissions'])) + { + $this->_file_permissions = $config['log_file_permissions']; + } + } + + // -------------------------------------------------------------------- + + /** + * Write Log File + * + * Generally this function will be called using the global log_message() function + * + * @param string $level The error level: 'error', 'debug' or 'info' + * @param string $msg The error message + * @return bool + */ + public function write_log($level, $msg) + { + if ($this->_enabled === FALSE) + { + return FALSE; + } + + $level = strtoupper($level); + + if (( ! isset($this->_levels[$level]) OR ($this->_levels[$level] > $this->_threshold)) + && ! isset($this->_threshold_array[$this->_levels[$level]])) + { + return FALSE; + } + + $filepath = $this->_log_path.'log-'.date('Y-m-d').'.'.$this->_file_ext; + $message = ''; + + if ( ! file_exists($filepath)) + { + $newfile = TRUE; + // Only add protection to php files + if ($this->_file_ext === 'php') + { + $message .= "\n\n"; + } + } + + if ( ! $fp = @fopen($filepath, 'ab')) + { + return FALSE; + } + + flock($fp, LOCK_EX); + + // Instantiating DateTime with microseconds appended to initial date is needed for proper support of this format + if (strpos($this->_date_fmt, 'u') !== FALSE) + { + $microtime_full = microtime(TRUE); + $microtime_short = sprintf("%06d", ($microtime_full - floor($microtime_full)) * 1000000); + $date = new DateTime(date('Y-m-d H:i:s.'.$microtime_short, $microtime_full)); + $date = $date->format($this->_date_fmt); + } + else + { + $date = date($this->_date_fmt); + } + + $message .= $this->_format_line($level, $date, $msg); + + for ($written = 0, $length = self::strlen($message); $written < $length; $written += $result) + { + if (($result = fwrite($fp, self::substr($message, $written))) === FALSE) + { + break; + } + } + + flock($fp, LOCK_UN); + fclose($fp); + + if (isset($newfile) && $newfile === TRUE) + { + chmod($filepath, $this->_file_permissions); + } + + return is_int($result); + } + + // -------------------------------------------------------------------- + + /** + * Format the log line. + * + * This is for extensibility of log formatting + * If you want to change the log format, extend the CI_Log class and override this method + * + * @param string $level The error level + * @param string $date Formatted date string + * @param string $message The log message + * @return string Formatted log line with a new line character '\n' at the end + */ + protected function _format_line($level, $date, $message) + { + return $level.' - '.$date.' --> '.$message."\n"; + } + + // -------------------------------------------------------------------- + + /** + * Byte-safe strlen() + * + * @param string $str + * @return int + */ + protected static function strlen($str) + { + return (self::$func_overload) + ? mb_strlen($str, '8bit') + : strlen($str); + } + + // -------------------------------------------------------------------- + + /** + * Byte-safe substr() + * + * @param string $str + * @param int $start + * @param int $length + * @return string + */ + protected static function substr($str, $start, $length = NULL) + { + if (self::$func_overload) + { + // mb_substr($str, $start, null, '8bit') returns an empty + // string on PHP 5.3 + isset($length) OR $length = ($start >= 0 ? self::strlen($str) - $start : -$start); + return mb_substr($str, $start, $length, '8bit'); + } + + return isset($length) + ? substr($str, $start, $length) + : substr($str, $start); + } +} diff --git a/www/system/core/Model.php b/www/system/core/Model.php new file mode 100644 index 0000000..dd11dd2 --- /dev/null +++ b/www/system/core/Model.php @@ -0,0 +1,76 @@ +$key; + } + +} diff --git a/www/system/core/Output.php b/www/system/core/Output.php new file mode 100644 index 0000000..3cda062 --- /dev/null +++ b/www/system/core/Output.php @@ -0,0 +1,842 @@ +_zlib_oc = (bool) ini_get('zlib.output_compression'); + $this->_compress_output = ( + $this->_zlib_oc === FALSE + && config_item('compress_output') === TRUE + && extension_loaded('zlib') + ); + + isset(self::$func_overload) OR self::$func_overload = (extension_loaded('mbstring') && ini_get('mbstring.func_overload')); + + // Get mime types for later + $this->mimes =& get_mimes(); + + log_message('info', 'Output Class Initialized'); + } + + // -------------------------------------------------------------------- + + /** + * Get Output + * + * Returns the current output string. + * + * @return string + */ + public function get_output() + { + return $this->final_output; + } + + // -------------------------------------------------------------------- + + /** + * Set Output + * + * Sets the output string. + * + * @param string $output Output data + * @return CI_Output + */ + public function set_output($output) + { + $this->final_output = $output; + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Append Output + * + * Appends data onto the output string. + * + * @param string $output Data to append + * @return CI_Output + */ + public function append_output($output) + { + $this->final_output .= $output; + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Set Header + * + * Lets you set a server header which will be sent with the final output. + * + * Note: If a file is cached, headers will not be sent. + * @todo We need to figure out how to permit headers to be cached. + * + * @param string $header Header + * @param bool $replace Whether to replace the old header value, if already set + * @return CI_Output + */ + public function set_header($header, $replace = TRUE) + { + // If zlib.output_compression is enabled it will compress the output, + // but it will not modify the content-length header to compensate for + // the reduction, causing the browser to hang waiting for more data. + // We'll just skip content-length in those cases. + if ($this->_zlib_oc && strncasecmp($header, 'content-length', 14) === 0) + { + return $this; + } + + $this->headers[] = array($header, $replace); + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Set Content-Type Header + * + * @param string $mime_type Extension of the file we're outputting + * @param string $charset Character set (default: NULL) + * @return CI_Output + */ + public function set_content_type($mime_type, $charset = NULL) + { + if (strpos($mime_type, '/') === FALSE) + { + $extension = ltrim($mime_type, '.'); + + // Is this extension supported? + if (isset($this->mimes[$extension])) + { + $mime_type =& $this->mimes[$extension]; + + if (is_array($mime_type)) + { + $mime_type = current($mime_type); + } + } + } + + $this->mime_type = $mime_type; + + if (empty($charset)) + { + $charset = config_item('charset'); + } + + $header = 'Content-Type: '.$mime_type + .(empty($charset) ? '' : '; charset='.$charset); + + $this->headers[] = array($header, TRUE); + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Get Current Content-Type Header + * + * @return string 'text/html', if not already set + */ + public function get_content_type() + { + for ($i = 0, $c = count($this->headers); $i < $c; $i++) + { + if (sscanf($this->headers[$i][0], 'Content-Type: %[^;]', $content_type) === 1) + { + return $content_type; + } + } + + return 'text/html'; + } + + // -------------------------------------------------------------------- + + /** + * Get Header + * + * @param string $header + * @return string + */ + public function get_header($header) + { + // Combine headers already sent with our batched headers + $headers = array_merge( + // We only need [x][0] from our multi-dimensional array + array_map('array_shift', $this->headers), + headers_list() + ); + + if (empty($headers) OR empty($header)) + { + return NULL; + } + + // Count backwards, in order to get the last matching header + for ($c = count($headers) - 1; $c > -1; $c--) + { + if (strncasecmp($header, $headers[$c], $l = self::strlen($header)) === 0) + { + return trim(self::substr($headers[$c], $l+1)); + } + } + + return NULL; + } + + // -------------------------------------------------------------------- + + /** + * Set HTTP Status Header + * + * As of version 1.7.2, this is an alias for common function + * set_status_header(). + * + * @param int $code Status code (default: 200) + * @param string $text Optional message + * @return CI_Output + */ + public function set_status_header($code = 200, $text = '') + { + set_status_header($code, $text); + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Enable/disable Profiler + * + * @param bool $val TRUE to enable or FALSE to disable + * @return CI_Output + */ + public function enable_profiler($val = TRUE) + { + $this->enable_profiler = is_bool($val) ? $val : TRUE; + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Set Profiler Sections + * + * Allows override of default/config settings for + * Profiler section display. + * + * @param array $sections Profiler sections + * @return CI_Output + */ + public function set_profiler_sections($sections) + { + if (isset($sections['query_toggle_count'])) + { + $this->_profiler_sections['query_toggle_count'] = (int) $sections['query_toggle_count']; + unset($sections['query_toggle_count']); + } + + foreach ($sections as $section => $enable) + { + $this->_profiler_sections[$section] = ($enable !== FALSE); + } + + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Set Cache + * + * @param int $time Cache expiration time in minutes + * @return CI_Output + */ + public function cache($time) + { + $this->cache_expiration = is_numeric($time) ? $time : 0; + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Display Output + * + * Processes and sends finalized output data to the browser along + * with any server headers and profile data. It also stops benchmark + * timers so the page rendering speed and memory usage can be shown. + * + * Note: All "view" data is automatically put into $this->final_output + * by controller class. + * + * @uses CI_Output::$final_output + * @param string $output Output data override + * @return void + */ + public function _display($output = '') + { + // Note: We use load_class() because we can't use $CI =& get_instance() + // since this function is sometimes called by the caching mechanism, + // which happens before the CI super object is available. + $BM =& load_class('Benchmark', 'core'); + $CFG =& load_class('Config', 'core'); + + // Grab the super object if we can. + if (class_exists('CI_Controller', FALSE)) + { + $CI =& get_instance(); + } + + // -------------------------------------------------------------------- + + // Set the output data + if ($output === '') + { + $output =& $this->final_output; + } + + // -------------------------------------------------------------------- + + // Do we need to write a cache file? Only if the controller does not have its + // own _output() method and we are not dealing with a cache file, which we + // can determine by the existence of the $CI object above + if ($this->cache_expiration > 0 && isset($CI) && ! method_exists($CI, '_output')) + { + $this->_write_cache($output); + } + + // -------------------------------------------------------------------- + + // Parse out the elapsed time and memory usage, + // then swap the pseudo-variables with the data + + $elapsed = $BM->elapsed_time('total_execution_time_start', 'total_execution_time_end'); + + if ($this->parse_exec_vars === TRUE) + { + $memory = round(memory_get_usage() / 1024 / 1024, 2).'MB'; + $output = str_replace(array('{elapsed_time}', '{memory_usage}'), array($elapsed, $memory), $output); + } + + // -------------------------------------------------------------------- + + // Is compression requested? + if (isset($CI) // This means that we're not serving a cache file, if we were, it would already be compressed + && $this->_compress_output === TRUE + && isset($_SERVER['HTTP_ACCEPT_ENCODING']) && strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== FALSE) + { + ob_start('ob_gzhandler'); + } + + // -------------------------------------------------------------------- + + // Are there any server headers to send? + if (count($this->headers) > 0) + { + foreach ($this->headers as $header) + { + @header($header[0], $header[1]); + } + } + + // -------------------------------------------------------------------- + + // Does the $CI object exist? + // If not we know we are dealing with a cache file so we'll + // simply echo out the data and exit. + if ( ! isset($CI)) + { + if ($this->_compress_output === TRUE) + { + if (isset($_SERVER['HTTP_ACCEPT_ENCODING']) && strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== FALSE) + { + header('Content-Encoding: gzip'); + header('Content-Length: '.self::strlen($output)); + } + else + { + // User agent doesn't support gzip compression, + // so we'll have to decompress our cache + $output = gzinflate(self::substr($output, 10, -8)); + } + } + + echo $output; + log_message('info', 'Final output sent to browser'); + log_message('debug', 'Total execution time: '.$elapsed); + return; + } + + // -------------------------------------------------------------------- + + // Do we need to generate profile data? + // If so, load the Profile class and run it. + if ($this->enable_profiler === TRUE) + { + $CI->load->library('profiler'); + if ( ! empty($this->_profiler_sections)) + { + $CI->profiler->set_sections($this->_profiler_sections); + } + + // If the output data contains closing and tags + // we will remove them and add them back after we insert the profile data + $output = preg_replace('|.*?|is', '', $output, -1, $count).$CI->profiler->run(); + if ($count > 0) + { + $output .= ''; + } + } + + // Does the controller contain a function named _output()? + // If so send the output there. Otherwise, echo it. + if (method_exists($CI, '_output')) + { + $CI->_output($output); + } + else + { + echo $output; // Send it to the browser! + } + + log_message('info', 'Final output sent to browser'); + log_message('debug', 'Total execution time: '.$elapsed); + } + + // -------------------------------------------------------------------- + + /** + * Write Cache + * + * @param string $output Output data to cache + * @return void + */ + public function _write_cache($output) + { + $CI =& get_instance(); + $path = $CI->config->item('cache_path'); + $cache_path = ($path === '') ? APPPATH.'cache/' : $path; + + if ( ! is_dir($cache_path) OR ! is_really_writable($cache_path)) + { + log_message('error', 'Unable to write cache file: '.$cache_path); + return; + } + + $uri = $CI->config->item('base_url') + .$CI->config->item('index_page') + .$CI->uri->uri_string(); + + if (($cache_query_string = $CI->config->item('cache_query_string')) && ! empty($_SERVER['QUERY_STRING'])) + { + if (is_array($cache_query_string)) + { + $uri .= '?'.http_build_query(array_intersect_key($_GET, array_flip($cache_query_string))); + } + else + { + $uri .= '?'.$_SERVER['QUERY_STRING']; + } + } + + $cache_path .= md5($uri); + + if ( ! $fp = @fopen($cache_path, 'w+b')) + { + log_message('error', 'Unable to write cache file: '.$cache_path); + return; + } + + if ( ! flock($fp, LOCK_EX)) + { + log_message('error', 'Unable to secure a file lock for file at: '.$cache_path); + fclose($fp); + return; + } + + // If output compression is enabled, compress the cache + // itself, so that we don't have to do that each time + // we're serving it + if ($this->_compress_output === TRUE) + { + $output = gzencode($output); + + if ($this->get_header('content-type') === NULL) + { + $this->set_content_type($this->mime_type); + } + } + + $expire = time() + ($this->cache_expiration * 60); + + // Put together our serialized info. + $cache_info = serialize(array( + 'expire' => $expire, + 'headers' => $this->headers + )); + + $output = $cache_info.'ENDCI--->'.$output; + + for ($written = 0, $length = self::strlen($output); $written < $length; $written += $result) + { + if (($result = fwrite($fp, self::substr($output, $written))) === FALSE) + { + break; + } + } + + flock($fp, LOCK_UN); + fclose($fp); + + if ( ! is_int($result)) + { + @unlink($cache_path); + log_message('error', 'Unable to write the complete cache content at: '.$cache_path); + return; + } + + chmod($cache_path, 0640); + log_message('debug', 'Cache file written: '.$cache_path); + + // Send HTTP cache-control headers to browser to match file cache settings. + $this->set_cache_header($_SERVER['REQUEST_TIME'], $expire); + } + + // -------------------------------------------------------------------- + + /** + * Update/serve cached output + * + * @uses CI_Config + * @uses CI_URI + * + * @param object &$CFG CI_Config class instance + * @param object &$URI CI_URI class instance + * @return bool TRUE on success or FALSE on failure + */ + public function _display_cache(&$CFG, &$URI) + { + $cache_path = ($CFG->item('cache_path') === '') ? APPPATH.'cache/' : $CFG->item('cache_path'); + + // Build the file path. The file name is an MD5 hash of the full URI + $uri = $CFG->item('base_url').$CFG->item('index_page').$URI->uri_string; + + if (($cache_query_string = $CFG->item('cache_query_string')) && ! empty($_SERVER['QUERY_STRING'])) + { + if (is_array($cache_query_string)) + { + $uri .= '?'.http_build_query(array_intersect_key($_GET, array_flip($cache_query_string))); + } + else + { + $uri .= '?'.$_SERVER['QUERY_STRING']; + } + } + + $filepath = $cache_path.md5($uri); + + if ( ! file_exists($filepath) OR ! $fp = @fopen($filepath, 'rb')) + { + return FALSE; + } + + flock($fp, LOCK_SH); + + $cache = (filesize($filepath) > 0) ? fread($fp, filesize($filepath)) : ''; + + flock($fp, LOCK_UN); + fclose($fp); + + // Look for embedded serialized file info. + if ( ! preg_match('/^(.*)ENDCI--->/', $cache, $match)) + { + return FALSE; + } + + $cache_info = unserialize($match[1]); + $expire = $cache_info['expire']; + + $last_modified = filemtime($filepath); + + // Has the file expired? + if ($_SERVER['REQUEST_TIME'] >= $expire && is_really_writable($cache_path)) + { + // If so we'll delete it. + @unlink($filepath); + log_message('debug', 'Cache file has expired. File deleted.'); + return FALSE; + } + + // Send the HTTP cache control headers + $this->set_cache_header($last_modified, $expire); + + // Add headers from cache file. + foreach ($cache_info['headers'] as $header) + { + $this->set_header($header[0], $header[1]); + } + + // Display the cache + $this->_display(self::substr($cache, self::strlen($match[0]))); + log_message('debug', 'Cache file is current. Sending it to browser.'); + return TRUE; + } + + // -------------------------------------------------------------------- + + /** + * Delete cache + * + * @param string $uri URI string + * @return bool + */ + public function delete_cache($uri = '') + { + $CI =& get_instance(); + $cache_path = $CI->config->item('cache_path'); + if ($cache_path === '') + { + $cache_path = APPPATH.'cache/'; + } + + if ( ! is_dir($cache_path)) + { + log_message('error', 'Unable to find cache path: '.$cache_path); + return FALSE; + } + + if (empty($uri)) + { + $uri = $CI->uri->uri_string(); + + if (($cache_query_string = $CI->config->item('cache_query_string')) && ! empty($_SERVER['QUERY_STRING'])) + { + if (is_array($cache_query_string)) + { + $uri .= '?'.http_build_query(array_intersect_key($_GET, array_flip($cache_query_string))); + } + else + { + $uri .= '?'.$_SERVER['QUERY_STRING']; + } + } + } + + $cache_path .= md5($CI->config->item('base_url').$CI->config->item('index_page').ltrim($uri, '/')); + + if ( ! @unlink($cache_path)) + { + log_message('error', 'Unable to delete cache file for '.$uri); + return FALSE; + } + + return TRUE; + } + + // -------------------------------------------------------------------- + + /** + * Set Cache Header + * + * Set the HTTP headers to match the server-side file cache settings + * in order to reduce bandwidth. + * + * @param int $last_modified Timestamp of when the page was last modified + * @param int $expiration Timestamp of when should the requested page expire from cache + * @return void + */ + public function set_cache_header($last_modified, $expiration) + { + $max_age = $expiration - $_SERVER['REQUEST_TIME']; + + if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && $last_modified <= strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE'])) + { + $this->set_status_header(304); + exit; + } + + header('Pragma: public'); + header('Cache-Control: max-age='.$max_age.', public'); + header('Expires: '.gmdate('D, d M Y H:i:s', $expiration).' GMT'); + header('Last-modified: '.gmdate('D, d M Y H:i:s', $last_modified).' GMT'); + } + + // -------------------------------------------------------------------- + + /** + * Byte-safe strlen() + * + * @param string $str + * @return int + */ + protected static function strlen($str) + { + return (self::$func_overload) + ? mb_strlen($str, '8bit') + : strlen($str); + } + + // -------------------------------------------------------------------- + + /** + * Byte-safe substr() + * + * @param string $str + * @param int $start + * @param int $length + * @return string + */ + protected static function substr($str, $start, $length = NULL) + { + if (self::$func_overload) + { + // mb_substr($str, $start, null, '8bit') returns an empty + // string on PHP 5.3 + isset($length) OR $length = ($start >= 0 ? self::strlen($str) - $start : -$start); + return mb_substr($str, $start, $length, '8bit'); + } + + return isset($length) + ? substr($str, $start, $length) + : substr($str, $start); + } +} diff --git a/www/system/core/Router.php b/www/system/core/Router.php new file mode 100644 index 0000000..7b92f70 --- /dev/null +++ b/www/system/core/Router.php @@ -0,0 +1,515 @@ +config =& load_class('Config', 'core'); + $this->uri =& load_class('URI', 'core'); + + $this->enable_query_strings = ( ! is_cli() && $this->config->item('enable_query_strings') === TRUE); + + // If a directory override is configured, it has to be set before any dynamic routing logic + is_array($routing) && isset($routing['directory']) && $this->set_directory($routing['directory']); + $this->_set_routing(); + + // Set any routing overrides that may exist in the main index file + if (is_array($routing)) + { + empty($routing['controller']) OR $this->set_class($routing['controller']); + empty($routing['function']) OR $this->set_method($routing['function']); + } + + log_message('info', 'Router Class Initialized'); + } + + // -------------------------------------------------------------------- + + /** + * Set route mapping + * + * Determines what should be served based on the URI request, + * as well as any "routes" that have been set in the routing config file. + * + * @return void + */ + protected function _set_routing() + { + // Load the routes.php file. It would be great if we could + // skip this for enable_query_strings = TRUE, but then + // default_controller would be empty ... + if (file_exists(APPPATH.'config/routes.php')) + { + include(APPPATH.'config/routes.php'); + } + + if (file_exists(APPPATH.'config/'.ENVIRONMENT.'/routes.php')) + { + include(APPPATH.'config/'.ENVIRONMENT.'/routes.php'); + } + + // Validate & get reserved routes + if (isset($route) && is_array($route)) + { + isset($route['default_controller']) && $this->default_controller = $route['default_controller']; + isset($route['translate_uri_dashes']) && $this->translate_uri_dashes = $route['translate_uri_dashes']; + unset($route['default_controller'], $route['translate_uri_dashes']); + $this->routes = $route; + } + + // Are query strings enabled in the config file? Normally CI doesn't utilize query strings + // since URI segments are more search-engine friendly, but they can optionally be used. + // If this feature is enabled, we will gather the directory/class/method a little differently + if ($this->enable_query_strings) + { + // If the directory is set at this time, it means an override exists, so skip the checks + if ( ! isset($this->directory)) + { + $_d = $this->config->item('directory_trigger'); + $_d = isset($_GET[$_d]) ? trim($_GET[$_d], " \t\n\r\0\x0B/") : ''; + + if ($_d !== '') + { + $this->uri->filter_uri($_d); + $this->set_directory($_d); + } + } + + $_c = trim($this->config->item('controller_trigger')); + if ( ! empty($_GET[$_c])) + { + $this->uri->filter_uri($_GET[$_c]); + $this->set_class($_GET[$_c]); + + $_f = trim($this->config->item('function_trigger')); + if ( ! empty($_GET[$_f])) + { + $this->uri->filter_uri($_GET[$_f]); + $this->set_method($_GET[$_f]); + } + + $this->uri->rsegments = array( + 1 => $this->class, + 2 => $this->method + ); + } + else + { + $this->_set_default_controller(); + } + + // Routing rules don't apply to query strings and we don't need to detect + // directories, so we're done here + return; + } + + // Is there anything to parse? + if ($this->uri->uri_string !== '') + { + $this->_parse_routes(); + } + else + { + $this->_set_default_controller(); + } + } + + // -------------------------------------------------------------------- + + /** + * Set request route + * + * Takes an array of URI segments as input and sets the class/method + * to be called. + * + * @used-by CI_Router::_parse_routes() + * @param array $segments URI segments + * @return void + */ + protected function _set_request($segments = array()) + { + $segments = $this->_validate_request($segments); + // If we don't have any segments left - try the default controller; + // WARNING: Directories get shifted out of the segments array! + if (empty($segments)) + { + $this->_set_default_controller(); + return; + } + + if ($this->translate_uri_dashes === TRUE) + { + $segments[0] = str_replace('-', '_', $segments[0]); + if (isset($segments[1])) + { + $segments[1] = str_replace('-', '_', $segments[1]); + } + } + + $this->set_class($segments[0]); + if (isset($segments[1])) + { + $this->set_method($segments[1]); + } + else + { + $segments[1] = 'index'; + } + + array_unshift($segments, NULL); + unset($segments[0]); + $this->uri->rsegments = $segments; + } + + // -------------------------------------------------------------------- + + /** + * Set default controller + * + * @return void + */ + protected function _set_default_controller() + { + if (empty($this->default_controller)) + { + show_error('Unable to determine what should be displayed. A default route has not been specified in the routing file.'); + } + + // Is the method being specified? + if (sscanf($this->default_controller, '%[^/]/%s', $class, $method) !== 2) + { + $method = 'index'; + } + + if ( ! file_exists(APPPATH.'controllers/'.$this->directory.ucfirst($class).'.php')) + { + // This will trigger 404 later + return; + } + + $this->set_class($class); + $this->set_method($method); + + // Assign routed segments, index starting from 1 + $this->uri->rsegments = array( + 1 => $class, + 2 => $method + ); + + log_message('debug', 'No URI present. Default controller set.'); + } + + // -------------------------------------------------------------------- + + /** + * Validate request + * + * Attempts validate the URI request and determine the controller path. + * + * @used-by CI_Router::_set_request() + * @param array $segments URI segments + * @return mixed URI segments + */ + protected function _validate_request($segments) + { + $c = count($segments); + $directory_override = isset($this->directory); + + // Loop through our segments and return as soon as a controller + // is found or when such a directory doesn't exist + while ($c-- > 0) + { + $test = $this->directory + .ucfirst($this->translate_uri_dashes === TRUE ? str_replace('-', '_', $segments[0]) : $segments[0]); + + if ( ! file_exists(APPPATH.'controllers/'.$test.'.php') + && $directory_override === FALSE + && is_dir(APPPATH.'controllers/'.$this->directory.$segments[0]) + ) + { + $this->set_directory(array_shift($segments), TRUE); + continue; + } + + return $segments; + } + + // This means that all segments were actually directories + return $segments; + } + + // -------------------------------------------------------------------- + + /** + * Parse Routes + * + * Matches any routes that may exist in the config/routes.php file + * against the URI to determine if the class/method need to be remapped. + * + * @return void + */ + protected function _parse_routes() + { + // Turn the segment array into a URI string + $uri = implode('/', $this->uri->segments); + + // Get HTTP verb + $http_verb = isset($_SERVER['REQUEST_METHOD']) ? strtolower($_SERVER['REQUEST_METHOD']) : 'cli'; + + // Loop through the route array looking for wildcards + foreach ($this->routes as $key => $val) + { + // Check if route format is using HTTP verbs + if (is_array($val)) + { + $val = array_change_key_case($val, CASE_LOWER); + if (isset($val[$http_verb])) + { + $val = $val[$http_verb]; + } + else + { + continue; + } + } + + // Convert wildcards to RegEx + $key = str_replace(array(':any', ':num'), array('[^/]+', '[0-9]+'), $key); + + // Does the RegEx match? + if (preg_match('#^'.$key.'$#', $uri, $matches)) + { + // Are we using callbacks to process back-references? + if ( ! is_string($val) && is_callable($val)) + { + // Remove the original string from the matches array. + array_shift($matches); + + // Execute the callback using the values in matches as its parameters. + $val = call_user_func_array($val, $matches); + } + // Are we using the default routing method for back-references? + elseif (strpos($val, '$') !== FALSE && strpos($key, '(') !== FALSE) + { + $val = preg_replace('#^'.$key.'$#', $val, $uri); + } + + $this->_set_request(explode('/', $val)); + return; + } + } + + // If we got this far it means we didn't encounter a + // matching route so we'll set the site default route + $this->_set_request(array_values($this->uri->segments)); + } + + // -------------------------------------------------------------------- + + /** + * Set class name + * + * @param string $class Class name + * @return void + */ + public function set_class($class) + { + $this->class = str_replace(array('/', '.'), '', $class); + } + + // -------------------------------------------------------------------- + + /** + * Fetch the current class + * + * @deprecated 3.0.0 Read the 'class' property instead + * @return string + */ + public function fetch_class() + { + return $this->class; + } + + // -------------------------------------------------------------------- + + /** + * Set method name + * + * @param string $method Method name + * @return void + */ + public function set_method($method) + { + $this->method = $method; + } + + // -------------------------------------------------------------------- + + /** + * Fetch the current method + * + * @deprecated 3.0.0 Read the 'method' property instead + * @return string + */ + public function fetch_method() + { + return $this->method; + } + + // -------------------------------------------------------------------- + + /** + * Set directory name + * + * @param string $dir Directory name + * @param bool $append Whether we're appending rather than setting the full value + * @return void + */ + public function set_directory($dir, $append = FALSE) + { + if ($append !== TRUE OR empty($this->directory)) + { + $this->directory = str_replace('.', '', trim($dir, '/')).'/'; + } + else + { + $this->directory .= str_replace('.', '', trim($dir, '/')).'/'; + } + } + + // -------------------------------------------------------------------- + + /** + * Fetch directory + * + * Feches the sub-directory (if any) that contains the requested + * controller class. + * + * @deprecated 3.0.0 Read the 'directory' property instead + * @return string + */ + public function fetch_directory() + { + return $this->directory; + } + +} diff --git a/www/system/core/Security.php b/www/system/core/Security.php new file mode 100644 index 0000000..6cdce5d --- /dev/null +++ b/www/system/core/Security.php @@ -0,0 +1,1080 @@ +', '<', '>', + "'", '"', '&', '$', '#', + '{', '}', '[', ']', '=', + ';', '?', '%20', '%22', + '%3c', // < + '%253c', // < + '%3e', // > + '%0e', // > + '%28', // ( + '%29', // ) + '%2528', // ( + '%26', // & + '%24', // $ + '%3f', // ? + '%3b', // ; + '%3d' // = + ); + + /** + * Character set + * + * Will be overridden by the constructor. + * + * @var string + */ + public $charset = 'UTF-8'; + + /** + * XSS Hash + * + * Random Hash for protecting URLs. + * + * @var string + */ + protected $_xss_hash; + + /** + * CSRF Hash + * + * Random hash for Cross Site Request Forgery protection cookie + * + * @var string + */ + protected $_csrf_hash; + + /** + * CSRF Expire time + * + * Expiration time for Cross Site Request Forgery protection cookie. + * Defaults to two hours (in seconds). + * + * @var int + */ + protected $_csrf_expire = 7200; + + /** + * CSRF Token name + * + * Token name for Cross Site Request Forgery protection cookie. + * + * @var string + */ + protected $_csrf_token_name = 'ci_csrf_token'; + + /** + * CSRF Cookie name + * + * Cookie name for Cross Site Request Forgery protection cookie. + * + * @var string + */ + protected $_csrf_cookie_name = 'ci_csrf_token'; + + /** + * List of never allowed strings + * + * @var array + */ + protected $_never_allowed_str = array( + 'document.cookie' => '[removed]', + 'document.write' => '[removed]', + '.parentNode' => '[removed]', + '.innerHTML' => '[removed]', + '-moz-binding' => '[removed]', + '' => '-->', + ' '<![CDATA[', + '' => '<comment>', + '<%' => '<%' + ); + + /** + * List of never allowed regex replacements + * + * @var array + */ + protected $_never_allowed_regex = array( + 'javascript\s*:', + '(document|(document\.)?window)\.(location|on\w*)', + 'expression\s*(\(|&\#40;)', // CSS and IE + 'vbscript\s*:', // IE, surprise! + 'wscript\s*:', // IE + 'jscript\s*:', // IE + 'vbs\s*:', // IE + 'Redirect\s+30\d', + "([\"'])?data\s*:[^\\1]*?base64[^\\1]*?,[^\\1]*?\\1?" + ); + + /** + * Class constructor + * + * @return void + */ + public function __construct() + { + // Is CSRF protection enabled? + if (config_item('csrf_protection')) + { + // CSRF config + foreach (array('csrf_expire', 'csrf_token_name', 'csrf_cookie_name') as $key) + { + if (NULL !== ($val = config_item($key))) + { + $this->{'_'.$key} = $val; + } + } + + // Append application specific cookie prefix + if ($cookie_prefix = config_item('cookie_prefix')) + { + $this->_csrf_cookie_name = $cookie_prefix.$this->_csrf_cookie_name; + } + + // Set the CSRF hash + $this->_csrf_set_hash(); + } + + $this->charset = strtoupper(config_item('charset')); + + log_message('info', 'Security Class Initialized'); + } + + // -------------------------------------------------------------------- + + /** + * CSRF Verify + * + * @return CI_Security + */ + public function csrf_verify() + { + // If it's not a POST request we will set the CSRF cookie + if (strtoupper($_SERVER['REQUEST_METHOD']) !== 'POST') + { + return $this->csrf_set_cookie(); + } + + // Check if URI has been whitelisted from CSRF checks + if ($exclude_uris = config_item('csrf_exclude_uris')) + { + $uri = load_class('URI', 'core'); + foreach ($exclude_uris as $excluded) + { + if (preg_match('#^'.$excluded.'$#i'.(UTF8_ENABLED ? 'u' : ''), $uri->uri_string())) + { + return $this; + } + } + } + + // Check CSRF token validity, but don't error on mismatch just yet - we'll want to regenerate + $valid = isset($_POST[$this->_csrf_token_name], $_COOKIE[$this->_csrf_cookie_name]) + && hash_equals($_POST[$this->_csrf_token_name], $_COOKIE[$this->_csrf_cookie_name]); + + // We kill this since we're done and we don't want to pollute the _POST array + unset($_POST[$this->_csrf_token_name]); + + // Regenerate on every submission? + if (config_item('csrf_regenerate')) + { + // Nothing should last forever + unset($_COOKIE[$this->_csrf_cookie_name]); + $this->_csrf_hash = NULL; + } + + $this->_csrf_set_hash(); + $this->csrf_set_cookie(); + + if ($valid !== TRUE) + { + $this->csrf_show_error(); + } + + log_message('info', 'CSRF token verified'); + return $this; + } + + // -------------------------------------------------------------------- + + /** + * CSRF Set Cookie + * + * @codeCoverageIgnore + * @return CI_Security + */ + public function csrf_set_cookie() + { + $expire = time() + $this->_csrf_expire; + $secure_cookie = (bool) config_item('cookie_secure'); + + if ($secure_cookie && ! is_https()) + { + return FALSE; + } + + setcookie( + $this->_csrf_cookie_name, + $this->_csrf_hash, + $expire, + config_item('cookie_path'), + config_item('cookie_domain'), + $secure_cookie, + config_item('cookie_httponly') + ); + log_message('info', 'CSRF cookie sent'); + + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Show CSRF Error + * + * @return void + */ + public function csrf_show_error() + { + show_error('The action you have requested is not allowed.', 403); + } + + // -------------------------------------------------------------------- + + /** + * Get CSRF Hash + * + * @see CI_Security::$_csrf_hash + * @return string CSRF hash + */ + public function get_csrf_hash() + { + return $this->_csrf_hash; + } + + // -------------------------------------------------------------------- + + /** + * Get CSRF Token Name + * + * @see CI_Security::$_csrf_token_name + * @return string CSRF token name + */ + public function get_csrf_token_name() + { + return $this->_csrf_token_name; + } + + // -------------------------------------------------------------------- + + /** + * XSS Clean + * + * Sanitizes data so that Cross Site Scripting Hacks can be + * prevented. This method does a fair amount of work but + * it is extremely thorough, designed to prevent even the + * most obscure XSS attempts. Nothing is ever 100% foolproof, + * of course, but I haven't been able to get anything passed + * the filter. + * + * Note: Should only be used to deal with data upon submission. + * It's not something that should be used for general + * runtime processing. + * + * @link http://channel.bitflux.ch/wiki/XSS_Prevention + * Based in part on some code and ideas from Bitflux. + * + * @link http://ha.ckers.org/xss.html + * To help develop this script I used this great list of + * vulnerabilities along with a few other hacks I've + * harvested from examining vulnerabilities in other programs. + * + * @param string|string[] $str Input data + * @param bool $is_image Whether the input is an image + * @return string + */ + public function xss_clean($str, $is_image = FALSE) + { + // Is the string an array? + if (is_array($str)) + { + foreach ($str as $key => &$value) + { + $str[$key] = $this->xss_clean($value); + } + + return $str; + } + + // Remove Invisible Characters + $str = remove_invisible_characters($str); + + /* + * URL Decode + * + * Just in case stuff like this is submitted: + * + * Google + * + * Note: Use rawurldecode() so it does not remove plus signs + */ + if (stripos($str, '%') !== false) + { + do + { + $oldstr = $str; + $str = rawurldecode($str); + $str = preg_replace_callback('#%(?:\s*[0-9a-f]){2,}#i', array($this, '_urldecodespaces'), $str); + } + while ($oldstr !== $str); + unset($oldstr); + } + + /* + * Convert character entities to ASCII + * + * This permits our tests below to work reliably. + * We only convert entities that are within tags since + * these are the ones that will pose security problems. + */ + $str = preg_replace_callback("/[^a-z0-9>]+[a-z0-9]+=([\'\"]).*?\\1/si", array($this, '_convert_attribute'), $str); + $str = preg_replace_callback('/<\w+.*/si', array($this, '_decode_entity'), $str); + + // Remove Invisible Characters Again! + $str = remove_invisible_characters($str); + + /* + * Convert all tabs to spaces + * + * This prevents strings like this: ja vascript + * NOTE: we deal with spaces between characters later. + * NOTE: preg_replace was found to be amazingly slow here on + * large blocks of data, so we use str_replace. + */ + $str = str_replace("\t", ' ', $str); + + // Capture converted string for later comparison + $converted_string = $str; + + // Remove Strings that are never allowed + $str = $this->_do_never_allowed($str); + + /* + * Makes PHP tags safe + * + * Note: XML tags are inadvertently replaced too: + * + * '), array('<?', '?>'), $str); + } + + /* + * Compact any exploded words + * + * This corrects words like: j a v a s c r i p t + * These words are compacted back to their correct state. + */ + $words = array( + 'javascript', 'expression', 'vbscript', 'jscript', 'wscript', + 'vbs', 'script', 'base64', 'applet', 'alert', 'document', + 'write', 'cookie', 'window', 'confirm', 'prompt', 'eval' + ); + + foreach ($words as $word) + { + $word = implode('\s*', str_split($word)).'\s*'; + + // We only want to do this when it is followed by a non-word character + // That way valid stuff like "dealer to" does not become "dealerto" + $str = preg_replace_callback('#('.substr($word, 0, -3).')(\W)#is', array($this, '_compact_exploded_words'), $str); + } + + /* + * Remove disallowed Javascript in links or img tags + * We used to do some version comparisons and use of stripos(), + * but it is dog slow compared to these simplified non-capturing + * preg_match(), especially if the pattern exists in the string + * + * Note: It was reported that not only space characters, but all in + * the following pattern can be parsed as separators between a tag name + * and its attributes: [\d\s"\'`;,\/\=\(\x00\x0B\x09\x0C] + * ... however, remove_invisible_characters() above already strips the + * hex-encoded ones, so we'll skip them below. + */ + do + { + $original = $str; + + if (preg_match('/]+([^>]*?)(?:>|$)#si', array($this, '_js_link_removal'), $str); + } + + if (preg_match('/]*?)(?:\s?/?>|$)#si', array($this, '_js_img_removal'), $str); + } + + if (preg_match('/script|xss/i', $str)) + { + $str = preg_replace('##si', '[removed]', $str); + } + } + while ($original !== $str); + unset($original); + + /* + * Sanitize naughty HTML elements + * + * If a tag containing any of the words in the list + * below is found, the tag gets converted to entities. + * + * So this: + * Becomes: <blink> + */ + $pattern = '#' + .'<((?/*\s*)((?[a-z0-9]+)(?=[^a-z0-9]|$)|.+)' // tag start and name, followed by a non-tag character + .'[^\s\042\047a-z0-9>/=]*' // a valid attribute character immediately after the tag would count as a separator + // optional attributes + .'(?(?:[\s\042\047/=]*' // non-attribute characters, excluding > (tag close) for obvious reasons + .'[^\s\042\047>/=]+' // attribute characters + // optional attribute-value + .'(?:\s*=' // attribute-value separator + .'(?:[^\s\042\047=><`]+|\s*\042[^\042]*\042|\s*\047[^\047]*\047|\s*(?U:[^\s\042\047=><`]*))' // single, double or non-quoted value + .')?' // end optional attribute-value group + .')*)' // end optional attributes group + .'[^>]*)(?\>)?#isS'; + + // Note: It would be nice to optimize this for speed, BUT + // only matching the naughty elements here results in + // false positives and in turn - vulnerabilities! + do + { + $old_str = $str; + $str = preg_replace_callback($pattern, array($this, '_sanitize_naughty_html'), $str); + } + while ($old_str !== $str); + unset($old_str); + + /* + * Sanitize naughty scripting elements + * + * Similar to above, only instead of looking for + * tags it looks for PHP and JavaScript commands + * that are disallowed. Rather than removing the + * code, it simply converts the parenthesis to entities + * rendering the code un-executable. + * + * For example: eval('some code') + * Becomes: eval('some code') + */ + $str = preg_replace( + '#(alert|prompt|confirm|cmd|passthru|eval|exec|expression|system|fopen|fsockopen|file|file_get_contents|readfile|unlink)(\s*)\((.*?)\)#si', + '\\1\\2(\\3)', + $str + ); + + // Final clean up + // This adds a bit of extra precaution in case + // something got through the above filters + $str = $this->_do_never_allowed($str); + + /* + * Images are Handled in a Special Way + * - Essentially, we want to know that after all of the character + * conversion is done whether any unwanted, likely XSS, code was found. + * If not, we return TRUE, as the image is clean. + * However, if the string post-conversion does not matched the + * string post-removal of XSS, then it fails, as there was unwanted XSS + * code found and removed/changed during processing. + */ + if ($is_image === TRUE) + { + return ($str === $converted_string); + } + + return $str; + } + + // -------------------------------------------------------------------- + + /** + * XSS Hash + * + * Generates the XSS hash if needed and returns it. + * + * @see CI_Security::$_xss_hash + * @return string XSS hash + */ + public function xss_hash() + { + if ($this->_xss_hash === NULL) + { + $rand = $this->get_random_bytes(16); + $this->_xss_hash = ($rand === FALSE) + ? md5(uniqid(mt_rand(), TRUE)) + : bin2hex($rand); + } + + return $this->_xss_hash; + } + + // -------------------------------------------------------------------- + + /** + * Get random bytes + * + * @param int $length Output length + * @return string + */ + public function get_random_bytes($length) + { + if (empty($length) OR ! ctype_digit((string) $length)) + { + return FALSE; + } + + if (function_exists('random_bytes')) + { + try + { + // The cast is required to avoid TypeError + return random_bytes((int) $length); + } + catch (Exception $e) + { + // If random_bytes() can't do the job, we can't either ... + // There's no point in using fallbacks. + log_message('error', $e->getMessage()); + return FALSE; + } + } + + // Unfortunately, none of the following PRNGs is guaranteed to exist ... + if (defined('MCRYPT_DEV_URANDOM') && ($output = mcrypt_create_iv($length, MCRYPT_DEV_URANDOM)) !== FALSE) + { + return $output; + } + + + if (is_readable('/dev/urandom') && ($fp = fopen('/dev/urandom', 'rb')) !== FALSE) + { + // Try not to waste entropy ... + is_php('5.4') && stream_set_chunk_size($fp, $length); + $output = fread($fp, $length); + fclose($fp); + if ($output !== FALSE) + { + return $output; + } + } + + if (function_exists('openssl_random_pseudo_bytes')) + { + return openssl_random_pseudo_bytes($length); + } + + return FALSE; + } + + // -------------------------------------------------------------------- + + /** + * HTML Entities Decode + * + * A replacement for html_entity_decode() + * + * The reason we are not using html_entity_decode() by itself is because + * while it is not technically correct to leave out the semicolon + * at the end of an entity most browsers will still interpret the entity + * correctly. html_entity_decode() does not convert entities without + * semicolons, so we are left with our own little solution here. Bummer. + * + * @link http://php.net/html-entity-decode + * + * @param string $str Input + * @param string $charset Character set + * @return string + */ + public function entity_decode($str, $charset = NULL) + { + if (strpos($str, '&') === FALSE) + { + return $str; + } + + static $_entities; + + isset($charset) OR $charset = $this->charset; + $flag = is_php('5.4') + ? ENT_COMPAT | ENT_HTML5 + : ENT_COMPAT; + + if ( ! isset($_entities)) + { + $_entities = array_map('strtolower', get_html_translation_table(HTML_ENTITIES, $flag, $charset)); + + // If we're not on PHP 5.4+, add the possibly dangerous HTML 5 + // entities to the array manually + if ($flag === ENT_COMPAT) + { + $_entities[':'] = ':'; + $_entities['('] = '('; + $_entities[')'] = ')'; + $_entities["\n"] = ' '; + $_entities["\t"] = ' '; + } + } + + do + { + $str_compare = $str; + + // Decode standard entities, avoiding false positives + if (preg_match_all('/&[a-z]{2,}(?![a-z;])/i', $str, $matches)) + { + $replace = array(); + $matches = array_unique(array_map('strtolower', $matches[0])); + foreach ($matches as &$match) + { + if (($char = array_search($match.';', $_entities, TRUE)) !== FALSE) + { + $replace[$match] = $char; + } + } + + $str = str_replace(array_keys($replace), array_values($replace), $str); + } + + // Decode numeric & UTF16 two byte entities + $str = html_entity_decode( + preg_replace('/(&#(?:x0*[0-9a-f]{2,5}(?![0-9a-f;])|(?:0*\d{2,4}(?![0-9;]))))/iS', '$1;', $str), + $flag, + $charset + ); + + if ($flag === ENT_COMPAT) + { + $str = str_replace(array_values($_entities), array_keys($_entities), $str); + } + } + while ($str_compare !== $str); + return $str; + } + + // -------------------------------------------------------------------- + + /** + * Sanitize Filename + * + * @param string $str Input file name + * @param bool $relative_path Whether to preserve paths + * @return string + */ + public function sanitize_filename($str, $relative_path = FALSE) + { + $bad = $this->filename_bad_chars; + + if ( ! $relative_path) + { + $bad[] = './'; + $bad[] = '/'; + } + + $str = remove_invisible_characters($str, FALSE); + + do + { + $old = $str; + $str = str_replace($bad, '', $str); + } + while ($old !== $str); + + return stripslashes($str); + } + + // ---------------------------------------------------------------- + + /** + * Strip Image Tags + * + * @param string $str + * @return string + */ + public function strip_image_tags($str) + { + return preg_replace( + array( + '##i', + '#`]+)).*?\>#i' + ), + '\\2', + $str + ); + } + + // ---------------------------------------------------------------- + + /** + * URL-decode taking spaces into account + * + * @see https://github.com/bcit-ci/CodeIgniter/issues/4877 + * @param array $matches + * @return string + */ + protected function _urldecodespaces($matches) + { + $input = $matches[0]; + $nospaces = preg_replace('#\s+#', '', $input); + return ($nospaces === $input) + ? $input + : rawurldecode($nospaces); + } + + // ---------------------------------------------------------------- + + /** + * Compact Exploded Words + * + * Callback method for xss_clean() to remove whitespace from + * things like 'j a v a s c r i p t'. + * + * @used-by CI_Security::xss_clean() + * @param array $matches + * @return string + */ + protected function _compact_exploded_words($matches) + { + return preg_replace('/\s+/s', '', $matches[1]).$matches[2]; + } + + // -------------------------------------------------------------------- + + /** + * Sanitize Naughty HTML + * + * Callback method for xss_clean() to remove naughty HTML elements. + * + * @used-by CI_Security::xss_clean() + * @param array $matches + * @return string + */ + protected function _sanitize_naughty_html($matches) + { + static $naughty_tags = array( + 'alert', 'area', 'prompt', 'confirm', 'applet', 'audio', 'basefont', 'base', 'behavior', 'bgsound', + 'blink', 'body', 'embed', 'expression', 'form', 'frameset', 'frame', 'head', 'html', 'ilayer', + 'iframe', 'input', 'button', 'select', 'isindex', 'layer', 'link', 'meta', 'keygen', 'object', + 'plaintext', 'style', 'script', 'textarea', 'title', 'math', 'video', 'svg', 'xml', 'xss' + ); + + static $evil_attributes = array( + 'on\w+', 'style', 'xmlns', 'formaction', 'form', 'xlink:href', 'FSCommand', 'seekSegmentTime' + ); + + // First, escape unclosed tags + if (empty($matches['closeTag'])) + { + return '<'.$matches[1]; + } + // Is the element that we caught naughty? If so, escape it + elseif (in_array(strtolower($matches['tagName']), $naughty_tags, TRUE)) + { + return '<'.$matches[1].'>'; + } + // For other tags, see if their attributes are "evil" and strip those + elseif (isset($matches['attributes'])) + { + // We'll store the already fitlered attributes here + $attributes = array(); + + // Attribute-catching pattern + $attributes_pattern = '#' + .'(?[^\s\042\047>/=]+)' // attribute characters + // optional attribute-value + .'(?:\s*=(?[^\s\042\047=><`]+|\s*\042[^\042]*\042|\s*\047[^\047]*\047|\s*(?U:[^\s\042\047=><`]*)))' // attribute-value separator + .'#i'; + + // Blacklist pattern for evil attribute names + $is_evil_pattern = '#^('.implode('|', $evil_attributes).')$#i'; + + // Each iteration filters a single attribute + do + { + // Strip any non-alpha characters that may precede an attribute. + // Browsers often parse these incorrectly and that has been a + // of numerous XSS issues we've had. + $matches['attributes'] = preg_replace('#^[^a-z]+#i', '', $matches['attributes']); + + if ( ! preg_match($attributes_pattern, $matches['attributes'], $attribute, PREG_OFFSET_CAPTURE)) + { + // No (valid) attribute found? Discard everything else inside the tag + break; + } + + if ( + // Is it indeed an "evil" attribute? + preg_match($is_evil_pattern, $attribute['name'][0]) + // Or does it have an equals sign, but no value and not quoted? Strip that too! + OR (trim($attribute['value'][0]) === '') + ) + { + $attributes[] = 'xss=removed'; + } + else + { + $attributes[] = $attribute[0][0]; + } + + $matches['attributes'] = substr($matches['attributes'], $attribute[0][1] + strlen($attribute[0][0])); + } + while ($matches['attributes'] !== ''); + + $attributes = empty($attributes) + ? '' + : ' '.implode(' ', $attributes); + return '<'.$matches['slash'].$matches['tagName'].$attributes.'>'; + } + + return $matches[0]; + } + + // -------------------------------------------------------------------- + + /** + * JS Link Removal + * + * Callback method for xss_clean() to sanitize links. + * + * This limits the PCRE backtracks, making it more performance friendly + * and prevents PREG_BACKTRACK_LIMIT_ERROR from being triggered in + * PHP 5.2+ on link-heavy strings. + * + * @used-by CI_Security::xss_clean() + * @param array $match + * @return string + */ + protected function _js_link_removal($match) + { + return str_replace( + $match[1], + preg_replace( + '#href=.*?(?:(?:alert|prompt|confirm)(?:\(|&\#40;)|javascript:|livescript:|mocha:|charset=|window\.|document\.|\.cookie|_filter_attributes($match[1]) + ), + $match[0] + ); + } + + // -------------------------------------------------------------------- + + /** + * JS Image Removal + * + * Callback method for xss_clean() to sanitize image tags. + * + * This limits the PCRE backtracks, making it more performance friendly + * and prevents PREG_BACKTRACK_LIMIT_ERROR from being triggered in + * PHP 5.2+ on image tag heavy strings. + * + * @used-by CI_Security::xss_clean() + * @param array $match + * @return string + */ + protected function _js_img_removal($match) + { + return str_replace( + $match[1], + preg_replace( + '#src=.*?(?:(?:alert|prompt|confirm|eval)(?:\(|&\#40;)|javascript:|livescript:|mocha:|charset=|window\.|document\.|\.cookie|_filter_attributes($match[1]) + ), + $match[0] + ); + } + + // -------------------------------------------------------------------- + + /** + * Attribute Conversion + * + * @used-by CI_Security::xss_clean() + * @param array $match + * @return string + */ + protected function _convert_attribute($match) + { + return str_replace(array('>', '<', '\\'), array('>', '<', '\\\\'), $match[0]); + } + + // -------------------------------------------------------------------- + + /** + * Filter Attributes + * + * Filters tag attributes for consistency and safety. + * + * @used-by CI_Security::_js_img_removal() + * @used-by CI_Security::_js_link_removal() + * @param string $str + * @return string + */ + protected function _filter_attributes($str) + { + $out = ''; + if (preg_match_all('#\s*[a-z\-]+\s*=\s*(\042|\047)([^\\1]*?)\\1#is', $str, $matches)) + { + foreach ($matches[0] as $match) + { + $out .= preg_replace('#/\*.*?\*/#s', '', $match); + } + } + + return $out; + } + + // -------------------------------------------------------------------- + + /** + * HTML Entity Decode Callback + * + * @used-by CI_Security::xss_clean() + * @param array $match + * @return string + */ + protected function _decode_entity($match) + { + // Protect GET variables in URLs + // 901119URL5918AMP18930PROTECT8198 + $match = preg_replace('|\&([a-z\_0-9\-]+)\=([a-z\_0-9\-/]+)|i', $this->xss_hash().'\\1=\\2', $match[0]); + + // Decode, then un-protect URL GET vars + return str_replace( + $this->xss_hash(), + '&', + $this->entity_decode($match, $this->charset) + ); + } + + // -------------------------------------------------------------------- + + /** + * Do Never Allowed + * + * @used-by CI_Security::xss_clean() + * @param string + * @return string + */ + protected function _do_never_allowed($str) + { + $str = str_replace(array_keys($this->_never_allowed_str), $this->_never_allowed_str, $str); + + foreach ($this->_never_allowed_regex as $regex) + { + $str = preg_replace('#'.$regex.'#is', '[removed]', $str); + } + + return $str; + } + + // -------------------------------------------------------------------- + + /** + * Set CSRF Hash and Cookie + * + * @return string + */ + protected function _csrf_set_hash() + { + if ($this->_csrf_hash === NULL) + { + // If the cookie exists we will use its value. + // We don't necessarily want to regenerate it with + // each page load since a page could contain embedded + // sub-pages causing this feature to fail + if (isset($_COOKIE[$this->_csrf_cookie_name]) && is_string($_COOKIE[$this->_csrf_cookie_name]) + && preg_match('#^[0-9a-f]{32}$#iS', $_COOKIE[$this->_csrf_cookie_name]) === 1) + { + return $this->_csrf_hash = $_COOKIE[$this->_csrf_cookie_name]; + } + + $rand = $this->get_random_bytes(16); + $this->_csrf_hash = ($rand === FALSE) + ? md5(uniqid(mt_rand(), TRUE)) + : bin2hex($rand); + } + + return $this->_csrf_hash; + } + +} diff --git a/www/system/core/URI.php b/www/system/core/URI.php new file mode 100644 index 0000000..574ade6 --- /dev/null +++ b/www/system/core/URI.php @@ -0,0 +1,643 @@ +config =& load_class('Config', 'core'); + + // If query strings are enabled, we don't need to parse any segments. + // However, they don't make sense under CLI. + if (is_cli() OR $this->config->item('enable_query_strings') !== TRUE) + { + $this->_permitted_uri_chars = $this->config->item('permitted_uri_chars'); + + // If it's a CLI request, ignore the configuration + if (is_cli()) + { + $uri = $this->_parse_argv(); + } + else + { + $protocol = $this->config->item('uri_protocol'); + empty($protocol) && $protocol = 'REQUEST_URI'; + + switch ($protocol) + { + case 'AUTO': // For BC purposes only + case 'REQUEST_URI': + $uri = $this->_parse_request_uri(); + break; + case 'QUERY_STRING': + $uri = $this->_parse_query_string(); + break; + case 'PATH_INFO': + default: + $uri = isset($_SERVER[$protocol]) + ? $_SERVER[$protocol] + : $this->_parse_request_uri(); + break; + } + } + + $this->_set_uri_string($uri); + } + + log_message('info', 'URI Class Initialized'); + } + + // -------------------------------------------------------------------- + + /** + * Set URI String + * + * @param string $str + * @return void + */ + protected function _set_uri_string($str) + { + // Filter out control characters and trim slashes + $this->uri_string = trim(remove_invisible_characters($str, FALSE), '/'); + + if ($this->uri_string !== '') + { + // Remove the URL suffix, if present + if (($suffix = (string) $this->config->item('url_suffix')) !== '') + { + $slen = strlen($suffix); + + if (substr($this->uri_string, -$slen) === $suffix) + { + $this->uri_string = substr($this->uri_string, 0, -$slen); + } + } + + $this->segments[0] = NULL; + // Populate the segments array + foreach (explode('/', trim($this->uri_string, '/')) as $val) + { + $val = trim($val); + // Filter segments for security + $this->filter_uri($val); + + if ($val !== '') + { + $this->segments[] = $val; + } + } + + unset($this->segments[0]); + } + } + + // -------------------------------------------------------------------- + + /** + * Parse REQUEST_URI + * + * Will parse REQUEST_URI and automatically detect the URI from it, + * while fixing the query string if necessary. + * + * @return string + */ + protected function _parse_request_uri() + { + if ( ! isset($_SERVER['REQUEST_URI'], $_SERVER['SCRIPT_NAME'])) + { + return ''; + } + + // parse_url() returns false if no host is present, but the path or query string + // contains a colon followed by a number + $uri = parse_url('http://dummy'.$_SERVER['REQUEST_URI']); + $query = isset($uri['query']) ? $uri['query'] : ''; + $uri = isset($uri['path']) ? $uri['path'] : ''; + + if (isset($_SERVER['SCRIPT_NAME'][0])) + { + if (strpos($uri, $_SERVER['SCRIPT_NAME']) === 0) + { + $uri = (string) substr($uri, strlen($_SERVER['SCRIPT_NAME'])); + } + elseif (strpos($uri, dirname($_SERVER['SCRIPT_NAME'])) === 0) + { + $uri = (string) substr($uri, strlen(dirname($_SERVER['SCRIPT_NAME']))); + } + } + + // This section ensures that even on servers that require the URI to be in the query string (Nginx) a correct + // URI is found, and also fixes the QUERY_STRING server var and $_GET array. + if (trim($uri, '/') === '' && strncmp($query, '/', 1) === 0) + { + $query = explode('?', $query, 2); + $uri = $query[0]; + $_SERVER['QUERY_STRING'] = isset($query[1]) ? $query[1] : ''; + } + else + { + $_SERVER['QUERY_STRING'] = $query; + } + + parse_str($_SERVER['QUERY_STRING'], $_GET); + + if ($uri === '/' OR $uri === '') + { + return '/'; + } + + // Do some final cleaning of the URI and return it + return $this->_remove_relative_directory($uri); + } + + // -------------------------------------------------------------------- + + /** + * Parse QUERY_STRING + * + * Will parse QUERY_STRING and automatically detect the URI from it. + * + * @return string + */ + protected function _parse_query_string() + { + $uri = isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : @getenv('QUERY_STRING'); + + if (trim($uri, '/') === '') + { + return ''; + } + elseif (strncmp($uri, '/', 1) === 0) + { + $uri = explode('?', $uri, 2); + $_SERVER['QUERY_STRING'] = isset($uri[1]) ? $uri[1] : ''; + $uri = $uri[0]; + } + + parse_str($_SERVER['QUERY_STRING'], $_GET); + + return $this->_remove_relative_directory($uri); + } + + // -------------------------------------------------------------------- + + /** + * Parse CLI arguments + * + * Take each command line argument and assume it is a URI segment. + * + * @return string + */ + protected function _parse_argv() + { + $args = array_slice($_SERVER['argv'], 1); + return $args ? implode('/', $args) : ''; + } + + // -------------------------------------------------------------------- + + /** + * Remove relative directory (../) and multi slashes (///) + * + * Do some final cleaning of the URI and return it, currently only used in self::_parse_request_uri() + * + * @param string $uri + * @return string + */ + protected function _remove_relative_directory($uri) + { + $uris = array(); + $tok = strtok($uri, '/'); + while ($tok !== FALSE) + { + if (( ! empty($tok) OR $tok === '0') && $tok !== '..') + { + $uris[] = $tok; + } + $tok = strtok('/'); + } + + return implode('/', $uris); + } + + // -------------------------------------------------------------------- + + /** + * Filter URI + * + * Filters segments for malicious characters. + * + * @param string $str + * @return void + */ + public function filter_uri(&$str) + { + if ( ! empty($str) && ! empty($this->_permitted_uri_chars) && ! preg_match('/^['.$this->_permitted_uri_chars.']+$/i'.(UTF8_ENABLED ? 'u' : ''), $str)) + { + show_error('The URI you submitted has disallowed characters.', 400); + } + } + + // -------------------------------------------------------------------- + + /** + * Fetch URI Segment + * + * @see CI_URI::$segments + * @param int $n Index + * @param mixed $no_result What to return if the segment index is not found + * @return mixed + */ + public function segment($n, $no_result = NULL) + { + return isset($this->segments[$n]) ? $this->segments[$n] : $no_result; + } + + // -------------------------------------------------------------------- + + /** + * Fetch URI "routed" Segment + * + * Returns the re-routed URI segment (assuming routing rules are used) + * based on the index provided. If there is no routing, will return + * the same result as CI_URI::segment(). + * + * @see CI_URI::$rsegments + * @see CI_URI::segment() + * @param int $n Index + * @param mixed $no_result What to return if the segment index is not found + * @return mixed + */ + public function rsegment($n, $no_result = NULL) + { + return isset($this->rsegments[$n]) ? $this->rsegments[$n] : $no_result; + } + + // -------------------------------------------------------------------- + + /** + * URI to assoc + * + * Generates an associative array of URI data starting at the supplied + * segment index. For example, if this is your URI: + * + * example.com/user/search/name/joe/location/UK/gender/male + * + * You can use this method to generate an array with this prototype: + * + * array ( + * name => joe + * location => UK + * gender => male + * ) + * + * @param int $n Index (default: 3) + * @param array $default Default values + * @return array + */ + public function uri_to_assoc($n = 3, $default = array()) + { + return $this->_uri_to_assoc($n, $default, 'segment'); + } + + // -------------------------------------------------------------------- + + /** + * Routed URI to assoc + * + * Identical to CI_URI::uri_to_assoc(), only it uses the re-routed + * segment array. + * + * @see CI_URI::uri_to_assoc() + * @param int $n Index (default: 3) + * @param array $default Default values + * @return array + */ + public function ruri_to_assoc($n = 3, $default = array()) + { + return $this->_uri_to_assoc($n, $default, 'rsegment'); + } + + // -------------------------------------------------------------------- + + /** + * Internal URI-to-assoc + * + * Generates a key/value pair from the URI string or re-routed URI string. + * + * @used-by CI_URI::uri_to_assoc() + * @used-by CI_URI::ruri_to_assoc() + * @param int $n Index (default: 3) + * @param array $default Default values + * @param string $which Array name ('segment' or 'rsegment') + * @return array + */ + protected function _uri_to_assoc($n = 3, $default = array(), $which = 'segment') + { + if ( ! is_numeric($n)) + { + return $default; + } + + if (isset($this->keyval[$which], $this->keyval[$which][$n])) + { + return $this->keyval[$which][$n]; + } + + $total_segments = "total_{$which}s"; + $segment_array = "{$which}_array"; + + if ($this->$total_segments() < $n) + { + return (count($default) === 0) + ? array() + : array_fill_keys($default, NULL); + } + + $segments = array_slice($this->$segment_array(), ($n - 1)); + $i = 0; + $lastval = ''; + $retval = array(); + foreach ($segments as $seg) + { + if ($i % 2) + { + $retval[$lastval] = $seg; + } + else + { + $retval[$seg] = NULL; + $lastval = $seg; + } + + $i++; + } + + if (count($default) > 0) + { + foreach ($default as $val) + { + if ( ! array_key_exists($val, $retval)) + { + $retval[$val] = NULL; + } + } + } + + // Cache the array for reuse + isset($this->keyval[$which]) OR $this->keyval[$which] = array(); + $this->keyval[$which][$n] = $retval; + return $retval; + } + + // -------------------------------------------------------------------- + + /** + * Assoc to URI + * + * Generates a URI string from an associative array. + * + * @param array $array Input array of key/value pairs + * @return string URI string + */ + public function assoc_to_uri($array) + { + $temp = array(); + foreach ((array) $array as $key => $val) + { + $temp[] = $key; + $temp[] = $val; + } + + return implode('/', $temp); + } + + // -------------------------------------------------------------------- + + /** + * Slash segment + * + * Fetches an URI segment with a slash. + * + * @param int $n Index + * @param string $where Where to add the slash ('trailing' or 'leading') + * @return string + */ + public function slash_segment($n, $where = 'trailing') + { + return $this->_slash_segment($n, $where, 'segment'); + } + + // -------------------------------------------------------------------- + + /** + * Slash routed segment + * + * Fetches an URI routed segment with a slash. + * + * @param int $n Index + * @param string $where Where to add the slash ('trailing' or 'leading') + * @return string + */ + public function slash_rsegment($n, $where = 'trailing') + { + return $this->_slash_segment($n, $where, 'rsegment'); + } + + // -------------------------------------------------------------------- + + /** + * Internal Slash segment + * + * Fetches an URI Segment and adds a slash to it. + * + * @used-by CI_URI::slash_segment() + * @used-by CI_URI::slash_rsegment() + * + * @param int $n Index + * @param string $where Where to add the slash ('trailing' or 'leading') + * @param string $which Array name ('segment' or 'rsegment') + * @return string + */ + protected function _slash_segment($n, $where = 'trailing', $which = 'segment') + { + $leading = $trailing = '/'; + + if ($where === 'trailing') + { + $leading = ''; + } + elseif ($where === 'leading') + { + $trailing = ''; + } + + return $leading.$this->$which($n).$trailing; + } + + // -------------------------------------------------------------------- + + /** + * Segment Array + * + * @return array CI_URI::$segments + */ + public function segment_array() + { + return $this->segments; + } + + // -------------------------------------------------------------------- + + /** + * Routed Segment Array + * + * @return array CI_URI::$rsegments + */ + public function rsegment_array() + { + return $this->rsegments; + } + + // -------------------------------------------------------------------- + + /** + * Total number of segments + * + * @return int + */ + public function total_segments() + { + return count($this->segments); + } + + // -------------------------------------------------------------------- + + /** + * Total number of routed segments + * + * @return int + */ + public function total_rsegments() + { + return count($this->rsegments); + } + + // -------------------------------------------------------------------- + + /** + * Fetch URI string + * + * @return string CI_URI::$uri_string + */ + public function uri_string() + { + return $this->uri_string; + } + + // -------------------------------------------------------------------- + + /** + * Fetch Re-routed URI string + * + * @return string + */ + public function ruri_string() + { + return ltrim(load_class('Router', 'core')->directory, '/').implode('/', $this->rsegments); + } + +} diff --git a/www/system/core/Utf8.php b/www/system/core/Utf8.php new file mode 100644 index 0000000..7e02177 --- /dev/null +++ b/www/system/core/Utf8.php @@ -0,0 +1,164 @@ +is_ascii($str) === FALSE) + { + if (MB_ENABLED) + { + $str = mb_convert_encoding($str, 'UTF-8', 'UTF-8'); + } + elseif (ICONV_ENABLED) + { + $str = @iconv('UTF-8', 'UTF-8//IGNORE', $str); + } + } + + return $str; + } + + // -------------------------------------------------------------------- + + /** + * Remove ASCII control characters + * + * Removes all ASCII control characters except horizontal tabs, + * line feeds, and carriage returns, as all others can cause + * problems in XML. + * + * @param string $str String to clean + * @return string + */ + public function safe_ascii_for_xml($str) + { + return remove_invisible_characters($str, FALSE); + } + + // -------------------------------------------------------------------- + + /** + * Convert to UTF-8 + * + * Attempts to convert a string to UTF-8. + * + * @param string $str Input string + * @param string $encoding Input encoding + * @return string $str encoded in UTF-8 or FALSE on failure + */ + public function convert_to_utf8($str, $encoding) + { + if (MB_ENABLED) + { + return mb_convert_encoding($str, 'UTF-8', $encoding); + } + elseif (ICONV_ENABLED) + { + return @iconv($encoding, 'UTF-8', $str); + } + + return FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Is ASCII? + * + * Tests if a string is standard 7-bit ASCII or not. + * + * @param string $str String to check + * @return bool + */ + public function is_ascii($str) + { + return (preg_match('/[^\x00-\x7F]/S', $str) === 0); + } + +} diff --git a/www/system/core/compat/hash.php b/www/system/core/compat/hash.php new file mode 100644 index 0000000..68a8129 --- /dev/null +++ b/www/system/core/compat/hash.php @@ -0,0 +1,254 @@ + 32, + 'haval128,3' => 128, + 'haval160,3' => 128, + 'haval192,3' => 128, + 'haval224,3' => 128, + 'haval256,3' => 128, + 'haval128,4' => 128, + 'haval160,4' => 128, + 'haval192,4' => 128, + 'haval224,4' => 128, + 'haval256,4' => 128, + 'haval128,5' => 128, + 'haval160,5' => 128, + 'haval192,5' => 128, + 'haval224,5' => 128, + 'haval256,5' => 128, + 'md2' => 16, + 'md4' => 64, + 'md5' => 64, + 'ripemd128' => 64, + 'ripemd160' => 64, + 'ripemd256' => 64, + 'ripemd320' => 64, + 'salsa10' => 64, + 'salsa20' => 64, + 'sha1' => 64, + 'sha224' => 64, + 'sha256' => 64, + 'sha384' => 128, + 'sha512' => 128, + 'snefru' => 32, + 'snefru256' => 32, + 'tiger128,3' => 64, + 'tiger160,3' => 64, + 'tiger192,3' => 64, + 'tiger128,4' => 64, + 'tiger160,4' => 64, + 'tiger192,4' => 64, + 'whirlpool' => 64 + ); + + if (isset($block_sizes[$algo], $password[$block_sizes[$algo]])) + { + $password = hash($algo, $password, TRUE); + } + + $hash = ''; + // Note: Blocks are NOT 0-indexed + for ($bc = (int) ceil($length / $hash_length), $bi = 1; $bi <= $bc; $bi++) + { + $key = $derived_key = hash_hmac($algo, $salt.pack('N', $bi), $password, TRUE); + for ($i = 1; $i < $iterations; $i++) + { + $derived_key ^= $key = hash_hmac($algo, $key, $password, TRUE); + } + + $hash .= $derived_key; + } + + // This is not RFC-compatible, but we're aiming for natural PHP compatibility + if ( ! $raw_output) + { + $hash = bin2hex($hash); + } + + return defined('MB_OVERLOAD_STRING') + ? mb_substr($hash, 0, $length, '8bit') + : substr($hash, 0, $length); + } +} diff --git a/www/system/core/compat/index.html b/www/system/core/compat/index.html new file mode 100644 index 0000000..b702fbc --- /dev/null +++ b/www/system/core/compat/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

    Directory access is forbidden.

    + + + diff --git a/www/system/core/compat/mbstring.php b/www/system/core/compat/mbstring.php new file mode 100644 index 0000000..9f6c24e --- /dev/null +++ b/www/system/core/compat/mbstring.php @@ -0,0 +1,149 @@ + 0, 'algoName' => 'unknown', 'options' => array()) + : array('algo' => 1, 'algoName' => 'bcrypt', 'options' => array('cost' => $hash)); + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('password_hash')) +{ + /** + * password_hash() + * + * @link http://php.net/password_hash + * @param string $password + * @param int $algo + * @param array $options + * @return mixed + */ + function password_hash($password, $algo, array $options = array()) + { + static $func_overload; + isset($func_overload) OR $func_overload = (extension_loaded('mbstring') && ini_get('mbstring.func_overload')); + + if ($algo !== 1) + { + trigger_error('password_hash(): Unknown hashing algorithm: '.(int) $algo, E_USER_WARNING); + return NULL; + } + + if (isset($options['cost']) && ($options['cost'] < 4 OR $options['cost'] > 31)) + { + trigger_error('password_hash(): Invalid bcrypt cost parameter specified: '.(int) $options['cost'], E_USER_WARNING); + return NULL; + } + + if (isset($options['salt']) && ($saltlen = ($func_overload ? mb_strlen($options['salt'], '8bit') : strlen($options['salt']))) < 22) + { + trigger_error('password_hash(): Provided salt is too short: '.$saltlen.' expecting 22', E_USER_WARNING); + return NULL; + } + elseif ( ! isset($options['salt'])) + { + if (function_exists('random_bytes')) + { + try + { + $options['salt'] = random_bytes(16); + } + catch (Exception $e) + { + log_message('error', 'compat/password: Error while trying to use random_bytes(): '.$e->getMessage()); + return FALSE; + } + } + elseif (defined('MCRYPT_DEV_URANDOM')) + { + $options['salt'] = mcrypt_create_iv(16, MCRYPT_DEV_URANDOM); + } + elseif (DIRECTORY_SEPARATOR === '/' && (is_readable($dev = '/dev/arandom') OR is_readable($dev = '/dev/urandom'))) + { + if (($fp = fopen($dev, 'rb')) === FALSE) + { + log_message('error', 'compat/password: Unable to open '.$dev.' for reading.'); + return FALSE; + } + + // Try not to waste entropy ... + is_php('5.4') && stream_set_chunk_size($fp, 16); + + $options['salt'] = ''; + for ($read = 0; $read < 16; $read = ($func_overload) ? mb_strlen($options['salt'], '8bit') : strlen($options['salt'])) + { + if (($read = fread($fp, 16 - $read)) === FALSE) + { + log_message('error', 'compat/password: Error while reading from '.$dev.'.'); + return FALSE; + } + $options['salt'] .= $read; + } + + fclose($fp); + } + elseif (function_exists('openssl_random_pseudo_bytes')) + { + $is_secure = NULL; + $options['salt'] = openssl_random_pseudo_bytes(16, $is_secure); + if ($is_secure !== TRUE) + { + log_message('error', 'compat/password: openssl_random_pseudo_bytes() set the $cryto_strong flag to FALSE'); + return FALSE; + } + } + else + { + log_message('error', 'compat/password: No CSPRNG available.'); + return FALSE; + } + + $options['salt'] = str_replace('+', '.', rtrim(base64_encode($options['salt']), '=')); + } + elseif ( ! preg_match('#^[a-zA-Z0-9./]+$#D', $options['salt'])) + { + $options['salt'] = str_replace('+', '.', rtrim(base64_encode($options['salt']), '=')); + } + + isset($options['cost']) OR $options['cost'] = 10; + + return (strlen($password = crypt($password, sprintf('$2y$%02d$%s', $options['cost'], $options['salt']))) === 60) + ? $password + : FALSE; + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('password_needs_rehash')) +{ + /** + * password_needs_rehash() + * + * @link http://php.net/password_needs_rehash + * @param string $hash + * @param int $algo + * @param array $options + * @return bool + */ + function password_needs_rehash($hash, $algo, array $options = array()) + { + $info = password_get_info($hash); + + if ($algo !== $info['algo']) + { + return TRUE; + } + elseif ($algo === 1) + { + $options['cost'] = isset($options['cost']) ? (int) $options['cost'] : 10; + return ($info['options']['cost'] !== $options['cost']); + } + + // Odd at first glance, but according to a comment in PHP's own unit tests, + // because it is an unknown algorithm - it's valid and therefore doesn't + // need rehashing. + return FALSE; + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('password_verify')) +{ + /** + * password_verify() + * + * @link http://php.net/password_verify + * @param string $password + * @param string $hash + * @return bool + */ + function password_verify($password, $hash) + { + if (strlen($hash) !== 60 OR strlen($password = crypt($password, $hash)) !== 60) + { + return FALSE; + } + + $compare = 0; + for ($i = 0; $i < 60; $i++) + { + $compare |= (ord($password[$i]) ^ ord($hash[$i])); + } + + return ($compare === 0); + } +} diff --git a/www/system/core/compat/standard.php b/www/system/core/compat/standard.php new file mode 100644 index 0000000..24f3abc --- /dev/null +++ b/www/system/core/compat/standard.php @@ -0,0 +1,182 @@ + + + + 403 Forbidden + + + +

    Directory access is forbidden.

    + + + diff --git a/www/system/database/DB.php b/www/system/database/DB.php new file mode 100644 index 0000000..f58c2e8 --- /dev/null +++ b/www/system/database/DB.php @@ -0,0 +1,218 @@ +load->get_package_paths() as $path) + { + if ($path !== APPPATH) + { + if (file_exists($file_path = $path.'config/'.ENVIRONMENT.'/database.php')) + { + include($file_path); + } + elseif (file_exists($file_path = $path.'config/database.php')) + { + include($file_path); + } + } + } + } + + if ( ! isset($db) OR count($db) === 0) + { + show_error('No database connection settings were found in the database config file.'); + } + + if ($params !== '') + { + $active_group = $params; + } + + if ( ! isset($active_group)) + { + show_error('You have not specified a database connection group via $active_group in your config/database.php file.'); + } + elseif ( ! isset($db[$active_group])) + { + show_error('You have specified an invalid database connection group ('.$active_group.') in your config/database.php file.'); + } + + $params = $db[$active_group]; + } + elseif (is_string($params)) + { + /** + * Parse the URL from the DSN string + * Database settings can be passed as discreet + * parameters or as a data source name in the first + * parameter. DSNs must have this prototype: + * $dsn = 'driver://username:password@hostname/database'; + */ + if (($dsn = @parse_url($params)) === FALSE) + { + show_error('Invalid DB Connection String'); + } + + $params = array( + 'dbdriver' => $dsn['scheme'], + 'hostname' => isset($dsn['host']) ? rawurldecode($dsn['host']) : '', + 'port' => isset($dsn['port']) ? rawurldecode($dsn['port']) : '', + 'username' => isset($dsn['user']) ? rawurldecode($dsn['user']) : '', + 'password' => isset($dsn['pass']) ? rawurldecode($dsn['pass']) : '', + 'database' => isset($dsn['path']) ? rawurldecode(substr($dsn['path'], 1)) : '' + ); + + // Were additional config items set? + if (isset($dsn['query'])) + { + parse_str($dsn['query'], $extra); + + foreach ($extra as $key => $val) + { + if (is_string($val) && in_array(strtoupper($val), array('TRUE', 'FALSE', 'NULL'))) + { + $val = var_export($val, TRUE); + } + + $params[$key] = $val; + } + } + } + + // No DB specified yet? Beat them senseless... + if (empty($params['dbdriver'])) + { + show_error('You have not selected a database type to connect to.'); + } + + // Load the DB classes. Note: Since the query builder class is optional + // we need to dynamically create a class that extends proper parent class + // based on whether we're using the query builder class or not. + if ($query_builder_override !== NULL) + { + $query_builder = $query_builder_override; + } + // Backwards compatibility work-around for keeping the + // $active_record config variable working. Should be + // removed in v3.1 + elseif ( ! isset($query_builder) && isset($active_record)) + { + $query_builder = $active_record; + } + + require_once(BASEPATH.'database/DB_driver.php'); + + if ( ! isset($query_builder) OR $query_builder === TRUE) + { + require_once(BASEPATH.'database/DB_query_builder.php'); + if ( ! class_exists('CI_DB', FALSE)) + { + /** + * CI_DB + * + * Acts as an alias for both CI_DB_driver and CI_DB_query_builder. + * + * @see CI_DB_query_builder + * @see CI_DB_driver + */ + class CI_DB extends CI_DB_query_builder { } + } + } + elseif ( ! class_exists('CI_DB', FALSE)) + { + /** + * @ignore + */ + class CI_DB extends CI_DB_driver { } + } + + // Load the DB driver + $driver_file = BASEPATH.'database/drivers/'.$params['dbdriver'].'/'.$params['dbdriver'].'_driver.php'; + + file_exists($driver_file) OR show_error('Invalid DB driver'); + require_once($driver_file); + + // Instantiate the DB adapter + $driver = 'CI_DB_'.$params['dbdriver'].'_driver'; + $DB = new $driver($params); + + // Check for a subdriver + if ( ! empty($DB->subdriver)) + { + $driver_file = BASEPATH.'database/drivers/'.$DB->dbdriver.'/subdrivers/'.$DB->dbdriver.'_'.$DB->subdriver.'_driver.php'; + + if (file_exists($driver_file)) + { + require_once($driver_file); + $driver = 'CI_DB_'.$DB->dbdriver.'_'.$DB->subdriver.'_driver'; + $DB = new $driver($params); + } + } + + $DB->initialize(); + return $DB; +} diff --git a/www/system/database/DB_cache.php b/www/system/database/DB_cache.php new file mode 100644 index 0000000..56b7356 --- /dev/null +++ b/www/system/database/DB_cache.php @@ -0,0 +1,221 @@ +CI and load the file helper since we use it a lot + $this->CI =& get_instance(); + $this->db =& $db; + $this->CI->load->helper('file'); + + $this->check_path(); + } + + // -------------------------------------------------------------------- + + /** + * Set Cache Directory Path + * + * @param string $path Path to the cache directory + * @return bool + */ + public function check_path($path = '') + { + if ($path === '') + { + if ($this->db->cachedir === '') + { + return $this->db->cache_off(); + } + + $path = $this->db->cachedir; + } + + // Add a trailing slash to the path if needed + $path = realpath($path) + ? rtrim(realpath($path), DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR + : rtrim($path, '/').'/'; + + if ( ! is_dir($path)) + { + log_message('debug', 'DB cache path error: '.$path); + + // If the path is wrong we'll turn off caching + return $this->db->cache_off(); + } + + if ( ! is_really_writable($path)) + { + log_message('debug', 'DB cache dir not writable: '.$path); + + // If the path is not really writable we'll turn off caching + return $this->db->cache_off(); + } + + $this->db->cachedir = $path; + return TRUE; + } + + // -------------------------------------------------------------------- + + /** + * Retrieve a cached query + * + * The URI being requested will become the name of the cache sub-folder. + * An MD5 hash of the SQL statement will become the cache file name. + * + * @param string $sql + * @return string + */ + public function read($sql) + { + $segment_one = ($this->CI->uri->segment(1) == FALSE) ? 'default' : $this->CI->uri->segment(1); + $segment_two = ($this->CI->uri->segment(2) == FALSE) ? 'index' : $this->CI->uri->segment(2); + $filepath = $this->db->cachedir.$segment_one.'+'.$segment_two.'/'.md5($sql); + + if ( ! is_file($filepath) OR FALSE === ($cachedata = file_get_contents($filepath))) + { + return FALSE; + } + + return unserialize($cachedata); + } + + // -------------------------------------------------------------------- + + /** + * Write a query to a cache file + * + * @param string $sql + * @param object $object + * @return bool + */ + public function write($sql, $object) + { + $segment_one = ($this->CI->uri->segment(1) == FALSE) ? 'default' : $this->CI->uri->segment(1); + $segment_two = ($this->CI->uri->segment(2) == FALSE) ? 'index' : $this->CI->uri->segment(2); + $dir_path = $this->db->cachedir.$segment_one.'+'.$segment_two.'/'; + $filename = md5($sql); + + if ( ! is_dir($dir_path) && ! @mkdir($dir_path, 0750)) + { + return FALSE; + } + + if (write_file($dir_path.$filename, serialize($object)) === FALSE) + { + return FALSE; + } + + chmod($dir_path.$filename, 0640); + return TRUE; + } + + // -------------------------------------------------------------------- + + /** + * Delete cache files within a particular directory + * + * @param string $segment_one + * @param string $segment_two + * @return void + */ + public function delete($segment_one = '', $segment_two = '') + { + if ($segment_one === '') + { + $segment_one = ($this->CI->uri->segment(1) == FALSE) ? 'default' : $this->CI->uri->segment(1); + } + + if ($segment_two === '') + { + $segment_two = ($this->CI->uri->segment(2) == FALSE) ? 'index' : $this->CI->uri->segment(2); + } + + $dir_path = $this->db->cachedir.$segment_one.'+'.$segment_two.'/'; + delete_files($dir_path, TRUE); + } + + // -------------------------------------------------------------------- + + /** + * Delete all existing cache files + * + * @return void + */ + public function delete_all() + { + delete_files($this->db->cachedir, TRUE, TRUE); + } + +} diff --git a/www/system/database/DB_driver.php b/www/system/database/DB_driver.php new file mode 100644 index 0000000..0598497 --- /dev/null +++ b/www/system/database/DB_driver.php @@ -0,0 +1,1991 @@ + $val) + { + $this->$key = $val; + } + } + + log_message('info', 'Database Driver Class Initialized'); + } + + // -------------------------------------------------------------------- + + /** + * Initialize Database Settings + * + * @return bool + */ + public function initialize() + { + /* If an established connection is available, then there's + * no need to connect and select the database. + * + * Depending on the database driver, conn_id can be either + * boolean TRUE, a resource or an object. + */ + if ($this->conn_id) + { + return TRUE; + } + + // ---------------------------------------------------------------- + + // Connect to the database and set the connection ID + $this->conn_id = $this->db_connect($this->pconnect); + + // No connection resource? Check if there is a failover else throw an error + if ( ! $this->conn_id) + { + // Check if there is a failover set + if ( ! empty($this->failover) && is_array($this->failover)) + { + // Go over all the failovers + foreach ($this->failover as $failover) + { + // Replace the current settings with those of the failover + foreach ($failover as $key => $val) + { + $this->$key = $val; + } + + // Try to connect + $this->conn_id = $this->db_connect($this->pconnect); + + // If a connection is made break the foreach loop + if ($this->conn_id) + { + break; + } + } + } + + // We still don't have a connection? + if ( ! $this->conn_id) + { + log_message('error', 'Unable to connect to the database'); + + if ($this->db_debug) + { + $this->display_error('db_unable_to_connect'); + } + + return FALSE; + } + } + + // Now we set the character set and that's all + return $this->db_set_charset($this->char_set); + } + + // -------------------------------------------------------------------- + + /** + * DB connect + * + * This is just a dummy method that all drivers will override. + * + * @return mixed + */ + public function db_connect() + { + return TRUE; + } + + // -------------------------------------------------------------------- + + /** + * Persistent database connection + * + * @return mixed + */ + public function db_pconnect() + { + return $this->db_connect(TRUE); + } + + // -------------------------------------------------------------------- + + /** + * Reconnect + * + * Keep / reestablish the db connection if no queries have been + * sent for a length of time exceeding the server's idle timeout. + * + * This is just a dummy method to allow drivers without such + * functionality to not declare it, while others will override it. + * + * @return void + */ + public function reconnect() + { + } + + // -------------------------------------------------------------------- + + /** + * Select database + * + * This is just a dummy method to allow drivers without such + * functionality to not declare it, while others will override it. + * + * @return bool + */ + public function db_select() + { + return TRUE; + } + + // -------------------------------------------------------------------- + + /** + * Last error + * + * @return array + */ + public function error() + { + return array('code' => NULL, 'message' => NULL); + } + + // -------------------------------------------------------------------- + + /** + * Set client character set + * + * @param string + * @return bool + */ + public function db_set_charset($charset) + { + if (method_exists($this, '_db_set_charset') && ! $this->_db_set_charset($charset)) + { + log_message('error', 'Unable to set database connection charset: '.$charset); + + if ($this->db_debug) + { + $this->display_error('db_unable_to_set_charset', $charset); + } + + return FALSE; + } + + return TRUE; + } + + // -------------------------------------------------------------------- + + /** + * The name of the platform in use (mysql, mssql, etc...) + * + * @return string + */ + public function platform() + { + return $this->dbdriver; + } + + // -------------------------------------------------------------------- + + /** + * Database version number + * + * Returns a string containing the version of the database being used. + * Most drivers will override this method. + * + * @return string + */ + public function version() + { + if (isset($this->data_cache['version'])) + { + return $this->data_cache['version']; + } + + if (FALSE === ($sql = $this->_version())) + { + return ($this->db_debug) ? $this->display_error('db_unsupported_function') : FALSE; + } + + $query = $this->query($sql)->row(); + return $this->data_cache['version'] = $query->ver; + } + + // -------------------------------------------------------------------- + + /** + * Version number query string + * + * @return string + */ + protected function _version() + { + return 'SELECT VERSION() AS ver'; + } + + // -------------------------------------------------------------------- + + /** + * Execute the query + * + * Accepts an SQL string as input and returns a result object upon + * successful execution of a "read" type query. Returns boolean TRUE + * upon successful execution of a "write" type query. Returns boolean + * FALSE upon failure, and if the $db_debug variable is set to TRUE + * will raise an error. + * + * @param string $sql + * @param array $binds = FALSE An array of binding data + * @param bool $return_object = NULL + * @return mixed + */ + public function query($sql, $binds = FALSE, $return_object = NULL) + { + if ($sql === '') + { + log_message('error', 'Invalid query: '.$sql); + return ($this->db_debug) ? $this->display_error('db_invalid_query') : FALSE; + } + elseif ( ! is_bool($return_object)) + { + $return_object = ! $this->is_write_type($sql); + } + + // Verify table prefix and replace if necessary + if ($this->dbprefix !== '' && $this->swap_pre !== '' && $this->dbprefix !== $this->swap_pre) + { + $sql = preg_replace('/(\W)'.$this->swap_pre.'(\S+?)/', '\\1'.$this->dbprefix.'\\2', $sql); + } + + // Compile binds if needed + if ($binds !== FALSE) + { + $sql = $this->compile_binds($sql, $binds); + } + + // Is query caching enabled? If the query is a "read type" + // we will load the caching class and return the previously + // cached query if it exists + if ($this->cache_on === TRUE && $return_object === TRUE && $this->_cache_init()) + { + $this->load_rdriver(); + if (FALSE !== ($cache = $this->CACHE->read($sql))) + { + return $cache; + } + } + + // Save the query for debugging + if ($this->save_queries === TRUE) + { + $this->queries[] = $sql; + } + + // Start the Query Timer + $time_start = microtime(TRUE); + + // Run the Query + if (FALSE === ($this->result_id = $this->simple_query($sql))) + { + if ($this->save_queries === TRUE) + { + $this->query_times[] = 0; + } + + // This will trigger a rollback if transactions are being used + if ($this->_trans_depth !== 0) + { + $this->_trans_status = FALSE; + } + + // Grab the error now, as we might run some additional queries before displaying the error + $error = $this->error(); + + // Log errors + log_message('error', 'Query error: '.$error['message'].' - Invalid query: '.$sql); + + if ($this->db_debug) + { + // We call this function in order to roll-back queries + // if transactions are enabled. If we don't call this here + // the error message will trigger an exit, causing the + // transactions to remain in limbo. + while ($this->_trans_depth !== 0) + { + $trans_depth = $this->_trans_depth; + $this->trans_complete(); + if ($trans_depth === $this->_trans_depth) + { + log_message('error', 'Database: Failure during an automated transaction commit/rollback!'); + break; + } + } + + // Display errors + return $this->display_error(array('Error Number: '.$error['code'], $error['message'], $sql)); + } + + return FALSE; + } + + // Stop and aggregate the query time results + $time_end = microtime(TRUE); + $this->benchmark += $time_end - $time_start; + + if ($this->save_queries === TRUE) + { + $this->query_times[] = $time_end - $time_start; + } + + // Increment the query counter + $this->query_count++; + + // Will we have a result object instantiated? If not - we'll simply return TRUE + if ($return_object !== TRUE) + { + // If caching is enabled we'll auto-cleanup any existing files related to this particular URI + if ($this->cache_on === TRUE && $this->cache_autodel === TRUE && $this->_cache_init()) + { + $this->CACHE->delete(); + } + + return TRUE; + } + + // Load and instantiate the result driver + $driver = $this->load_rdriver(); + $RES = new $driver($this); + + // Is query caching enabled? If so, we'll serialize the + // result object and save it to a cache file. + if ($this->cache_on === TRUE && $this->_cache_init()) + { + // We'll create a new instance of the result object + // only without the platform specific driver since + // we can't use it with cached data (the query result + // resource ID won't be any good once we've cached the + // result object, so we'll have to compile the data + // and save it) + $CR = new CI_DB_result($this); + $CR->result_object = $RES->result_object(); + $CR->result_array = $RES->result_array(); + $CR->num_rows = $RES->num_rows(); + + // Reset these since cached objects can not utilize resource IDs. + $CR->conn_id = NULL; + $CR->result_id = NULL; + + $this->CACHE->write($sql, $CR); + } + + return $RES; + } + + // -------------------------------------------------------------------- + + /** + * Load the result drivers + * + * @return string the name of the result class + */ + public function load_rdriver() + { + $driver = 'CI_DB_'.$this->dbdriver.'_result'; + + if ( ! class_exists($driver, FALSE)) + { + require_once(BASEPATH.'database/DB_result.php'); + require_once(BASEPATH.'database/drivers/'.$this->dbdriver.'/'.$this->dbdriver.'_result.php'); + } + + return $driver; + } + + // -------------------------------------------------------------------- + + /** + * Simple Query + * This is a simplified version of the query() function. Internally + * we only use it when running transaction commands since they do + * not require all the features of the main query() function. + * + * @param string the sql query + * @return mixed + */ + public function simple_query($sql) + { + if ( ! $this->conn_id) + { + if ( ! $this->initialize()) + { + return FALSE; + } + } + + return $this->_execute($sql); + } + + // -------------------------------------------------------------------- + + /** + * Disable Transactions + * This permits transactions to be disabled at run-time. + * + * @return void + */ + public function trans_off() + { + $this->trans_enabled = FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Enable/disable Transaction Strict Mode + * + * When strict mode is enabled, if you are running multiple groups of + * transactions, if one group fails all subsequent groups will be + * rolled back. + * + * If strict mode is disabled, each group is treated autonomously, + * meaning a failure of one group will not affect any others + * + * @param bool $mode = TRUE + * @return void + */ + public function trans_strict($mode = TRUE) + { + $this->trans_strict = is_bool($mode) ? $mode : TRUE; + } + + // -------------------------------------------------------------------- + + /** + * Start Transaction + * + * @param bool $test_mode = FALSE + * @return bool + */ + public function trans_start($test_mode = FALSE) + { + if ( ! $this->trans_enabled) + { + return FALSE; + } + + return $this->trans_begin($test_mode); + } + + // -------------------------------------------------------------------- + + /** + * Complete Transaction + * + * @return bool + */ + public function trans_complete() + { + if ( ! $this->trans_enabled) + { + return FALSE; + } + + // The query() function will set this flag to FALSE in the event that a query failed + if ($this->_trans_status === FALSE OR $this->_trans_failure === TRUE) + { + $this->trans_rollback(); + + // If we are NOT running in strict mode, we will reset + // the _trans_status flag so that subsequent groups of + // transactions will be permitted. + if ($this->trans_strict === FALSE) + { + $this->_trans_status = TRUE; + } + + log_message('debug', 'DB Transaction Failure'); + return FALSE; + } + + return $this->trans_commit(); + } + + // -------------------------------------------------------------------- + + /** + * Lets you retrieve the transaction flag to determine if it has failed + * + * @return bool + */ + public function trans_status() + { + return $this->_trans_status; + } + + // -------------------------------------------------------------------- + + /** + * Begin Transaction + * + * @param bool $test_mode + * @return bool + */ + public function trans_begin($test_mode = FALSE) + { + if ( ! $this->trans_enabled) + { + return FALSE; + } + // When transactions are nested we only begin/commit/rollback the outermost ones + elseif ($this->_trans_depth > 0) + { + $this->_trans_depth++; + return TRUE; + } + + // Reset the transaction failure flag. + // If the $test_mode flag is set to TRUE transactions will be rolled back + // even if the queries produce a successful result. + $this->_trans_failure = ($test_mode === TRUE); + + if ($this->_trans_begin()) + { + $this->_trans_status = TRUE; + $this->_trans_depth++; + return TRUE; + } + + return FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Commit Transaction + * + * @return bool + */ + public function trans_commit() + { + if ( ! $this->trans_enabled OR $this->_trans_depth === 0) + { + return FALSE; + } + // When transactions are nested we only begin/commit/rollback the outermost ones + elseif ($this->_trans_depth > 1 OR $this->_trans_commit()) + { + $this->_trans_depth--; + return TRUE; + } + + return FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Rollback Transaction + * + * @return bool + */ + public function trans_rollback() + { + if ( ! $this->trans_enabled OR $this->_trans_depth === 0) + { + return FALSE; + } + // When transactions are nested we only begin/commit/rollback the outermost ones + elseif ($this->_trans_depth > 1 OR $this->_trans_rollback()) + { + $this->_trans_depth--; + return TRUE; + } + + return FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Compile Bindings + * + * @param string the sql statement + * @param array an array of bind data + * @return string + */ + public function compile_binds($sql, $binds) + { + if (empty($this->bind_marker) OR strpos($sql, $this->bind_marker) === FALSE) + { + return $sql; + } + elseif ( ! is_array($binds)) + { + $binds = array($binds); + $bind_count = 1; + } + else + { + // Make sure we're using numeric keys + $binds = array_values($binds); + $bind_count = count($binds); + } + + // We'll need the marker length later + $ml = strlen($this->bind_marker); + + // Make sure not to replace a chunk inside a string that happens to match the bind marker + if ($c = preg_match_all("/'[^']*'|\"[^\"]*\"/i", $sql, $matches)) + { + $c = preg_match_all('/'.preg_quote($this->bind_marker, '/').'/i', + str_replace($matches[0], + str_replace($this->bind_marker, str_repeat(' ', $ml), $matches[0]), + $sql, $c), + $matches, PREG_OFFSET_CAPTURE); + + // Bind values' count must match the count of markers in the query + if ($bind_count !== $c) + { + return $sql; + } + } + elseif (($c = preg_match_all('/'.preg_quote($this->bind_marker, '/').'/i', $sql, $matches, PREG_OFFSET_CAPTURE)) !== $bind_count) + { + return $sql; + } + + do + { + $c--; + $escaped_value = $this->escape($binds[$c]); + if (is_array($escaped_value)) + { + $escaped_value = '('.implode(',', $escaped_value).')'; + } + $sql = substr_replace($sql, $escaped_value, $matches[0][$c][1], $ml); + } + while ($c !== 0); + + return $sql; + } + + // -------------------------------------------------------------------- + + /** + * Determines if a query is a "write" type. + * + * @param string An SQL query string + * @return bool + */ + public function is_write_type($sql) + { + return (bool) preg_match('/^\s*"?(SET|INSERT|UPDATE|DELETE|REPLACE|CREATE|DROP|TRUNCATE|LOAD|COPY|ALTER|RENAME|GRANT|REVOKE|LOCK|UNLOCK|REINDEX|MERGE)\s/i', $sql); + } + + // -------------------------------------------------------------------- + + /** + * Calculate the aggregate query elapsed time + * + * @param int The number of decimal places + * @return string + */ + public function elapsed_time($decimals = 6) + { + return number_format($this->benchmark, $decimals); + } + + // -------------------------------------------------------------------- + + /** + * Returns the total number of queries + * + * @return int + */ + public function total_queries() + { + return $this->query_count; + } + + // -------------------------------------------------------------------- + + /** + * Returns the last query that was executed + * + * @return string + */ + public function last_query() + { + return end($this->queries); + } + + // -------------------------------------------------------------------- + + /** + * "Smart" Escape String + * + * Escapes data based on type + * Sets boolean and null types + * + * @param string + * @return mixed + */ + public function escape($str) + { + if (is_array($str)) + { + $str = array_map(array(&$this, 'escape'), $str); + return $str; + } + elseif (is_string($str) OR (is_object($str) && method_exists($str, '__toString'))) + { + return "'".$this->escape_str($str)."'"; + } + elseif (is_bool($str)) + { + return ($str === FALSE) ? 0 : 1; + } + elseif ($str === NULL) + { + return 'NULL'; + } + + return $str; + } + + // -------------------------------------------------------------------- + + /** + * Escape String + * + * @param string|string[] $str Input string + * @param bool $like Whether or not the string will be used in a LIKE condition + * @return string + */ + public function escape_str($str, $like = FALSE) + { + if (is_array($str)) + { + foreach ($str as $key => $val) + { + $str[$key] = $this->escape_str($val, $like); + } + + return $str; + } + + $str = $this->_escape_str($str); + + // escape LIKE condition wildcards + if ($like === TRUE) + { + return str_replace( + array($this->_like_escape_chr, '%', '_'), + array($this->_like_escape_chr.$this->_like_escape_chr, $this->_like_escape_chr.'%', $this->_like_escape_chr.'_'), + $str + ); + } + + return $str; + } + + // -------------------------------------------------------------------- + + /** + * Escape LIKE String + * + * Calls the individual driver for platform + * specific escaping for LIKE conditions + * + * @param string|string[] + * @return mixed + */ + public function escape_like_str($str) + { + return $this->escape_str($str, TRUE); + } + + // -------------------------------------------------------------------- + + /** + * Platform-dependent string escape + * + * @param string + * @return string + */ + protected function _escape_str($str) + { + return str_replace("'", "''", remove_invisible_characters($str, FALSE)); + } + + // -------------------------------------------------------------------- + + /** + * Primary + * + * Retrieves the primary key. It assumes that the row in the first + * position is the primary key + * + * @param string $table Table name + * @return string + */ + public function primary($table) + { + $fields = $this->list_fields($table); + return is_array($fields) ? current($fields) : FALSE; + } + + // -------------------------------------------------------------------- + + /** + * "Count All" query + * + * Generates a platform-specific query string that counts all records in + * the specified database + * + * @param string + * @return int + */ + public function count_all($table = '') + { + if ($table === '') + { + return 0; + } + + $query = $this->query($this->_count_string.$this->escape_identifiers('numrows').' FROM '.$this->protect_identifiers($table, TRUE, NULL, FALSE)); + if ($query->num_rows() === 0) + { + return 0; + } + + $query = $query->row(); + $this->_reset_select(); + return (int) $query->numrows; + } + + // -------------------------------------------------------------------- + + /** + * Returns an array of table names + * + * @param string $constrain_by_prefix = FALSE + * @return array + */ + public function list_tables($constrain_by_prefix = FALSE) + { + // Is there a cached result? + if (isset($this->data_cache['table_names'])) + { + return $this->data_cache['table_names']; + } + + if (FALSE === ($sql = $this->_list_tables($constrain_by_prefix))) + { + return ($this->db_debug) ? $this->display_error('db_unsupported_function') : FALSE; + } + + $this->data_cache['table_names'] = array(); + $query = $this->query($sql); + + foreach ($query->result_array() as $row) + { + // Do we know from which column to get the table name? + if ( ! isset($key)) + { + if (isset($row['table_name'])) + { + $key = 'table_name'; + } + elseif (isset($row['TABLE_NAME'])) + { + $key = 'TABLE_NAME'; + } + else + { + /* We have no other choice but to just get the first element's key. + * Due to array_shift() accepting its argument by reference, if + * E_STRICT is on, this would trigger a warning. So we'll have to + * assign it first. + */ + $key = array_keys($row); + $key = array_shift($key); + } + } + + $this->data_cache['table_names'][] = $row[$key]; + } + + return $this->data_cache['table_names']; + } + + // -------------------------------------------------------------------- + + /** + * Determine if a particular table exists + * + * @param string $table_name + * @return bool + */ + public function table_exists($table_name) + { + return in_array($this->protect_identifiers($table_name, TRUE, FALSE, FALSE), $this->list_tables()); + } + + // -------------------------------------------------------------------- + + /** + * Fetch Field Names + * + * @param string $table Table name + * @return array + */ + public function list_fields($table) + { + // Is there a cached result? + if (isset($this->data_cache['field_names'][$table])) + { + return $this->data_cache['field_names'][$table]; + } + + if (FALSE === ($sql = $this->_list_columns($table))) + { + return ($this->db_debug) ? $this->display_error('db_unsupported_function') : FALSE; + } + + $query = $this->query($sql); + $this->data_cache['field_names'][$table] = array(); + + foreach ($query->result_array() as $row) + { + // Do we know from where to get the column's name? + if ( ! isset($key)) + { + if (isset($row['column_name'])) + { + $key = 'column_name'; + } + elseif (isset($row['COLUMN_NAME'])) + { + $key = 'COLUMN_NAME'; + } + else + { + // We have no other choice but to just get the first element's key. + $key = key($row); + } + } + + $this->data_cache['field_names'][$table][] = $row[$key]; + } + + return $this->data_cache['field_names'][$table]; + } + + // -------------------------------------------------------------------- + + /** + * Determine if a particular field exists + * + * @param string + * @param string + * @return bool + */ + public function field_exists($field_name, $table_name) + { + return in_array($field_name, $this->list_fields($table_name)); + } + + // -------------------------------------------------------------------- + + /** + * Returns an object with field data + * + * @param string $table the table name + * @return array + */ + public function field_data($table) + { + $query = $this->query($this->_field_data($this->protect_identifiers($table, TRUE, NULL, FALSE))); + return ($query) ? $query->field_data() : FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Escape the SQL Identifiers + * + * This function escapes column and table names + * + * @param mixed + * @return mixed + */ + public function escape_identifiers($item) + { + if ($this->_escape_char === '' OR empty($item) OR in_array($item, $this->_reserved_identifiers)) + { + return $item; + } + elseif (is_array($item)) + { + foreach ($item as $key => $value) + { + $item[$key] = $this->escape_identifiers($value); + } + + return $item; + } + // Avoid breaking functions and literal values inside queries + elseif (ctype_digit($item) OR $item[0] === "'" OR ($this->_escape_char !== '"' && $item[0] === '"') OR strpos($item, '(') !== FALSE) + { + return $item; + } + + static $preg_ec = array(); + + if (empty($preg_ec)) + { + if (is_array($this->_escape_char)) + { + $preg_ec = array( + preg_quote($this->_escape_char[0], '/'), + preg_quote($this->_escape_char[1], '/'), + $this->_escape_char[0], + $this->_escape_char[1] + ); + } + else + { + $preg_ec[0] = $preg_ec[1] = preg_quote($this->_escape_char, '/'); + $preg_ec[2] = $preg_ec[3] = $this->_escape_char; + } + } + + foreach ($this->_reserved_identifiers as $id) + { + if (strpos($item, '.'.$id) !== FALSE) + { + return preg_replace('/'.$preg_ec[0].'?([^'.$preg_ec[1].'\.]+)'.$preg_ec[1].'?\./i', $preg_ec[2].'$1'.$preg_ec[3].'.', $item); + } + } + + return preg_replace('/'.$preg_ec[0].'?([^'.$preg_ec[1].'\.]+)'.$preg_ec[1].'?(\.)?/i', $preg_ec[2].'$1'.$preg_ec[3].'$2', $item); + } + + // -------------------------------------------------------------------- + + /** + * Generate an insert string + * + * @param string the table upon which the query will be performed + * @param array an associative array data of key/values + * @return string + */ + public function insert_string($table, $data) + { + $fields = $values = array(); + + foreach ($data as $key => $val) + { + $fields[] = $this->escape_identifiers($key); + $values[] = $this->escape($val); + } + + return $this->_insert($this->protect_identifiers($table, TRUE, NULL, FALSE), $fields, $values); + } + + // -------------------------------------------------------------------- + + /** + * Insert statement + * + * Generates a platform-specific insert string from the supplied data + * + * @param string the table name + * @param array the insert keys + * @param array the insert values + * @return string + */ + protected function _insert($table, $keys, $values) + { + return 'INSERT INTO '.$table.' ('.implode(', ', $keys).') VALUES ('.implode(', ', $values).')'; + } + + // -------------------------------------------------------------------- + + /** + * Generate an update string + * + * @param string the table upon which the query will be performed + * @param array an associative array data of key/values + * @param mixed the "where" statement + * @return string + */ + public function update_string($table, $data, $where) + { + if (empty($where)) + { + return FALSE; + } + + $this->where($where); + + $fields = array(); + foreach ($data as $key => $val) + { + $fields[$this->protect_identifiers($key)] = $this->escape($val); + } + + $sql = $this->_update($this->protect_identifiers($table, TRUE, NULL, FALSE), $fields); + $this->_reset_write(); + return $sql; + } + + // -------------------------------------------------------------------- + + /** + * Update statement + * + * Generates a platform-specific update string from the supplied data + * + * @param string the table name + * @param array the update data + * @return string + */ + protected function _update($table, $values) + { + foreach ($values as $key => $val) + { + $valstr[] = $key.' = '.$val; + } + + return 'UPDATE '.$table.' SET '.implode(', ', $valstr) + .$this->_compile_wh('qb_where') + .$this->_compile_order_by() + .($this->qb_limit ? ' LIMIT '.$this->qb_limit : ''); + } + + // -------------------------------------------------------------------- + + /** + * Tests whether the string has an SQL operator + * + * @param string + * @return bool + */ + protected function _has_operator($str) + { + return (bool) preg_match('/(<|>|!|=|\sIS NULL|\sIS NOT NULL|\sEXISTS|\sBETWEEN|\sLIKE|\sIN\s*\(|\s)/i', trim($str)); + } + + // -------------------------------------------------------------------- + + /** + * Returns the SQL string operator + * + * @param string + * @return string + */ + protected function _get_operator($str) + { + static $_operators; + + if (empty($_operators)) + { + $_les = ($this->_like_escape_str !== '') + ? '\s+'.preg_quote(trim(sprintf($this->_like_escape_str, $this->_like_escape_chr)), '/') + : ''; + $_operators = array( + '\s*(?:<|>|!)?=\s*', // =, <=, >=, != + '\s*<>?\s*', // <, <> + '\s*>\s*', // > + '\s+IS NULL', // IS NULL + '\s+IS NOT NULL', // IS NOT NULL + '\s+EXISTS\s*\(.*\)', // EXISTS(sql) + '\s+NOT EXISTS\s*\(.*\)', // NOT EXISTS(sql) + '\s+BETWEEN\s+', // BETWEEN value AND value + '\s+IN\s*\(.*\)', // IN(list) + '\s+NOT IN\s*\(.*\)', // NOT IN (list) + '\s+LIKE\s+\S.*('.$_les.')?', // LIKE 'expr'[ ESCAPE '%s'] + '\s+NOT LIKE\s+\S.*('.$_les.')?' // NOT LIKE 'expr'[ ESCAPE '%s'] + ); + + } + + return preg_match('/'.implode('|', $_operators).'/i', $str, $match) + ? $match[0] : FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Enables a native PHP function to be run, using a platform agnostic wrapper. + * + * @param string $function Function name + * @return mixed + */ + public function call_function($function) + { + $driver = ($this->dbdriver === 'postgre') ? 'pg_' : $this->dbdriver.'_'; + + if (FALSE === strpos($driver, $function)) + { + $function = $driver.$function; + } + + if ( ! function_exists($function)) + { + return ($this->db_debug) ? $this->display_error('db_unsupported_function') : FALSE; + } + + return (func_num_args() > 1) + ? call_user_func_array($function, array_slice(func_get_args(), 1)) + : call_user_func($function); + } + + // -------------------------------------------------------------------- + + /** + * Set Cache Directory Path + * + * @param string the path to the cache directory + * @return void + */ + public function cache_set_path($path = '') + { + $this->cachedir = $path; + } + + // -------------------------------------------------------------------- + + /** + * Enable Query Caching + * + * @return bool cache_on value + */ + public function cache_on() + { + return $this->cache_on = TRUE; + } + + // -------------------------------------------------------------------- + + /** + * Disable Query Caching + * + * @return bool cache_on value + */ + public function cache_off() + { + return $this->cache_on = FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Delete the cache files associated with a particular URI + * + * @param string $segment_one = '' + * @param string $segment_two = '' + * @return bool + */ + public function cache_delete($segment_one = '', $segment_two = '') + { + return $this->_cache_init() + ? $this->CACHE->delete($segment_one, $segment_two) + : FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Delete All cache files + * + * @return bool + */ + public function cache_delete_all() + { + return $this->_cache_init() + ? $this->CACHE->delete_all() + : FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Initialize the Cache Class + * + * @return bool + */ + protected function _cache_init() + { + if ( ! class_exists('CI_DB_Cache', FALSE)) + { + require_once(BASEPATH.'database/DB_cache.php'); + } + elseif (is_object($this->CACHE)) + { + return TRUE; + } + + $this->CACHE = new CI_DB_Cache($this); // pass db object to support multiple db connections and returned db objects + return TRUE; + } + + // -------------------------------------------------------------------- + + /** + * Close DB Connection + * + * @return void + */ + public function close() + { + if ($this->conn_id) + { + $this->_close(); + $this->conn_id = FALSE; + } + } + + // -------------------------------------------------------------------- + + /** + * Close DB Connection + * + * This method would be overridden by most of the drivers. + * + * @return void + */ + protected function _close() + { + $this->conn_id = FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Display an error message + * + * @param string the error message + * @param string any "swap" values + * @param bool whether to localize the message + * @return string sends the application/views/errors/error_db.php template + */ + public function display_error($error = '', $swap = '', $native = FALSE) + { + $LANG =& load_class('Lang', 'core'); + $LANG->load('db'); + + $heading = $LANG->line('db_error_heading'); + + if ($native === TRUE) + { + $message = (array) $error; + } + else + { + $message = is_array($error) ? $error : array(str_replace('%s', $swap, $LANG->line($error))); + } + + // Find the most likely culprit of the error by going through + // the backtrace until the source file is no longer in the + // database folder. + $trace = debug_backtrace(); + foreach ($trace as $call) + { + if (isset($call['file'], $call['class'])) + { + // We'll need this on Windows, as APPPATH and BASEPATH will always use forward slashes + if (DIRECTORY_SEPARATOR !== '/') + { + $call['file'] = str_replace('\\', '/', $call['file']); + } + + if (strpos($call['file'], BASEPATH.'database') === FALSE && strpos($call['class'], 'Loader') === FALSE) + { + // Found it - use a relative path for safety + $message[] = 'Filename: '.str_replace(array(APPPATH, BASEPATH), '', $call['file']); + $message[] = 'Line Number: '.$call['line']; + break; + } + } + } + + $error =& load_class('Exceptions', 'core'); + echo $error->show_error($heading, $message, 'error_db'); + exit(8); // EXIT_DATABASE + } + + // -------------------------------------------------------------------- + + /** + * Protect Identifiers + * + * This function is used extensively by the Query Builder class, and by + * a couple functions in this class. + * It takes a column or table name (optionally with an alias) and inserts + * the table prefix onto it. Some logic is necessary in order to deal with + * column names that include the path. Consider a query like this: + * + * SELECT hostname.database.table.column AS c FROM hostname.database.table + * + * Or a query with aliasing: + * + * SELECT m.member_id, m.member_name FROM members AS m + * + * Since the column name can include up to four segments (host, DB, table, column) + * or also have an alias prefix, we need to do a bit of work to figure this out and + * insert the table prefix (if it exists) in the proper position, and escape only + * the correct identifiers. + * + * @param string + * @param bool + * @param mixed + * @param bool + * @return string + */ + public function protect_identifiers($item, $prefix_single = FALSE, $protect_identifiers = NULL, $field_exists = TRUE) + { + if ( ! is_bool($protect_identifiers)) + { + $protect_identifiers = $this->_protect_identifiers; + } + + if (is_array($item)) + { + $escaped_array = array(); + foreach ($item as $k => $v) + { + $escaped_array[$this->protect_identifiers($k)] = $this->protect_identifiers($v, $prefix_single, $protect_identifiers, $field_exists); + } + + return $escaped_array; + } + + // This is basically a bug fix for queries that use MAX, MIN, etc. + // If a parenthesis is found we know that we do not need to + // escape the data or add a prefix. There's probably a more graceful + // way to deal with this, but I'm not thinking of it -- Rick + // + // Added exception for single quotes as well, we don't want to alter + // literal strings. -- Narf + if (strcspn($item, "()'") !== strlen($item)) + { + return $item; + } + + // Convert tabs or multiple spaces into single spaces + $item = preg_replace('/\s+/', ' ', trim($item)); + + // If the item has an alias declaration we remove it and set it aside. + // Note: strripos() is used in order to support spaces in table names + if ($offset = strripos($item, ' AS ')) + { + $alias = ($protect_identifiers) + ? substr($item, $offset, 4).$this->escape_identifiers(substr($item, $offset + 4)) + : substr($item, $offset); + $item = substr($item, 0, $offset); + } + elseif ($offset = strrpos($item, ' ')) + { + $alias = ($protect_identifiers) + ? ' '.$this->escape_identifiers(substr($item, $offset + 1)) + : substr($item, $offset); + $item = substr($item, 0, $offset); + } + else + { + $alias = ''; + } + + // Break the string apart if it contains periods, then insert the table prefix + // in the correct location, assuming the period doesn't indicate that we're dealing + // with an alias. While we're at it, we will escape the components + if (strpos($item, '.') !== FALSE) + { + $parts = explode('.', $item); + + // Does the first segment of the exploded item match + // one of the aliases previously identified? If so, + // we have nothing more to do other than escape the item + // + // NOTE: The ! empty() condition prevents this method + // from breaking when QB isn't enabled. + if ( ! empty($this->qb_aliased_tables) && in_array($parts[0], $this->qb_aliased_tables)) + { + if ($protect_identifiers === TRUE) + { + foreach ($parts as $key => $val) + { + if ( ! in_array($val, $this->_reserved_identifiers)) + { + $parts[$key] = $this->escape_identifiers($val); + } + } + + $item = implode('.', $parts); + } + + return $item.$alias; + } + + // Is there a table prefix defined in the config file? If not, no need to do anything + if ($this->dbprefix !== '') + { + // We now add the table prefix based on some logic. + // Do we have 4 segments (hostname.database.table.column)? + // If so, we add the table prefix to the column name in the 3rd segment. + if (isset($parts[3])) + { + $i = 2; + } + // Do we have 3 segments (database.table.column)? + // If so, we add the table prefix to the column name in 2nd position + elseif (isset($parts[2])) + { + $i = 1; + } + // Do we have 2 segments (table.column)? + // If so, we add the table prefix to the column name in 1st segment + else + { + $i = 0; + } + + // This flag is set when the supplied $item does not contain a field name. + // This can happen when this function is being called from a JOIN. + if ($field_exists === FALSE) + { + $i++; + } + + // dbprefix may've already been applied, with or without the identifier escaped + $ec = '(?'.preg_quote(is_array($this->_escape_char) ? $this->_escape_char[0] : $this->_escape_char).')?'; + isset($ec[0]) && $ec .= '?'; // Just in case someone has disabled escaping by forcing an empty escape character + + // Verify table prefix and replace if necessary + if ($this->swap_pre !== '' && preg_match('#^'.$ec.preg_quote($this->swap_pre).'#', $parts[$i])) + { + $parts[$i] = preg_replace('#^'.$ec.preg_quote($this->swap_pre).'(\S+?)#', '\\1'.$this->dbprefix.'\\2', $parts[$i]); + } + // We only add the table prefix if it does not already exist + else + { + preg_match('#^'.$ec.preg_quote($this->dbprefix).'#', $parts[$i]) OR $parts[$i] = $this->dbprefix.$parts[$i]; + } + + // Put the parts back together + $item = implode('.', $parts); + } + + if ($protect_identifiers === TRUE) + { + $item = $this->escape_identifiers($item); + } + + return $item.$alias; + } + + // Is there a table prefix? If not, no need to insert it + if ($this->dbprefix !== '') + { + // Verify table prefix and replace if necessary + if ($this->swap_pre !== '' && strpos($item, $this->swap_pre) === 0) + { + $item = preg_replace('/^'.$this->swap_pre.'(\S+?)/', $this->dbprefix.'\\1', $item); + } + // Do we prefix an item with no segments? + elseif ($prefix_single === TRUE && strpos($item, $this->dbprefix) !== 0) + { + $item = $this->dbprefix.$item; + } + } + + if ($protect_identifiers === TRUE && ! in_array($item, $this->_reserved_identifiers)) + { + $item = $this->escape_identifiers($item); + } + + return $item.$alias; + } + + // -------------------------------------------------------------------- + + /** + * Dummy method that allows Query Builder class to be disabled + * and keep count_all() working. + * + * @return void + */ + protected function _reset_select() + { + } + +} diff --git a/www/system/database/DB_forge.php b/www/system/database/DB_forge.php new file mode 100644 index 0000000..d3057dc --- /dev/null +++ b/www/system/database/DB_forge.php @@ -0,0 +1,1030 @@ +db =& $db; + log_message('info', 'Database Forge Class Initialized'); + } + + // -------------------------------------------------------------------- + + /** + * Create database + * + * @param string $db_name + * @return bool + */ + public function create_database($db_name) + { + if ($this->_create_database === FALSE) + { + return ($this->db->db_debug) ? $this->db->display_error('db_unsupported_feature') : FALSE; + } + elseif ( ! $this->db->query(sprintf($this->_create_database, $this->db->escape_identifiers($db_name), $this->db->char_set, $this->db->dbcollat))) + { + return ($this->db->db_debug) ? $this->db->display_error('db_unable_to_drop') : FALSE; + } + + if ( ! empty($this->db->data_cache['db_names'])) + { + $this->db->data_cache['db_names'][] = $db_name; + } + + return TRUE; + } + + // -------------------------------------------------------------------- + + /** + * Drop database + * + * @param string $db_name + * @return bool + */ + public function drop_database($db_name) + { + if ($this->_drop_database === FALSE) + { + return ($this->db->db_debug) ? $this->db->display_error('db_unsupported_feature') : FALSE; + } + elseif ( ! $this->db->query(sprintf($this->_drop_database, $this->db->escape_identifiers($db_name)))) + { + return ($this->db->db_debug) ? $this->db->display_error('db_unable_to_drop') : FALSE; + } + + if ( ! empty($this->db->data_cache['db_names'])) + { + $key = array_search(strtolower($db_name), array_map('strtolower', $this->db->data_cache['db_names']), TRUE); + if ($key !== FALSE) + { + unset($this->db->data_cache['db_names'][$key]); + } + } + + return TRUE; + } + + // -------------------------------------------------------------------- + + /** + * Add Key + * + * @param string $key + * @param bool $primary + * @return CI_DB_forge + */ + public function add_key($key, $primary = FALSE) + { + // DO NOT change this! This condition is only applicable + // for PRIMARY keys because you can only have one such, + // and therefore all fields you add to it will be included + // in the same, composite PRIMARY KEY. + // + // It's not the same for regular indexes. + if ($primary === TRUE && is_array($key)) + { + foreach ($key as $one) + { + $this->add_key($one, $primary); + } + + return $this; + } + + if ($primary === TRUE) + { + $this->primary_keys[] = $key; + } + else + { + $this->keys[] = $key; + } + + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Add Field + * + * @param array $field + * @return CI_DB_forge + */ + public function add_field($field) + { + if (is_string($field)) + { + if ($field === 'id') + { + $this->add_field(array( + 'id' => array( + 'type' => 'INT', + 'constraint' => 9, + 'auto_increment' => TRUE + ) + )); + $this->add_key('id', TRUE); + } + else + { + if (strpos($field, ' ') === FALSE) + { + show_error('Field information is required for that operation.'); + } + + $this->fields[] = $field; + } + } + + if (is_array($field)) + { + $this->fields = array_merge($this->fields, $field); + } + + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Create Table + * + * @param string $table Table name + * @param bool $if_not_exists Whether to add IF NOT EXISTS condition + * @param array $attributes Associative array of table attributes + * @return bool + */ + public function create_table($table, $if_not_exists = FALSE, array $attributes = array()) + { + if ($table === '') + { + show_error('A table name is required for that operation.'); + } + else + { + $table = $this->db->dbprefix.$table; + } + + if (count($this->fields) === 0) + { + show_error('Field information is required.'); + } + + $sql = $this->_create_table($table, $if_not_exists, $attributes); + + if (is_bool($sql)) + { + $this->_reset(); + if ($sql === FALSE) + { + return ($this->db->db_debug) ? $this->db->display_error('db_unsupported_feature') : FALSE; + } + } + + if (($result = $this->db->query($sql)) !== FALSE) + { + isset($this->db->data_cache['table_names']) && $this->db->data_cache['table_names'][] = $table; + + // Most databases don't support creating indexes from within the CREATE TABLE statement + if ( ! empty($this->keys)) + { + for ($i = 0, $sqls = $this->_process_indexes($table), $c = count($sqls); $i < $c; $i++) + { + $this->db->query($sqls[$i]); + } + } + } + + $this->_reset(); + return $result; + } + + // -------------------------------------------------------------------- + + /** + * Create Table + * + * @param string $table Table name + * @param bool $if_not_exists Whether to add 'IF NOT EXISTS' condition + * @param array $attributes Associative array of table attributes + * @return mixed + */ + protected function _create_table($table, $if_not_exists, $attributes) + { + if ($if_not_exists === TRUE && $this->_create_table_if === FALSE) + { + if ($this->db->table_exists($table)) + { + return TRUE; + } + + $if_not_exists = FALSE; + } + + $sql = ($if_not_exists) + ? sprintf($this->_create_table_if, $this->db->escape_identifiers($table)) + : 'CREATE TABLE'; + + $columns = $this->_process_fields(TRUE); + for ($i = 0, $c = count($columns); $i < $c; $i++) + { + $columns[$i] = ($columns[$i]['_literal'] !== FALSE) + ? "\n\t".$columns[$i]['_literal'] + : "\n\t".$this->_process_column($columns[$i]); + } + + $columns = implode(',', $columns) + .$this->_process_primary_keys($table); + + // Are indexes created from within the CREATE TABLE statement? (e.g. in MySQL) + if ($this->_create_table_keys === TRUE) + { + $columns .= $this->_process_indexes($table); + } + + // _create_table will usually have the following format: "%s %s (%s\n)" + $sql = sprintf($this->_create_table.'%s', + $sql, + $this->db->escape_identifiers($table), + $columns, + $this->_create_table_attr($attributes) + ); + + return $sql; + } + + // -------------------------------------------------------------------- + + /** + * CREATE TABLE attributes + * + * @param array $attributes Associative array of table attributes + * @return string + */ + protected function _create_table_attr($attributes) + { + $sql = ''; + + foreach (array_keys($attributes) as $key) + { + if (is_string($key)) + { + $sql .= ' '.strtoupper($key).' '.$attributes[$key]; + } + } + + return $sql; + } + + // -------------------------------------------------------------------- + + /** + * Drop Table + * + * @param string $table_name Table name + * @param bool $if_exists Whether to add an IF EXISTS condition + * @return bool + */ + public function drop_table($table_name, $if_exists = FALSE) + { + if ($table_name === '') + { + return ($this->db->db_debug) ? $this->db->display_error('db_table_name_required') : FALSE; + } + + if (($query = $this->_drop_table($this->db->dbprefix.$table_name, $if_exists)) === TRUE) + { + return TRUE; + } + + $query = $this->db->query($query); + + // Update table list cache + if ($query && ! empty($this->db->data_cache['table_names'])) + { + $key = array_search(strtolower($this->db->dbprefix.$table_name), array_map('strtolower', $this->db->data_cache['table_names']), TRUE); + if ($key !== FALSE) + { + unset($this->db->data_cache['table_names'][$key]); + } + } + + return $query; + } + + // -------------------------------------------------------------------- + + /** + * Drop Table + * + * Generates a platform-specific DROP TABLE string + * + * @param string $table Table name + * @param bool $if_exists Whether to add an IF EXISTS condition + * @return mixed (Returns a platform-specific DROP table string, or TRUE to indicate there's nothing to do) + */ + protected function _drop_table($table, $if_exists) + { + $sql = 'DROP TABLE'; + + if ($if_exists) + { + if ($this->_drop_table_if === FALSE) + { + if ( ! $this->db->table_exists($table)) + { + return TRUE; + } + } + else + { + $sql = sprintf($this->_drop_table_if, $this->db->escape_identifiers($table)); + } + } + + return $sql.' '.$this->db->escape_identifiers($table); + } + + // -------------------------------------------------------------------- + + /** + * Rename Table + * + * @param string $table_name Old table name + * @param string $new_table_name New table name + * @return bool + */ + public function rename_table($table_name, $new_table_name) + { + if ($table_name === '' OR $new_table_name === '') + { + show_error('A table name is required for that operation.'); + return FALSE; + } + elseif ($this->_rename_table === FALSE) + { + return ($this->db->db_debug) ? $this->db->display_error('db_unsupported_feature') : FALSE; + } + + $result = $this->db->query(sprintf($this->_rename_table, + $this->db->escape_identifiers($this->db->dbprefix.$table_name), + $this->db->escape_identifiers($this->db->dbprefix.$new_table_name)) + ); + + if ($result && ! empty($this->db->data_cache['table_names'])) + { + $key = array_search(strtolower($this->db->dbprefix.$table_name), array_map('strtolower', $this->db->data_cache['table_names']), TRUE); + if ($key !== FALSE) + { + $this->db->data_cache['table_names'][$key] = $this->db->dbprefix.$new_table_name; + } + } + + return $result; + } + + // -------------------------------------------------------------------- + + /** + * Column Add + * + * @todo Remove deprecated $_after option in 3.1+ + * @param string $table Table name + * @param array $field Column definition + * @param string $_after Column for AFTER clause (deprecated) + * @return bool + */ + public function add_column($table, $field, $_after = NULL) + { + // Work-around for literal column definitions + is_array($field) OR $field = array($field); + + foreach (array_keys($field) as $k) + { + // Backwards-compatibility work-around for MySQL/CUBRID AFTER clause (remove in 3.1+) + if ($_after !== NULL && is_array($field[$k]) && ! isset($field[$k]['after'])) + { + $field[$k]['after'] = $_after; + } + + $this->add_field(array($k => $field[$k])); + } + + $sqls = $this->_alter_table('ADD', $this->db->dbprefix.$table, $this->_process_fields()); + $this->_reset(); + if ($sqls === FALSE) + { + return ($this->db->db_debug) ? $this->db->display_error('db_unsupported_feature') : FALSE; + } + + for ($i = 0, $c = count($sqls); $i < $c; $i++) + { + if ($this->db->query($sqls[$i]) === FALSE) + { + return FALSE; + } + } + + return TRUE; + } + + // -------------------------------------------------------------------- + + /** + * Column Drop + * + * @param string $table Table name + * @param string $column_name Column name + * @return bool + */ + public function drop_column($table, $column_name) + { + $sql = $this->_alter_table('DROP', $this->db->dbprefix.$table, $column_name); + if ($sql === FALSE) + { + return ($this->db->db_debug) ? $this->db->display_error('db_unsupported_feature') : FALSE; + } + + return $this->db->query($sql); + } + + // -------------------------------------------------------------------- + + /** + * Column Modify + * + * @param string $table Table name + * @param string $field Column definition + * @return bool + */ + public function modify_column($table, $field) + { + // Work-around for literal column definitions + is_array($field) OR $field = array($field); + + foreach (array_keys($field) as $k) + { + $this->add_field(array($k => $field[$k])); + } + + if (count($this->fields) === 0) + { + show_error('Field information is required.'); + } + + $sqls = $this->_alter_table('CHANGE', $this->db->dbprefix.$table, $this->_process_fields()); + $this->_reset(); + if ($sqls === FALSE) + { + return ($this->db->db_debug) ? $this->db->display_error('db_unsupported_feature') : FALSE; + } + + for ($i = 0, $c = count($sqls); $i < $c; $i++) + { + if ($this->db->query($sqls[$i]) === FALSE) + { + return FALSE; + } + } + + return TRUE; + } + + // -------------------------------------------------------------------- + + /** + * ALTER TABLE + * + * @param string $alter_type ALTER type + * @param string $table Table name + * @param mixed $field Column definition + * @return string|string[] + */ + protected function _alter_table($alter_type, $table, $field) + { + $sql = 'ALTER TABLE '.$this->db->escape_identifiers($table).' '; + + // DROP has everything it needs now. + if ($alter_type === 'DROP') + { + return $sql.'DROP COLUMN '.$this->db->escape_identifiers($field); + } + + $sql .= ($alter_type === 'ADD') + ? 'ADD ' + : $alter_type.' COLUMN '; + + $sqls = array(); + for ($i = 0, $c = count($field); $i < $c; $i++) + { + $sqls[] = $sql + .($field[$i]['_literal'] !== FALSE ? $field[$i]['_literal'] : $this->_process_column($field[$i])); + } + + return $sqls; + } + + // -------------------------------------------------------------------- + + /** + * Process fields + * + * @param bool $create_table + * @return array + */ + protected function _process_fields($create_table = FALSE) + { + $fields = array(); + + foreach ($this->fields as $key => $attributes) + { + if (is_int($key) && ! is_array($attributes)) + { + $fields[] = array('_literal' => $attributes); + continue; + } + + $attributes = array_change_key_case($attributes, CASE_UPPER); + + if ($create_table === TRUE && empty($attributes['TYPE'])) + { + continue; + } + + isset($attributes['TYPE']) && $this->_attr_type($attributes); + + $field = array( + 'name' => $key, + 'new_name' => isset($attributes['NAME']) ? $attributes['NAME'] : NULL, + 'type' => isset($attributes['TYPE']) ? $attributes['TYPE'] : NULL, + 'length' => '', + 'unsigned' => '', + 'null' => '', + 'unique' => '', + 'default' => '', + 'auto_increment' => '', + '_literal' => FALSE + ); + + isset($attributes['TYPE']) && $this->_attr_unsigned($attributes, $field); + + if ($create_table === FALSE) + { + if (isset($attributes['AFTER'])) + { + $field['after'] = $attributes['AFTER']; + } + elseif (isset($attributes['FIRST'])) + { + $field['first'] = (bool) $attributes['FIRST']; + } + } + + $this->_attr_default($attributes, $field); + + if (isset($attributes['NULL'])) + { + if ($attributes['NULL'] === TRUE) + { + $field['null'] = empty($this->_null) ? '' : ' '.$this->_null; + } + else + { + $field['null'] = ' NOT NULL'; + } + } + elseif ($create_table === TRUE) + { + $field['null'] = ' NOT NULL'; + } + + $this->_attr_auto_increment($attributes, $field); + $this->_attr_unique($attributes, $field); + + if (isset($attributes['COMMENT'])) + { + $field['comment'] = $this->db->escape($attributes['COMMENT']); + } + + if (isset($attributes['TYPE']) && ! empty($attributes['CONSTRAINT'])) + { + switch (strtoupper($attributes['TYPE'])) + { + case 'ENUM': + case 'SET': + $attributes['CONSTRAINT'] = $this->db->escape($attributes['CONSTRAINT']); + default: + $field['length'] = is_array($attributes['CONSTRAINT']) + ? '('.implode(',', $attributes['CONSTRAINT']).')' + : '('.$attributes['CONSTRAINT'].')'; + break; + } + } + + $fields[] = $field; + } + + return $fields; + } + + // -------------------------------------------------------------------- + + /** + * Process column + * + * @param array $field + * @return string + */ + protected function _process_column($field) + { + return $this->db->escape_identifiers($field['name']) + .' '.$field['type'].$field['length'] + .$field['unsigned'] + .$field['default'] + .$field['null'] + .$field['auto_increment'] + .$field['unique']; + } + + // -------------------------------------------------------------------- + + /** + * Field attribute TYPE + * + * Performs a data type mapping between different databases. + * + * @param array &$attributes + * @return void + */ + protected function _attr_type(&$attributes) + { + // Usually overridden by drivers + } + + // -------------------------------------------------------------------- + + /** + * Field attribute UNSIGNED + * + * Depending on the _unsigned property value: + * + * - TRUE will always set $field['unsigned'] to 'UNSIGNED' + * - FALSE will always set $field['unsigned'] to '' + * - array(TYPE) will set $field['unsigned'] to 'UNSIGNED', + * if $attributes['TYPE'] is found in the array + * - array(TYPE => UTYPE) will change $field['type'], + * from TYPE to UTYPE in case of a match + * + * @param array &$attributes + * @param array &$field + * @return void + */ + protected function _attr_unsigned(&$attributes, &$field) + { + if (empty($attributes['UNSIGNED']) OR $attributes['UNSIGNED'] !== TRUE) + { + return; + } + + // Reset the attribute in order to avoid issues if we do type conversion + $attributes['UNSIGNED'] = FALSE; + + if (is_array($this->_unsigned)) + { + foreach (array_keys($this->_unsigned) as $key) + { + if (is_int($key) && strcasecmp($attributes['TYPE'], $this->_unsigned[$key]) === 0) + { + $field['unsigned'] = ' UNSIGNED'; + return; + } + elseif (is_string($key) && strcasecmp($attributes['TYPE'], $key) === 0) + { + $field['type'] = $key; + return; + } + } + + return; + } + + $field['unsigned'] = ($this->_unsigned === TRUE) ? ' UNSIGNED' : ''; + } + + // -------------------------------------------------------------------- + + /** + * Field attribute DEFAULT + * + * @param array &$attributes + * @param array &$field + * @return void + */ + protected function _attr_default(&$attributes, &$field) + { + if ($this->_default === FALSE) + { + return; + } + + if (array_key_exists('DEFAULT', $attributes)) + { + if ($attributes['DEFAULT'] === NULL) + { + $field['default'] = empty($this->_null) ? '' : $this->_default.$this->_null; + + // Override the NULL attribute if that's our default + $attributes['NULL'] = TRUE; + $field['null'] = empty($this->_null) ? '' : ' '.$this->_null; + } + else + { + $field['default'] = $this->_default.$this->db->escape($attributes['DEFAULT']); + } + } + } + + // -------------------------------------------------------------------- + + /** + * Field attribute UNIQUE + * + * @param array &$attributes + * @param array &$field + * @return void + */ + protected function _attr_unique(&$attributes, &$field) + { + if ( ! empty($attributes['UNIQUE']) && $attributes['UNIQUE'] === TRUE) + { + $field['unique'] = ' UNIQUE'; + } + } + + // -------------------------------------------------------------------- + + /** + * Field attribute AUTO_INCREMENT + * + * @param array &$attributes + * @param array &$field + * @return void + */ + protected function _attr_auto_increment(&$attributes, &$field) + { + if ( ! empty($attributes['AUTO_INCREMENT']) && $attributes['AUTO_INCREMENT'] === TRUE && stripos($field['type'], 'int') !== FALSE) + { + $field['auto_increment'] = ' AUTO_INCREMENT'; + } + } + + // -------------------------------------------------------------------- + + /** + * Process primary keys + * + * @param string $table Table name + * @return string + */ + protected function _process_primary_keys($table) + { + $sql = ''; + + for ($i = 0, $c = count($this->primary_keys); $i < $c; $i++) + { + if ( ! isset($this->fields[$this->primary_keys[$i]])) + { + unset($this->primary_keys[$i]); + } + } + + if (count($this->primary_keys) > 0) + { + $sql .= ",\n\tCONSTRAINT ".$this->db->escape_identifiers('pk_'.$table) + .' PRIMARY KEY('.implode(', ', $this->db->escape_identifiers($this->primary_keys)).')'; + } + + return $sql; + } + + // -------------------------------------------------------------------- + + /** + * Process indexes + * + * @param string $table Table name + * @return string[] list of SQL statements + */ + protected function _process_indexes($table) + { + $sqls = array(); + + for ($i = 0, $c = count($this->keys); $i < $c; $i++) + { + if (is_array($this->keys[$i])) + { + for ($i2 = 0, $c2 = count($this->keys[$i]); $i2 < $c2; $i2++) + { + if ( ! isset($this->fields[$this->keys[$i][$i2]])) + { + unset($this->keys[$i][$i2]); + continue; + } + } + } + elseif ( ! isset($this->fields[$this->keys[$i]])) + { + unset($this->keys[$i]); + continue; + } + + is_array($this->keys[$i]) OR $this->keys[$i] = array($this->keys[$i]); + + $sqls[] = 'CREATE INDEX '.$this->db->escape_identifiers($table.'_'.implode('_', $this->keys[$i])) + .' ON '.$this->db->escape_identifiers($table) + .' ('.implode(', ', $this->db->escape_identifiers($this->keys[$i])).');'; + } + + return $sqls; + } + + // -------------------------------------------------------------------- + + /** + * Reset + * + * Resets table creation vars + * + * @return void + */ + protected function _reset() + { + $this->fields = $this->keys = $this->primary_keys = array(); + } + +} diff --git a/www/system/database/DB_query_builder.php b/www/system/database/DB_query_builder.php new file mode 100644 index 0000000..b9bbb50 --- /dev/null +++ b/www/system/database/DB_query_builder.php @@ -0,0 +1,2803 @@ +_protect_identifiers; + + foreach ($select as $val) + { + $val = trim($val); + + if ($val !== '') + { + $this->qb_select[] = $val; + $this->qb_no_escape[] = $escape; + + if ($this->qb_caching === TRUE) + { + $this->qb_cache_select[] = $val; + $this->qb_cache_exists[] = 'select'; + $this->qb_cache_no_escape[] = $escape; + } + } + } + + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Select Max + * + * Generates a SELECT MAX(field) portion of a query + * + * @param string the field + * @param string an alias + * @return CI_DB_query_builder + */ + public function select_max($select = '', $alias = '') + { + return $this->_max_min_avg_sum($select, $alias, 'MAX'); + } + + // -------------------------------------------------------------------- + + /** + * Select Min + * + * Generates a SELECT MIN(field) portion of a query + * + * @param string the field + * @param string an alias + * @return CI_DB_query_builder + */ + public function select_min($select = '', $alias = '') + { + return $this->_max_min_avg_sum($select, $alias, 'MIN'); + } + + // -------------------------------------------------------------------- + + /** + * Select Average + * + * Generates a SELECT AVG(field) portion of a query + * + * @param string the field + * @param string an alias + * @return CI_DB_query_builder + */ + public function select_avg($select = '', $alias = '') + { + return $this->_max_min_avg_sum($select, $alias, 'AVG'); + } + + // -------------------------------------------------------------------- + + /** + * Select Sum + * + * Generates a SELECT SUM(field) portion of a query + * + * @param string the field + * @param string an alias + * @return CI_DB_query_builder + */ + public function select_sum($select = '', $alias = '') + { + return $this->_max_min_avg_sum($select, $alias, 'SUM'); + } + + // -------------------------------------------------------------------- + + /** + * SELECT [MAX|MIN|AVG|SUM]() + * + * @used-by select_max() + * @used-by select_min() + * @used-by select_avg() + * @used-by select_sum() + * + * @param string $select Field name + * @param string $alias + * @param string $type + * @return CI_DB_query_builder + */ + protected function _max_min_avg_sum($select = '', $alias = '', $type = 'MAX') + { + if ( ! is_string($select) OR $select === '') + { + $this->display_error('db_invalid_query'); + } + + $type = strtoupper($type); + + if ( ! in_array($type, array('MAX', 'MIN', 'AVG', 'SUM'))) + { + show_error('Invalid function type: '.$type); + } + + if ($alias === '') + { + $alias = $this->_create_alias_from_table(trim($select)); + } + + $sql = $type.'('.$this->protect_identifiers(trim($select)).') AS '.$this->escape_identifiers(trim($alias)); + + $this->qb_select[] = $sql; + $this->qb_no_escape[] = NULL; + + if ($this->qb_caching === TRUE) + { + $this->qb_cache_select[] = $sql; + $this->qb_cache_exists[] = 'select'; + } + + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Determines the alias name based on the table + * + * @param string $item + * @return string + */ + protected function _create_alias_from_table($item) + { + if (strpos($item, '.') !== FALSE) + { + $item = explode('.', $item); + return end($item); + } + + return $item; + } + + // -------------------------------------------------------------------- + + /** + * DISTINCT + * + * Sets a flag which tells the query string compiler to add DISTINCT + * + * @param bool $val + * @return CI_DB_query_builder + */ + public function distinct($val = TRUE) + { + $this->qb_distinct = is_bool($val) ? $val : TRUE; + return $this; + } + + // -------------------------------------------------------------------- + + /** + * From + * + * Generates the FROM portion of the query + * + * @param mixed $from can be a string or array + * @return CI_DB_query_builder + */ + public function from($from) + { + foreach ((array) $from as $val) + { + if (strpos($val, ',') !== FALSE) + { + foreach (explode(',', $val) as $v) + { + $v = trim($v); + $this->_track_aliases($v); + + $this->qb_from[] = $v = $this->protect_identifiers($v, TRUE, NULL, FALSE); + + if ($this->qb_caching === TRUE) + { + $this->qb_cache_from[] = $v; + $this->qb_cache_exists[] = 'from'; + } + } + } + else + { + $val = trim($val); + + // Extract any aliases that might exist. We use this information + // in the protect_identifiers to know whether to add a table prefix + $this->_track_aliases($val); + + $this->qb_from[] = $val = $this->protect_identifiers($val, TRUE, NULL, FALSE); + + if ($this->qb_caching === TRUE) + { + $this->qb_cache_from[] = $val; + $this->qb_cache_exists[] = 'from'; + } + } + } + + return $this; + } + + // -------------------------------------------------------------------- + + /** + * JOIN + * + * Generates the JOIN portion of the query + * + * @param string + * @param string the join condition + * @param string the type of join + * @param string whether not to try to escape identifiers + * @return CI_DB_query_builder + */ + public function join($table, $cond, $type = '', $escape = NULL) + { + if ($type !== '') + { + $type = strtoupper(trim($type)); + + if ( ! in_array($type, array('LEFT', 'RIGHT', 'OUTER', 'INNER', 'LEFT OUTER', 'RIGHT OUTER'), TRUE)) + { + $type = ''; + } + else + { + $type .= ' '; + } + } + + // Extract any aliases that might exist. We use this information + // in the protect_identifiers to know whether to add a table prefix + $this->_track_aliases($table); + + is_bool($escape) OR $escape = $this->_protect_identifiers; + + if ( ! $this->_has_operator($cond)) + { + $cond = ' USING ('.($escape ? $this->escape_identifiers($cond) : $cond).')'; + } + elseif ($escape === FALSE) + { + $cond = ' ON '.$cond; + } + else + { + // Split multiple conditions + if (preg_match_all('/\sAND\s|\sOR\s/i', $cond, $joints, PREG_OFFSET_CAPTURE)) + { + $conditions = array(); + $joints = $joints[0]; + array_unshift($joints, array('', 0)); + + for ($i = count($joints) - 1, $pos = strlen($cond); $i >= 0; $i--) + { + $joints[$i][1] += strlen($joints[$i][0]); // offset + $conditions[$i] = substr($cond, $joints[$i][1], $pos - $joints[$i][1]); + $pos = $joints[$i][1] - strlen($joints[$i][0]); + $joints[$i] = $joints[$i][0]; + } + } + else + { + $conditions = array($cond); + $joints = array(''); + } + + $cond = ' ON '; + for ($i = 0, $c = count($conditions); $i < $c; $i++) + { + $operator = $this->_get_operator($conditions[$i]); + $cond .= $joints[$i]; + $cond .= preg_match("/(\(*)?([\[\]\w\.'-]+)".preg_quote($operator)."(.*)/i", $conditions[$i], $match) + ? $match[1].$this->protect_identifiers($match[2]).$operator.$this->protect_identifiers($match[3]) + : $conditions[$i]; + } + } + + // Do we want to escape the table name? + if ($escape === TRUE) + { + $table = $this->protect_identifiers($table, TRUE, NULL, FALSE); + } + + // Assemble the JOIN statement + $this->qb_join[] = $join = $type.'JOIN '.$table.$cond; + + if ($this->qb_caching === TRUE) + { + $this->qb_cache_join[] = $join; + $this->qb_cache_exists[] = 'join'; + } + + return $this; + } + + // -------------------------------------------------------------------- + + /** + * WHERE + * + * Generates the WHERE portion of the query. + * Separates multiple calls with 'AND'. + * + * @param mixed + * @param mixed + * @param bool + * @return CI_DB_query_builder + */ + public function where($key, $value = NULL, $escape = NULL) + { + return $this->_wh('qb_where', $key, $value, 'AND ', $escape); + } + + // -------------------------------------------------------------------- + + /** + * OR WHERE + * + * Generates the WHERE portion of the query. + * Separates multiple calls with 'OR'. + * + * @param mixed + * @param mixed + * @param bool + * @return CI_DB_query_builder + */ + public function or_where($key, $value = NULL, $escape = NULL) + { + return $this->_wh('qb_where', $key, $value, 'OR ', $escape); + } + + // -------------------------------------------------------------------- + + /** + * WHERE, HAVING + * + * @used-by where() + * @used-by or_where() + * @used-by having() + * @used-by or_having() + * + * @param string $qb_key 'qb_where' or 'qb_having' + * @param mixed $key + * @param mixed $value + * @param string $type + * @param bool $escape + * @return CI_DB_query_builder + */ + protected function _wh($qb_key, $key, $value = NULL, $type = 'AND ', $escape = NULL) + { + $qb_cache_key = ($qb_key === 'qb_having') ? 'qb_cache_having' : 'qb_cache_where'; + + if ( ! is_array($key)) + { + $key = array($key => $value); + } + + // If the escape value was not set will base it on the global setting + is_bool($escape) OR $escape = $this->_protect_identifiers; + + foreach ($key as $k => $v) + { + $prefix = (count($this->$qb_key) === 0 && count($this->$qb_cache_key) === 0) + ? $this->_group_get_type('') + : $this->_group_get_type($type); + + if ($v !== NULL) + { + if ($escape === TRUE) + { + $v = ' '.$this->escape($v); + } + + if ( ! $this->_has_operator($k)) + { + $k .= ' = '; + } + } + elseif ( ! $this->_has_operator($k)) + { + // value appears not to have been set, assign the test to IS NULL + $k .= ' IS NULL'; + } + elseif (preg_match('/\s*(!?=|<>|\sIS(?:\s+NOT)?\s)\s*$/i', $k, $match, PREG_OFFSET_CAPTURE)) + { + $k = substr($k, 0, $match[0][1]).($match[1][0] === '=' ? ' IS NULL' : ' IS NOT NULL'); + } + + $this->{$qb_key}[] = array('condition' => $prefix.$k.$v, 'escape' => $escape); + if ($this->qb_caching === TRUE) + { + $this->{$qb_cache_key}[] = array('condition' => $prefix.$k.$v, 'escape' => $escape); + $this->qb_cache_exists[] = substr($qb_key, 3); + } + + } + + return $this; + } + + // -------------------------------------------------------------------- + + /** + * WHERE IN + * + * Generates a WHERE field IN('item', 'item') SQL query, + * joined with 'AND' if appropriate. + * + * @param string $key The field to search + * @param array $values The values searched on + * @param bool $escape + * @return CI_DB_query_builder + */ + public function where_in($key = NULL, $values = NULL, $escape = NULL) + { + return $this->_where_in($key, $values, FALSE, 'AND ', $escape); + } + + // -------------------------------------------------------------------- + + /** + * OR WHERE IN + * + * Generates a WHERE field IN('item', 'item') SQL query, + * joined with 'OR' if appropriate. + * + * @param string $key The field to search + * @param array $values The values searched on + * @param bool $escape + * @return CI_DB_query_builder + */ + public function or_where_in($key = NULL, $values = NULL, $escape = NULL) + { + return $this->_where_in($key, $values, FALSE, 'OR ', $escape); + } + + // -------------------------------------------------------------------- + + /** + * WHERE NOT IN + * + * Generates a WHERE field NOT IN('item', 'item') SQL query, + * joined with 'AND' if appropriate. + * + * @param string $key The field to search + * @param array $values The values searched on + * @param bool $escape + * @return CI_DB_query_builder + */ + public function where_not_in($key = NULL, $values = NULL, $escape = NULL) + { + return $this->_where_in($key, $values, TRUE, 'AND ', $escape); + } + + // -------------------------------------------------------------------- + + /** + * OR WHERE NOT IN + * + * Generates a WHERE field NOT IN('item', 'item') SQL query, + * joined with 'OR' if appropriate. + * + * @param string $key The field to search + * @param array $values The values searched on + * @param bool $escape + * @return CI_DB_query_builder + */ + public function or_where_not_in($key = NULL, $values = NULL, $escape = NULL) + { + return $this->_where_in($key, $values, TRUE, 'OR ', $escape); + } + + // -------------------------------------------------------------------- + + /** + * Internal WHERE IN + * + * @used-by where_in() + * @used-by or_where_in() + * @used-by where_not_in() + * @used-by or_where_not_in() + * + * @param string $key The field to search + * @param array $values The values searched on + * @param bool $not If the statement would be IN or NOT IN + * @param string $type + * @param bool $escape + * @return CI_DB_query_builder + */ + protected function _where_in($key = NULL, $values = NULL, $not = FALSE, $type = 'AND ', $escape = NULL) + { + if ($key === NULL OR $values === NULL) + { + return $this; + } + + if ( ! is_array($values)) + { + $values = array($values); + } + + is_bool($escape) OR $escape = $this->_protect_identifiers; + + $not = ($not) ? ' NOT' : ''; + + if ($escape === TRUE) + { + $where_in = array(); + foreach ($values as $value) + { + $where_in[] = $this->escape($value); + } + } + else + { + $where_in = array_values($values); + } + + $prefix = (count($this->qb_where) === 0 && count($this->qb_cache_where) === 0) + ? $this->_group_get_type('') + : $this->_group_get_type($type); + + $where_in = array( + 'condition' => $prefix.$key.$not.' IN('.implode(', ', $where_in).')', + 'escape' => $escape + ); + + $this->qb_where[] = $where_in; + if ($this->qb_caching === TRUE) + { + $this->qb_cache_where[] = $where_in; + $this->qb_cache_exists[] = 'where'; + } + + return $this; + } + + // -------------------------------------------------------------------- + + /** + * LIKE + * + * Generates a %LIKE% portion of the query. + * Separates multiple calls with 'AND'. + * + * @param mixed $field + * @param string $match + * @param string $side + * @param bool $escape + * @return CI_DB_query_builder + */ + public function like($field, $match = '', $side = 'both', $escape = NULL) + { + return $this->_like($field, $match, 'AND ', $side, '', $escape); + } + + // -------------------------------------------------------------------- + + /** + * NOT LIKE + * + * Generates a NOT LIKE portion of the query. + * Separates multiple calls with 'AND'. + * + * @param mixed $field + * @param string $match + * @param string $side + * @param bool $escape + * @return CI_DB_query_builder + */ + public function not_like($field, $match = '', $side = 'both', $escape = NULL) + { + return $this->_like($field, $match, 'AND ', $side, 'NOT', $escape); + } + + // -------------------------------------------------------------------- + + /** + * OR LIKE + * + * Generates a %LIKE% portion of the query. + * Separates multiple calls with 'OR'. + * + * @param mixed $field + * @param string $match + * @param string $side + * @param bool $escape + * @return CI_DB_query_builder + */ + public function or_like($field, $match = '', $side = 'both', $escape = NULL) + { + return $this->_like($field, $match, 'OR ', $side, '', $escape); + } + + // -------------------------------------------------------------------- + + /** + * OR NOT LIKE + * + * Generates a NOT LIKE portion of the query. + * Separates multiple calls with 'OR'. + * + * @param mixed $field + * @param string $match + * @param string $side + * @param bool $escape + * @return CI_DB_query_builder + */ + public function or_not_like($field, $match = '', $side = 'both', $escape = NULL) + { + return $this->_like($field, $match, 'OR ', $side, 'NOT', $escape); + } + + // -------------------------------------------------------------------- + + /** + * Internal LIKE + * + * @used-by like() + * @used-by or_like() + * @used-by not_like() + * @used-by or_not_like() + * + * @param mixed $field + * @param string $match + * @param string $type + * @param string $side + * @param string $not + * @param bool $escape + * @return CI_DB_query_builder + */ + protected function _like($field, $match = '', $type = 'AND ', $side = 'both', $not = '', $escape = NULL) + { + if ( ! is_array($field)) + { + $field = array($field => $match); + } + + is_bool($escape) OR $escape = $this->_protect_identifiers; + // lowercase $side in case somebody writes e.g. 'BEFORE' instead of 'before' (doh) + $side = strtolower($side); + + foreach ($field as $k => $v) + { + $prefix = (count($this->qb_where) === 0 && count($this->qb_cache_where) === 0) + ? $this->_group_get_type('') : $this->_group_get_type($type); + + if ($escape === TRUE) + { + $v = $this->escape_like_str($v); + } + + if ($side === 'none') + { + $like_statement = "{$prefix} {$k} {$not} LIKE '{$v}'"; + } + elseif ($side === 'before') + { + $like_statement = "{$prefix} {$k} {$not} LIKE '%{$v}'"; + } + elseif ($side === 'after') + { + $like_statement = "{$prefix} {$k} {$not} LIKE '{$v}%'"; + } + else + { + $like_statement = "{$prefix} {$k} {$not} LIKE '%{$v}%'"; + } + + // some platforms require an escape sequence definition for LIKE wildcards + if ($escape === TRUE && $this->_like_escape_str !== '') + { + $like_statement .= sprintf($this->_like_escape_str, $this->_like_escape_chr); + } + + $this->qb_where[] = array('condition' => $like_statement, 'escape' => $escape); + if ($this->qb_caching === TRUE) + { + $this->qb_cache_where[] = array('condition' => $like_statement, 'escape' => $escape); + $this->qb_cache_exists[] = 'where'; + } + } + + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Starts a query group. + * + * @param string $not (Internal use only) + * @param string $type (Internal use only) + * @return CI_DB_query_builder + */ + public function group_start($not = '', $type = 'AND ') + { + $type = $this->_group_get_type($type); + + $this->qb_where_group_started = TRUE; + $prefix = (count($this->qb_where) === 0 && count($this->qb_cache_where) === 0) ? '' : $type; + $where = array( + 'condition' => $prefix.$not.str_repeat(' ', ++$this->qb_where_group_count).' (', + 'escape' => FALSE + ); + + $this->qb_where[] = $where; + if ($this->qb_caching) + { + $this->qb_cache_where[] = $where; + } + + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Starts a query group, but ORs the group + * + * @return CI_DB_query_builder + */ + public function or_group_start() + { + return $this->group_start('', 'OR '); + } + + // -------------------------------------------------------------------- + + /** + * Starts a query group, but NOTs the group + * + * @return CI_DB_query_builder + */ + public function not_group_start() + { + return $this->group_start('NOT ', 'AND '); + } + + // -------------------------------------------------------------------- + + /** + * Starts a query group, but OR NOTs the group + * + * @return CI_DB_query_builder + */ + public function or_not_group_start() + { + return $this->group_start('NOT ', 'OR '); + } + + // -------------------------------------------------------------------- + + /** + * Ends a query group + * + * @return CI_DB_query_builder + */ + public function group_end() + { + $this->qb_where_group_started = FALSE; + $where = array( + 'condition' => str_repeat(' ', $this->qb_where_group_count--).')', + 'escape' => FALSE + ); + + $this->qb_where[] = $where; + if ($this->qb_caching) + { + $this->qb_cache_where[] = $where; + } + + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Group_get_type + * + * @used-by group_start() + * @used-by _like() + * @used-by _wh() + * @used-by _where_in() + * + * @param string $type + * @return string + */ + protected function _group_get_type($type) + { + if ($this->qb_where_group_started) + { + $type = ''; + $this->qb_where_group_started = FALSE; + } + + return $type; + } + + // -------------------------------------------------------------------- + + /** + * GROUP BY + * + * @param string $by + * @param bool $escape + * @return CI_DB_query_builder + */ + public function group_by($by, $escape = NULL) + { + is_bool($escape) OR $escape = $this->_protect_identifiers; + + if (is_string($by)) + { + $by = ($escape === TRUE) + ? explode(',', $by) + : array($by); + } + + foreach ($by as $val) + { + $val = trim($val); + + if ($val !== '') + { + $val = array('field' => $val, 'escape' => $escape); + + $this->qb_groupby[] = $val; + if ($this->qb_caching === TRUE) + { + $this->qb_cache_groupby[] = $val; + $this->qb_cache_exists[] = 'groupby'; + } + } + } + + return $this; + } + + // -------------------------------------------------------------------- + + /** + * HAVING + * + * Separates multiple calls with 'AND'. + * + * @param string $key + * @param string $value + * @param bool $escape + * @return CI_DB_query_builder + */ + public function having($key, $value = NULL, $escape = NULL) + { + return $this->_wh('qb_having', $key, $value, 'AND ', $escape); + } + + // -------------------------------------------------------------------- + + /** + * OR HAVING + * + * Separates multiple calls with 'OR'. + * + * @param string $key + * @param string $value + * @param bool $escape + * @return CI_DB_query_builder + */ + public function or_having($key, $value = NULL, $escape = NULL) + { + return $this->_wh('qb_having', $key, $value, 'OR ', $escape); + } + + // -------------------------------------------------------------------- + + /** + * ORDER BY + * + * @param string $orderby + * @param string $direction ASC, DESC or RANDOM + * @param bool $escape + * @return CI_DB_query_builder + */ + public function order_by($orderby, $direction = '', $escape = NULL) + { + $direction = strtoupper(trim($direction)); + + if ($direction === 'RANDOM') + { + $direction = ''; + + // Do we have a seed value? + $orderby = ctype_digit((string) $orderby) + ? sprintf($this->_random_keyword[1], $orderby) + : $this->_random_keyword[0]; + } + elseif (empty($orderby)) + { + return $this; + } + elseif ($direction !== '') + { + $direction = in_array($direction, array('ASC', 'DESC'), TRUE) ? ' '.$direction : ''; + } + + is_bool($escape) OR $escape = $this->_protect_identifiers; + + if ($escape === FALSE) + { + $qb_orderby[] = array('field' => $orderby, 'direction' => $direction, 'escape' => FALSE); + } + else + { + $qb_orderby = array(); + foreach (explode(',', $orderby) as $field) + { + $qb_orderby[] = ($direction === '' && preg_match('/\s+(ASC|DESC)$/i', rtrim($field), $match, PREG_OFFSET_CAPTURE)) + ? array('field' => ltrim(substr($field, 0, $match[0][1])), 'direction' => ' '.$match[1][0], 'escape' => TRUE) + : array('field' => trim($field), 'direction' => $direction, 'escape' => TRUE); + } + } + + $this->qb_orderby = array_merge($this->qb_orderby, $qb_orderby); + if ($this->qb_caching === TRUE) + { + $this->qb_cache_orderby = array_merge($this->qb_cache_orderby, $qb_orderby); + $this->qb_cache_exists[] = 'orderby'; + } + + return $this; + } + + // -------------------------------------------------------------------- + + /** + * LIMIT + * + * @param int $value LIMIT value + * @param int $offset OFFSET value + * @return CI_DB_query_builder + */ + public function limit($value, $offset = 0) + { + is_null($value) OR $this->qb_limit = (int) $value; + empty($offset) OR $this->qb_offset = (int) $offset; + + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Sets the OFFSET value + * + * @param int $offset OFFSET value + * @return CI_DB_query_builder + */ + public function offset($offset) + { + empty($offset) OR $this->qb_offset = (int) $offset; + return $this; + } + + // -------------------------------------------------------------------- + + /** + * LIMIT string + * + * Generates a platform-specific LIMIT clause. + * + * @param string $sql SQL Query + * @return string + */ + protected function _limit($sql) + { + return $sql.' LIMIT '.($this->qb_offset ? $this->qb_offset.', ' : '').(int) $this->qb_limit; + } + + // -------------------------------------------------------------------- + + /** + * The "set" function. + * + * Allows key/value pairs to be set for inserting or updating + * + * @param mixed + * @param string + * @param bool + * @return CI_DB_query_builder + */ + public function set($key, $value = '', $escape = NULL) + { + $key = $this->_object_to_array($key); + + if ( ! is_array($key)) + { + $key = array($key => $value); + } + + is_bool($escape) OR $escape = $this->_protect_identifiers; + + foreach ($key as $k => $v) + { + $this->qb_set[$this->protect_identifiers($k, FALSE, $escape)] = ($escape) + ? $this->escape($v) : $v; + } + + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Get SELECT query string + * + * Compiles a SELECT query string and returns the sql. + * + * @param string the table name to select from (optional) + * @param bool TRUE: resets QB values; FALSE: leave QB values alone + * @return string + */ + public function get_compiled_select($table = '', $reset = TRUE) + { + if ($table !== '') + { + $this->_track_aliases($table); + $this->from($table); + } + + $select = $this->_compile_select(); + + if ($reset === TRUE) + { + $this->_reset_select(); + } + + return $select; + } + + // -------------------------------------------------------------------- + + /** + * Get + * + * Compiles the select statement based on the other functions called + * and runs the query + * + * @param string the table + * @param string the limit clause + * @param string the offset clause + * @return CI_DB_result + */ + public function get($table = '', $limit = NULL, $offset = NULL) + { + if ($table !== '') + { + $this->_track_aliases($table); + $this->from($table); + } + + if ( ! empty($limit)) + { + $this->limit($limit, $offset); + } + + $result = $this->query($this->_compile_select()); + $this->_reset_select(); + return $result; + } + + // -------------------------------------------------------------------- + + /** + * "Count All Results" query + * + * Generates a platform-specific query string that counts all records + * returned by an Query Builder query. + * + * @param string + * @param bool the reset clause + * @return int + */ + public function count_all_results($table = '', $reset = TRUE) + { + if ($table !== '') + { + $this->_track_aliases($table); + $this->from($table); + } + + // ORDER BY usage is often problematic here (most notably + // on Microsoft SQL Server) and ultimately unnecessary + // for selecting COUNT(*) ... + $qb_orderby = $this->qb_orderby; + $qb_cache_orderby = $this->qb_cache_orderby; + $this->qb_orderby = $this->qb_cache_orderby = array(); + + $result = ($this->qb_distinct === TRUE OR ! empty($this->qb_groupby) OR ! empty($this->qb_cache_groupby) OR $this->qb_limit OR $this->qb_offset) + ? $this->query($this->_count_string.$this->protect_identifiers('numrows')."\nFROM (\n".$this->_compile_select()."\n) CI_count_all_results") + : $this->query($this->_compile_select($this->_count_string.$this->protect_identifiers('numrows'))); + + if ($reset === TRUE) + { + $this->_reset_select(); + } + else + { + $this->qb_orderby = $qb_orderby; + $this->qb_cache_orderby = $qb_cache_orderby; + } + + if ($result->num_rows() === 0) + { + return 0; + } + + $row = $result->row(); + return (int) $row->numrows; + } + + // -------------------------------------------------------------------- + + /** + * Get_Where + * + * Allows the where clause, limit and offset to be added directly + * + * @param string $table + * @param string $where + * @param int $limit + * @param int $offset + * @return CI_DB_result + */ + public function get_where($table = '', $where = NULL, $limit = NULL, $offset = NULL) + { + if ($table !== '') + { + $this->from($table); + } + + if ($where !== NULL) + { + $this->where($where); + } + + if ( ! empty($limit)) + { + $this->limit($limit, $offset); + } + + $result = $this->query($this->_compile_select()); + $this->_reset_select(); + return $result; + } + + // -------------------------------------------------------------------- + + /** + * Insert_Batch + * + * Compiles batch insert strings and runs the queries + * + * @param string $table Table to insert into + * @param array $set An associative array of insert values + * @param bool $escape Whether to escape values and identifiers + * @return int Number of rows inserted or FALSE on failure + */ + public function insert_batch($table, $set = NULL, $escape = NULL, $batch_size = 100) + { + if ($set === NULL) + { + if (empty($this->qb_set)) + { + return ($this->db_debug) ? $this->display_error('db_must_use_set') : FALSE; + } + } + else + { + if (empty($set)) + { + return ($this->db_debug) ? $this->display_error('insert_batch() called with no data') : FALSE; + } + + $this->set_insert_batch($set, '', $escape); + } + + if (strlen($table) === 0) + { + if ( ! isset($this->qb_from[0])) + { + return ($this->db_debug) ? $this->display_error('db_must_set_table') : FALSE; + } + + $table = $this->qb_from[0]; + } + + // Batch this baby + $affected_rows = 0; + for ($i = 0, $total = count($this->qb_set); $i < $total; $i += $batch_size) + { + if ($this->query($this->_insert_batch($this->protect_identifiers($table, TRUE, $escape, FALSE), $this->qb_keys, array_slice($this->qb_set, $i, $batch_size)))) + { + $affected_rows += $this->affected_rows(); + } + } + + $this->_reset_write(); + return $affected_rows; + } + + // -------------------------------------------------------------------- + + /** + * Insert batch statement + * + * Generates a platform-specific insert string from the supplied data. + * + * @param string $table Table name + * @param array $keys INSERT keys + * @param array $values INSERT values + * @return string + */ + protected function _insert_batch($table, $keys, $values) + { + return 'INSERT INTO '.$table.' ('.implode(', ', $keys).') VALUES '.implode(', ', $values); + } + + // -------------------------------------------------------------------- + + /** + * The "set_insert_batch" function. Allows key/value pairs to be set for batch inserts + * + * @param mixed + * @param string + * @param bool + * @return CI_DB_query_builder + */ + public function set_insert_batch($key, $value = '', $escape = NULL) + { + $key = $this->_object_to_array_batch($key); + + if ( ! is_array($key)) + { + $key = array($key => $value); + } + + is_bool($escape) OR $escape = $this->_protect_identifiers; + + $keys = array_keys($this->_object_to_array(reset($key))); + sort($keys); + + foreach ($key as $row) + { + $row = $this->_object_to_array($row); + if (count(array_diff($keys, array_keys($row))) > 0 OR count(array_diff(array_keys($row), $keys)) > 0) + { + // batch function above returns an error on an empty array + $this->qb_set[] = array(); + return; + } + + ksort($row); // puts $row in the same order as our keys + + if ($escape !== FALSE) + { + $clean = array(); + foreach ($row as $value) + { + $clean[] = $this->escape($value); + } + + $row = $clean; + } + + $this->qb_set[] = '('.implode(',', $row).')'; + } + + foreach ($keys as $k) + { + $this->qb_keys[] = $this->protect_identifiers($k, FALSE, $escape); + } + + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Get INSERT query string + * + * Compiles an insert query and returns the sql + * + * @param string the table to insert into + * @param bool TRUE: reset QB values; FALSE: leave QB values alone + * @return string + */ + public function get_compiled_insert($table = '', $reset = TRUE) + { + if ($this->_validate_insert($table) === FALSE) + { + return FALSE; + } + + $sql = $this->_insert( + $this->protect_identifiers( + $this->qb_from[0], TRUE, NULL, FALSE + ), + array_keys($this->qb_set), + array_values($this->qb_set) + ); + + if ($reset === TRUE) + { + $this->_reset_write(); + } + + return $sql; + } + + // -------------------------------------------------------------------- + + /** + * Insert + * + * Compiles an insert string and runs the query + * + * @param string the table to insert data into + * @param array an associative array of insert values + * @param bool $escape Whether to escape values and identifiers + * @return bool TRUE on success, FALSE on failure + */ + public function insert($table = '', $set = NULL, $escape = NULL) + { + if ($set !== NULL) + { + $this->set($set, '', $escape); + } + + if ($this->_validate_insert($table) === FALSE) + { + return FALSE; + } + + $sql = $this->_insert( + $this->protect_identifiers( + $this->qb_from[0], TRUE, $escape, FALSE + ), + array_keys($this->qb_set), + array_values($this->qb_set) + ); + + $this->_reset_write(); + return $this->query($sql); + } + + // -------------------------------------------------------------------- + + /** + * Validate Insert + * + * This method is used by both insert() and get_compiled_insert() to + * validate that the there data is actually being set and that table + * has been chosen to be inserted into. + * + * @param string the table to insert data into + * @return string + */ + protected function _validate_insert($table = '') + { + if (count($this->qb_set) === 0) + { + return ($this->db_debug) ? $this->display_error('db_must_use_set') : FALSE; + } + + if ($table !== '') + { + $this->qb_from[0] = $table; + } + elseif ( ! isset($this->qb_from[0])) + { + return ($this->db_debug) ? $this->display_error('db_must_set_table') : FALSE; + } + + return TRUE; + } + + // -------------------------------------------------------------------- + + /** + * Replace + * + * Compiles an replace into string and runs the query + * + * @param string the table to replace data into + * @param array an associative array of insert values + * @return bool TRUE on success, FALSE on failure + */ + public function replace($table = '', $set = NULL) + { + if ($set !== NULL) + { + $this->set($set); + } + + if (count($this->qb_set) === 0) + { + return ($this->db_debug) ? $this->display_error('db_must_use_set') : FALSE; + } + + if ($table === '') + { + if ( ! isset($this->qb_from[0])) + { + return ($this->db_debug) ? $this->display_error('db_must_set_table') : FALSE; + } + + $table = $this->qb_from[0]; + } + + $sql = $this->_replace($this->protect_identifiers($table, TRUE, NULL, FALSE), array_keys($this->qb_set), array_values($this->qb_set)); + + $this->_reset_write(); + return $this->query($sql); + } + + // -------------------------------------------------------------------- + + /** + * Replace statement + * + * Generates a platform-specific replace string from the supplied data + * + * @param string the table name + * @param array the insert keys + * @param array the insert values + * @return string + */ + protected function _replace($table, $keys, $values) + { + return 'REPLACE INTO '.$table.' ('.implode(', ', $keys).') VALUES ('.implode(', ', $values).')'; + } + + // -------------------------------------------------------------------- + + /** + * FROM tables + * + * Groups tables in FROM clauses if needed, so there is no confusion + * about operator precedence. + * + * Note: This is only used (and overridden) by MySQL and CUBRID. + * + * @return string + */ + protected function _from_tables() + { + return implode(', ', $this->qb_from); + } + + // -------------------------------------------------------------------- + + /** + * Get UPDATE query string + * + * Compiles an update query and returns the sql + * + * @param string the table to update + * @param bool TRUE: reset QB values; FALSE: leave QB values alone + * @return string + */ + public function get_compiled_update($table = '', $reset = TRUE) + { + // Combine any cached components with the current statements + $this->_merge_cache(); + + if ($this->_validate_update($table) === FALSE) + { + return FALSE; + } + + $sql = $this->_update($this->qb_from[0], $this->qb_set); + + if ($reset === TRUE) + { + $this->_reset_write(); + } + + return $sql; + } + + // -------------------------------------------------------------------- + + /** + * UPDATE + * + * Compiles an update string and runs the query. + * + * @param string $table + * @param array $set An associative array of update values + * @param mixed $where + * @param int $limit + * @return bool TRUE on success, FALSE on failure + */ + public function update($table = '', $set = NULL, $where = NULL, $limit = NULL) + { + // Combine any cached components with the current statements + $this->_merge_cache(); + + if ($set !== NULL) + { + $this->set($set); + } + + if ($this->_validate_update($table) === FALSE) + { + return FALSE; + } + + if ($where !== NULL) + { + $this->where($where); + } + + if ( ! empty($limit)) + { + $this->limit($limit); + } + + $sql = $this->_update($this->qb_from[0], $this->qb_set); + $this->_reset_write(); + return $this->query($sql); + } + + // -------------------------------------------------------------------- + + /** + * Validate Update + * + * This method is used by both update() and get_compiled_update() to + * validate that data is actually being set and that a table has been + * chosen to be update. + * + * @param string the table to update data on + * @return bool + */ + protected function _validate_update($table) + { + if (count($this->qb_set) === 0) + { + return ($this->db_debug) ? $this->display_error('db_must_use_set') : FALSE; + } + + if ($table !== '') + { + $this->qb_from = array($this->protect_identifiers($table, TRUE, NULL, FALSE)); + } + elseif ( ! isset($this->qb_from[0])) + { + return ($this->db_debug) ? $this->display_error('db_must_set_table') : FALSE; + } + + return TRUE; + } + + // -------------------------------------------------------------------- + + /** + * Update_Batch + * + * Compiles an update string and runs the query + * + * @param string the table to retrieve the results from + * @param array an associative array of update values + * @param string the where key + * @return int number of rows affected or FALSE on failure + */ + public function update_batch($table, $set = NULL, $index = NULL, $batch_size = 100) + { + // Combine any cached components with the current statements + $this->_merge_cache(); + + if ($index === NULL) + { + return ($this->db_debug) ? $this->display_error('db_must_use_index') : FALSE; + } + + if ($set === NULL) + { + if (empty($this->qb_set_ub)) + { + return ($this->db_debug) ? $this->display_error('db_must_use_set') : FALSE; + } + } + else + { + if (empty($set)) + { + return ($this->db_debug) ? $this->display_error('update_batch() called with no data') : FALSE; + } + + $this->set_update_batch($set, $index); + } + + if (strlen($table) === 0) + { + if ( ! isset($this->qb_from[0])) + { + return ($this->db_debug) ? $this->display_error('db_must_set_table') : FALSE; + } + + $table = $this->qb_from[0]; + } + + // Batch this baby + $affected_rows = 0; + for ($i = 0, $total = count($this->qb_set_ub); $i < $total; $i += $batch_size) + { + if ($this->query($this->_update_batch($this->protect_identifiers($table, TRUE, NULL, FALSE), array_slice($this->qb_set_ub, $i, $batch_size), $index))) + { + $affected_rows += $this->affected_rows(); + } + + $this->qb_where = array(); + } + + $this->_reset_write(); + return $affected_rows; + } + + // -------------------------------------------------------------------- + + /** + * Update_Batch statement + * + * Generates a platform-specific batch update string from the supplied data + * + * @param string $table Table name + * @param array $values Update data + * @param string $index WHERE key + * @return string + */ + protected function _update_batch($table, $values, $index) + { + $ids = array(); + foreach ($values as $key => $val) + { + $ids[] = $val[$index]['value']; + + foreach (array_keys($val) as $field) + { + if ($field !== $index) + { + $final[$val[$field]['field']][] = 'WHEN '.$val[$index]['field'].' = '.$val[$index]['value'].' THEN '.$val[$field]['value']; + } + } + } + + $cases = ''; + foreach ($final as $k => $v) + { + $cases .= $k." = CASE \n" + .implode("\n", $v)."\n" + .'ELSE '.$k.' END, '; + } + + $this->where($val[$index]['field'].' IN('.implode(',', $ids).')', NULL, FALSE); + + return 'UPDATE '.$table.' SET '.substr($cases, 0, -2).$this->_compile_wh('qb_where'); + } + + // -------------------------------------------------------------------- + + /** + * The "set_update_batch" function. Allows key/value pairs to be set for batch updating + * + * @param array + * @param string + * @param bool + * @return CI_DB_query_builder + */ + public function set_update_batch($key, $index = '', $escape = NULL) + { + $key = $this->_object_to_array_batch($key); + + if ( ! is_array($key)) + { + // @todo error + } + + is_bool($escape) OR $escape = $this->_protect_identifiers; + + foreach ($key as $k => $v) + { + $index_set = FALSE; + $clean = array(); + foreach ($v as $k2 => $v2) + { + if ($k2 === $index) + { + $index_set = TRUE; + } + + $clean[$k2] = array( + 'field' => $this->protect_identifiers($k2, FALSE, $escape), + 'value' => ($escape === FALSE ? $v2 : $this->escape($v2)) + ); + } + + if ($index_set === FALSE) + { + return $this->display_error('db_batch_missing_index'); + } + + $this->qb_set_ub[] = $clean; + } + + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Empty Table + * + * Compiles a delete string and runs "DELETE FROM table" + * + * @param string the table to empty + * @return bool TRUE on success, FALSE on failure + */ + public function empty_table($table = '') + { + if ($table === '') + { + if ( ! isset($this->qb_from[0])) + { + return ($this->db_debug) ? $this->display_error('db_must_set_table') : FALSE; + } + + $table = $this->qb_from[0]; + } + else + { + $table = $this->protect_identifiers($table, TRUE, NULL, FALSE); + } + + $sql = $this->_delete($table); + $this->_reset_write(); + return $this->query($sql); + } + + // -------------------------------------------------------------------- + + /** + * Truncate + * + * Compiles a truncate string and runs the query + * If the database does not support the truncate() command + * This function maps to "DELETE FROM table" + * + * @param string the table to truncate + * @return bool TRUE on success, FALSE on failure + */ + public function truncate($table = '') + { + if ($table === '') + { + if ( ! isset($this->qb_from[0])) + { + return ($this->db_debug) ? $this->display_error('db_must_set_table') : FALSE; + } + + $table = $this->qb_from[0]; + } + else + { + $table = $this->protect_identifiers($table, TRUE, NULL, FALSE); + } + + $sql = $this->_truncate($table); + $this->_reset_write(); + return $this->query($sql); + } + + // -------------------------------------------------------------------- + + /** + * Truncate statement + * + * Generates a platform-specific truncate string from the supplied data + * + * If the database does not support the truncate() command, + * then this method maps to 'DELETE FROM table' + * + * @param string the table name + * @return string + */ + protected function _truncate($table) + { + return 'TRUNCATE '.$table; + } + + // -------------------------------------------------------------------- + + /** + * Get DELETE query string + * + * Compiles a delete query string and returns the sql + * + * @param string the table to delete from + * @param bool TRUE: reset QB values; FALSE: leave QB values alone + * @return string + */ + public function get_compiled_delete($table = '', $reset = TRUE) + { + $this->return_delete_sql = TRUE; + $sql = $this->delete($table, '', NULL, $reset); + $this->return_delete_sql = FALSE; + return $sql; + } + + // -------------------------------------------------------------------- + + /** + * Delete + * + * Compiles a delete string and runs the query + * + * @param mixed the table(s) to delete from. String or array + * @param mixed the where clause + * @param mixed the limit clause + * @param bool + * @return mixed + */ + public function delete($table = '', $where = '', $limit = NULL, $reset_data = TRUE) + { + // Combine any cached components with the current statements + $this->_merge_cache(); + + if ($table === '') + { + if ( ! isset($this->qb_from[0])) + { + return ($this->db_debug) ? $this->display_error('db_must_set_table') : FALSE; + } + + $table = $this->qb_from[0]; + } + elseif (is_array($table)) + { + empty($where) && $reset_data = FALSE; + + foreach ($table as $single_table) + { + $this->delete($single_table, $where, $limit, $reset_data); + } + + return; + } + else + { + $table = $this->protect_identifiers($table, TRUE, NULL, FALSE); + } + + if ($where !== '') + { + $this->where($where); + } + + if ( ! empty($limit)) + { + $this->limit($limit); + } + + if (count($this->qb_where) === 0) + { + return ($this->db_debug) ? $this->display_error('db_del_must_use_where') : FALSE; + } + + $sql = $this->_delete($table); + if ($reset_data) + { + $this->_reset_write(); + } + + return ($this->return_delete_sql === TRUE) ? $sql : $this->query($sql); + } + + // -------------------------------------------------------------------- + + /** + * Delete statement + * + * Generates a platform-specific delete string from the supplied data + * + * @param string the table name + * @return string + */ + protected function _delete($table) + { + return 'DELETE FROM '.$table.$this->_compile_wh('qb_where') + .($this->qb_limit ? ' LIMIT '.$this->qb_limit : ''); + } + + // -------------------------------------------------------------------- + + /** + * DB Prefix + * + * Prepends a database prefix if one exists in configuration + * + * @param string the table + * @return string + */ + public function dbprefix($table = '') + { + if ($table === '') + { + $this->display_error('db_table_name_required'); + } + + return $this->dbprefix.$table; + } + + // -------------------------------------------------------------------- + + /** + * Set DB Prefix + * + * Set's the DB Prefix to something new without needing to reconnect + * + * @param string the prefix + * @return string + */ + public function set_dbprefix($prefix = '') + { + return $this->dbprefix = $prefix; + } + + // -------------------------------------------------------------------- + + /** + * Track Aliases + * + * Used to track SQL statements written with aliased tables. + * + * @param string The table to inspect + * @return string + */ + protected function _track_aliases($table) + { + if (is_array($table)) + { + foreach ($table as $t) + { + $this->_track_aliases($t); + } + return; + } + + // Does the string contain a comma? If so, we need to separate + // the string into discreet statements + if (strpos($table, ',') !== FALSE) + { + return $this->_track_aliases(explode(',', $table)); + } + + // if a table alias is used we can recognize it by a space + if (strpos($table, ' ') !== FALSE) + { + // if the alias is written with the AS keyword, remove it + $table = preg_replace('/\s+AS\s+/i', ' ', $table); + + // Grab the alias + $table = trim(strrchr($table, ' ')); + + // Store the alias, if it doesn't already exist + if ( ! in_array($table, $this->qb_aliased_tables, TRUE)) + { + $this->qb_aliased_tables[] = $table; + if ($this->qb_caching === TRUE && ! in_array($table, $this->qb_cache_aliased_tables, TRUE)) + { + $this->qb_cache_aliased_tables[] = $table; + $this->qb_cache_exists[] = 'aliased_tables'; + } + } + } + } + + // -------------------------------------------------------------------- + + /** + * Compile the SELECT statement + * + * Generates a query string based on which functions were used. + * Should not be called directly. + * + * @param bool $select_override + * @return string + */ + protected function _compile_select($select_override = FALSE) + { + // Combine any cached components with the current statements + $this->_merge_cache(); + + // Write the "select" portion of the query + if ($select_override !== FALSE) + { + $sql = $select_override; + } + else + { + $sql = ( ! $this->qb_distinct) ? 'SELECT ' : 'SELECT DISTINCT '; + + if (count($this->qb_select) === 0) + { + $sql .= '*'; + } + else + { + // Cycle through the "select" portion of the query and prep each column name. + // The reason we protect identifiers here rather than in the select() function + // is because until the user calls the from() function we don't know if there are aliases + foreach ($this->qb_select as $key => $val) + { + $no_escape = isset($this->qb_no_escape[$key]) ? $this->qb_no_escape[$key] : NULL; + $this->qb_select[$key] = $this->protect_identifiers($val, FALSE, $no_escape); + } + + $sql .= implode(', ', $this->qb_select); + } + } + + // Write the "FROM" portion of the query + if (count($this->qb_from) > 0) + { + $sql .= "\nFROM ".$this->_from_tables(); + } + + // Write the "JOIN" portion of the query + if (count($this->qb_join) > 0) + { + $sql .= "\n".implode("\n", $this->qb_join); + } + + $sql .= $this->_compile_wh('qb_where') + .$this->_compile_group_by() + .$this->_compile_wh('qb_having') + .$this->_compile_order_by(); // ORDER BY + + // LIMIT + if ($this->qb_limit OR $this->qb_offset) + { + return $this->_limit($sql."\n"); + } + + return $sql; + } + + // -------------------------------------------------------------------- + + /** + * Compile WHERE, HAVING statements + * + * Escapes identifiers in WHERE and HAVING statements at execution time. + * + * Required so that aliases are tracked properly, regardless of whether + * where(), or_where(), having(), or_having are called prior to from(), + * join() and dbprefix is added only if needed. + * + * @param string $qb_key 'qb_where' or 'qb_having' + * @return string SQL statement + */ + protected function _compile_wh($qb_key) + { + if (count($this->$qb_key) > 0) + { + for ($i = 0, $c = count($this->$qb_key); $i < $c; $i++) + { + // Is this condition already compiled? + if (is_string($this->{$qb_key}[$i])) + { + continue; + } + elseif ($this->{$qb_key}[$i]['escape'] === FALSE) + { + $this->{$qb_key}[$i] = $this->{$qb_key}[$i]['condition']; + continue; + } + + // Split multiple conditions + $conditions = preg_split( + '/((?:^|\s+)AND\s+|(?:^|\s+)OR\s+)/i', + $this->{$qb_key}[$i]['condition'], + -1, + PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY + ); + + for ($ci = 0, $cc = count($conditions); $ci < $cc; $ci++) + { + if (($op = $this->_get_operator($conditions[$ci])) === FALSE + OR ! preg_match('/^(\(?)(.*)('.preg_quote($op, '/').')\s*(.*(? '(test <= foo)', /* the whole thing */ + // 1 => '(', /* optional */ + // 2 => 'test', /* the field name */ + // 3 => ' <= ', /* $op */ + // 4 => 'foo', /* optional, if $op is e.g. 'IS NULL' */ + // 5 => ')' /* optional */ + // ); + + if ( ! empty($matches[4])) + { + $this->_is_literal($matches[4]) OR $matches[4] = $this->protect_identifiers(trim($matches[4])); + $matches[4] = ' '.$matches[4]; + } + + $conditions[$ci] = $matches[1].$this->protect_identifiers(trim($matches[2])) + .' '.trim($matches[3]).$matches[4].$matches[5]; + } + + $this->{$qb_key}[$i] = implode('', $conditions); + } + + return ($qb_key === 'qb_having' ? "\nHAVING " : "\nWHERE ") + .implode("\n", $this->$qb_key); + } + + return ''; + } + + // -------------------------------------------------------------------- + + /** + * Compile GROUP BY + * + * Escapes identifiers in GROUP BY statements at execution time. + * + * Required so that aliases are tracked properly, regardless of whether + * group_by() is called prior to from(), join() and dbprefix is added + * only if needed. + * + * @return string SQL statement + */ + protected function _compile_group_by() + { + if (count($this->qb_groupby) > 0) + { + for ($i = 0, $c = count($this->qb_groupby); $i < $c; $i++) + { + // Is it already compiled? + if (is_string($this->qb_groupby[$i])) + { + continue; + } + + $this->qb_groupby[$i] = ($this->qb_groupby[$i]['escape'] === FALSE OR $this->_is_literal($this->qb_groupby[$i]['field'])) + ? $this->qb_groupby[$i]['field'] + : $this->protect_identifiers($this->qb_groupby[$i]['field']); + } + + return "\nGROUP BY ".implode(', ', $this->qb_groupby); + } + + return ''; + } + + // -------------------------------------------------------------------- + + /** + * Compile ORDER BY + * + * Escapes identifiers in ORDER BY statements at execution time. + * + * Required so that aliases are tracked properly, regardless of whether + * order_by() is called prior to from(), join() and dbprefix is added + * only if needed. + * + * @return string SQL statement + */ + protected function _compile_order_by() + { + if (empty($this->qb_orderby)) + { + return ''; + } + + for ($i = 0, $c = count($this->qb_orderby); $i < $c; $i++) + { + if (is_string($this->qb_orderby[$i])) + { + continue; + } + + if ($this->qb_orderby[$i]['escape'] !== FALSE && ! $this->_is_literal($this->qb_orderby[$i]['field'])) + { + $this->qb_orderby[$i]['field'] = $this->protect_identifiers($this->qb_orderby[$i]['field']); + } + + $this->qb_orderby[$i] = $this->qb_orderby[$i]['field'].$this->qb_orderby[$i]['direction']; + } + + return "\nORDER BY ".implode(', ', $this->qb_orderby); + } + + // -------------------------------------------------------------------- + + /** + * Object to Array + * + * Takes an object as input and converts the class variables to array key/vals + * + * @param object + * @return array + */ + protected function _object_to_array($object) + { + if ( ! is_object($object)) + { + return $object; + } + + $array = array(); + foreach (get_object_vars($object) as $key => $val) + { + // There are some built in keys we need to ignore for this conversion + if ( ! is_object($val) && ! is_array($val) && $key !== '_parent_name') + { + $array[$key] = $val; + } + } + + return $array; + } + + // -------------------------------------------------------------------- + + /** + * Object to Array + * + * Takes an object as input and converts the class variables to array key/vals + * + * @param object + * @return array + */ + protected function _object_to_array_batch($object) + { + if ( ! is_object($object)) + { + return $object; + } + + $array = array(); + $out = get_object_vars($object); + $fields = array_keys($out); + + foreach ($fields as $val) + { + // There are some built in keys we need to ignore for this conversion + if ($val !== '_parent_name') + { + $i = 0; + foreach ($out[$val] as $data) + { + $array[$i++][$val] = $data; + } + } + } + + return $array; + } + + // -------------------------------------------------------------------- + + /** + * Start Cache + * + * Starts QB caching + * + * @return CI_DB_query_builder + */ + public function start_cache() + { + $this->qb_caching = TRUE; + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Stop Cache + * + * Stops QB caching + * + * @return CI_DB_query_builder + */ + public function stop_cache() + { + $this->qb_caching = FALSE; + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Flush Cache + * + * Empties the QB cache + * + * @return CI_DB_query_builder + */ + public function flush_cache() + { + $this->_reset_run(array( + 'qb_cache_select' => array(), + 'qb_cache_from' => array(), + 'qb_cache_join' => array(), + 'qb_cache_where' => array(), + 'qb_cache_groupby' => array(), + 'qb_cache_having' => array(), + 'qb_cache_orderby' => array(), + 'qb_cache_set' => array(), + 'qb_cache_exists' => array(), + 'qb_cache_no_escape' => array(), + 'qb_cache_aliased_tables' => array() + )); + + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Merge Cache + * + * When called, this function merges any cached QB arrays with + * locally called ones. + * + * @return void + */ + protected function _merge_cache() + { + if (count($this->qb_cache_exists) === 0) + { + return; + } + elseif (in_array('select', $this->qb_cache_exists, TRUE)) + { + $qb_no_escape = $this->qb_cache_no_escape; + } + + foreach (array_unique($this->qb_cache_exists) as $val) // select, from, etc. + { + $qb_variable = 'qb_'.$val; + $qb_cache_var = 'qb_cache_'.$val; + $qb_new = $this->$qb_cache_var; + + for ($i = 0, $c = count($this->$qb_variable); $i < $c; $i++) + { + if ( ! in_array($this->{$qb_variable}[$i], $qb_new, TRUE)) + { + $qb_new[] = $this->{$qb_variable}[$i]; + if ($val === 'select') + { + $qb_no_escape[] = $this->qb_no_escape[$i]; + } + } + } + + $this->$qb_variable = $qb_new; + if ($val === 'select') + { + $this->qb_no_escape = $qb_no_escape; + } + } + } + + // -------------------------------------------------------------------- + + /** + * Is literal + * + * Determines if a string represents a literal value or a field name + * + * @param string $str + * @return bool + */ + protected function _is_literal($str) + { + $str = trim($str); + + if (empty($str) OR ctype_digit($str) OR (string) (float) $str === $str OR in_array(strtoupper($str), array('TRUE', 'FALSE'), TRUE)) + { + return TRUE; + } + + static $_str; + + if (empty($_str)) + { + $_str = ($this->_escape_char !== '"') + ? array('"', "'") : array("'"); + } + + return in_array($str[0], $_str, TRUE); + } + + // -------------------------------------------------------------------- + + /** + * Reset Query Builder values. + * + * Publicly-visible method to reset the QB values. + * + * @return CI_DB_query_builder + */ + public function reset_query() + { + $this->_reset_select(); + $this->_reset_write(); + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Resets the query builder values. Called by the get() function + * + * @param array An array of fields to reset + * @return void + */ + protected function _reset_run($qb_reset_items) + { + foreach ($qb_reset_items as $item => $default_value) + { + $this->$item = $default_value; + } + } + + // -------------------------------------------------------------------- + + /** + * Resets the query builder values. Called by the get() function + * + * @return void + */ + protected function _reset_select() + { + $this->_reset_run(array( + 'qb_select' => array(), + 'qb_from' => array(), + 'qb_join' => array(), + 'qb_where' => array(), + 'qb_groupby' => array(), + 'qb_having' => array(), + 'qb_orderby' => array(), + 'qb_aliased_tables' => array(), + 'qb_no_escape' => array(), + 'qb_distinct' => FALSE, + 'qb_limit' => FALSE, + 'qb_offset' => FALSE + )); + } + + // -------------------------------------------------------------------- + + /** + * Resets the query builder "write" values. + * + * Called by the insert() update() insert_batch() update_batch() and delete() functions + * + * @return void + */ + protected function _reset_write() + { + $this->_reset_run(array( + 'qb_set' => array(), + 'qb_set_ub' => array(), + 'qb_from' => array(), + 'qb_join' => array(), + 'qb_where' => array(), + 'qb_orderby' => array(), + 'qb_keys' => array(), + 'qb_limit' => FALSE + )); + } + +} diff --git a/www/system/database/DB_result.php b/www/system/database/DB_result.php new file mode 100644 index 0000000..a5a4ca2 --- /dev/null +++ b/www/system/database/DB_result.php @@ -0,0 +1,665 @@ +conn_id = $driver_object->conn_id; + $this->result_id = $driver_object->result_id; + } + + // -------------------------------------------------------------------- + + /** + * Number of rows in the result set + * + * @return int + */ + public function num_rows() + { + if (is_int($this->num_rows)) + { + return $this->num_rows; + } + elseif (count($this->result_array) > 0) + { + return $this->num_rows = count($this->result_array); + } + elseif (count($this->result_object) > 0) + { + return $this->num_rows = count($this->result_object); + } + + return $this->num_rows = count($this->result_array()); + } + + // -------------------------------------------------------------------- + + /** + * Query result. Acts as a wrapper function for the following functions. + * + * @param string $type 'object', 'array' or a custom class name + * @return array + */ + public function result($type = 'object') + { + if ($type === 'array') + { + return $this->result_array(); + } + elseif ($type === 'object') + { + return $this->result_object(); + } + + return $this->custom_result_object($type); + } + + // -------------------------------------------------------------------- + + /** + * Custom query result. + * + * @param string $class_name + * @return array + */ + public function custom_result_object($class_name) + { + if (isset($this->custom_result_object[$class_name])) + { + return $this->custom_result_object[$class_name]; + } + elseif ( ! $this->result_id OR $this->num_rows === 0) + { + return array(); + } + + // Don't fetch the result set again if we already have it + $_data = NULL; + if (($c = count($this->result_array)) > 0) + { + $_data = 'result_array'; + } + elseif (($c = count($this->result_object)) > 0) + { + $_data = 'result_object'; + } + + if ($_data !== NULL) + { + for ($i = 0; $i < $c; $i++) + { + $this->custom_result_object[$class_name][$i] = new $class_name(); + + foreach ($this->{$_data}[$i] as $key => $value) + { + $this->custom_result_object[$class_name][$i]->$key = $value; + } + } + + return $this->custom_result_object[$class_name]; + } + + is_null($this->row_data) OR $this->data_seek(0); + $this->custom_result_object[$class_name] = array(); + + while ($row = $this->_fetch_object($class_name)) + { + $this->custom_result_object[$class_name][] = $row; + } + + return $this->custom_result_object[$class_name]; + } + + // -------------------------------------------------------------------- + + /** + * Query result. "object" version. + * + * @return array + */ + public function result_object() + { + if (count($this->result_object) > 0) + { + return $this->result_object; + } + + // In the event that query caching is on, the result_id variable + // will not be a valid resource so we'll simply return an empty + // array. + if ( ! $this->result_id OR $this->num_rows === 0) + { + return array(); + } + + if (($c = count($this->result_array)) > 0) + { + for ($i = 0; $i < $c; $i++) + { + $this->result_object[$i] = (object) $this->result_array[$i]; + } + + return $this->result_object; + } + + is_null($this->row_data) OR $this->data_seek(0); + while ($row = $this->_fetch_object()) + { + $this->result_object[] = $row; + } + + return $this->result_object; + } + + // -------------------------------------------------------------------- + + /** + * Query result. "array" version. + * + * @return array + */ + public function result_array() + { + if (count($this->result_array) > 0) + { + return $this->result_array; + } + + // In the event that query caching is on, the result_id variable + // will not be a valid resource so we'll simply return an empty + // array. + if ( ! $this->result_id OR $this->num_rows === 0) + { + return array(); + } + + if (($c = count($this->result_object)) > 0) + { + for ($i = 0; $i < $c; $i++) + { + $this->result_array[$i] = (array) $this->result_object[$i]; + } + + return $this->result_array; + } + + is_null($this->row_data) OR $this->data_seek(0); + while ($row = $this->_fetch_assoc()) + { + $this->result_array[] = $row; + } + + return $this->result_array; + } + + // -------------------------------------------------------------------- + + /** + * Row + * + * A wrapper method. + * + * @param mixed $n + * @param string $type 'object' or 'array' + * @return mixed + */ + public function row($n = 0, $type = 'object') + { + if ( ! is_numeric($n)) + { + // We cache the row data for subsequent uses + is_array($this->row_data) OR $this->row_data = $this->row_array(0); + + // array_key_exists() instead of isset() to allow for NULL values + if (empty($this->row_data) OR ! array_key_exists($n, $this->row_data)) + { + return NULL; + } + + return $this->row_data[$n]; + } + + if ($type === 'object') return $this->row_object($n); + elseif ($type === 'array') return $this->row_array($n); + + return $this->custom_row_object($n, $type); + } + + // -------------------------------------------------------------------- + + /** + * Assigns an item into a particular column slot + * + * @param mixed $key + * @param mixed $value + * @return void + */ + public function set_row($key, $value = NULL) + { + // We cache the row data for subsequent uses + if ( ! is_array($this->row_data)) + { + $this->row_data = $this->row_array(0); + } + + if (is_array($key)) + { + foreach ($key as $k => $v) + { + $this->row_data[$k] = $v; + } + return; + } + + if ($key !== '' && $value !== NULL) + { + $this->row_data[$key] = $value; + } + } + + // -------------------------------------------------------------------- + + /** + * Returns a single result row - custom object version + * + * @param int $n + * @param string $type + * @return object + */ + public function custom_row_object($n, $type) + { + isset($this->custom_result_object[$type]) OR $this->custom_result_object($type); + + if (count($this->custom_result_object[$type]) === 0) + { + return NULL; + } + + if ($n !== $this->current_row && isset($this->custom_result_object[$type][$n])) + { + $this->current_row = $n; + } + + return $this->custom_result_object[$type][$this->current_row]; + } + + // -------------------------------------------------------------------- + + /** + * Returns a single result row - object version + * + * @param int $n + * @return object + */ + public function row_object($n = 0) + { + $result = $this->result_object(); + if (count($result) === 0) + { + return NULL; + } + + if ($n !== $this->current_row && isset($result[$n])) + { + $this->current_row = $n; + } + + return $result[$this->current_row]; + } + + // -------------------------------------------------------------------- + + /** + * Returns a single result row - array version + * + * @param int $n + * @return array + */ + public function row_array($n = 0) + { + $result = $this->result_array(); + if (count($result) === 0) + { + return NULL; + } + + if ($n !== $this->current_row && isset($result[$n])) + { + $this->current_row = $n; + } + + return $result[$this->current_row]; + } + + // -------------------------------------------------------------------- + + /** + * Returns the "first" row + * + * @param string $type + * @return mixed + */ + public function first_row($type = 'object') + { + $result = $this->result($type); + return (count($result) === 0) ? NULL : $result[0]; + } + + // -------------------------------------------------------------------- + + /** + * Returns the "last" row + * + * @param string $type + * @return mixed + */ + public function last_row($type = 'object') + { + $result = $this->result($type); + return (count($result) === 0) ? NULL : $result[count($result) - 1]; + } + + // -------------------------------------------------------------------- + + /** + * Returns the "next" row + * + * @param string $type + * @return mixed + */ + public function next_row($type = 'object') + { + $result = $this->result($type); + if (count($result) === 0) + { + return NULL; + } + + return isset($result[$this->current_row + 1]) + ? $result[++$this->current_row] + : NULL; + } + + // -------------------------------------------------------------------- + + /** + * Returns the "previous" row + * + * @param string $type + * @return mixed + */ + public function previous_row($type = 'object') + { + $result = $this->result($type); + if (count($result) === 0) + { + return NULL; + } + + if (isset($result[$this->current_row - 1])) + { + --$this->current_row; + } + return $result[$this->current_row]; + } + + // -------------------------------------------------------------------- + + /** + * Returns an unbuffered row and move pointer to next row + * + * @param string $type 'array', 'object' or a custom class name + * @return mixed + */ + public function unbuffered_row($type = 'object') + { + if ($type === 'array') + { + return $this->_fetch_assoc(); + } + elseif ($type === 'object') + { + return $this->_fetch_object(); + } + + return $this->_fetch_object($type); + } + + // -------------------------------------------------------------------- + + /** + * The following methods are normally overloaded by the identically named + * methods in the platform-specific driver -- except when query caching + * is used. When caching is enabled we do not load the other driver. + * These functions are primarily here to prevent undefined function errors + * when a cached result object is in use. They are not otherwise fully + * operational due to the unavailability of the database resource IDs with + * cached results. + */ + + // -------------------------------------------------------------------- + + /** + * Number of fields in the result set + * + * Overridden by driver result classes. + * + * @return int + */ + public function num_fields() + { + return 0; + } + + // -------------------------------------------------------------------- + + /** + * Fetch Field Names + * + * Generates an array of column names. + * + * Overridden by driver result classes. + * + * @return array + */ + public function list_fields() + { + return array(); + } + + // -------------------------------------------------------------------- + + /** + * Field data + * + * Generates an array of objects containing field meta-data. + * + * Overridden by driver result classes. + * + * @return array + */ + public function field_data() + { + return array(); + } + + // -------------------------------------------------------------------- + + /** + * Free the result + * + * Overridden by driver result classes. + * + * @return void + */ + public function free_result() + { + $this->result_id = FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Data Seek + * + * Moves the internal pointer to the desired offset. We call + * this internally before fetching results to make sure the + * result set starts at zero. + * + * Overridden by driver result classes. + * + * @param int $n + * @return bool + */ + public function data_seek($n = 0) + { + return FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Result - associative array + * + * Returns the result set as an array. + * + * Overridden by driver result classes. + * + * @return array + */ + protected function _fetch_assoc() + { + return array(); + } + + // -------------------------------------------------------------------- + + /** + * Result - object + * + * Returns the result set as an object. + * + * Overridden by driver result classes. + * + * @param string $class_name + * @return object + */ + protected function _fetch_object($class_name = 'stdClass') + { + return new $class_name(); + } + +} diff --git a/www/system/database/DB_utility.php b/www/system/database/DB_utility.php new file mode 100644 index 0000000..8680176 --- /dev/null +++ b/www/system/database/DB_utility.php @@ -0,0 +1,424 @@ +db =& $db; + log_message('info', 'Database Utility Class Initialized'); + } + + // -------------------------------------------------------------------- + + /** + * List databases + * + * @return array + */ + public function list_databases() + { + // Is there a cached result? + if (isset($this->db->data_cache['db_names'])) + { + return $this->db->data_cache['db_names']; + } + elseif ($this->_list_databases === FALSE) + { + return ($this->db->db_debug) ? $this->db->display_error('db_unsupported_feature') : FALSE; + } + + $this->db->data_cache['db_names'] = array(); + + $query = $this->db->query($this->_list_databases); + if ($query === FALSE) + { + return $this->db->data_cache['db_names']; + } + + for ($i = 0, $query = $query->result_array(), $c = count($query); $i < $c; $i++) + { + $this->db->data_cache['db_names'][] = current($query[$i]); + } + + return $this->db->data_cache['db_names']; + } + + // -------------------------------------------------------------------- + + /** + * Determine if a particular database exists + * + * @param string $database_name + * @return bool + */ + public function database_exists($database_name) + { + return in_array($database_name, $this->list_databases()); + } + + // -------------------------------------------------------------------- + + /** + * Optimize Table + * + * @param string $table_name + * @return mixed + */ + public function optimize_table($table_name) + { + if ($this->_optimize_table === FALSE) + { + return ($this->db->db_debug) ? $this->db->display_error('db_unsupported_feature') : FALSE; + } + + $query = $this->db->query(sprintf($this->_optimize_table, $this->db->escape_identifiers($table_name))); + if ($query !== FALSE) + { + $query = $query->result_array(); + return current($query); + } + + return FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Optimize Database + * + * @return mixed + */ + public function optimize_database() + { + if ($this->_optimize_table === FALSE) + { + return ($this->db->db_debug) ? $this->db->display_error('db_unsupported_feature') : FALSE; + } + + $result = array(); + foreach ($this->db->list_tables() as $table_name) + { + $res = $this->db->query(sprintf($this->_optimize_table, $this->db->escape_identifiers($table_name))); + if (is_bool($res)) + { + return $res; + } + + // Build the result array... + $res = $res->result_array(); + $res = current($res); + $key = str_replace($this->db->database.'.', '', current($res)); + $keys = array_keys($res); + unset($res[$keys[0]]); + + $result[$key] = $res; + } + + return $result; + } + + // -------------------------------------------------------------------- + + /** + * Repair Table + * + * @param string $table_name + * @return mixed + */ + public function repair_table($table_name) + { + if ($this->_repair_table === FALSE) + { + return ($this->db->db_debug) ? $this->db->display_error('db_unsupported_feature') : FALSE; + } + + $query = $this->db->query(sprintf($this->_repair_table, $this->db->escape_identifiers($table_name))); + if (is_bool($query)) + { + return $query; + } + + $query = $query->result_array(); + return current($query); + } + + // -------------------------------------------------------------------- + + /** + * Generate CSV from a query result object + * + * @param object $query Query result object + * @param string $delim Delimiter (default: ,) + * @param string $newline Newline character (default: \n) + * @param string $enclosure Enclosure (default: ") + * @return string + */ + public function csv_from_result($query, $delim = ',', $newline = "\n", $enclosure = '"') + { + if ( ! is_object($query) OR ! method_exists($query, 'list_fields')) + { + show_error('You must submit a valid result object'); + } + + $out = ''; + // First generate the headings from the table column names + foreach ($query->list_fields() as $name) + { + $out .= $enclosure.str_replace($enclosure, $enclosure.$enclosure, $name).$enclosure.$delim; + } + + $out = substr($out, 0, -strlen($delim)).$newline; + + // Next blast through the result array and build out the rows + while ($row = $query->unbuffered_row('array')) + { + $line = array(); + foreach ($row as $item) + { + $line[] = $enclosure.str_replace($enclosure, $enclosure.$enclosure, $item).$enclosure; + } + $out .= implode($delim, $line).$newline; + } + + return $out; + } + + // -------------------------------------------------------------------- + + /** + * Generate XML data from a query result object + * + * @param object $query Query result object + * @param array $params Any preferences + * @return string + */ + public function xml_from_result($query, $params = array()) + { + if ( ! is_object($query) OR ! method_exists($query, 'list_fields')) + { + show_error('You must submit a valid result object'); + } + + // Set our default values + foreach (array('root' => 'root', 'element' => 'element', 'newline' => "\n", 'tab' => "\t") as $key => $val) + { + if ( ! isset($params[$key])) + { + $params[$key] = $val; + } + } + + // Create variables for convenience + extract($params); + + // Load the xml helper + get_instance()->load->helper('xml'); + + // Generate the result + $xml = '<'.$root.'>'.$newline; + while ($row = $query->unbuffered_row()) + { + $xml .= $tab.'<'.$element.'>'.$newline; + foreach ($row as $key => $val) + { + $xml .= $tab.$tab.'<'.$key.'>'.xml_convert($val).''.$newline; + } + $xml .= $tab.''.$newline; + } + + return $xml.''.$newline; + } + + // -------------------------------------------------------------------- + + /** + * Database Backup + * + * @param array $params + * @return string + */ + public function backup($params = array()) + { + // If the parameters have not been submitted as an + // array then we know that it is simply the table + // name, which is a valid short cut. + if (is_string($params)) + { + $params = array('tables' => $params); + } + + // Set up our default preferences + $prefs = array( + 'tables' => array(), + 'ignore' => array(), + 'filename' => '', + 'format' => 'gzip', // gzip, zip, txt + 'add_drop' => TRUE, + 'add_insert' => TRUE, + 'newline' => "\n", + 'foreign_key_checks' => TRUE + ); + + // Did the user submit any preferences? If so set them.... + if (count($params) > 0) + { + foreach ($prefs as $key => $val) + { + if (isset($params[$key])) + { + $prefs[$key] = $params[$key]; + } + } + } + + // Are we backing up a complete database or individual tables? + // If no table names were submitted we'll fetch the entire table list + if (count($prefs['tables']) === 0) + { + $prefs['tables'] = $this->db->list_tables(); + } + + // Validate the format + if ( ! in_array($prefs['format'], array('gzip', 'zip', 'txt'), TRUE)) + { + $prefs['format'] = 'txt'; + } + + // Is the encoder supported? If not, we'll either issue an + // error or use plain text depending on the debug settings + if (($prefs['format'] === 'gzip' && ! function_exists('gzencode')) + OR ($prefs['format'] === 'zip' && ! function_exists('gzcompress'))) + { + if ($this->db->db_debug) + { + return $this->db->display_error('db_unsupported_compression'); + } + + $prefs['format'] = 'txt'; + } + + // Was a Zip file requested? + if ($prefs['format'] === 'zip') + { + // Set the filename if not provided (only needed with Zip files) + if ($prefs['filename'] === '') + { + $prefs['filename'] = (count($prefs['tables']) === 1 ? $prefs['tables'] : $this->db->database) + .date('Y-m-d_H-i', time()).'.sql'; + } + else + { + // If they included the .zip file extension we'll remove it + if (preg_match('|.+?\.zip$|', $prefs['filename'])) + { + $prefs['filename'] = str_replace('.zip', '', $prefs['filename']); + } + + // Tack on the ".sql" file extension if needed + if ( ! preg_match('|.+?\.sql$|', $prefs['filename'])) + { + $prefs['filename'] .= '.sql'; + } + } + + // Load the Zip class and output it + $CI =& get_instance(); + $CI->load->library('zip'); + $CI->zip->add_data($prefs['filename'], $this->_backup($prefs)); + return $CI->zip->get_zip(); + } + elseif ($prefs['format'] === 'txt') // Was a text file requested? + { + return $this->_backup($prefs); + } + elseif ($prefs['format'] === 'gzip') // Was a Gzip file requested? + { + return gzencode($this->_backup($prefs)); + } + + return; + } + +} diff --git a/www/system/database/drivers/cubrid/cubrid_driver.php b/www/system/database/drivers/cubrid/cubrid_driver.php new file mode 100644 index 0000000..9d6afea --- /dev/null +++ b/www/system/database/drivers/cubrid/cubrid_driver.php @@ -0,0 +1,405 @@ +dsn, $matches)) + { + if (stripos($matches[2], 'autocommit=off') !== FALSE) + { + $this->auto_commit = FALSE; + } + } + else + { + // If no port is defined by the user, use the default value + empty($this->port) OR $this->port = 33000; + } + } + + // -------------------------------------------------------------------- + + /** + * Non-persistent database connection + * + * @param bool $persistent + * @return resource + */ + public function db_connect($persistent = FALSE) + { + if (preg_match('/^CUBRID:[^:]+(:[0-9][1-9]{0,4})?:[^:]+:([^:]*):([^:]*):(\?.+)?$/', $this->dsn, $matches)) + { + $func = ($persistent !== TRUE) ? 'cubrid_connect_with_url' : 'cubrid_pconnect_with_url'; + return ($matches[2] === '' && $matches[3] === '' && $this->username !== '' && $this->password !== '') + ? $func($this->dsn, $this->username, $this->password) + : $func($this->dsn); + } + + $func = ($persistent !== TRUE) ? 'cubrid_connect' : 'cubrid_pconnect'; + return ($this->username !== '') + ? $func($this->hostname, $this->port, $this->database, $this->username, $this->password) + : $func($this->hostname, $this->port, $this->database); + } + + // -------------------------------------------------------------------- + + /** + * Reconnect + * + * Keep / reestablish the db connection if no queries have been + * sent for a length of time exceeding the server's idle timeout + * + * @return void + */ + public function reconnect() + { + if (cubrid_ping($this->conn_id) === FALSE) + { + $this->conn_id = FALSE; + } + } + + // -------------------------------------------------------------------- + + /** + * Database version number + * + * @return string + */ + public function version() + { + if (isset($this->data_cache['version'])) + { + return $this->data_cache['version']; + } + + return ( ! $this->conn_id OR ($version = cubrid_get_server_info($this->conn_id)) === FALSE) + ? FALSE + : $this->data_cache['version'] = $version; + } + + // -------------------------------------------------------------------- + + /** + * Execute the query + * + * @param string $sql an SQL query + * @return resource + */ + protected function _execute($sql) + { + return cubrid_query($sql, $this->conn_id); + } + + // -------------------------------------------------------------------- + + /** + * Begin Transaction + * + * @return bool + */ + protected function _trans_begin() + { + if (($autocommit = cubrid_get_autocommit($this->conn_id)) === NULL) + { + return FALSE; + } + elseif ($autocommit === TRUE) + { + return cubrid_set_autocommit($this->conn_id, CUBRID_AUTOCOMMIT_FALSE); + } + + return TRUE; + } + + // -------------------------------------------------------------------- + + /** + * Commit Transaction + * + * @return bool + */ + protected function _trans_commit() + { + if ( ! cubrid_commit($this->conn_id)) + { + return FALSE; + } + + if ($this->auto_commit && ! cubrid_get_autocommit($this->conn_id)) + { + return cubrid_set_autocommit($this->conn_id, CUBRID_AUTOCOMMIT_TRUE); + } + + return TRUE; + } + + // -------------------------------------------------------------------- + + /** + * Rollback Transaction + * + * @return bool + */ + protected function _trans_rollback() + { + if ( ! cubrid_rollback($this->conn_id)) + { + return FALSE; + } + + if ($this->auto_commit && ! cubrid_get_autocommit($this->conn_id)) + { + cubrid_set_autocommit($this->conn_id, CUBRID_AUTOCOMMIT_TRUE); + } + + return TRUE; + } + + // -------------------------------------------------------------------- + + /** + * Platform-dependent string escape + * + * @param string + * @return string + */ + protected function _escape_str($str) + { + return cubrid_real_escape_string($str, $this->conn_id); + } + + // -------------------------------------------------------------------- + + /** + * Affected Rows + * + * @return int + */ + public function affected_rows() + { + return cubrid_affected_rows(); + } + + // -------------------------------------------------------------------- + + /** + * Insert ID + * + * @return int + */ + public function insert_id() + { + return cubrid_insert_id($this->conn_id); + } + + // -------------------------------------------------------------------- + + /** + * List table query + * + * Generates a platform-specific query string so that the table names can be fetched + * + * @param bool $prefix_limit + * @return string + */ + protected function _list_tables($prefix_limit = FALSE) + { + $sql = 'SHOW TABLES'; + + if ($prefix_limit !== FALSE && $this->dbprefix !== '') + { + return $sql." LIKE '".$this->escape_like_str($this->dbprefix)."%'"; + } + + return $sql; + } + + // -------------------------------------------------------------------- + + /** + * Show column query + * + * Generates a platform-specific query string so that the column names can be fetched + * + * @param string $table + * @return string + */ + protected function _list_columns($table = '') + { + return 'SHOW COLUMNS FROM '.$this->protect_identifiers($table, TRUE, NULL, FALSE); + } + + // -------------------------------------------------------------------- + + /** + * Returns an object with field data + * + * @param string $table + * @return array + */ + public function field_data($table) + { + if (($query = $this->query('SHOW COLUMNS FROM '.$this->protect_identifiers($table, TRUE, NULL, FALSE))) === FALSE) + { + return FALSE; + } + $query = $query->result_object(); + + $retval = array(); + for ($i = 0, $c = count($query); $i < $c; $i++) + { + $retval[$i] = new stdClass(); + $retval[$i]->name = $query[$i]->Field; + + sscanf($query[$i]->Type, '%[a-z](%d)', + $retval[$i]->type, + $retval[$i]->max_length + ); + + $retval[$i]->default = $query[$i]->Default; + $retval[$i]->primary_key = (int) ($query[$i]->Key === 'PRI'); + } + + return $retval; + } + + // -------------------------------------------------------------------- + + /** + * Error + * + * Returns an array containing code and message of the last + * database error that has occurred. + * + * @return array + */ + public function error() + { + return array('code' => cubrid_errno($this->conn_id), 'message' => cubrid_error($this->conn_id)); + } + + // -------------------------------------------------------------------- + + /** + * FROM tables + * + * Groups tables in FROM clauses if needed, so there is no confusion + * about operator precedence. + * + * @return string + */ + protected function _from_tables() + { + if ( ! empty($this->qb_join) && count($this->qb_from) > 1) + { + return '('.implode(', ', $this->qb_from).')'; + } + + return implode(', ', $this->qb_from); + } + + // -------------------------------------------------------------------- + + /** + * Close DB Connection + * + * @return void + */ + protected function _close() + { + cubrid_close($this->conn_id); + } + +} diff --git a/www/system/database/drivers/cubrid/cubrid_forge.php b/www/system/database/drivers/cubrid/cubrid_forge.php new file mode 100644 index 0000000..95e7ca1 --- /dev/null +++ b/www/system/database/drivers/cubrid/cubrid_forge.php @@ -0,0 +1,230 @@ + 'INTEGER', + 'SMALLINT' => 'INTEGER', + 'INT' => 'BIGINT', + 'INTEGER' => 'BIGINT', + 'BIGINT' => 'NUMERIC', + 'FLOAT' => 'DOUBLE', + 'REAL' => 'DOUBLE' + ); + + // -------------------------------------------------------------------- + + /** + * ALTER TABLE + * + * @param string $alter_type ALTER type + * @param string $table Table name + * @param mixed $field Column definition + * @return string|string[] + */ + protected function _alter_table($alter_type, $table, $field) + { + if (in_array($alter_type, array('DROP', 'ADD'), TRUE)) + { + return parent::_alter_table($alter_type, $table, $field); + } + + $sql = 'ALTER TABLE '.$this->db->escape_identifiers($table); + $sqls = array(); + for ($i = 0, $c = count($field); $i < $c; $i++) + { + if ($field[$i]['_literal'] !== FALSE) + { + $sqls[] = $sql.' CHANGE '.$field[$i]['_literal']; + } + else + { + $alter_type = empty($field[$i]['new_name']) ? ' MODIFY ' : ' CHANGE '; + $sqls[] = $sql.$alter_type.$this->_process_column($field[$i]); + } + } + + return $sqls; + } + + // -------------------------------------------------------------------- + + /** + * Process column + * + * @param array $field + * @return string + */ + protected function _process_column($field) + { + $extra_clause = isset($field['after']) + ? ' AFTER '.$this->db->escape_identifiers($field['after']) : ''; + + if (empty($extra_clause) && isset($field['first']) && $field['first'] === TRUE) + { + $extra_clause = ' FIRST'; + } + + return $this->db->escape_identifiers($field['name']) + .(empty($field['new_name']) ? '' : ' '.$this->db->escape_identifiers($field['new_name'])) + .' '.$field['type'].$field['length'] + .$field['unsigned'] + .$field['null'] + .$field['default'] + .$field['auto_increment'] + .$field['unique'] + .$extra_clause; + } + + // -------------------------------------------------------------------- + + /** + * Field attribute TYPE + * + * Performs a data type mapping between different databases. + * + * @param array &$attributes + * @return void + */ + protected function _attr_type(&$attributes) + { + switch (strtoupper($attributes['TYPE'])) + { + case 'TINYINT': + $attributes['TYPE'] = 'SMALLINT'; + $attributes['UNSIGNED'] = FALSE; + return; + case 'MEDIUMINT': + $attributes['TYPE'] = 'INTEGER'; + $attributes['UNSIGNED'] = FALSE; + return; + case 'LONGTEXT': + $attributes['TYPE'] = 'STRING'; + return; + default: return; + } + } + + // -------------------------------------------------------------------- + + /** + * Process indexes + * + * @param string $table (ignored) + * @return string + */ + protected function _process_indexes($table) + { + $sql = ''; + + for ($i = 0, $c = count($this->keys); $i < $c; $i++) + { + if (is_array($this->keys[$i])) + { + for ($i2 = 0, $c2 = count($this->keys[$i]); $i2 < $c2; $i2++) + { + if ( ! isset($this->fields[$this->keys[$i][$i2]])) + { + unset($this->keys[$i][$i2]); + continue; + } + } + } + elseif ( ! isset($this->fields[$this->keys[$i]])) + { + unset($this->keys[$i]); + continue; + } + + is_array($this->keys[$i]) OR $this->keys[$i] = array($this->keys[$i]); + + $sql .= ",\n\tKEY ".$this->db->escape_identifiers(implode('_', $this->keys[$i])) + .' ('.implode(', ', $this->db->escape_identifiers($this->keys[$i])).')'; + } + + $this->keys = array(); + + return $sql; + } + +} diff --git a/www/system/database/drivers/cubrid/cubrid_result.php b/www/system/database/drivers/cubrid/cubrid_result.php new file mode 100644 index 0000000..a71b1a2 --- /dev/null +++ b/www/system/database/drivers/cubrid/cubrid_result.php @@ -0,0 +1,177 @@ +num_rows) + ? $this->num_rows + : $this->num_rows = cubrid_num_rows($this->result_id); + } + + // -------------------------------------------------------------------- + + /** + * Number of fields in the result set + * + * @return int + */ + public function num_fields() + { + return cubrid_num_fields($this->result_id); + } + + // -------------------------------------------------------------------- + + /** + * Fetch Field Names + * + * Generates an array of column names + * + * @return array + */ + public function list_fields() + { + return cubrid_column_names($this->result_id); + } + + // -------------------------------------------------------------------- + + /** + * Field data + * + * Generates an array of objects containing field meta-data + * + * @return array + */ + public function field_data() + { + $retval = array(); + + for ($i = 0, $c = $this->num_fields(); $i < $c; $i++) + { + $retval[$i] = new stdClass(); + $retval[$i]->name = cubrid_field_name($this->result_id, $i); + $retval[$i]->type = cubrid_field_type($this->result_id, $i); + $retval[$i]->max_length = cubrid_field_len($this->result_id, $i); + $retval[$i]->primary_key = (int) (strpos(cubrid_field_flags($this->result_id, $i), 'primary_key') !== FALSE); + } + + return $retval; + } + + // -------------------------------------------------------------------- + + /** + * Free the result + * + * @return void + */ + public function free_result() + { + if (is_resource($this->result_id) OR + (get_resource_type($this->result_id) === 'Unknown' && preg_match('/Resource id #/', strval($this->result_id)))) + { + cubrid_close_request($this->result_id); + $this->result_id = FALSE; + } + } + + // -------------------------------------------------------------------- + + /** + * Data Seek + * + * Moves the internal pointer to the desired offset. We call + * this internally before fetching results to make sure the + * result set starts at zero. + * + * @param int $n + * @return bool + */ + public function data_seek($n = 0) + { + return cubrid_data_seek($this->result_id, $n); + } + + // -------------------------------------------------------------------- + + /** + * Result - associative array + * + * Returns the result set as an array + * + * @return array + */ + protected function _fetch_assoc() + { + return cubrid_fetch_assoc($this->result_id); + } + + // -------------------------------------------------------------------- + + /** + * Result - object + * + * Returns the result set as an object + * + * @param string $class_name + * @return object + */ + protected function _fetch_object($class_name = 'stdClass') + { + return cubrid_fetch_object($this->result_id, $class_name); + } + +} diff --git a/www/system/database/drivers/cubrid/cubrid_utility.php b/www/system/database/drivers/cubrid/cubrid_utility.php new file mode 100644 index 0000000..eb906ae --- /dev/null +++ b/www/system/database/drivers/cubrid/cubrid_utility.php @@ -0,0 +1,79 @@ +db->data_cache['db_names'])) + { + return $this->db->data_cache['db_names']; + } + + return $this->db->data_cache['db_names'] = cubrid_list_dbs($this->db->conn_id); + } + + // -------------------------------------------------------------------- + + /** + * CUBRID Export + * + * @param array Preferences + * @return mixed + */ + protected function _backup($params = array()) + { + // No SQL based support in CUBRID as of version 8.4.0. Database or + // table backup can be performed using CUBRID Manager + // database administration tool. + return $this->db->display_error('db_unsupported_feature'); + } +} diff --git a/www/system/database/drivers/cubrid/index.html b/www/system/database/drivers/cubrid/index.html new file mode 100644 index 0000000..b702fbc --- /dev/null +++ b/www/system/database/drivers/cubrid/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

    Directory access is forbidden.

    + + + diff --git a/www/system/database/drivers/ibase/ibase_driver.php b/www/system/database/drivers/ibase/ibase_driver.php new file mode 100644 index 0000000..fd866ff --- /dev/null +++ b/www/system/database/drivers/ibase/ibase_driver.php @@ -0,0 +1,413 @@ +hostname.':'.$this->database, $this->username, $this->password, $this->char_set) + : ibase_connect($this->hostname.':'.$this->database, $this->username, $this->password, $this->char_set); + } + + // -------------------------------------------------------------------- + + /** + * Database version number + * + * @return string + */ + public function version() + { + if (isset($this->data_cache['version'])) + { + return $this->data_cache['version']; + } + + if (($service = ibase_service_attach($this->hostname, $this->username, $this->password))) + { + $this->data_cache['version'] = ibase_server_info($service, IBASE_SVC_SERVER_VERSION); + + // Don't keep the service open + ibase_service_detach($service); + return $this->data_cache['version']; + } + + return FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Execute the query + * + * @param string $sql an SQL query + * @return resource + */ + protected function _execute($sql) + { + return ibase_query(isset($this->_ibase_trans) ? $this->_ibase_trans : $this->conn_id, $sql); + } + + // -------------------------------------------------------------------- + + /** + * Begin Transaction + * + * @return bool + */ + protected function _trans_begin() + { + if (($trans_handle = ibase_trans($this->conn_id)) === FALSE) + { + return FALSE; + } + + $this->_ibase_trans = $trans_handle; + return TRUE; + } + + // -------------------------------------------------------------------- + + /** + * Commit Transaction + * + * @return bool + */ + protected function _trans_commit() + { + if (ibase_commit($this->_ibase_trans)) + { + $this->_ibase_trans = NULL; + return TRUE; + } + + return FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Rollback Transaction + * + * @return bool + */ + protected function _trans_rollback() + { + if (ibase_rollback($this->_ibase_trans)) + { + $this->_ibase_trans = NULL; + return TRUE; + } + + return FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Affected Rows + * + * @return int + */ + public function affected_rows() + { + return ibase_affected_rows($this->conn_id); + } + + // -------------------------------------------------------------------- + + /** + * Insert ID + * + * @param string $generator_name + * @param int $inc_by + * @return int + */ + public function insert_id($generator_name, $inc_by = 0) + { + //If a generator hasn't been used before it will return 0 + return ibase_gen_id('"'.$generator_name.'"', $inc_by); + } + + // -------------------------------------------------------------------- + + /** + * List table query + * + * Generates a platform-specific query string so that the table names can be fetched + * + * @param bool $prefix_limit + * @return string + */ + protected function _list_tables($prefix_limit = FALSE) + { + $sql = 'SELECT TRIM("RDB$RELATION_NAME") AS TABLE_NAME FROM "RDB$RELATIONS" WHERE "RDB$RELATION_NAME" NOT LIKE \'RDB$%\' AND "RDB$RELATION_NAME" NOT LIKE \'MON$%\''; + + if ($prefix_limit !== FALSE && $this->dbprefix !== '') + { + return $sql.' AND TRIM("RDB$RELATION_NAME") AS TABLE_NAME LIKE \''.$this->escape_like_str($this->dbprefix)."%' " + .sprintf($this->_like_escape_str, $this->_like_escape_chr); + } + + return $sql; + } + + // -------------------------------------------------------------------- + + /** + * Show column query + * + * Generates a platform-specific query string so that the column names can be fetched + * + * @param string $table + * @return string + */ + protected function _list_columns($table = '') + { + return 'SELECT TRIM("RDB$FIELD_NAME") AS COLUMN_NAME FROM "RDB$RELATION_FIELDS" WHERE "RDB$RELATION_NAME" = '.$this->escape($table); + } + + // -------------------------------------------------------------------- + + /** + * Returns an object with field data + * + * @param string $table + * @return array + */ + public function field_data($table) + { + $sql = 'SELECT "rfields"."RDB$FIELD_NAME" AS "name", + CASE "fields"."RDB$FIELD_TYPE" + WHEN 7 THEN \'SMALLINT\' + WHEN 8 THEN \'INTEGER\' + WHEN 9 THEN \'QUAD\' + WHEN 10 THEN \'FLOAT\' + WHEN 11 THEN \'DFLOAT\' + WHEN 12 THEN \'DATE\' + WHEN 13 THEN \'TIME\' + WHEN 14 THEN \'CHAR\' + WHEN 16 THEN \'INT64\' + WHEN 27 THEN \'DOUBLE\' + WHEN 35 THEN \'TIMESTAMP\' + WHEN 37 THEN \'VARCHAR\' + WHEN 40 THEN \'CSTRING\' + WHEN 261 THEN \'BLOB\' + ELSE NULL + END AS "type", + "fields"."RDB$FIELD_LENGTH" AS "max_length", + "rfields"."RDB$DEFAULT_VALUE" AS "default" + FROM "RDB$RELATION_FIELDS" "rfields" + JOIN "RDB$FIELDS" "fields" ON "rfields"."RDB$FIELD_SOURCE" = "fields"."RDB$FIELD_NAME" + WHERE "rfields"."RDB$RELATION_NAME" = '.$this->escape($table).' + ORDER BY "rfields"."RDB$FIELD_POSITION"'; + + return (($query = $this->query($sql)) !== FALSE) + ? $query->result_object() + : FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Error + * + * Returns an array containing code and message of the last + * database error that has occurred. + * + * @return array + */ + public function error() + { + return array('code' => ibase_errcode(), 'message' => ibase_errmsg()); + } + + // -------------------------------------------------------------------- + + /** + * Update statement + * + * Generates a platform-specific update string from the supplied data + * + * @param string $table + * @param array $values + * @return string + */ + protected function _update($table, $values) + { + $this->qb_limit = FALSE; + return parent::_update($table, $values); + } + + // -------------------------------------------------------------------- + + /** + * Truncate statement + * + * Generates a platform-specific truncate string from the supplied data + * + * If the database does not support the TRUNCATE statement, + * then this method maps to 'DELETE FROM table' + * + * @param string $table + * @return string + */ + protected function _truncate($table) + { + return 'DELETE FROM '.$table; + } + + // -------------------------------------------------------------------- + + /** + * Delete statement + * + * Generates a platform-specific delete string from the supplied data + * + * @param string $table + * @return string + */ + protected function _delete($table) + { + $this->qb_limit = FALSE; + return parent::_delete($table); + } + + // -------------------------------------------------------------------- + + /** + * LIMIT + * + * Generates a platform-specific LIMIT clause + * + * @param string $sql SQL Query + * @return string + */ + protected function _limit($sql) + { + // Limit clause depends on if Interbase or Firebird + if (stripos($this->version(), 'firebird') !== FALSE) + { + $select = 'FIRST '.$this->qb_limit + .($this->qb_offset ? ' SKIP '.$this->qb_offset : ''); + } + else + { + $select = 'ROWS ' + .($this->qb_offset ? $this->qb_offset.' TO '.($this->qb_limit + $this->qb_offset) : $this->qb_limit); + } + + return preg_replace('`SELECT`i', 'SELECT '.$select, $sql, 1); + } + + // -------------------------------------------------------------------- + + /** + * Insert batch statement + * + * Generates a platform-specific insert string from the supplied data. + * + * @param string $table Table name + * @param array $keys INSERT keys + * @param array $values INSERT values + * @return string|bool + */ + protected function _insert_batch($table, $keys, $values) + { + return ($this->db_debug) ? $this->display_error('db_unsupported_feature') : FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Close DB Connection + * + * @return void + */ + protected function _close() + { + ibase_close($this->conn_id); + } + +} diff --git a/www/system/database/drivers/ibase/ibase_forge.php b/www/system/database/drivers/ibase/ibase_forge.php new file mode 100644 index 0000000..77aa4ae --- /dev/null +++ b/www/system/database/drivers/ibase/ibase_forge.php @@ -0,0 +1,251 @@ + 'INTEGER', + 'INTEGER' => 'INT64', + 'FLOAT' => 'DOUBLE PRECISION' + ); + + /** + * NULL value representation in CREATE/ALTER TABLE statements + * + * @var string + */ + protected $_null = 'NULL'; + + // -------------------------------------------------------------------- + + /** + * Create database + * + * @param string $db_name + * @return bool + */ + public function create_database($db_name) + { + // Firebird databases are flat files, so a path is required + + // Hostname is needed for remote access + empty($this->db->hostname) OR $db_name = $this->hostname.':'.$db_name; + + return parent::create_database('"'.$db_name.'"'); + } + + // -------------------------------------------------------------------- + + /** + * Drop database + * + * @param string $db_name (ignored) + * @return bool + */ + public function drop_database($db_name) + { + if ( ! ibase_drop_db($this->conn_id)) + { + return ($this->db->db_debug) ? $this->db->display_error('db_unable_to_drop') : FALSE; + } + elseif ( ! empty($this->db->data_cache['db_names'])) + { + $key = array_search(strtolower($this->db->database), array_map('strtolower', $this->db->data_cache['db_names']), TRUE); + if ($key !== FALSE) + { + unset($this->db->data_cache['db_names'][$key]); + } + } + + return TRUE; + } + + // -------------------------------------------------------------------- + + /** + * ALTER TABLE + * + * @param string $alter_type ALTER type + * @param string $table Table name + * @param mixed $field Column definition + * @return string|string[] + */ + protected function _alter_table($alter_type, $table, $field) + { + if (in_array($alter_type, array('DROP', 'ADD'), TRUE)) + { + return parent::_alter_table($alter_type, $table, $field); + } + + $sql = 'ALTER TABLE '.$this->db->escape_identifiers($table); + $sqls = array(); + for ($i = 0, $c = count($field); $i < $c; $i++) + { + if ($field[$i]['_literal'] !== FALSE) + { + return FALSE; + } + + if (isset($field[$i]['type'])) + { + $sqls[] = $sql.' ALTER COLUMN '.$this->db->escape_identififers($field[$i]['name']) + .' TYPE '.$field[$i]['type'].$field[$i]['length']; + } + + if ( ! empty($field[$i]['default'])) + { + $sqls[] = $sql.' ALTER COLUMN '.$this->db->escape_identifiers($field[$i]['name']) + .' SET DEFAULT '.$field[$i]['default']; + } + + if (isset($field[$i]['null'])) + { + $sqls[] = 'UPDATE "RDB$RELATION_FIELDS" SET "RDB$NULL_FLAG" = ' + .($field[$i]['null'] === TRUE ? 'NULL' : '1') + .' WHERE "RDB$FIELD_NAME" = '.$this->db->escape($field[$i]['name']) + .' AND "RDB$RELATION_NAME" = '.$this->db->escape($table); + } + + if ( ! empty($field[$i]['new_name'])) + { + $sqls[] = $sql.' ALTER COLUMN '.$this->db->escape_identifiers($field[$i]['name']) + .' TO '.$this->db->escape_identifiers($field[$i]['new_name']); + } + } + + return $sqls; + } + + // -------------------------------------------------------------------- + + /** + * Process column + * + * @param array $field + * @return string + */ + protected function _process_column($field) + { + return $this->db->escape_identifiers($field['name']) + .' '.$field['type'].$field['length'] + .$field['null'] + .$field['unique'] + .$field['default']; + } + + // -------------------------------------------------------------------- + + /** + * Field attribute TYPE + * + * Performs a data type mapping between different databases. + * + * @param array &$attributes + * @return void + */ + protected function _attr_type(&$attributes) + { + switch (strtoupper($attributes['TYPE'])) + { + case 'TINYINT': + $attributes['TYPE'] = 'SMALLINT'; + $attributes['UNSIGNED'] = FALSE; + return; + case 'MEDIUMINT': + $attributes['TYPE'] = 'INTEGER'; + $attributes['UNSIGNED'] = FALSE; + return; + case 'INT': + $attributes['TYPE'] = 'INTEGER'; + return; + case 'BIGINT': + $attributes['TYPE'] = 'INT64'; + return; + default: return; + } + } + + // -------------------------------------------------------------------- + + /** + * Field attribute AUTO_INCREMENT + * + * @param array &$attributes + * @param array &$field + * @return void + */ + protected function _attr_auto_increment(&$attributes, &$field) + { + // Not supported + } + +} diff --git a/www/system/database/drivers/ibase/ibase_result.php b/www/system/database/drivers/ibase/ibase_result.php new file mode 100644 index 0000000..b548f32 --- /dev/null +++ b/www/system/database/drivers/ibase/ibase_result.php @@ -0,0 +1,161 @@ +result_id); + } + + // -------------------------------------------------------------------- + + /** + * Fetch Field Names + * + * Generates an array of column names + * + * @return array + */ + public function list_fields() + { + $field_names = array(); + for ($i = 0, $num_fields = $this->num_fields(); $i < $num_fields; $i++) + { + $info = ibase_field_info($this->result_id, $i); + $field_names[] = $info['name']; + } + + return $field_names; + } + + // -------------------------------------------------------------------- + + /** + * Field data + * + * Generates an array of objects containing field meta-data + * + * @return array + */ + public function field_data() + { + $retval = array(); + for ($i = 0, $c = $this->num_fields(); $i < $c; $i++) + { + $info = ibase_field_info($this->result_id, $i); + + $retval[$i] = new stdClass(); + $retval[$i]->name = $info['name']; + $retval[$i]->type = $info['type']; + $retval[$i]->max_length = $info['length']; + } + + return $retval; + } + + // -------------------------------------------------------------------- + + /** + * Free the result + * + * @return void + */ + public function free_result() + { + ibase_free_result($this->result_id); + } + + // -------------------------------------------------------------------- + + /** + * Result - associative array + * + * Returns the result set as an array + * + * @return array + */ + protected function _fetch_assoc() + { + return ibase_fetch_assoc($this->result_id, IBASE_FETCH_BLOBS); + } + + // -------------------------------------------------------------------- + + /** + * Result - object + * + * Returns the result set as an object + * + * @param string $class_name + * @return object + */ + protected function _fetch_object($class_name = 'stdClass') + { + $row = ibase_fetch_object($this->result_id, IBASE_FETCH_BLOBS); + + if ($class_name === 'stdClass' OR ! $row) + { + return $row; + } + + $class_name = new $class_name(); + foreach ($row as $key => $value) + { + $class_name->$key = $value; + } + + return $class_name; + } + +} diff --git a/www/system/database/drivers/ibase/ibase_utility.php b/www/system/database/drivers/ibase/ibase_utility.php new file mode 100644 index 0000000..a1e5d69 --- /dev/null +++ b/www/system/database/drivers/ibase/ibase_utility.php @@ -0,0 +1,69 @@ +db->hostname, $this->db->username, $this->db->password)) + { + $res = ibase_backup($service, $this->db->database, $filename.'.fbk'); + + // Close the service connection + ibase_service_detach($service); + return $res; + } + + return FALSE; + } + +} diff --git a/www/system/database/drivers/ibase/index.html b/www/system/database/drivers/ibase/index.html new file mode 100644 index 0000000..b702fbc --- /dev/null +++ b/www/system/database/drivers/ibase/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

    Directory access is forbidden.

    + + + diff --git a/www/system/database/drivers/index.html b/www/system/database/drivers/index.html new file mode 100644 index 0000000..b702fbc --- /dev/null +++ b/www/system/database/drivers/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

    Directory access is forbidden.

    + + + diff --git a/www/system/database/drivers/mssql/index.html b/www/system/database/drivers/mssql/index.html new file mode 100644 index 0000000..b702fbc --- /dev/null +++ b/www/system/database/drivers/mssql/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

    Directory access is forbidden.

    + + + diff --git a/www/system/database/drivers/mssql/mssql_driver.php b/www/system/database/drivers/mssql/mssql_driver.php new file mode 100644 index 0000000..b2b17d0 --- /dev/null +++ b/www/system/database/drivers/mssql/mssql_driver.php @@ -0,0 +1,518 @@ +port)) + { + $this->hostname .= (DIRECTORY_SEPARATOR === '\\' ? ',' : ':').$this->port; + } + } + + // -------------------------------------------------------------------- + + /** + * Non-persistent database connection + * + * @param bool $persistent + * @return resource + */ + public function db_connect($persistent = FALSE) + { + $this->conn_id = ($persistent) + ? mssql_pconnect($this->hostname, $this->username, $this->password) + : mssql_connect($this->hostname, $this->username, $this->password); + + if ( ! $this->conn_id) + { + return FALSE; + } + + // ---------------------------------------------------------------- + + // Select the DB... assuming a database name is specified in the config file + if ($this->database !== '' && ! $this->db_select()) + { + log_message('error', 'Unable to select database: '.$this->database); + + return ($this->db_debug === TRUE) + ? $this->display_error('db_unable_to_select', $this->database) + : FALSE; + } + + // Determine how identifiers are escaped + $query = $this->query('SELECT CASE WHEN (@@OPTIONS | 256) = @@OPTIONS THEN 1 ELSE 0 END AS qi'); + $query = $query->row_array(); + $this->_quoted_identifier = empty($query) ? FALSE : (bool) $query['qi']; + $this->_escape_char = ($this->_quoted_identifier) ? '"' : array('[', ']'); + + return $this->conn_id; + } + + // -------------------------------------------------------------------- + + /** + * Select the database + * + * @param string $database + * @return bool + */ + public function db_select($database = '') + { + if ($database === '') + { + $database = $this->database; + } + + // Note: Escaping is required in the event that the DB name + // contains reserved characters. + if (mssql_select_db('['.$database.']', $this->conn_id)) + { + $this->database = $database; + $this->data_cache = array(); + return TRUE; + } + + return FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Execute the query + * + * @param string $sql an SQL query + * @return mixed resource if rows are returned, bool otherwise + */ + protected function _execute($sql) + { + return mssql_query($sql, $this->conn_id); + } + + // -------------------------------------------------------------------- + + /** + * Begin Transaction + * + * @return bool + */ + protected function _trans_begin() + { + return $this->simple_query('BEGIN TRAN'); + } + + // -------------------------------------------------------------------- + + /** + * Commit Transaction + * + * @return bool + */ + protected function _trans_commit() + { + return $this->simple_query('COMMIT TRAN'); + } + + // -------------------------------------------------------------------- + + /** + * Rollback Transaction + * + * @return bool + */ + protected function _trans_rollback() + { + return $this->simple_query('ROLLBACK TRAN'); + } + + // -------------------------------------------------------------------- + + /** + * Affected Rows + * + * @return int + */ + public function affected_rows() + { + return mssql_rows_affected($this->conn_id); + } + + // -------------------------------------------------------------------- + + /** + * Insert ID + * + * Returns the last id created in the Identity column. + * + * @return string + */ + public function insert_id() + { + $query = version_compare($this->version(), '8', '>=') + ? 'SELECT SCOPE_IDENTITY() AS last_id' + : 'SELECT @@IDENTITY AS last_id'; + + $query = $this->query($query); + $query = $query->row(); + return $query->last_id; + } + + // -------------------------------------------------------------------- + + /** + * Set client character set + * + * @param string $charset + * @return bool + */ + protected function _db_set_charset($charset) + { + return (ini_set('mssql.charset', $charset) !== FALSE); + } + + // -------------------------------------------------------------------- + + /** + * Version number query string + * + * @return string + */ + protected function _version() + { + return "SELECT SERVERPROPERTY('ProductVersion') AS ver"; + } + + // -------------------------------------------------------------------- + + /** + * List table query + * + * Generates a platform-specific query string so that the table names can be fetched + * + * @param bool $prefix_limit + * @return string + */ + protected function _list_tables($prefix_limit = FALSE) + { + $sql = 'SELECT '.$this->escape_identifiers('name') + .' FROM '.$this->escape_identifiers('sysobjects') + .' WHERE '.$this->escape_identifiers('type')." = 'U'"; + + if ($prefix_limit !== FALSE && $this->dbprefix !== '') + { + $sql .= ' AND '.$this->escape_identifiers('name')." LIKE '".$this->escape_like_str($this->dbprefix)."%' " + .sprintf($this->_like_escape_str, $this->_like_escape_chr); + } + + return $sql.' ORDER BY '.$this->escape_identifiers('name'); + } + + // -------------------------------------------------------------------- + + /** + * List column query + * + * Generates a platform-specific query string so that the column names can be fetched + * + * @param string $table + * @return string + */ + protected function _list_columns($table = '') + { + return 'SELECT COLUMN_NAME + FROM INFORMATION_SCHEMA.Columns + WHERE UPPER(TABLE_NAME) = '.$this->escape(strtoupper($table)); + } + + // -------------------------------------------------------------------- + + /** + * Returns an object with field data + * + * @param string $table + * @return array + */ + public function field_data($table) + { + $sql = 'SELECT COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, NUMERIC_PRECISION, COLUMN_DEFAULT + FROM INFORMATION_SCHEMA.Columns + WHERE UPPER(TABLE_NAME) = '.$this->escape(strtoupper($table)); + + if (($query = $this->query($sql)) === FALSE) + { + return FALSE; + } + $query = $query->result_object(); + + $retval = array(); + for ($i = 0, $c = count($query); $i < $c; $i++) + { + $retval[$i] = new stdClass(); + $retval[$i]->name = $query[$i]->COLUMN_NAME; + $retval[$i]->type = $query[$i]->DATA_TYPE; + $retval[$i]->max_length = ($query[$i]->CHARACTER_MAXIMUM_LENGTH > 0) ? $query[$i]->CHARACTER_MAXIMUM_LENGTH : $query[$i]->NUMERIC_PRECISION; + $retval[$i]->default = $query[$i]->COLUMN_DEFAULT; + } + + return $retval; + } + + // -------------------------------------------------------------------- + + /** + * Error + * + * Returns an array containing code and message of the last + * database error that has occurred. + * + * @return array + */ + public function error() + { + // We need this because the error info is discarded by the + // server the first time you request it, and query() already + // calls error() once for logging purposes when a query fails. + static $error = array('code' => 0, 'message' => NULL); + + $message = mssql_get_last_message(); + if ( ! empty($message)) + { + $error['code'] = $this->query('SELECT @@ERROR AS code')->row()->code; + $error['message'] = $message; + } + + return $error; + } + + // -------------------------------------------------------------------- + + /** + * Update statement + * + * Generates a platform-specific update string from the supplied data + * + * @param string $table + * @param array $values + * @return string + */ + protected function _update($table, $values) + { + $this->qb_limit = FALSE; + $this->qb_orderby = array(); + return parent::_update($table, $values); + } + + // -------------------------------------------------------------------- + + /** + * Truncate statement + * + * Generates a platform-specific truncate string from the supplied data + * + * If the database does not support the TRUNCATE statement, + * then this method maps to 'DELETE FROM table' + * + * @param string $table + * @return string + */ + protected function _truncate($table) + { + return 'TRUNCATE TABLE '.$table; + } + + // -------------------------------------------------------------------- + + /** + * Delete statement + * + * Generates a platform-specific delete string from the supplied data + * + * @param string $table + * @return string + */ + protected function _delete($table) + { + if ($this->qb_limit) + { + return 'WITH ci_delete AS (SELECT TOP '.$this->qb_limit.' * FROM '.$table.$this->_compile_wh('qb_where').') DELETE FROM ci_delete'; + } + + return parent::_delete($table); + } + + // -------------------------------------------------------------------- + + /** + * LIMIT + * + * Generates a platform-specific LIMIT clause + * + * @param string $sql SQL Query + * @return string + */ + protected function _limit($sql) + { + $limit = $this->qb_offset + $this->qb_limit; + + // As of SQL Server 2005 (9.0.*) ROW_NUMBER() is supported, + // however an ORDER BY clause is required for it to work + if (version_compare($this->version(), '9', '>=') && $this->qb_offset && ! empty($this->qb_orderby)) + { + $orderby = $this->_compile_order_by(); + + // We have to strip the ORDER BY clause + $sql = trim(substr($sql, 0, strrpos($sql, $orderby))); + + // Get the fields to select from our subquery, so that we can avoid CI_rownum appearing in the actual results + if (count($this->qb_select) === 0 OR strpos(implode(',', $this->qb_select), '*') !== FALSE) + { + $select = '*'; // Inevitable + } + else + { + // Use only field names and their aliases, everything else is out of our scope. + $select = array(); + $field_regexp = ($this->_quoted_identifier) + ? '("[^\"]+")' : '(\[[^\]]+\])'; + for ($i = 0, $c = count($this->qb_select); $i < $c; $i++) + { + $select[] = preg_match('/(?:\s|\.)'.$field_regexp.'$/i', $this->qb_select[$i], $m) + ? $m[1] : $this->qb_select[$i]; + } + $select = implode(', ', $select); + } + + return 'SELECT '.$select." FROM (\n\n" + .preg_replace('/^(SELECT( DISTINCT)?)/i', '\\1 ROW_NUMBER() OVER('.trim($orderby).') AS '.$this->escape_identifiers('CI_rownum').', ', $sql) + ."\n\n) ".$this->escape_identifiers('CI_subquery') + ."\nWHERE ".$this->escape_identifiers('CI_rownum').' BETWEEN '.($this->qb_offset + 1).' AND '.$limit; + } + + return preg_replace('/(^\SELECT (DISTINCT)?)/i','\\1 TOP '.$limit.' ', $sql); + } + + // -------------------------------------------------------------------- + + /** + * Insert batch statement + * + * Generates a platform-specific insert string from the supplied data. + * + * @param string $table Table name + * @param array $keys INSERT keys + * @param array $values INSERT values + * @return string|bool + */ + protected function _insert_batch($table, $keys, $values) + { + // Multiple-value inserts are only supported as of SQL Server 2008 + if (version_compare($this->version(), '10', '>=')) + { + return parent::_insert_batch($table, $keys, $values); + } + + return ($this->db_debug) ? $this->display_error('db_unsupported_feature') : FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Close DB Connection + * + * @return void + */ + protected function _close() + { + mssql_close($this->conn_id); + } + +} diff --git a/www/system/database/drivers/mssql/mssql_forge.php b/www/system/database/drivers/mssql/mssql_forge.php new file mode 100644 index 0000000..9a3e3eb --- /dev/null +++ b/www/system/database/drivers/mssql/mssql_forge.php @@ -0,0 +1,151 @@ + 'SMALLINT', + 'SMALLINT' => 'INT', + 'INT' => 'BIGINT', + 'REAL' => 'FLOAT' + ); + + // -------------------------------------------------------------------- + + /** + * ALTER TABLE + * + * @param string $alter_type ALTER type + * @param string $table Table name + * @param mixed $field Column definition + * @return string|string[] + */ + protected function _alter_table($alter_type, $table, $field) + { + if (in_array($alter_type, array('ADD', 'DROP'), TRUE)) + { + return parent::_alter_table($alter_type, $table, $field); + } + + $sql = 'ALTER TABLE '.$this->db->escape_identifiers($table).' ALTER COLUMN '; + $sqls = array(); + for ($i = 0, $c = count($field); $i < $c; $i++) + { + $sqls[] = $sql.$this->_process_column($field[$i]); + } + + return $sqls; + } + + // -------------------------------------------------------------------- + + /** + * Field attribute TYPE + * + * Performs a data type mapping between different databases. + * + * @param array &$attributes + * @return void + */ + protected function _attr_type(&$attributes) + { + if (isset($attributes['CONSTRAINT']) && strpos($attributes['TYPE'], 'INT') !== FALSE) + { + unset($attributes['CONSTRAINT']); + } + + switch (strtoupper($attributes['TYPE'])) + { + case 'MEDIUMINT': + $attributes['TYPE'] = 'INTEGER'; + $attributes['UNSIGNED'] = FALSE; + return; + case 'INTEGER': + $attributes['TYPE'] = 'INT'; + return; + default: return; + } + } + + // -------------------------------------------------------------------- + + /** + * Field attribute AUTO_INCREMENT + * + * @param array &$attributes + * @param array &$field + * @return void + */ + protected function _attr_auto_increment(&$attributes, &$field) + { + if ( ! empty($attributes['AUTO_INCREMENT']) && $attributes['AUTO_INCREMENT'] === TRUE && stripos($field['type'], 'int') !== FALSE) + { + $field['auto_increment'] = ' IDENTITY(1,1)'; + } + } + +} diff --git a/www/system/database/drivers/mssql/mssql_result.php b/www/system/database/drivers/mssql/mssql_result.php new file mode 100644 index 0000000..8e1f416 --- /dev/null +++ b/www/system/database/drivers/mssql/mssql_result.php @@ -0,0 +1,198 @@ +num_rows) + ? $this->num_rows + : $this->num_rows = mssql_num_rows($this->result_id); + } + + // -------------------------------------------------------------------- + + /** + * Number of fields in the result set + * + * @return int + */ + public function num_fields() + { + return mssql_num_fields($this->result_id); + } + + // -------------------------------------------------------------------- + + /** + * Fetch Field Names + * + * Generates an array of column names + * + * @return array + */ + public function list_fields() + { + $field_names = array(); + mssql_field_seek($this->result_id, 0); + while ($field = mssql_fetch_field($this->result_id)) + { + $field_names[] = $field->name; + } + + return $field_names; + } + + // -------------------------------------------------------------------- + + /** + * Field data + * + * Generates an array of objects containing field meta-data + * + * @return array + */ + public function field_data() + { + $retval = array(); + for ($i = 0, $c = $this->num_fields(); $i < $c; $i++) + { + $field = mssql_fetch_field($this->result_id, $i); + + $retval[$i] = new stdClass(); + $retval[$i]->name = $field->name; + $retval[$i]->type = $field->type; + $retval[$i]->max_length = $field->max_length; + } + + return $retval; + } + + // -------------------------------------------------------------------- + + /** + * Free the result + * + * @return void + */ + public function free_result() + { + if (is_resource($this->result_id)) + { + mssql_free_result($this->result_id); + $this->result_id = FALSE; + } + } + + // -------------------------------------------------------------------- + + /** + * Data Seek + * + * Moves the internal pointer to the desired offset. We call + * this internally before fetching results to make sure the + * result set starts at zero. + * + * @param int $n + * @return bool + */ + public function data_seek($n = 0) + { + return mssql_data_seek($this->result_id, $n); + } + + // -------------------------------------------------------------------- + + /** + * Result - associative array + * + * Returns the result set as an array + * + * @return array + */ + protected function _fetch_assoc() + { + return mssql_fetch_assoc($this->result_id); + } + + // -------------------------------------------------------------------- + + /** + * Result - object + * + * Returns the result set as an object + * + * @param string $class_name + * @return object + */ + protected function _fetch_object($class_name = 'stdClass') + { + $row = mssql_fetch_object($this->result_id); + + if ($class_name === 'stdClass' OR ! $row) + { + return $row; + } + + $class_name = new $class_name(); + foreach ($row as $key => $value) + { + $class_name->$key = $value; + } + + return $class_name; + } + +} diff --git a/www/system/database/drivers/mssql/mssql_utility.php b/www/system/database/drivers/mssql/mssql_utility.php new file mode 100644 index 0000000..90b7107 --- /dev/null +++ b/www/system/database/drivers/mssql/mssql_utility.php @@ -0,0 +1,77 @@ +db->display_error('db_unsupported_feature'); + } + +} diff --git a/www/system/database/drivers/mysql/index.html b/www/system/database/drivers/mysql/index.html new file mode 100644 index 0000000..b702fbc --- /dev/null +++ b/www/system/database/drivers/mysql/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

    Directory access is forbidden.

    + + + diff --git a/www/system/database/drivers/mysql/mysql_driver.php b/www/system/database/drivers/mysql/mysql_driver.php new file mode 100644 index 0000000..05a3283 --- /dev/null +++ b/www/system/database/drivers/mysql/mysql_driver.php @@ -0,0 +1,494 @@ +port)) + { + $this->hostname .= ':'.$this->port; + } + } + + // -------------------------------------------------------------------- + + /** + * Non-persistent database connection + * + * @param bool $persistent + * @return resource + */ + public function db_connect($persistent = FALSE) + { + $client_flags = ($this->compress === FALSE) ? 0 : MYSQL_CLIENT_COMPRESS; + + if ($this->encrypt === TRUE) + { + $client_flags = $client_flags | MYSQL_CLIENT_SSL; + } + + // Error suppression is necessary mostly due to PHP 5.5+ issuing E_DEPRECATED messages + $this->conn_id = ($persistent === TRUE) + ? mysql_pconnect($this->hostname, $this->username, $this->password, $client_flags) + : mysql_connect($this->hostname, $this->username, $this->password, TRUE, $client_flags); + + // ---------------------------------------------------------------- + + // Select the DB... assuming a database name is specified in the config file + if ($this->database !== '' && ! $this->db_select()) + { + log_message('error', 'Unable to select database: '.$this->database); + + return ($this->db_debug === TRUE) + ? $this->display_error('db_unable_to_select', $this->database) + : FALSE; + } + + if (isset($this->stricton) && is_resource($this->conn_id)) + { + if ($this->stricton) + { + $this->simple_query('SET SESSION sql_mode = CONCAT(@@sql_mode, ",", "STRICT_ALL_TABLES")'); + } + else + { + $this->simple_query( + 'SET SESSION sql_mode = + REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( + @@sql_mode, + "STRICT_ALL_TABLES,", ""), + ",STRICT_ALL_TABLES", ""), + "STRICT_ALL_TABLES", ""), + "STRICT_TRANS_TABLES,", ""), + ",STRICT_TRANS_TABLES", ""), + "STRICT_TRANS_TABLES", "")' + ); + } + } + + return $this->conn_id; + } + + // -------------------------------------------------------------------- + + /** + * Reconnect + * + * Keep / reestablish the db connection if no queries have been + * sent for a length of time exceeding the server's idle timeout + * + * @return void + */ + public function reconnect() + { + if (mysql_ping($this->conn_id) === FALSE) + { + $this->conn_id = FALSE; + } + } + + // -------------------------------------------------------------------- + + /** + * Select the database + * + * @param string $database + * @return bool + */ + public function db_select($database = '') + { + if ($database === '') + { + $database = $this->database; + } + + if (mysql_select_db($database, $this->conn_id)) + { + $this->database = $database; + $this->data_cache = array(); + return TRUE; + } + + return FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Set client character set + * + * @param string $charset + * @return bool + */ + protected function _db_set_charset($charset) + { + return mysql_set_charset($charset, $this->conn_id); + } + + // -------------------------------------------------------------------- + + /** + * Database version number + * + * @return string + */ + public function version() + { + if (isset($this->data_cache['version'])) + { + return $this->data_cache['version']; + } + + if ( ! $this->conn_id OR ($version = mysql_get_server_info($this->conn_id)) === FALSE) + { + return FALSE; + } + + return $this->data_cache['version'] = $version; + } + + // -------------------------------------------------------------------- + + /** + * Execute the query + * + * @param string $sql an SQL query + * @return mixed + */ + protected function _execute($sql) + { + return mysql_query($this->_prep_query($sql), $this->conn_id); + } + + // -------------------------------------------------------------------- + + /** + * Prep the query + * + * If needed, each database adapter can prep the query string + * + * @param string $sql an SQL query + * @return string + */ + protected function _prep_query($sql) + { + // mysql_affected_rows() returns 0 for "DELETE FROM TABLE" queries. This hack + // modifies the query so that it a proper number of affected rows is returned. + if ($this->delete_hack === TRUE && preg_match('/^\s*DELETE\s+FROM\s+(\S+)\s*$/i', $sql)) + { + return trim($sql).' WHERE 1=1'; + } + + return $sql; + } + + // -------------------------------------------------------------------- + + /** + * Begin Transaction + * + * @return bool + */ + protected function _trans_begin() + { + $this->simple_query('SET AUTOCOMMIT=0'); + return $this->simple_query('START TRANSACTION'); // can also be BEGIN or BEGIN WORK + } + + // -------------------------------------------------------------------- + + /** + * Commit Transaction + * + * @return bool + */ + protected function _trans_commit() + { + if ($this->simple_query('COMMIT')) + { + $this->simple_query('SET AUTOCOMMIT=1'); + return TRUE; + } + + return FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Rollback Transaction + * + * @return bool + */ + protected function _trans_rollback() + { + if ($this->simple_query('ROLLBACK')) + { + $this->simple_query('SET AUTOCOMMIT=1'); + return TRUE; + } + + return FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Platform-dependent string escape + * + * @param string + * @return string + */ + protected function _escape_str($str) + { + return mysql_real_escape_string($str, $this->conn_id); + } + + // -------------------------------------------------------------------- + + /** + * Affected Rows + * + * @return int + */ + public function affected_rows() + { + return mysql_affected_rows($this->conn_id); + } + + // -------------------------------------------------------------------- + + /** + * Insert ID + * + * @return int + */ + public function insert_id() + { + return mysql_insert_id($this->conn_id); + } + + // -------------------------------------------------------------------- + + /** + * List table query + * + * Generates a platform-specific query string so that the table names can be fetched + * + * @param bool $prefix_limit + * @return string + */ + protected function _list_tables($prefix_limit = FALSE) + { + $sql = 'SHOW TABLES FROM '.$this->escape_identifiers($this->database); + + if ($prefix_limit !== FALSE && $this->dbprefix !== '') + { + return $sql." LIKE '".$this->escape_like_str($this->dbprefix)."%'"; + } + + return $sql; + } + + // -------------------------------------------------------------------- + + /** + * Show column query + * + * Generates a platform-specific query string so that the column names can be fetched + * + * @param string $table + * @return string + */ + protected function _list_columns($table = '') + { + return 'SHOW COLUMNS FROM '.$this->protect_identifiers($table, TRUE, NULL, FALSE); + } + + // -------------------------------------------------------------------- + + /** + * Returns an object with field data + * + * @param string $table + * @return array + */ + public function field_data($table) + { + if (($query = $this->query('SHOW COLUMNS FROM '.$this->protect_identifiers($table, TRUE, NULL, FALSE))) === FALSE) + { + return FALSE; + } + $query = $query->result_object(); + + $retval = array(); + for ($i = 0, $c = count($query); $i < $c; $i++) + { + $retval[$i] = new stdClass(); + $retval[$i]->name = $query[$i]->Field; + + sscanf($query[$i]->Type, '%[a-z](%d)', + $retval[$i]->type, + $retval[$i]->max_length + ); + + $retval[$i]->default = $query[$i]->Default; + $retval[$i]->primary_key = (int) ($query[$i]->Key === 'PRI'); + } + + return $retval; + } + + // -------------------------------------------------------------------- + + /** + * Error + * + * Returns an array containing code and message of the last + * database error that has occurred. + * + * @return array + */ + public function error() + { + return array('code' => mysql_errno($this->conn_id), 'message' => mysql_error($this->conn_id)); + } + + // -------------------------------------------------------------------- + + /** + * FROM tables + * + * Groups tables in FROM clauses if needed, so there is no confusion + * about operator precedence. + * + * @return string + */ + protected function _from_tables() + { + if ( ! empty($this->qb_join) && count($this->qb_from) > 1) + { + return '('.implode(', ', $this->qb_from).')'; + } + + return implode(', ', $this->qb_from); + } + + // -------------------------------------------------------------------- + + /** + * Close DB Connection + * + * @return void + */ + protected function _close() + { + // Error suppression to avoid annoying E_WARNINGs in cases + // where the connection has already been closed for some reason. + @mysql_close($this->conn_id); + } + +} diff --git a/www/system/database/drivers/mysql/mysql_forge.php b/www/system/database/drivers/mysql/mysql_forge.php new file mode 100644 index 0000000..f8a998b --- /dev/null +++ b/www/system/database/drivers/mysql/mysql_forge.php @@ -0,0 +1,243 @@ +db->char_set) && ! strpos($sql, 'CHARACTER SET') && ! strpos($sql, 'CHARSET')) + { + $sql .= ' DEFAULT CHARACTER SET = '.$this->db->char_set; + } + + if ( ! empty($this->db->dbcollat) && ! strpos($sql, 'COLLATE')) + { + $sql .= ' COLLATE = '.$this->db->dbcollat; + } + + return $sql; + } + + // -------------------------------------------------------------------- + + /** + * ALTER TABLE + * + * @param string $alter_type ALTER type + * @param string $table Table name + * @param mixed $field Column definition + * @return string|string[] + */ + protected function _alter_table($alter_type, $table, $field) + { + if ($alter_type === 'DROP') + { + return parent::_alter_table($alter_type, $table, $field); + } + + $sql = 'ALTER TABLE '.$this->db->escape_identifiers($table); + for ($i = 0, $c = count($field); $i < $c; $i++) + { + if ($field[$i]['_literal'] !== FALSE) + { + $field[$i] = ($alter_type === 'ADD') + ? "\n\tADD ".$field[$i]['_literal'] + : "\n\tMODIFY ".$field[$i]['_literal']; + } + else + { + if ($alter_type === 'ADD') + { + $field[$i]['_literal'] = "\n\tADD "; + } + else + { + $field[$i]['_literal'] = empty($field[$i]['new_name']) ? "\n\tMODIFY " : "\n\tCHANGE "; + } + + $field[$i] = $field[$i]['_literal'].$this->_process_column($field[$i]); + } + } + + return array($sql.implode(',', $field)); + } + + // -------------------------------------------------------------------- + + /** + * Process column + * + * @param array $field + * @return string + */ + protected function _process_column($field) + { + $extra_clause = isset($field['after']) + ? ' AFTER '.$this->db->escape_identifiers($field['after']) : ''; + + if (empty($extra_clause) && isset($field['first']) && $field['first'] === TRUE) + { + $extra_clause = ' FIRST'; + } + + + return $this->db->escape_identifiers($field['name']) + .(empty($field['new_name']) ? '' : ' '.$this->db->escape_identifiers($field['new_name'])) + .' '.$field['type'].$field['length'] + .$field['unsigned'] + .$field['null'] + .$field['default'] + .$field['auto_increment'] + .$field['unique'] + .(empty($field['comment']) ? '' : ' COMMENT '.$field['comment']) + .$extra_clause; + } + + // -------------------------------------------------------------------- + + /** + * Process indexes + * + * @param string $table (ignored) + * @return string + */ + protected function _process_indexes($table) + { + $sql = ''; + + for ($i = 0, $c = count($this->keys); $i < $c; $i++) + { + if (is_array($this->keys[$i])) + { + for ($i2 = 0, $c2 = count($this->keys[$i]); $i2 < $c2; $i2++) + { + if ( ! isset($this->fields[$this->keys[$i][$i2]])) + { + unset($this->keys[$i][$i2]); + continue; + } + } + } + elseif ( ! isset($this->fields[$this->keys[$i]])) + { + unset($this->keys[$i]); + continue; + } + + is_array($this->keys[$i]) OR $this->keys[$i] = array($this->keys[$i]); + + $sql .= ",\n\tKEY ".$this->db->escape_identifiers(implode('_', $this->keys[$i])) + .' ('.implode(', ', $this->db->escape_identifiers($this->keys[$i])).')'; + } + + $this->keys = array(); + + return $sql; + } + +} diff --git a/www/system/database/drivers/mysql/mysql_result.php b/www/system/database/drivers/mysql/mysql_result.php new file mode 100644 index 0000000..07d5187 --- /dev/null +++ b/www/system/database/drivers/mysql/mysql_result.php @@ -0,0 +1,199 @@ +num_rows = mysql_num_rows($this->result_id); + } + + // -------------------------------------------------------------------- + + /** + * Number of rows in the result set + * + * @return int + */ + public function num_rows() + { + return $this->num_rows; + } + + // -------------------------------------------------------------------- + + /** + * Number of fields in the result set + * + * @return int + */ + public function num_fields() + { + return mysql_num_fields($this->result_id); + } + + // -------------------------------------------------------------------- + + /** + * Fetch Field Names + * + * Generates an array of column names + * + * @return array + */ + public function list_fields() + { + $field_names = array(); + mysql_field_seek($this->result_id, 0); + while ($field = mysql_fetch_field($this->result_id)) + { + $field_names[] = $field->name; + } + + return $field_names; + } + + // -------------------------------------------------------------------- + + /** + * Field data + * + * Generates an array of objects containing field meta-data + * + * @return array + */ + public function field_data() + { + $retval = array(); + for ($i = 0, $c = $this->num_fields(); $i < $c; $i++) + { + $retval[$i] = new stdClass(); + $retval[$i]->name = mysql_field_name($this->result_id, $i); + $retval[$i]->type = mysql_field_type($this->result_id, $i); + $retval[$i]->max_length = mysql_field_len($this->result_id, $i); + $retval[$i]->primary_key = (int) (strpos(mysql_field_flags($this->result_id, $i), 'primary_key') !== FALSE); + } + + return $retval; + } + + // -------------------------------------------------------------------- + + /** + * Free the result + * + * @return void + */ + public function free_result() + { + if (is_resource($this->result_id)) + { + mysql_free_result($this->result_id); + $this->result_id = FALSE; + } + } + + // -------------------------------------------------------------------- + + /** + * Data Seek + * + * Moves the internal pointer to the desired offset. We call + * this internally before fetching results to make sure the + * result set starts at zero. + * + * @param int $n + * @return bool + */ + public function data_seek($n = 0) + { + return $this->num_rows + ? mysql_data_seek($this->result_id, $n) + : FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Result - associative array + * + * Returns the result set as an array + * + * @return array + */ + protected function _fetch_assoc() + { + return mysql_fetch_assoc($this->result_id); + } + + // -------------------------------------------------------------------- + + /** + * Result - object + * + * Returns the result set as an object + * + * @param string $class_name + * @return object + */ + protected function _fetch_object($class_name = 'stdClass') + { + return mysql_fetch_object($this->result_id, $class_name); + } + +} diff --git a/www/system/database/drivers/mysql/mysql_utility.php b/www/system/database/drivers/mysql/mysql_utility.php new file mode 100644 index 0000000..ae3c26c --- /dev/null +++ b/www/system/database/drivers/mysql/mysql_utility.php @@ -0,0 +1,211 @@ +db->query('SHOW CREATE TABLE '.$this->db->escape_identifiers($this->db->database.'.'.$table)); + + // No result means the table name was invalid + if ($query === FALSE) + { + continue; + } + + // Write out the table schema + $output .= '#'.$newline.'# TABLE STRUCTURE FOR: '.$table.$newline.'#'.$newline.$newline; + + if ($add_drop === TRUE) + { + $output .= 'DROP TABLE IF EXISTS '.$this->db->protect_identifiers($table).';'.$newline.$newline; + } + + $i = 0; + $result = $query->result_array(); + foreach ($result[0] as $val) + { + if ($i++ % 2) + { + $output .= $val.';'.$newline.$newline; + } + } + + // If inserts are not needed we're done... + if ($add_insert === FALSE) + { + continue; + } + + // Grab all the data from the current table + $query = $this->db->query('SELECT * FROM '.$this->db->protect_identifiers($table)); + + if ($query->num_rows() === 0) + { + continue; + } + + // Fetch the field names and determine if the field is an + // integer type. We use this info to decide whether to + // surround the data with quotes or not + + $i = 0; + $field_str = ''; + $is_int = array(); + while ($field = mysql_fetch_field($query->result_id)) + { + // Most versions of MySQL store timestamp as a string + $is_int[$i] = in_array(strtolower(mysql_field_type($query->result_id, $i)), + array('tinyint', 'smallint', 'mediumint', 'int', 'bigint'), //, 'timestamp'), + TRUE); + + // Create a string of field names + $field_str .= $this->db->escape_identifiers($field->name).', '; + $i++; + } + + // Trim off the end comma + $field_str = preg_replace('/, $/' , '', $field_str); + + // Build the insert string + foreach ($query->result_array() as $row) + { + $val_str = ''; + + $i = 0; + foreach ($row as $v) + { + // Is the value NULL? + if ($v === NULL) + { + $val_str .= 'NULL'; + } + else + { + // Escape the data if it's not an integer + $val_str .= ($is_int[$i] === FALSE) ? $this->db->escape($v) : $v; + } + + // Append a comma + $val_str .= ', '; + $i++; + } + + // Remove the comma at the end of the string + $val_str = preg_replace('/, $/' , '', $val_str); + + // Build the INSERT string + $output .= 'INSERT INTO '.$this->db->protect_identifiers($table).' ('.$field_str.') VALUES ('.$val_str.');'.$newline; + } + + $output .= $newline.$newline; + } + + // Do we need to include a statement to re-enable foreign key checks? + if ($foreign_key_checks === FALSE) + { + $output .= 'SET foreign_key_checks = 1;'.$newline; + } + + return $output; + } + +} diff --git a/www/system/database/drivers/mysqli/index.html b/www/system/database/drivers/mysqli/index.html new file mode 100644 index 0000000..b702fbc --- /dev/null +++ b/www/system/database/drivers/mysqli/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

    Directory access is forbidden.

    + + + diff --git a/www/system/database/drivers/mysqli/mysqli_driver.php b/www/system/database/drivers/mysqli/mysqli_driver.php new file mode 100644 index 0000000..7cec29e --- /dev/null +++ b/www/system/database/drivers/mysqli/mysqli_driver.php @@ -0,0 +1,544 @@ +hostname[0] === '/') + { + $hostname = NULL; + $port = NULL; + $socket = $this->hostname; + } + else + { + $hostname = ($persistent === TRUE) + ? 'p:'.$this->hostname : $this->hostname; + $port = empty($this->port) ? NULL : $this->port; + $socket = NULL; + } + + $client_flags = ($this->compress === TRUE) ? MYSQLI_CLIENT_COMPRESS : 0; + $this->_mysqli = mysqli_init(); + + $this->_mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 10); + + if (isset($this->stricton)) + { + if ($this->stricton) + { + $this->_mysqli->options(MYSQLI_INIT_COMMAND, 'SET SESSION sql_mode = CONCAT(@@sql_mode, ",", "STRICT_ALL_TABLES")'); + } + else + { + $this->_mysqli->options(MYSQLI_INIT_COMMAND, + 'SET SESSION sql_mode = + REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( + @@sql_mode, + "STRICT_ALL_TABLES,", ""), + ",STRICT_ALL_TABLES", ""), + "STRICT_ALL_TABLES", ""), + "STRICT_TRANS_TABLES,", ""), + ",STRICT_TRANS_TABLES", ""), + "STRICT_TRANS_TABLES", "")' + ); + } + } + + if (is_array($this->encrypt)) + { + $ssl = array(); + empty($this->encrypt['ssl_key']) OR $ssl['key'] = $this->encrypt['ssl_key']; + empty($this->encrypt['ssl_cert']) OR $ssl['cert'] = $this->encrypt['ssl_cert']; + empty($this->encrypt['ssl_ca']) OR $ssl['ca'] = $this->encrypt['ssl_ca']; + empty($this->encrypt['ssl_capath']) OR $ssl['capath'] = $this->encrypt['ssl_capath']; + empty($this->encrypt['ssl_cipher']) OR $ssl['cipher'] = $this->encrypt['ssl_cipher']; + + if ( ! empty($ssl)) + { + if (isset($this->encrypt['ssl_verify'])) + { + if ($this->encrypt['ssl_verify']) + { + defined('MYSQLI_OPT_SSL_VERIFY_SERVER_CERT') && $this->_mysqli->options(MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, TRUE); + } + // Apparently (when it exists), setting MYSQLI_OPT_SSL_VERIFY_SERVER_CERT + // to FALSE didn't do anything, so PHP 5.6.16 introduced yet another + // constant ... + // + // https://secure.php.net/ChangeLog-5.php#5.6.16 + // https://bugs.php.net/bug.php?id=68344 + elseif (defined('MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT')) + { + $client_flags |= MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT; + } + } + + $client_flags |= MYSQLI_CLIENT_SSL; + $this->_mysqli->ssl_set( + isset($ssl['key']) ? $ssl['key'] : NULL, + isset($ssl['cert']) ? $ssl['cert'] : NULL, + isset($ssl['ca']) ? $ssl['ca'] : NULL, + isset($ssl['capath']) ? $ssl['capath'] : NULL, + isset($ssl['cipher']) ? $ssl['cipher'] : NULL + ); + } + } + + if ($this->_mysqli->real_connect($hostname, $this->username, $this->password, $this->database, $port, $socket, $client_flags)) + { + // Prior to version 5.7.3, MySQL silently downgrades to an unencrypted connection if SSL setup fails + if ( + ($client_flags & MYSQLI_CLIENT_SSL) + && version_compare($this->_mysqli->client_info, '5.7.3', '<=') + && empty($this->_mysqli->query("SHOW STATUS LIKE 'ssl_cipher'")->fetch_object()->Value) + ) + { + $this->_mysqli->close(); + $message = 'MySQLi was configured for an SSL connection, but got an unencrypted connection instead!'; + log_message('error', $message); + return ($this->db_debug) ? $this->display_error($message, '', TRUE) : FALSE; + } + + return $this->_mysqli; + } + + return FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Reconnect + * + * Keep / reestablish the db connection if no queries have been + * sent for a length of time exceeding the server's idle timeout + * + * @return void + */ + public function reconnect() + { + if ($this->conn_id !== FALSE && $this->conn_id->ping() === FALSE) + { + $this->conn_id = FALSE; + } + } + + // -------------------------------------------------------------------- + + /** + * Select the database + * + * @param string $database + * @return bool + */ + public function db_select($database = '') + { + if ($database === '') + { + $database = $this->database; + } + + if ($this->conn_id->select_db($database)) + { + $this->database = $database; + $this->data_cache = array(); + return TRUE; + } + + return FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Set client character set + * + * @param string $charset + * @return bool + */ + protected function _db_set_charset($charset) + { + return $this->conn_id->set_charset($charset); + } + + // -------------------------------------------------------------------- + + /** + * Database version number + * + * @return string + */ + public function version() + { + if (isset($this->data_cache['version'])) + { + return $this->data_cache['version']; + } + + return $this->data_cache['version'] = $this->conn_id->server_info; + } + + // -------------------------------------------------------------------- + + /** + * Execute the query + * + * @param string $sql an SQL query + * @return mixed + */ + protected function _execute($sql) + { + return $this->conn_id->query($this->_prep_query($sql)); + } + + // -------------------------------------------------------------------- + + /** + * Prep the query + * + * If needed, each database adapter can prep the query string + * + * @param string $sql an SQL query + * @return string + */ + protected function _prep_query($sql) + { + // mysqli_affected_rows() returns 0 for "DELETE FROM TABLE" queries. This hack + // modifies the query so that it a proper number of affected rows is returned. + if ($this->delete_hack === TRUE && preg_match('/^\s*DELETE\s+FROM\s+(\S+)\s*$/i', $sql)) + { + return trim($sql).' WHERE 1=1'; + } + + return $sql; + } + + // -------------------------------------------------------------------- + + /** + * Begin Transaction + * + * @return bool + */ + protected function _trans_begin() + { + $this->conn_id->autocommit(FALSE); + return is_php('5.5') + ? $this->conn_id->begin_transaction() + : $this->simple_query('START TRANSACTION'); // can also be BEGIN or BEGIN WORK + } + + // -------------------------------------------------------------------- + + /** + * Commit Transaction + * + * @return bool + */ + protected function _trans_commit() + { + if ($this->conn_id->commit()) + { + $this->conn_id->autocommit(TRUE); + return TRUE; + } + + return FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Rollback Transaction + * + * @return bool + */ + protected function _trans_rollback() + { + if ($this->conn_id->rollback()) + { + $this->conn_id->autocommit(TRUE); + return TRUE; + } + + return FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Platform-dependent string escape + * + * @param string + * @return string + */ + protected function _escape_str($str) + { + return $this->conn_id->real_escape_string($str); + } + + // -------------------------------------------------------------------- + + /** + * Affected Rows + * + * @return int + */ + public function affected_rows() + { + return $this->conn_id->affected_rows; + } + + // -------------------------------------------------------------------- + + /** + * Insert ID + * + * @return int + */ + public function insert_id() + { + return $this->conn_id->insert_id; + } + + // -------------------------------------------------------------------- + + /** + * List table query + * + * Generates a platform-specific query string so that the table names can be fetched + * + * @param bool $prefix_limit + * @return string + */ + protected function _list_tables($prefix_limit = FALSE) + { + $sql = 'SHOW TABLES FROM '.$this->escape_identifiers($this->database); + + if ($prefix_limit !== FALSE && $this->dbprefix !== '') + { + return $sql." LIKE '".$this->escape_like_str($this->dbprefix)."%'"; + } + + return $sql; + } + + // -------------------------------------------------------------------- + + /** + * Show column query + * + * Generates a platform-specific query string so that the column names can be fetched + * + * @param string $table + * @return string + */ + protected function _list_columns($table = '') + { + return 'SHOW COLUMNS FROM '.$this->protect_identifiers($table, TRUE, NULL, FALSE); + } + + // -------------------------------------------------------------------- + + /** + * Returns an object with field data + * + * @param string $table + * @return array + */ + public function field_data($table) + { + if (($query = $this->query('SHOW COLUMNS FROM '.$this->protect_identifiers($table, TRUE, NULL, FALSE))) === FALSE) + { + return FALSE; + } + $query = $query->result_object(); + + $retval = array(); + for ($i = 0, $c = count($query); $i < $c; $i++) + { + $retval[$i] = new stdClass(); + $retval[$i]->name = $query[$i]->Field; + + sscanf($query[$i]->Type, '%[a-z](%d)', + $retval[$i]->type, + $retval[$i]->max_length + ); + + $retval[$i]->default = $query[$i]->Default; + $retval[$i]->primary_key = (int) ($query[$i]->Key === 'PRI'); + } + + return $retval; + } + + // -------------------------------------------------------------------- + + /** + * Error + * + * Returns an array containing code and message of the last + * database error that has occurred. + * + * @return array + */ + public function error() + { + if ( ! empty($this->_mysqli->connect_errno)) + { + return array( + 'code' => $this->_mysqli->connect_errno, + 'message' => $this->_mysqli->connect_error + ); + } + + return array('code' => $this->conn_id->errno, 'message' => $this->conn_id->error); + } + + // -------------------------------------------------------------------- + + /** + * FROM tables + * + * Groups tables in FROM clauses if needed, so there is no confusion + * about operator precedence. + * + * @return string + */ + protected function _from_tables() + { + if ( ! empty($this->qb_join) && count($this->qb_from) > 1) + { + return '('.implode(', ', $this->qb_from).')'; + } + + return implode(', ', $this->qb_from); + } + + // -------------------------------------------------------------------- + + /** + * Close DB Connection + * + * @return void + */ + protected function _close() + { + $this->conn_id->close(); + } + +} diff --git a/www/system/database/drivers/mysqli/mysqli_forge.php b/www/system/database/drivers/mysqli/mysqli_forge.php new file mode 100644 index 0000000..dd77edc --- /dev/null +++ b/www/system/database/drivers/mysqli/mysqli_forge.php @@ -0,0 +1,244 @@ +db->char_set) && ! strpos($sql, 'CHARACTER SET') && ! strpos($sql, 'CHARSET')) + { + $sql .= ' DEFAULT CHARACTER SET = '.$this->db->char_set; + } + + if ( ! empty($this->db->dbcollat) && ! strpos($sql, 'COLLATE')) + { + $sql .= ' COLLATE = '.$this->db->dbcollat; + } + + return $sql; + } + + // -------------------------------------------------------------------- + + /** + * ALTER TABLE + * + * @param string $alter_type ALTER type + * @param string $table Table name + * @param mixed $field Column definition + * @return string|string[] + */ + protected function _alter_table($alter_type, $table, $field) + { + if ($alter_type === 'DROP') + { + return parent::_alter_table($alter_type, $table, $field); + } + + $sql = 'ALTER TABLE '.$this->db->escape_identifiers($table); + for ($i = 0, $c = count($field); $i < $c; $i++) + { + if ($field[$i]['_literal'] !== FALSE) + { + $field[$i] = ($alter_type === 'ADD') + ? "\n\tADD ".$field[$i]['_literal'] + : "\n\tMODIFY ".$field[$i]['_literal']; + } + else + { + if ($alter_type === 'ADD') + { + $field[$i]['_literal'] = "\n\tADD "; + } + else + { + $field[$i]['_literal'] = empty($field[$i]['new_name']) ? "\n\tMODIFY " : "\n\tCHANGE "; + } + + $field[$i] = $field[$i]['_literal'].$this->_process_column($field[$i]); + } + } + + return array($sql.implode(',', $field)); + } + + // -------------------------------------------------------------------- + + /** + * Process column + * + * @param array $field + * @return string + */ + protected function _process_column($field) + { + $extra_clause = isset($field['after']) + ? ' AFTER '.$this->db->escape_identifiers($field['after']) : ''; + + if (empty($extra_clause) && isset($field['first']) && $field['first'] === TRUE) + { + $extra_clause = ' FIRST'; + } + + return $this->db->escape_identifiers($field['name']) + .(empty($field['new_name']) ? '' : ' '.$this->db->escape_identifiers($field['new_name'])) + .' '.$field['type'].$field['length'] + .$field['unsigned'] + .$field['null'] + .$field['default'] + .$field['auto_increment'] + .$field['unique'] + .(empty($field['comment']) ? '' : ' COMMENT '.$field['comment']) + .$extra_clause; + } + + // -------------------------------------------------------------------- + + /** + * Process indexes + * + * @param string $table (ignored) + * @return string + */ + protected function _process_indexes($table) + { + $sql = ''; + + for ($i = 0, $c = count($this->keys); $i < $c; $i++) + { + if (is_array($this->keys[$i])) + { + for ($i2 = 0, $c2 = count($this->keys[$i]); $i2 < $c2; $i2++) + { + if ( ! isset($this->fields[$this->keys[$i][$i2]])) + { + unset($this->keys[$i][$i2]); + continue; + } + } + } + elseif ( ! isset($this->fields[$this->keys[$i]])) + { + unset($this->keys[$i]); + continue; + } + + is_array($this->keys[$i]) OR $this->keys[$i] = array($this->keys[$i]); + + $sql .= ",\n\tKEY ".$this->db->escape_identifiers(implode('_', $this->keys[$i])) + .' ('.implode(', ', $this->db->escape_identifiers($this->keys[$i])).')'; + } + + $this->keys = array(); + + return $sql; + } + +} diff --git a/www/system/database/drivers/mysqli/mysqli_result.php b/www/system/database/drivers/mysqli/mysqli_result.php new file mode 100644 index 0000000..bac0737 --- /dev/null +++ b/www/system/database/drivers/mysqli/mysqli_result.php @@ -0,0 +1,232 @@ +num_rows) + ? $this->num_rows + : $this->num_rows = $this->result_id->num_rows; + } + + // -------------------------------------------------------------------- + + /** + * Number of fields in the result set + * + * @return int + */ + public function num_fields() + { + return $this->result_id->field_count; + } + + // -------------------------------------------------------------------- + + /** + * Fetch Field Names + * + * Generates an array of column names + * + * @return array + */ + public function list_fields() + { + $field_names = array(); + $this->result_id->field_seek(0); + while ($field = $this->result_id->fetch_field()) + { + $field_names[] = $field->name; + } + + return $field_names; + } + + // -------------------------------------------------------------------- + + /** + * Field data + * + * Generates an array of objects containing field meta-data + * + * @return array + */ + public function field_data() + { + $retval = array(); + $field_data = $this->result_id->fetch_fields(); + for ($i = 0, $c = count($field_data); $i < $c; $i++) + { + $retval[$i] = new stdClass(); + $retval[$i]->name = $field_data[$i]->name; + $retval[$i]->type = static::_get_field_type($field_data[$i]->type); + $retval[$i]->max_length = $field_data[$i]->max_length; + $retval[$i]->primary_key = (int) ($field_data[$i]->flags & MYSQLI_PRI_KEY_FLAG); + $retval[$i]->default = $field_data[$i]->def; + } + + return $retval; + } + + // -------------------------------------------------------------------- + + /** + * Get field type + * + * Extracts field type info from the bitflags returned by + * mysqli_result::fetch_fields() + * + * @used-by CI_DB_mysqli_result::field_data() + * @param int $type + * @return string + */ + private static function _get_field_type($type) + { + static $map; + isset($map) OR $map = array( + MYSQLI_TYPE_DECIMAL => 'decimal', + MYSQLI_TYPE_BIT => 'bit', + MYSQLI_TYPE_TINY => 'tinyint', + MYSQLI_TYPE_SHORT => 'smallint', + MYSQLI_TYPE_INT24 => 'mediumint', + MYSQLI_TYPE_LONG => 'int', + MYSQLI_TYPE_LONGLONG => 'bigint', + MYSQLI_TYPE_FLOAT => 'float', + MYSQLI_TYPE_DOUBLE => 'double', + MYSQLI_TYPE_TIMESTAMP => 'timestamp', + MYSQLI_TYPE_DATE => 'date', + MYSQLI_TYPE_TIME => 'time', + MYSQLI_TYPE_DATETIME => 'datetime', + MYSQLI_TYPE_YEAR => 'year', + MYSQLI_TYPE_NEWDATE => 'date', + MYSQLI_TYPE_INTERVAL => 'interval', + MYSQLI_TYPE_ENUM => 'enum', + MYSQLI_TYPE_SET => 'set', + MYSQLI_TYPE_TINY_BLOB => 'tinyblob', + MYSQLI_TYPE_MEDIUM_BLOB => 'mediumblob', + MYSQLI_TYPE_BLOB => 'blob', + MYSQLI_TYPE_LONG_BLOB => 'longblob', + MYSQLI_TYPE_STRING => 'char', + MYSQLI_TYPE_VAR_STRING => 'varchar', + MYSQLI_TYPE_GEOMETRY => 'geometry' + ); + + return isset($map[$type]) ? $map[$type] : $type; + } + + // -------------------------------------------------------------------- + + /** + * Free the result + * + * @return void + */ + public function free_result() + { + if (is_object($this->result_id)) + { + $this->result_id->free(); + $this->result_id = FALSE; + } + } + + // -------------------------------------------------------------------- + + /** + * Data Seek + * + * Moves the internal pointer to the desired offset. We call + * this internally before fetching results to make sure the + * result set starts at zero. + * + * @param int $n + * @return bool + */ + public function data_seek($n = 0) + { + return $this->result_id->data_seek($n); + } + + // -------------------------------------------------------------------- + + /** + * Result - associative array + * + * Returns the result set as an array + * + * @return array + */ + protected function _fetch_assoc() + { + return $this->result_id->fetch_assoc(); + } + + // -------------------------------------------------------------------- + + /** + * Result - object + * + * Returns the result set as an object + * + * @param string $class_name + * @return object + */ + protected function _fetch_object($class_name = 'stdClass') + { + return $this->result_id->fetch_object($class_name); + } + +} diff --git a/www/system/database/drivers/mysqli/mysqli_utility.php b/www/system/database/drivers/mysqli/mysqli_utility.php new file mode 100644 index 0000000..332da60 --- /dev/null +++ b/www/system/database/drivers/mysqli/mysqli_utility.php @@ -0,0 +1,211 @@ +db->query('SHOW CREATE TABLE '.$this->db->escape_identifiers($this->db->database.'.'.$table)); + + // No result means the table name was invalid + if ($query === FALSE) + { + continue; + } + + // Write out the table schema + $output .= '#'.$newline.'# TABLE STRUCTURE FOR: '.$table.$newline.'#'.$newline.$newline; + + if ($add_drop === TRUE) + { + $output .= 'DROP TABLE IF EXISTS '.$this->db->protect_identifiers($table).';'.$newline.$newline; + } + + $i = 0; + $result = $query->result_array(); + foreach ($result[0] as $val) + { + if ($i++ % 2) + { + $output .= $val.';'.$newline.$newline; + } + } + + // If inserts are not needed we're done... + if ($add_insert === FALSE) + { + continue; + } + + // Grab all the data from the current table + $query = $this->db->query('SELECT * FROM '.$this->db->protect_identifiers($table)); + + if ($query->num_rows() === 0) + { + continue; + } + + // Fetch the field names and determine if the field is an + // integer type. We use this info to decide whether to + // surround the data with quotes or not + + $i = 0; + $field_str = ''; + $is_int = array(); + while ($field = $query->result_id->fetch_field()) + { + // Most versions of MySQL store timestamp as a string + $is_int[$i] = in_array($field->type, array(MYSQLI_TYPE_TINY, MYSQLI_TYPE_SHORT, MYSQLI_TYPE_INT24, MYSQLI_TYPE_LONG), TRUE); + + // Create a string of field names + $field_str .= $this->db->escape_identifiers($field->name).', '; + $i++; + } + + // Trim off the end comma + $field_str = preg_replace('/, $/' , '', $field_str); + + // Build the insert string + foreach ($query->result_array() as $row) + { + $val_str = ''; + + $i = 0; + foreach ($row as $v) + { + // Is the value NULL? + if ($v === NULL) + { + $val_str .= 'NULL'; + } + else + { + // Escape the data if it's not an integer + $val_str .= ($is_int[$i] === FALSE) ? $this->db->escape($v) : $v; + } + + // Append a comma + $val_str .= ', '; + $i++; + } + + // Remove the comma at the end of the string + $val_str = preg_replace('/, $/' , '', $val_str); + + // Build the INSERT string + $output .= 'INSERT INTO '.$this->db->protect_identifiers($table).' ('.$field_str.') VALUES ('.$val_str.');'.$newline; + } + + $output .= $newline.$newline; + } + + // Do we need to include a statement to re-enable foreign key checks? + if ($foreign_key_checks === FALSE) + { + $output .= 'SET foreign_key_checks = 1;'.$newline; + } + + return $output; + } + +} diff --git a/www/system/database/drivers/oci8/index.html b/www/system/database/drivers/oci8/index.html new file mode 100644 index 0000000..b702fbc --- /dev/null +++ b/www/system/database/drivers/oci8/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

    Directory access is forbidden.

    + + + diff --git a/www/system/database/drivers/oci8/oci8_driver.php b/www/system/database/drivers/oci8/oci8_driver.php new file mode 100644 index 0000000..1bd9773 --- /dev/null +++ b/www/system/database/drivers/oci8/oci8_driver.php @@ -0,0 +1,688 @@ + '/^\(DESCRIPTION=(\(.+\)){2,}\)$/', // TNS + // Easy Connect string (Oracle 10g+) + 'ec' => '/^(\/\/)?[a-z0-9.:_-]+(:[1-9][0-9]{0,4})?(\/[a-z0-9$_]+)?(:[^\/])?(\/[a-z0-9$_]+)?$/i', + 'in' => '/^[a-z0-9$_]+$/i' // Instance name (defined in tnsnames.ora) + ); + + /* Space characters don't have any effect when actually + * connecting, but can be a hassle while validating the DSN. + */ + $this->dsn = str_replace(array("\n", "\r", "\t", ' '), '', $this->dsn); + + if ($this->dsn !== '') + { + foreach ($valid_dsns as $regexp) + { + if (preg_match($regexp, $this->dsn)) + { + return; + } + } + } + + // Legacy support for TNS in the hostname configuration field + $this->hostname = str_replace(array("\n", "\r", "\t", ' '), '', $this->hostname); + if (preg_match($valid_dsns['tns'], $this->hostname)) + { + $this->dsn = $this->hostname; + return; + } + elseif ($this->hostname !== '' && strpos($this->hostname, '/') === FALSE && strpos($this->hostname, ':') === FALSE + && (( ! empty($this->port) && ctype_digit($this->port)) OR $this->database !== '')) + { + /* If the hostname field isn't empty, doesn't contain + * ':' and/or '/' and if port and/or database aren't + * empty, then the hostname field is most likely indeed + * just a hostname. Therefore we'll try and build an + * Easy Connect string from these 3 settings, assuming + * that the database field is a service name. + */ + $this->dsn = $this->hostname + .(( ! empty($this->port) && ctype_digit($this->port)) ? ':'.$this->port : '') + .($this->database !== '' ? '/'.ltrim($this->database, '/') : ''); + + if (preg_match($valid_dsns['ec'], $this->dsn)) + { + return; + } + } + + /* At this point, we can only try and validate the hostname and + * database fields separately as DSNs. + */ + if (preg_match($valid_dsns['ec'], $this->hostname) OR preg_match($valid_dsns['in'], $this->hostname)) + { + $this->dsn = $this->hostname; + return; + } + + $this->database = str_replace(array("\n", "\r", "\t", ' '), '', $this->database); + foreach ($valid_dsns as $regexp) + { + if (preg_match($regexp, $this->database)) + { + return; + } + } + + /* Well - OK, an empty string should work as well. + * PHP will try to use environment variables to + * determine which Oracle instance to connect to. + */ + $this->dsn = ''; + } + + // -------------------------------------------------------------------- + + /** + * Non-persistent database connection + * + * @param bool $persistent + * @return resource + */ + public function db_connect($persistent = FALSE) + { + $func = ($persistent === TRUE) ? 'oci_pconnect' : 'oci_connect'; + return empty($this->char_set) + ? $func($this->username, $this->password, $this->dsn) + : $func($this->username, $this->password, $this->dsn, $this->char_set); + } + + // -------------------------------------------------------------------- + + /** + * Database version number + * + * @return string + */ + public function version() + { + if (isset($this->data_cache['version'])) + { + return $this->data_cache['version']; + } + + if ( ! $this->conn_id OR ($version_string = oci_server_version($this->conn_id)) === FALSE) + { + return FALSE; + } + elseif (preg_match('#Release\s(\d+(?:\.\d+)+)#', $version_string, $match)) + { + return $this->data_cache['version'] = $match[1]; + } + + return FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Execute the query + * + * @param string $sql an SQL query + * @return resource + */ + protected function _execute($sql) + { + /* Oracle must parse the query before it is run. All of the actions with + * the query are based on the statement id returned by oci_parse(). + */ + if ($this->_reset_stmt_id === TRUE) + { + $this->stmt_id = oci_parse($this->conn_id, $sql); + } + + oci_set_prefetch($this->stmt_id, 1000); + return oci_execute($this->stmt_id, $this->commit_mode); + } + + // -------------------------------------------------------------------- + + /** + * Get cursor. Returns a cursor from the database + * + * @return resource + */ + public function get_cursor() + { + return $this->curs_id = oci_new_cursor($this->conn_id); + } + + // -------------------------------------------------------------------- + + /** + * Stored Procedure. Executes a stored procedure + * + * @param string package name in which the stored procedure is in + * @param string stored procedure name to execute + * @param array parameters + * @return mixed + * + * params array keys + * + * KEY OPTIONAL NOTES + * name no the name of the parameter should be in : format + * value no the value of the parameter. If this is an OUT or IN OUT parameter, + * this should be a reference to a variable + * type yes the type of the parameter + * length yes the max size of the parameter + */ + public function stored_procedure($package, $procedure, array $params) + { + if ($package === '' OR $procedure === '') + { + log_message('error', 'Invalid query: '.$package.'.'.$procedure); + return ($this->db_debug) ? $this->display_error('db_invalid_query') : FALSE; + } + + // Build the query string + $sql = 'BEGIN '.$package.'.'.$procedure.'('; + + $have_cursor = FALSE; + foreach ($params as $param) + { + $sql .= $param['name'].','; + + if (isset($param['type']) && $param['type'] === OCI_B_CURSOR) + { + $have_cursor = TRUE; + } + } + $sql = trim($sql, ',').'); END;'; + + $this->_reset_stmt_id = FALSE; + $this->stmt_id = oci_parse($this->conn_id, $sql); + $this->_bind_params($params); + $result = $this->query($sql, FALSE, $have_cursor); + $this->_reset_stmt_id = TRUE; + return $result; + } + + // -------------------------------------------------------------------- + + /** + * Bind parameters + * + * @param array $params + * @return void + */ + protected function _bind_params($params) + { + if ( ! is_array($params) OR ! is_resource($this->stmt_id)) + { + return; + } + + foreach ($params as $param) + { + foreach (array('name', 'value', 'type', 'length') as $val) + { + if ( ! isset($param[$val])) + { + $param[$val] = ''; + } + } + + oci_bind_by_name($this->stmt_id, $param['name'], $param['value'], $param['length'], $param['type']); + } + } + + // -------------------------------------------------------------------- + + /** + * Begin Transaction + * + * @return bool + */ + protected function _trans_begin() + { + $this->commit_mode = OCI_NO_AUTO_COMMIT; + return TRUE; + } + + // -------------------------------------------------------------------- + + /** + * Commit Transaction + * + * @return bool + */ + protected function _trans_commit() + { + $this->commit_mode = OCI_COMMIT_ON_SUCCESS; + + return oci_commit($this->conn_id); + } + + // -------------------------------------------------------------------- + + /** + * Rollback Transaction + * + * @return bool + */ + protected function _trans_rollback() + { + $this->commit_mode = OCI_COMMIT_ON_SUCCESS; + return oci_rollback($this->conn_id); + } + + // -------------------------------------------------------------------- + + /** + * Affected Rows + * + * @return int + */ + public function affected_rows() + { + return oci_num_rows($this->stmt_id); + } + + // -------------------------------------------------------------------- + + /** + * Insert ID + * + * @return int + */ + public function insert_id() + { + // not supported in oracle + return $this->display_error('db_unsupported_function'); + } + + // -------------------------------------------------------------------- + + /** + * Show table query + * + * Generates a platform-specific query string so that the table names can be fetched + * + * @param bool $prefix_limit + * @return string + */ + protected function _list_tables($prefix_limit = FALSE) + { + $sql = 'SELECT "TABLE_NAME" FROM "ALL_TABLES"'; + + if ($prefix_limit !== FALSE && $this->dbprefix !== '') + { + return $sql.' WHERE "TABLE_NAME" LIKE \''.$this->escape_like_str($this->dbprefix)."%' " + .sprintf($this->_like_escape_str, $this->_like_escape_chr); + } + + return $sql; + } + + // -------------------------------------------------------------------- + + /** + * Show column query + * + * Generates a platform-specific query string so that the column names can be fetched + * + * @param string $table + * @return string + */ + protected function _list_columns($table = '') + { + if (strpos($table, '.') !== FALSE) + { + sscanf($table, '%[^.].%s', $owner, $table); + } + else + { + $owner = $this->username; + } + + return 'SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS + WHERE UPPER(OWNER) = '.$this->escape(strtoupper($owner)).' + AND UPPER(TABLE_NAME) = '.$this->escape(strtoupper($table)); + } + + // -------------------------------------------------------------------- + + /** + * Returns an object with field data + * + * @param string $table + * @return array + */ + public function field_data($table) + { + if (strpos($table, '.') !== FALSE) + { + sscanf($table, '%[^.].%s', $owner, $table); + } + else + { + $owner = $this->username; + } + + $sql = 'SELECT COLUMN_NAME, DATA_TYPE, CHAR_LENGTH, DATA_PRECISION, DATA_LENGTH, DATA_DEFAULT, NULLABLE + FROM ALL_TAB_COLUMNS + WHERE UPPER(OWNER) = '.$this->escape(strtoupper($owner)).' + AND UPPER(TABLE_NAME) = '.$this->escape(strtoupper($table)); + + if (($query = $this->query($sql)) === FALSE) + { + return FALSE; + } + $query = $query->result_object(); + + $retval = array(); + for ($i = 0, $c = count($query); $i < $c; $i++) + { + $retval[$i] = new stdClass(); + $retval[$i]->name = $query[$i]->COLUMN_NAME; + $retval[$i]->type = $query[$i]->DATA_TYPE; + + $length = ($query[$i]->CHAR_LENGTH > 0) + ? $query[$i]->CHAR_LENGTH : $query[$i]->DATA_PRECISION; + if ($length === NULL) + { + $length = $query[$i]->DATA_LENGTH; + } + $retval[$i]->max_length = $length; + + $default = $query[$i]->DATA_DEFAULT; + if ($default === NULL && $query[$i]->NULLABLE === 'N') + { + $default = ''; + } + $retval[$i]->default = $default; + } + + return $retval; + } + + // -------------------------------------------------------------------- + + /** + * Error + * + * Returns an array containing code and message of the last + * database error that has occurred. + * + * @return array + */ + public function error() + { + // oci_error() returns an array that already contains + // 'code' and 'message' keys, but it can return false + // if there was no error .... + if (is_resource($this->curs_id)) + { + $error = oci_error($this->curs_id); + } + elseif (is_resource($this->stmt_id)) + { + $error = oci_error($this->stmt_id); + } + elseif (is_resource($this->conn_id)) + { + $error = oci_error($this->conn_id); + } + else + { + $error = oci_error(); + } + + return is_array($error) + ? $error + : array('code' => '', 'message' => ''); + } + + // -------------------------------------------------------------------- + + /** + * Insert batch statement + * + * Generates a platform-specific insert string from the supplied data + * + * @param string $table Table name + * @param array $keys INSERT keys + * @param array $values INSERT values + * @return string + */ + protected function _insert_batch($table, $keys, $values) + { + $keys = implode(', ', $keys); + $sql = "INSERT ALL\n"; + + for ($i = 0, $c = count($values); $i < $c; $i++) + { + $sql .= ' INTO '.$table.' ('.$keys.') VALUES '.$values[$i]."\n"; + } + + return $sql.'SELECT * FROM dual'; + } + + // -------------------------------------------------------------------- + + /** + * Truncate statement + * + * Generates a platform-specific truncate string from the supplied data + * + * If the database does not support the TRUNCATE statement, + * then this method maps to 'DELETE FROM table' + * + * @param string $table + * @return string + */ + protected function _truncate($table) + { + return 'TRUNCATE TABLE '.$table; + } + + // -------------------------------------------------------------------- + + /** + * Delete statement + * + * Generates a platform-specific delete string from the supplied data + * + * @param string $table + * @return string + */ + protected function _delete($table) + { + if ($this->qb_limit) + { + $this->where('rownum <= ',$this->qb_limit, FALSE); + $this->qb_limit = FALSE; + } + + return parent::_delete($table); + } + + // -------------------------------------------------------------------- + + /** + * LIMIT + * + * Generates a platform-specific LIMIT clause + * + * @param string $sql SQL Query + * @return string + */ + protected function _limit($sql) + { + if (version_compare($this->version(), '12.1', '>=')) + { + // OFFSET-FETCH can be used only with the ORDER BY clause + empty($this->qb_orderby) && $sql .= ' ORDER BY 1'; + + return $sql.' OFFSET '.(int) $this->qb_offset.' ROWS FETCH NEXT '.$this->qb_limit.' ROWS ONLY'; + } + + $this->limit_used = TRUE; + return 'SELECT * FROM (SELECT inner_query.*, rownum rnum FROM ('.$sql.') inner_query WHERE rownum < '.($this->qb_offset + $this->qb_limit + 1).')' + .($this->qb_offset ? ' WHERE rnum >= '.($this->qb_offset + 1) : ''); + } + + // -------------------------------------------------------------------- + + /** + * Close DB Connection + * + * @return void + */ + protected function _close() + { + oci_close($this->conn_id); + } + +} diff --git a/www/system/database/drivers/oci8/oci8_forge.php b/www/system/database/drivers/oci8/oci8_forge.php new file mode 100644 index 0000000..0011bb0 --- /dev/null +++ b/www/system/database/drivers/oci8/oci8_forge.php @@ -0,0 +1,187 @@ +db->escape_identifiers($table); + $sqls = array(); + for ($i = 0, $c = count($field); $i < $c; $i++) + { + if ($field[$i]['_literal'] !== FALSE) + { + $field[$i] = "\n\t".$field[$i]['_literal']; + } + else + { + $field[$i]['_literal'] = "\n\t".$this->_process_column($field[$i]); + + if ( ! empty($field[$i]['comment'])) + { + $sqls[] = 'COMMENT ON COLUMN ' + .$this->db->escape_identifiers($table).'.'.$this->db->escape_identifiers($field[$i]['name']) + .' IS '.$field[$i]['comment']; + } + + if ($alter_type === 'MODIFY' && ! empty($field[$i]['new_name'])) + { + $sqls[] = $sql.' RENAME COLUMN '.$this->db->escape_identifiers($field[$i]['name']) + .' TO '.$this->db->escape_identifiers($field[$i]['new_name']); + } + + $field[$i] = "\n\t".$field[$i]['_literal']; + } + } + + $sql .= ' '.$alter_type.' '; + $sql .= (count($field) === 1) + ? $field[0] + : '('.implode(',', $field).')'; + + // RENAME COLUMN must be executed after MODIFY + array_unshift($sqls, $sql); + return $sqls; + } + + // -------------------------------------------------------------------- + + /** + * Field attribute AUTO_INCREMENT + * + * @param array &$attributes + * @param array &$field + * @return void + */ + protected function _attr_auto_increment(&$attributes, &$field) + { + // Not supported - sequences and triggers must be used instead + } + + // -------------------------------------------------------------------- + + /** + * Field attribute TYPE + * + * Performs a data type mapping between different databases. + * + * @param array &$attributes + * @return void + */ + protected function _attr_type(&$attributes) + { + switch (strtoupper($attributes['TYPE'])) + { + case 'TINYINT': + $attributes['TYPE'] = 'NUMBER'; + return; + case 'MEDIUMINT': + $attributes['TYPE'] = 'NUMBER'; + return; + case 'INT': + $attributes['TYPE'] = 'NUMBER'; + return; + case 'BIGINT': + $attributes['TYPE'] = 'NUMBER'; + return; + default: return; + } + } +} diff --git a/www/system/database/drivers/oci8/oci8_result.php b/www/system/database/drivers/oci8/oci8_result.php new file mode 100644 index 0000000..1c4196f --- /dev/null +++ b/www/system/database/drivers/oci8/oci8_result.php @@ -0,0 +1,229 @@ +stmt_id = $driver_object->stmt_id; + $this->curs_id = $driver_object->curs_id; + $this->limit_used = $driver_object->limit_used; + $this->commit_mode =& $driver_object->commit_mode; + $driver_object->stmt_id = FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Number of fields in the result set + * + * @return int + */ + public function num_fields() + { + $count = oci_num_fields($this->stmt_id); + + // if we used a limit we subtract it + return ($this->limit_used) ? $count - 1 : $count; + } + + // -------------------------------------------------------------------- + + /** + * Fetch Field Names + * + * Generates an array of column names + * + * @return array + */ + public function list_fields() + { + $field_names = array(); + for ($c = 1, $fieldCount = $this->num_fields(); $c <= $fieldCount; $c++) + { + $field_names[] = oci_field_name($this->stmt_id, $c); + } + return $field_names; + } + + // -------------------------------------------------------------------- + + /** + * Field data + * + * Generates an array of objects containing field meta-data + * + * @return array + */ + public function field_data() + { + $retval = array(); + for ($c = 1, $fieldCount = $this->num_fields(); $c <= $fieldCount; $c++) + { + $F = new stdClass(); + $F->name = oci_field_name($this->stmt_id, $c); + $F->type = oci_field_type($this->stmt_id, $c); + $F->max_length = oci_field_size($this->stmt_id, $c); + + $retval[] = $F; + } + + return $retval; + } + + // -------------------------------------------------------------------- + + /** + * Free the result + * + * @return void + */ + public function free_result() + { + if (is_resource($this->result_id)) + { + oci_free_statement($this->result_id); + $this->result_id = FALSE; + } + + if (is_resource($this->stmt_id)) + { + oci_free_statement($this->stmt_id); + } + + if (is_resource($this->curs_id)) + { + oci_cancel($this->curs_id); + $this->curs_id = NULL; + } + } + + // -------------------------------------------------------------------- + + /** + * Result - associative array + * + * Returns the result set as an array + * + * @return array + */ + protected function _fetch_assoc() + { + $id = ($this->curs_id) ? $this->curs_id : $this->stmt_id; + return oci_fetch_assoc($id); + } + + // -------------------------------------------------------------------- + + /** + * Result - object + * + * Returns the result set as an object + * + * @param string $class_name + * @return object + */ + protected function _fetch_object($class_name = 'stdClass') + { + $row = ($this->curs_id) + ? oci_fetch_object($this->curs_id) + : oci_fetch_object($this->stmt_id); + + if ($class_name === 'stdClass' OR ! $row) + { + return $row; + } + + $class_name = new $class_name(); + foreach ($row as $key => $value) + { + $class_name->$key = $value; + } + + return $class_name; + } + +} diff --git a/www/system/database/drivers/oci8/oci8_utility.php b/www/system/database/drivers/oci8/oci8_utility.php new file mode 100644 index 0000000..574ff68 --- /dev/null +++ b/www/system/database/drivers/oci8/oci8_utility.php @@ -0,0 +1,68 @@ +db->display_error('db_unsupported_feature'); + } + +} diff --git a/www/system/database/drivers/odbc/index.html b/www/system/database/drivers/odbc/index.html new file mode 100644 index 0000000..b702fbc --- /dev/null +++ b/www/system/database/drivers/odbc/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

    Directory access is forbidden.

    + + + diff --git a/www/system/database/drivers/odbc/odbc_driver.php b/www/system/database/drivers/odbc/odbc_driver.php new file mode 100644 index 0000000..c853903 --- /dev/null +++ b/www/system/database/drivers/odbc/odbc_driver.php @@ -0,0 +1,425 @@ +dsn)) + { + $this->dsn = $this->hostname; + } + } + + // -------------------------------------------------------------------- + + /** + * Non-persistent database connection + * + * @param bool $persistent + * @return resource + */ + public function db_connect($persistent = FALSE) + { + return ($persistent === TRUE) + ? odbc_pconnect($this->dsn, $this->username, $this->password) + : odbc_connect($this->dsn, $this->username, $this->password); + } + + // -------------------------------------------------------------------- + + /** + * Compile Bindings + * + * @param string $sql SQL statement + * @param array $binds An array of values to bind + * @return string + */ + public function compile_binds($sql, $binds) + { + if (empty($binds) OR empty($this->bind_marker) OR strpos($sql, $this->bind_marker) === FALSE) + { + return $sql; + } + elseif ( ! is_array($binds)) + { + $binds = array($binds); + $bind_count = 1; + } + else + { + // Make sure we're using numeric keys + $binds = array_values($binds); + $bind_count = count($binds); + } + + // We'll need the marker length later + $ml = strlen($this->bind_marker); + + // Make sure not to replace a chunk inside a string that happens to match the bind marker + if ($c = preg_match_all("/'[^']*'|\"[^\"]*\"/i", $sql, $matches)) + { + $c = preg_match_all('/'.preg_quote($this->bind_marker, '/').'/i', + str_replace($matches[0], + str_replace($this->bind_marker, str_repeat(' ', $ml), $matches[0]), + $sql, $c), + $matches, PREG_OFFSET_CAPTURE); + + // Bind values' count must match the count of markers in the query + if ($bind_count !== $c) + { + return $sql; + } + } + elseif (($c = preg_match_all('/'.preg_quote($this->bind_marker, '/').'/i', $sql, $matches, PREG_OFFSET_CAPTURE)) !== $bind_count) + { + return $sql; + } + + if ($this->bind_marker !== '?') + { + do + { + $c--; + $sql = substr_replace($sql, '?', $matches[0][$c][1], $ml); + } + while ($c !== 0); + } + + if (FALSE !== ($this->odbc_result = odbc_prepare($this->conn_id, $sql))) + { + $this->binds = array_values($binds); + } + + return $sql; + } + + // -------------------------------------------------------------------- + + /** + * Execute the query + * + * @param string $sql an SQL query + * @return resource + */ + protected function _execute($sql) + { + if ( ! isset($this->odbc_result)) + { + return odbc_exec($this->conn_id, $sql); + } + elseif ($this->odbc_result === FALSE) + { + return FALSE; + } + + if (TRUE === ($success = odbc_execute($this->odbc_result, $this->binds))) + { + // For queries that return result sets, return the result_id resource on success + $this->is_write_type($sql) OR $success = $this->odbc_result; + } + + $this->odbc_result = NULL; + $this->binds = array(); + + return $success; + } + + // -------------------------------------------------------------------- + + /** + * Begin Transaction + * + * @return bool + */ + protected function _trans_begin() + { + return odbc_autocommit($this->conn_id, FALSE); + } + + // -------------------------------------------------------------------- + + /** + * Commit Transaction + * + * @return bool + */ + protected function _trans_commit() + { + if (odbc_commit($this->conn_id)) + { + odbc_autocommit($this->conn_id, TRUE); + return TRUE; + } + + return FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Rollback Transaction + * + * @return bool + */ + protected function _trans_rollback() + { + if (odbc_rollback($this->conn_id)) + { + odbc_autocommit($this->conn_id, TRUE); + return TRUE; + } + + return FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Determines if a query is a "write" type. + * + * @param string An SQL query string + * @return bool + */ + public function is_write_type($sql) + { + if (preg_match('#^(INSERT|UPDATE).*RETURNING\s.+(\,\s?.+)*$#is', $sql)) + { + return FALSE; + } + + return parent::is_write_type($sql); + } + + // -------------------------------------------------------------------- + + /** + * Platform-dependent string escape + * + * @param string + * @return string + */ + protected function _escape_str($str) + { + $this->display_error('db_unsupported_feature'); + } + + // -------------------------------------------------------------------- + + /** + * Affected Rows + * + * @return int + */ + public function affected_rows() + { + return odbc_num_rows($this->result_id); + } + + // -------------------------------------------------------------------- + + /** + * Insert ID + * + * @return bool + */ + public function insert_id() + { + return ($this->db_debug) ? $this->display_error('db_unsupported_feature') : FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Show table query + * + * Generates a platform-specific query string so that the table names can be fetched + * + * @param bool $prefix_limit + * @return string + */ + protected function _list_tables($prefix_limit = FALSE) + { + $sql = "SELECT table_name FROM information_schema.tables WHERE table_schema = '".$this->schema."'"; + + if ($prefix_limit !== FALSE && $this->dbprefix !== '') + { + return $sql." AND table_name LIKE '".$this->escape_like_str($this->dbprefix)."%' " + .sprintf($this->_like_escape_str, $this->_like_escape_chr); + } + + return $sql; + } + + // -------------------------------------------------------------------- + + /** + * Show column query + * + * Generates a platform-specific query string so that the column names can be fetched + * + * @param string $table + * @return string + */ + protected function _list_columns($table = '') + { + return 'SHOW COLUMNS FROM '.$table; + } + + // -------------------------------------------------------------------- + + /** + * Field data query + * + * Generates a platform-specific query so that the column data can be retrieved + * + * @param string $table + * @return string + */ + protected function _field_data($table) + { + return 'SELECT TOP 1 FROM '.$table; + } + + // -------------------------------------------------------------------- + + /** + * Error + * + * Returns an array containing code and message of the last + * database error that has occurred. + * + * @return array + */ + public function error() + { + return array('code' => odbc_error($this->conn_id), 'message' => odbc_errormsg($this->conn_id)); + } + + // -------------------------------------------------------------------- + + /** + * Close DB Connection + * + * @return void + */ + protected function _close() + { + odbc_close($this->conn_id); + } +} diff --git a/www/system/database/drivers/odbc/odbc_forge.php b/www/system/database/drivers/odbc/odbc_forge.php new file mode 100644 index 0000000..761e81f --- /dev/null +++ b/www/system/database/drivers/odbc/odbc_forge.php @@ -0,0 +1,86 @@ +num_rows)) + { + return $this->num_rows; + } + elseif (($this->num_rows = odbc_num_rows($this->result_id)) !== -1) + { + return $this->num_rows; + } + + // Work-around for ODBC subdrivers that don't support num_rows() + if (count($this->result_array) > 0) + { + return $this->num_rows = count($this->result_array); + } + elseif (count($this->result_object) > 0) + { + return $this->num_rows = count($this->result_object); + } + + return $this->num_rows = count($this->result_array()); + } + + // -------------------------------------------------------------------- + + /** + * Number of fields in the result set + * + * @return int + */ + public function num_fields() + { + return odbc_num_fields($this->result_id); + } + + // -------------------------------------------------------------------- + + /** + * Fetch Field Names + * + * Generates an array of column names + * + * @return array + */ + public function list_fields() + { + $field_names = array(); + $num_fields = $this->num_fields(); + + if ($num_fields > 0) + { + for ($i = 1; $i <= $num_fields; $i++) + { + $field_names[] = odbc_field_name($this->result_id, $i); + } + } + + return $field_names; + } + + // -------------------------------------------------------------------- + + /** + * Field data + * + * Generates an array of objects containing field meta-data + * + * @return array + */ + public function field_data() + { + $retval = array(); + for ($i = 0, $odbc_index = 1, $c = $this->num_fields(); $i < $c; $i++, $odbc_index++) + { + $retval[$i] = new stdClass(); + $retval[$i]->name = odbc_field_name($this->result_id, $odbc_index); + $retval[$i]->type = odbc_field_type($this->result_id, $odbc_index); + $retval[$i]->max_length = odbc_field_len($this->result_id, $odbc_index); + $retval[$i]->primary_key = 0; + $retval[$i]->default = ''; + } + + return $retval; + } + + // -------------------------------------------------------------------- + + /** + * Free the result + * + * @return void + */ + public function free_result() + { + if (is_resource($this->result_id)) + { + odbc_free_result($this->result_id); + $this->result_id = FALSE; + } + } + + // -------------------------------------------------------------------- + + /** + * Result - associative array + * + * Returns the result set as an array + * + * @return array + */ + protected function _fetch_assoc() + { + return odbc_fetch_array($this->result_id); + } + + // -------------------------------------------------------------------- + + /** + * Result - object + * + * Returns the result set as an object + * + * @param string $class_name + * @return object + */ + protected function _fetch_object($class_name = 'stdClass') + { + $row = odbc_fetch_object($this->result_id); + + if ($class_name === 'stdClass' OR ! $row) + { + return $row; + } + + $class_name = new $class_name(); + foreach ($row as $key => $value) + { + $class_name->$key = $value; + } + + return $class_name; + } + +} + +// -------------------------------------------------------------------- + +if ( ! function_exists('odbc_fetch_array')) +{ + /** + * ODBC Fetch array + * + * Emulates the native odbc_fetch_array() function when + * it is not available (odbc_fetch_array() requires unixODBC) + * + * @param resource &$result + * @param int $rownumber + * @return array + */ + function odbc_fetch_array(&$result, $rownumber = 1) + { + $rs = array(); + if ( ! odbc_fetch_into($result, $rs, $rownumber)) + { + return FALSE; + } + + $rs_assoc = array(); + foreach ($rs as $k => $v) + { + $field_name = odbc_field_name($result, $k+1); + $rs_assoc[$field_name] = $v; + } + + return $rs_assoc; + } +} + +// -------------------------------------------------------------------- + +if ( ! function_exists('odbc_fetch_object')) +{ + /** + * ODBC Fetch object + * + * Emulates the native odbc_fetch_object() function when + * it is not available. + * + * @param resource &$result + * @param int $rownumber + * @return object + */ + function odbc_fetch_object(&$result, $rownumber = 1) + { + $rs = array(); + if ( ! odbc_fetch_into($result, $rs, $rownumber)) + { + return FALSE; + } + + $rs_object = new stdClass(); + foreach ($rs as $k => $v) + { + $field_name = odbc_field_name($result, $k+1); + $rs_object->$field_name = $v; + } + + return $rs_object; + } +} diff --git a/www/system/database/drivers/odbc/odbc_utility.php b/www/system/database/drivers/odbc/odbc_utility.php new file mode 100644 index 0000000..2a33428 --- /dev/null +++ b/www/system/database/drivers/odbc/odbc_utility.php @@ -0,0 +1,63 @@ +db->display_error('db_unsupported_feature'); + } + +} diff --git a/www/system/database/drivers/pdo/index.html b/www/system/database/drivers/pdo/index.html new file mode 100644 index 0000000..b702fbc --- /dev/null +++ b/www/system/database/drivers/pdo/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

    Directory access is forbidden.

    + + + diff --git a/www/system/database/drivers/pdo/pdo_driver.php b/www/system/database/drivers/pdo/pdo_driver.php new file mode 100644 index 0000000..c99bb06 --- /dev/null +++ b/www/system/database/drivers/pdo/pdo_driver.php @@ -0,0 +1,329 @@ +dsn, $match) && count($match) === 2) + { + // If there is a minimum valid dsn string pattern found, we're done + // This is for general PDO users, who tend to have a full DSN string. + $this->subdriver = $match[1]; + return; + } + // Legacy support for DSN specified in the hostname field + elseif (preg_match('/([^:]+):/', $this->hostname, $match) && count($match) === 2) + { + $this->dsn = $this->hostname; + $this->hostname = NULL; + $this->subdriver = $match[1]; + return; + } + elseif (in_array($this->subdriver, array('mssql', 'sybase'), TRUE)) + { + $this->subdriver = 'dblib'; + } + elseif ($this->subdriver === '4D') + { + $this->subdriver = '4d'; + } + elseif ( ! in_array($this->subdriver, array('4d', 'cubrid', 'dblib', 'firebird', 'ibm', 'informix', 'mysql', 'oci', 'odbc', 'pgsql', 'sqlite', 'sqlsrv'), TRUE)) + { + log_message('error', 'PDO: Invalid or non-existent subdriver'); + + if ($this->db_debug) + { + show_error('Invalid or non-existent PDO subdriver'); + } + } + + $this->dsn = NULL; + } + + // -------------------------------------------------------------------- + + /** + * Database connection + * + * @param bool $persistent + * @return object + */ + public function db_connect($persistent = FALSE) + { + if ($persistent === TRUE) + { + $this->options[PDO::ATTR_PERSISTENT] = TRUE; + } + + try + { + return new PDO($this->dsn, $this->username, $this->password, $this->options); + } + catch (PDOException $e) + { + if ($this->db_debug && empty($this->failover)) + { + $this->display_error($e->getMessage(), '', TRUE); + } + + return FALSE; + } + } + + // -------------------------------------------------------------------- + + /** + * Database version number + * + * @return string + */ + public function version() + { + if (isset($this->data_cache['version'])) + { + return $this->data_cache['version']; + } + + // Not all subdrivers support the getAttribute() method + try + { + return $this->data_cache['version'] = $this->conn_id->getAttribute(PDO::ATTR_SERVER_VERSION); + } + catch (PDOException $e) + { + return parent::version(); + } + } + + // -------------------------------------------------------------------- + + /** + * Execute the query + * + * @param string $sql SQL query + * @return mixed + */ + protected function _execute($sql) + { + return $this->conn_id->query($sql); + } + + // -------------------------------------------------------------------- + + /** + * Begin Transaction + * + * @return bool + */ + protected function _trans_begin() + { + return $this->conn_id->beginTransaction(); + } + + // -------------------------------------------------------------------- + + /** + * Commit Transaction + * + * @return bool + */ + protected function _trans_commit() + { + return $this->conn_id->commit(); + } + + // -------------------------------------------------------------------- + + /** + * Rollback Transaction + * + * @return bool + */ + protected function _trans_rollback() + { + return $this->conn_id->rollBack(); + } + + // -------------------------------------------------------------------- + + /** + * Platform-dependent string escape + * + * @param string + * @return string + */ + protected function _escape_str($str) + { + // Escape the string + $str = $this->conn_id->quote($str); + + // If there are duplicated quotes, trim them away + return ($str[0] === "'") + ? substr($str, 1, -1) + : $str; + } + + // -------------------------------------------------------------------- + + /** + * Affected Rows + * + * @return int + */ + public function affected_rows() + { + return is_object($this->result_id) ? $this->result_id->rowCount() : 0; + } + + // -------------------------------------------------------------------- + + /** + * Insert ID + * + * @param string $name + * @return int + */ + public function insert_id($name = NULL) + { + return $this->conn_id->lastInsertId($name); + } + + // -------------------------------------------------------------------- + + /** + * Field data query + * + * Generates a platform-specific query so that the column data can be retrieved + * + * @param string $table + * @return string + */ + protected function _field_data($table) + { + return 'SELECT TOP 1 * FROM '.$this->protect_identifiers($table); + } + + // -------------------------------------------------------------------- + + /** + * Error + * + * Returns an array containing code and message of the last + * database error that has occurred. + * + * @return array + */ + public function error() + { + $error = array('code' => '00000', 'message' => ''); + $pdo_error = $this->conn_id->errorInfo(); + + if (empty($pdo_error[0])) + { + return $error; + } + + $error['code'] = isset($pdo_error[1]) ? $pdo_error[0].'/'.$pdo_error[1] : $pdo_error[0]; + if (isset($pdo_error[2])) + { + $error['message'] = $pdo_error[2]; + } + + return $error; + } + + // -------------------------------------------------------------------- + + /** + * Truncate statement + * + * Generates a platform-specific truncate string from the supplied data + * + * If the database does not support the TRUNCATE statement, + * then this method maps to 'DELETE FROM table' + * + * @param string $table + * @return string + */ + protected function _truncate($table) + { + return 'TRUNCATE TABLE '.$table; + } + +} diff --git a/www/system/database/drivers/pdo/pdo_forge.php b/www/system/database/drivers/pdo/pdo_forge.php new file mode 100644 index 0000000..c77a849 --- /dev/null +++ b/www/system/database/drivers/pdo/pdo_forge.php @@ -0,0 +1,65 @@ +num_rows)) + { + return $this->num_rows; + } + elseif (count($this->result_array) > 0) + { + return $this->num_rows = count($this->result_array); + } + elseif (count($this->result_object) > 0) + { + return $this->num_rows = count($this->result_object); + } + elseif (($num_rows = $this->result_id->rowCount()) > 0) + { + return $this->num_rows = $num_rows; + } + + return $this->num_rows = count($this->result_array()); + } + + // -------------------------------------------------------------------- + + /** + * Number of fields in the result set + * + * @return int + */ + public function num_fields() + { + return $this->result_id->columnCount(); + } + + // -------------------------------------------------------------------- + + /** + * Fetch Field Names + * + * Generates an array of column names + * + * @return bool + */ + public function list_fields() + { + $field_names = array(); + for ($i = 0, $c = $this->num_fields(); $i < $c; $i++) + { + // Might trigger an E_WARNING due to not all subdrivers + // supporting getColumnMeta() + $field_names[$i] = @$this->result_id->getColumnMeta($i); + $field_names[$i] = $field_names[$i]['name']; + } + + return $field_names; + } + + // -------------------------------------------------------------------- + + /** + * Field data + * + * Generates an array of objects containing field meta-data + * + * @return array + */ + public function field_data() + { + try + { + $retval = array(); + + for ($i = 0, $c = $this->num_fields(); $i < $c; $i++) + { + $field = $this->result_id->getColumnMeta($i); + + $retval[$i] = new stdClass(); + $retval[$i]->name = $field['name']; + $retval[$i]->type = $field['native_type']; + $retval[$i]->max_length = ($field['len'] > 0) ? $field['len'] : NULL; + $retval[$i]->primary_key = (int) ( ! empty($field['flags']) && in_array('primary_key', $field['flags'], TRUE)); + } + + return $retval; + } + catch (Exception $e) + { + if ($this->db->db_debug) + { + return $this->db->display_error('db_unsupported_feature'); + } + + return FALSE; + } + } + + // -------------------------------------------------------------------- + + /** + * Free the result + * + * @return void + */ + public function free_result() + { + if (is_object($this->result_id)) + { + $this->result_id = FALSE; + } + } + + // -------------------------------------------------------------------- + + /** + * Result - associative array + * + * Returns the result set as an array + * + * @return array + */ + protected function _fetch_assoc() + { + return $this->result_id->fetch(PDO::FETCH_ASSOC); + } + + // -------------------------------------------------------------------- + + /** + * Result - object + * + * Returns the result set as an object + * + * @param string $class_name + * @return object + */ + protected function _fetch_object($class_name = 'stdClass') + { + return $this->result_id->fetchObject($class_name); + } + +} diff --git a/www/system/database/drivers/pdo/pdo_utility.php b/www/system/database/drivers/pdo/pdo_utility.php new file mode 100644 index 0000000..9091ea5 --- /dev/null +++ b/www/system/database/drivers/pdo/pdo_utility.php @@ -0,0 +1,63 @@ +db->display_error('db_unsupported_feature'); + } + +} diff --git a/www/system/database/drivers/pdo/subdrivers/index.html b/www/system/database/drivers/pdo/subdrivers/index.html new file mode 100644 index 0000000..b702fbc --- /dev/null +++ b/www/system/database/drivers/pdo/subdrivers/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

    Directory access is forbidden.

    + + + diff --git a/www/system/database/drivers/pdo/subdrivers/pdo_4d_driver.php b/www/system/database/drivers/pdo/subdrivers/pdo_4d_driver.php new file mode 100644 index 0000000..bbb675d --- /dev/null +++ b/www/system/database/drivers/pdo/subdrivers/pdo_4d_driver.php @@ -0,0 +1,200 @@ +dsn)) + { + $this->dsn = '4D:host='.(empty($this->hostname) ? '127.0.0.1' : $this->hostname); + + empty($this->port) OR $this->dsn .= ';port='.$this->port; + empty($this->database) OR $this->dsn .= ';dbname='.$this->database; + empty($this->char_set) OR $this->dsn .= ';charset='.$this->char_set; + } + elseif ( ! empty($this->char_set) && strpos($this->dsn, 'charset=', 3) === FALSE) + { + $this->dsn .= ';charset='.$this->char_set; + } + } + + // -------------------------------------------------------------------- + + /** + * Show table query + * + * Generates a platform-specific query string so that the table names can be fetched + * + * @param bool $prefix_limit + * @return string + */ + protected function _list_tables($prefix_limit = FALSE) + { + $sql = 'SELECT '.$this->escape_identifiers('TABLE_NAME').' FROM '.$this->escape_identifiers('_USER_TABLES'); + + if ($prefix_limit === TRUE && $this->dbprefix !== '') + { + $sql .= ' WHERE '.$this->escape_identifiers('TABLE_NAME')." LIKE '".$this->escape_like_str($this->dbprefix)."%' " + .sprintf($this->_like_escape_str, $this->_like_escape_chr); + } + + return $sql; + } + + // -------------------------------------------------------------------- + + /** + * Show column query + * + * Generates a platform-specific query string so that the column names can be fetched + * + * @param string $table + * @return string + */ + protected function _list_columns($table = '') + { + return 'SELECT '.$this->escape_identifiers('COLUMN_NAME').' FROM '.$this->escape_identifiers('_USER_COLUMNS') + .' WHERE '.$this->escape_identifiers('TABLE_NAME').' = '.$this->escape($table); + } + + // -------------------------------------------------------------------- + + /** + * Field data query + * + * Generates a platform-specific query so that the column data can be retrieved + * + * @param string $table + * @return string + */ + protected function _field_data($table) + { + return 'SELECT * FROM '.$this->protect_identifiers($table, TRUE, NULL, FALSE).' LIMIT 1'; + } + + // -------------------------------------------------------------------- + + /** + * Update statement + * + * Generates a platform-specific update string from the supplied data + * + * @param string $table + * @param array $values + * @return string + */ + protected function _update($table, $values) + { + $this->qb_limit = FALSE; + $this->qb_orderby = array(); + return parent::_update($table, $values); + } + + // -------------------------------------------------------------------- + + /** + * Delete statement + * + * Generates a platform-specific delete string from the supplied data + * + * @param string $table + * @return string + */ + protected function _delete($table) + { + $this->qb_limit = FALSE; + return parent::_delete($table); + } + + // -------------------------------------------------------------------- + + /** + * LIMIT + * + * Generates a platform-specific LIMIT clause + * + * @param string $sql SQL Query + * @return string + */ + protected function _limit($sql) + { + return $sql.' LIMIT '.$this->qb_limit.($this->qb_offset ? ' OFFSET '.$this->qb_offset : ''); + } + +} diff --git a/www/system/database/drivers/pdo/subdrivers/pdo_4d_forge.php b/www/system/database/drivers/pdo/subdrivers/pdo_4d_forge.php new file mode 100644 index 0000000..7135aa1 --- /dev/null +++ b/www/system/database/drivers/pdo/subdrivers/pdo_4d_forge.php @@ -0,0 +1,217 @@ + 'INT', + 'SMALLINT' => 'INT', + 'INT' => 'INT64', + 'INT32' => 'INT64' + ); + + /** + * DEFAULT value representation in CREATE/ALTER TABLE statements + * + * @var string + */ + protected $_default = FALSE; + + // -------------------------------------------------------------------- + + /** + * ALTER TABLE + * + * @param string $alter_type ALTER type + * @param string $table Table name + * @param mixed $field Column definition + * @return string|string[] + */ + protected function _alter_table($alter_type, $table, $field) + { + if (in_array($alter_type, array('ADD', 'DROP'), TRUE)) + { + return parent::_alter_table($alter_type, $table, $field); + } + + // No method of modifying columns is supported + return FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Process column + * + * @param array $field + * @return string + */ + protected function _process_column($field) + { + return $this->db->escape_identifiers($field['name']) + .' '.$field['type'].$field['length'] + .$field['null'] + .$field['unique'] + .$field['auto_increment']; + } + + // -------------------------------------------------------------------- + + /** + * Field attribute TYPE + * + * Performs a data type mapping between different databases. + * + * @param array &$attributes + * @return void + */ + protected function _attr_type(&$attributes) + { + switch (strtoupper($attributes['TYPE'])) + { + case 'TINYINT': + $attributes['TYPE'] = 'SMALLINT'; + $attributes['UNSIGNED'] = FALSE; + return; + case 'MEDIUMINT': + $attributes['TYPE'] = 'INTEGER'; + $attributes['UNSIGNED'] = FALSE; + return; + case 'INTEGER': + $attributes['TYPE'] = 'INT'; + return; + case 'BIGINT': + $attributes['TYPE'] = 'INT64'; + return; + default: return; + } + } + + // -------------------------------------------------------------------- + + /** + * Field attribute UNIQUE + * + * @param array &$attributes + * @param array &$field + * @return void + */ + protected function _attr_unique(&$attributes, &$field) + { + if ( ! empty($attributes['UNIQUE']) && $attributes['UNIQUE'] === TRUE) + { + $field['unique'] = ' UNIQUE'; + + // UNIQUE must be used with NOT NULL + $field['null'] = ' NOT NULL'; + } + } + + // -------------------------------------------------------------------- + + /** + * Field attribute AUTO_INCREMENT + * + * @param array &$attributes + * @param array &$field + * @return void + */ + protected function _attr_auto_increment(&$attributes, &$field) + { + if ( ! empty($attributes['AUTO_INCREMENT']) && $attributes['AUTO_INCREMENT'] === TRUE) + { + if (stripos($field['type'], 'int') !== FALSE) + { + $field['auto_increment'] = ' AUTO_INCREMENT'; + } + elseif (strcasecmp($field['type'], 'UUID') === 0) + { + $field['auto_increment'] = ' AUTO_GENERATE'; + } + } + } + +} diff --git a/www/system/database/drivers/pdo/subdrivers/pdo_cubrid_driver.php b/www/system/database/drivers/pdo/subdrivers/pdo_cubrid_driver.php new file mode 100644 index 0000000..3189aab --- /dev/null +++ b/www/system/database/drivers/pdo/subdrivers/pdo_cubrid_driver.php @@ -0,0 +1,209 @@ +dsn)) + { + $this->dsn = 'cubrid:host='.(empty($this->hostname) ? '127.0.0.1' : $this->hostname); + + empty($this->port) OR $this->dsn .= ';port='.$this->port; + empty($this->database) OR $this->dsn .= ';dbname='.$this->database; + empty($this->char_set) OR $this->dsn .= ';charset='.$this->char_set; + } + } + + // -------------------------------------------------------------------- + + /** + * Show table query + * + * Generates a platform-specific query string so that the table names can be fetched + * + * @param bool $prefix_limit + * @return string + */ + protected function _list_tables($prefix_limit = FALSE) + { + $sql = 'SHOW TABLES'; + + if ($prefix_limit === TRUE && $this->dbprefix !== '') + { + return $sql." LIKE '".$this->escape_like_str($this->dbprefix)."%'"; + } + + return $sql; + } + + // -------------------------------------------------------------------- + + /** + * Show column query + * + * Generates a platform-specific query string so that the column names can be fetched + * + * @param string $table + * @return string + */ + protected function _list_columns($table = '') + { + return 'SHOW COLUMNS FROM '.$this->protect_identifiers($table, TRUE, NULL, FALSE); + } + + // -------------------------------------------------------------------- + + /** + * Returns an object with field data + * + * @param string $table + * @return array + */ + public function field_data($table) + { + if (($query = $this->query('SHOW COLUMNS FROM '.$this->protect_identifiers($table, TRUE, NULL, FALSE))) === FALSE) + { + return FALSE; + } + $query = $query->result_object(); + + $retval = array(); + for ($i = 0, $c = count($query); $i < $c; $i++) + { + $retval[$i] = new stdClass(); + $retval[$i]->name = $query[$i]->Field; + + sscanf($query[$i]->Type, '%[a-z](%d)', + $retval[$i]->type, + $retval[$i]->max_length + ); + + $retval[$i]->default = $query[$i]->Default; + $retval[$i]->primary_key = (int) ($query[$i]->Key === 'PRI'); + } + + return $retval; + } + + // -------------------------------------------------------------------- + + /** + * Truncate statement + * + * Generates a platform-specific truncate string from the supplied data + * + * If the database does not support the TRUNCATE statement, + * then this method maps to 'DELETE FROM table' + * + * @param string $table + * @return string + */ + protected function _truncate($table) + { + return 'TRUNCATE '.$table; + } + + // -------------------------------------------------------------------- + + /** + * FROM tables + * + * Groups tables in FROM clauses if needed, so there is no confusion + * about operator precedence. + * + * @return string + */ + protected function _from_tables() + { + if ( ! empty($this->qb_join) && count($this->qb_from) > 1) + { + return '('.implode(', ', $this->qb_from).')'; + } + + return implode(', ', $this->qb_from); + } + +} diff --git a/www/system/database/drivers/pdo/subdrivers/pdo_cubrid_forge.php b/www/system/database/drivers/pdo/subdrivers/pdo_cubrid_forge.php new file mode 100644 index 0000000..624ce51 --- /dev/null +++ b/www/system/database/drivers/pdo/subdrivers/pdo_cubrid_forge.php @@ -0,0 +1,230 @@ + 'INTEGER', + 'SMALLINT' => 'INTEGER', + 'INT' => 'BIGINT', + 'INTEGER' => 'BIGINT', + 'BIGINT' => 'NUMERIC', + 'FLOAT' => 'DOUBLE', + 'REAL' => 'DOUBLE' + ); + + // -------------------------------------------------------------------- + + /** + * ALTER TABLE + * + * @param string $alter_type ALTER type + * @param string $table Table name + * @param mixed $field Column definition + * @return string|string[] + */ + protected function _alter_table($alter_type, $table, $field) + { + if (in_array($alter_type, array('DROP', 'ADD'), TRUE)) + { + return parent::_alter_table($alter_type, $table, $field); + } + + $sql = 'ALTER TABLE '.$this->db->escape_identifiers($table); + $sqls = array(); + for ($i = 0, $c = count($field); $i < $c; $i++) + { + if ($field[$i]['_literal'] !== FALSE) + { + $sqls[] = $sql.' CHANGE '.$field[$i]['_literal']; + } + else + { + $alter_type = empty($field[$i]['new_name']) ? ' MODIFY ' : ' CHANGE '; + $sqls[] = $sql.$alter_type.$this->_process_column($field[$i]); + } + } + + return $sqls; + } + + // -------------------------------------------------------------------- + + /** + * Process column + * + * @param array $field + * @return string + */ + protected function _process_column($field) + { + $extra_clause = isset($field['after']) + ? ' AFTER '.$this->db->escape_identifiers($field['after']) : ''; + + if (empty($extra_clause) && isset($field['first']) && $field['first'] === TRUE) + { + $extra_clause = ' FIRST'; + } + + return $this->db->escape_identifiers($field['name']) + .(empty($field['new_name']) ? '' : ' '.$this->db->escape_identifiers($field['new_name'])) + .' '.$field['type'].$field['length'] + .$field['unsigned'] + .$field['null'] + .$field['default'] + .$field['auto_increment'] + .$field['unique'] + .$extra_clause; + } + + // -------------------------------------------------------------------- + + /** + * Field attribute TYPE + * + * Performs a data type mapping between different databases. + * + * @param array &$attributes + * @return void + */ + protected function _attr_type(&$attributes) + { + switch (strtoupper($attributes['TYPE'])) + { + case 'TINYINT': + $attributes['TYPE'] = 'SMALLINT'; + $attributes['UNSIGNED'] = FALSE; + return; + case 'MEDIUMINT': + $attributes['TYPE'] = 'INTEGER'; + $attributes['UNSIGNED'] = FALSE; + return; + case 'LONGTEXT': + $attributes['TYPE'] = 'STRING'; + return; + default: return; + } + } + + // -------------------------------------------------------------------- + + /** + * Process indexes + * + * @param string $table (ignored) + * @return string + */ + protected function _process_indexes($table) + { + $sql = ''; + + for ($i = 0, $c = count($this->keys); $i < $c; $i++) + { + if (is_array($this->keys[$i])) + { + for ($i2 = 0, $c2 = count($this->keys[$i]); $i2 < $c2; $i2++) + { + if ( ! isset($this->fields[$this->keys[$i][$i2]])) + { + unset($this->keys[$i][$i2]); + continue; + } + } + } + elseif ( ! isset($this->fields[$this->keys[$i]])) + { + unset($this->keys[$i]); + continue; + } + + is_array($this->keys[$i]) OR $this->keys[$i] = array($this->keys[$i]); + + $sql .= ",\n\tKEY ".$this->db->escape_identifiers(implode('_', $this->keys[$i])) + .' ('.implode(', ', $this->db->escape_identifiers($this->keys[$i])).')'; + } + + $this->keys = array(); + + return $sql; + } + +} diff --git a/www/system/database/drivers/pdo/subdrivers/pdo_dblib_driver.php b/www/system/database/drivers/pdo/subdrivers/pdo_dblib_driver.php new file mode 100644 index 0000000..d04f8b3 --- /dev/null +++ b/www/system/database/drivers/pdo/subdrivers/pdo_dblib_driver.php @@ -0,0 +1,353 @@ +dsn)) + { + $this->dsn = $params['subdriver'].':host='.(empty($this->hostname) ? '127.0.0.1' : $this->hostname); + + if ( ! empty($this->port)) + { + $this->dsn .= (DIRECTORY_SEPARATOR === '\\' ? ',' : ':').$this->port; + } + + empty($this->database) OR $this->dsn .= ';dbname='.$this->database; + empty($this->char_set) OR $this->dsn .= ';charset='.$this->char_set; + empty($this->appname) OR $this->dsn .= ';appname='.$this->appname; + } + else + { + if ( ! empty($this->char_set) && strpos($this->dsn, 'charset=', 6) === FALSE) + { + $this->dsn .= ';charset='.$this->char_set; + } + + $this->subdriver = 'dblib'; + } + } + + // -------------------------------------------------------------------- + + /** + * Database connection + * + * @param bool $persistent + * @return object + */ + public function db_connect($persistent = FALSE) + { + if ($persistent === TRUE) + { + log_message('debug', "dblib driver doesn't support persistent connections"); + } + + $this->conn_id = parent::db_connect(FALSE); + + if ( ! is_object($this->conn_id)) + { + return $this->conn_id; + } + + // Determine how identifiers are escaped + $query = $this->query('SELECT CASE WHEN (@@OPTIONS | 256) = @@OPTIONS THEN 1 ELSE 0 END AS qi'); + $query = $query->row_array(); + $this->_quoted_identifier = empty($query) ? FALSE : (bool) $query['qi']; + $this->_escape_char = ($this->_quoted_identifier) ? '"' : array('[', ']'); + + return $this->conn_id; + } + + // -------------------------------------------------------------------- + + /** + * Show table query + * + * Generates a platform-specific query string so that the table names can be fetched + * + * @param bool $prefix_limit + * @return string + */ + protected function _list_tables($prefix_limit = FALSE) + { + $sql = 'SELECT '.$this->escape_identifiers('name') + .' FROM '.$this->escape_identifiers('sysobjects') + .' WHERE '.$this->escape_identifiers('type')." = 'U'"; + + if ($prefix_limit === TRUE && $this->dbprefix !== '') + { + $sql .= ' AND '.$this->escape_identifiers('name')." LIKE '".$this->escape_like_str($this->dbprefix)."%' " + .sprintf($this->_like_escape_str, $this->_like_escape_chr); + } + + return $sql.' ORDER BY '.$this->escape_identifiers('name'); + } + + // -------------------------------------------------------------------- + + /** + * Show column query + * + * Generates a platform-specific query string so that the column names can be fetched + * + * @param string $table + * @return string + */ + protected function _list_columns($table = '') + { + return 'SELECT COLUMN_NAME + FROM INFORMATION_SCHEMA.Columns + WHERE UPPER(TABLE_NAME) = '.$this->escape(strtoupper($table)); + } + + // -------------------------------------------------------------------- + + /** + * Returns an object with field data + * + * @param string $table + * @return array + */ + public function field_data($table) + { + $sql = 'SELECT COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, NUMERIC_PRECISION, COLUMN_DEFAULT + FROM INFORMATION_SCHEMA.Columns + WHERE UPPER(TABLE_NAME) = '.$this->escape(strtoupper($table)); + + if (($query = $this->query($sql)) === FALSE) + { + return FALSE; + } + $query = $query->result_object(); + + $retval = array(); + for ($i = 0, $c = count($query); $i < $c; $i++) + { + $retval[$i] = new stdClass(); + $retval[$i]->name = $query[$i]->COLUMN_NAME; + $retval[$i]->type = $query[$i]->DATA_TYPE; + $retval[$i]->max_length = ($query[$i]->CHARACTER_MAXIMUM_LENGTH > 0) ? $query[$i]->CHARACTER_MAXIMUM_LENGTH : $query[$i]->NUMERIC_PRECISION; + $retval[$i]->default = $query[$i]->COLUMN_DEFAULT; + } + + return $retval; + } + + // -------------------------------------------------------------------- + + /** + * Update statement + * + * Generates a platform-specific update string from the supplied data + * + * @param string $table + * @param array $values + * @return string + */ + protected function _update($table, $values) + { + $this->qb_limit = FALSE; + $this->qb_orderby = array(); + return parent::_update($table, $values); + } + + // -------------------------------------------------------------------- + + /** + * Delete statement + * + * Generates a platform-specific delete string from the supplied data + * + * @param string $table + * @return string + */ + protected function _delete($table) + { + if ($this->qb_limit) + { + return 'WITH ci_delete AS (SELECT TOP '.$this->qb_limit.' * FROM '.$table.$this->_compile_wh('qb_where').') DELETE FROM ci_delete'; + } + + return parent::_delete($table); + } + + // -------------------------------------------------------------------- + + /** + * LIMIT + * + * Generates a platform-specific LIMIT clause + * + * @param string $sql SQL Query + * @return string + */ + protected function _limit($sql) + { + $limit = $this->qb_offset + $this->qb_limit; + + // As of SQL Server 2005 (9.0.*) ROW_NUMBER() is supported, + // however an ORDER BY clause is required for it to work + if (version_compare($this->version(), '9', '>=') && $this->qb_offset && ! empty($this->qb_orderby)) + { + $orderby = $this->_compile_order_by(); + + // We have to strip the ORDER BY clause + $sql = trim(substr($sql, 0, strrpos($sql, $orderby))); + + // Get the fields to select from our subquery, so that we can avoid CI_rownum appearing in the actual results + if (count($this->qb_select) === 0 OR strpos(implode(',', $this->qb_select), '*') !== FALSE) + { + $select = '*'; // Inevitable + } + else + { + // Use only field names and their aliases, everything else is out of our scope. + $select = array(); + $field_regexp = ($this->_quoted_identifier) + ? '("[^\"]+")' : '(\[[^\]]+\])'; + for ($i = 0, $c = count($this->qb_select); $i < $c; $i++) + { + $select[] = preg_match('/(?:\s|\.)'.$field_regexp.'$/i', $this->qb_select[$i], $m) + ? $m[1] : $this->qb_select[$i]; + } + $select = implode(', ', $select); + } + + return 'SELECT '.$select." FROM (\n\n" + .preg_replace('/^(SELECT( DISTINCT)?)/i', '\\1 ROW_NUMBER() OVER('.trim($orderby).') AS '.$this->escape_identifiers('CI_rownum').', ', $sql) + ."\n\n) ".$this->escape_identifiers('CI_subquery') + ."\nWHERE ".$this->escape_identifiers('CI_rownum').' BETWEEN '.($this->qb_offset + 1).' AND '.$limit; + } + + return preg_replace('/(^\SELECT (DISTINCT)?)/i','\\1 TOP '.$limit.' ', $sql); + } + + // -------------------------------------------------------------------- + + /** + * Insert batch statement + * + * Generates a platform-specific insert string from the supplied data. + * + * @param string $table Table name + * @param array $keys INSERT keys + * @param array $values INSERT values + * @return string|bool + */ + protected function _insert_batch($table, $keys, $values) + { + // Multiple-value inserts are only supported as of SQL Server 2008 + if (version_compare($this->version(), '10', '>=')) + { + return parent::_insert_batch($table, $keys, $values); + } + + return ($this->db_debug) ? $this->display_error('db_unsupported_feature') : FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Database version number + * + * @return string + */ + public function version() + { + if (isset($this->data_cache['version'])) + { + return $this->data_cache['version']; + } + + return $this->data_cache['version'] = $this->conn_id->query("SELECT SERVERPROPERTY('ProductVersion') AS ver")->fetchColumn(0); + } +} diff --git a/www/system/database/drivers/pdo/subdrivers/pdo_dblib_forge.php b/www/system/database/drivers/pdo/subdrivers/pdo_dblib_forge.php new file mode 100644 index 0000000..0216b59 --- /dev/null +++ b/www/system/database/drivers/pdo/subdrivers/pdo_dblib_forge.php @@ -0,0 +1,149 @@ + 'SMALLINT', + 'SMALLINT' => 'INT', + 'INT' => 'BIGINT', + 'REAL' => 'FLOAT' + ); + + // -------------------------------------------------------------------- + + /** + * ALTER TABLE + * + * @param string $alter_type ALTER type + * @param string $table Table name + * @param mixed $field Column definition + * @return string|string[] + */ + protected function _alter_table($alter_type, $table, $field) + { + if (in_array($alter_type, array('ADD', 'DROP'), TRUE)) + { + return parent::_alter_table($alter_type, $table, $field); + } + + $sql = 'ALTER TABLE '.$this->db->escape_identifiers($table).' ALTER COLUMN '; + $sqls = array(); + for ($i = 0, $c = count($field); $i < $c; $i++) + { + $sqls[] = $sql.$this->_process_column($field[$i]); + } + + return $sqls; + } + + // -------------------------------------------------------------------- + + /** + * Field attribute TYPE + * + * Performs a data type mapping between different databases. + * + * @param array &$attributes + * @return void + */ + protected function _attr_type(&$attributes) + { + if (isset($attributes['CONSTRAINT']) && strpos($attributes['TYPE'], 'INT') !== FALSE) + { + unset($attributes['CONSTRAINT']); + } + + switch (strtoupper($attributes['TYPE'])) + { + case 'MEDIUMINT': + $attributes['TYPE'] = 'INTEGER'; + $attributes['UNSIGNED'] = FALSE; + return; + case 'INTEGER': + $attributes['TYPE'] = 'INT'; + return; + default: return; + } + } + + // -------------------------------------------------------------------- + + /** + * Field attribute AUTO_INCREMENT + * + * @param array &$attributes + * @param array &$field + * @return void + */ + protected function _attr_auto_increment(&$attributes, &$field) + { + if ( ! empty($attributes['AUTO_INCREMENT']) && $attributes['AUTO_INCREMENT'] === TRUE && stripos($field['type'], 'int') !== FALSE) + { + $field['auto_increment'] = ' IDENTITY(1,1)'; + } + } + +} diff --git a/www/system/database/drivers/pdo/subdrivers/pdo_firebird_driver.php b/www/system/database/drivers/pdo/subdrivers/pdo_firebird_driver.php new file mode 100644 index 0000000..eec5bf2 --- /dev/null +++ b/www/system/database/drivers/pdo/subdrivers/pdo_firebird_driver.php @@ -0,0 +1,279 @@ +dsn)) + { + $this->dsn = 'firebird:'; + + if ( ! empty($this->database)) + { + $this->dsn .= 'dbname='.$this->database; + } + elseif ( ! empty($this->hostname)) + { + $this->dsn .= 'dbname='.$this->hostname; + } + + empty($this->char_set) OR $this->dsn .= ';charset='.$this->char_set; + empty($this->role) OR $this->dsn .= ';role='.$this->role; + } + elseif ( ! empty($this->char_set) && strpos($this->dsn, 'charset=', 9) === FALSE) + { + $this->dsn .= ';charset='.$this->char_set; + } + } + + // -------------------------------------------------------------------- + + /** + * Show table query + * + * Generates a platform-specific query string so that the table names can be fetched + * + * @param bool $prefix_limit + * @return string + */ + protected function _list_tables($prefix_limit = FALSE) + { + $sql = 'SELECT "RDB$RELATION_NAME" FROM "RDB$RELATIONS" WHERE "RDB$RELATION_NAME" NOT LIKE \'RDB$%\' AND "RDB$RELATION_NAME" NOT LIKE \'MON$%\''; + + if ($prefix_limit === TRUE && $this->dbprefix !== '') + { + return $sql.' AND "RDB$RELATION_NAME" LIKE \''.$this->escape_like_str($this->dbprefix)."%' " + .sprintf($this->_like_escape_str, $this->_like_escape_chr); + } + + return $sql; + } + + // -------------------------------------------------------------------- + + /** + * Show column query + * + * Generates a platform-specific query string so that the column names can be fetched + * + * @param string $table + * @return string + */ + protected function _list_columns($table = '') + { + return 'SELECT "RDB$FIELD_NAME" FROM "RDB$RELATION_FIELDS" WHERE "RDB$RELATION_NAME" = '.$this->escape($table); + } + + // -------------------------------------------------------------------- + + /** + * Returns an object with field data + * + * @param string $table + * @return array + */ + public function field_data($table) + { + $sql = 'SELECT "rfields"."RDB$FIELD_NAME" AS "name", + CASE "fields"."RDB$FIELD_TYPE" + WHEN 7 THEN \'SMALLINT\' + WHEN 8 THEN \'INTEGER\' + WHEN 9 THEN \'QUAD\' + WHEN 10 THEN \'FLOAT\' + WHEN 11 THEN \'DFLOAT\' + WHEN 12 THEN \'DATE\' + WHEN 13 THEN \'TIME\' + WHEN 14 THEN \'CHAR\' + WHEN 16 THEN \'INT64\' + WHEN 27 THEN \'DOUBLE\' + WHEN 35 THEN \'TIMESTAMP\' + WHEN 37 THEN \'VARCHAR\' + WHEN 40 THEN \'CSTRING\' + WHEN 261 THEN \'BLOB\' + ELSE NULL + END AS "type", + "fields"."RDB$FIELD_LENGTH" AS "max_length", + "rfields"."RDB$DEFAULT_VALUE" AS "default" + FROM "RDB$RELATION_FIELDS" "rfields" + JOIN "RDB$FIELDS" "fields" ON "rfields"."RDB$FIELD_SOURCE" = "fields"."RDB$FIELD_NAME" + WHERE "rfields"."RDB$RELATION_NAME" = '.$this->escape($table).' + ORDER BY "rfields"."RDB$FIELD_POSITION"'; + + return (($query = $this->query($sql)) !== FALSE) + ? $query->result_object() + : FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Update statement + * + * Generates a platform-specific update string from the supplied data + * + * @param string $table + * @param array $values + * @return string + */ + protected function _update($table, $values) + { + $this->qb_limit = FALSE; + return parent::_update($table, $values); + } + + // -------------------------------------------------------------------- + + /** + * Truncate statement + * + * Generates a platform-specific truncate string from the supplied data + * + * If the database does not support the TRUNCATE statement, + * then this method maps to 'DELETE FROM table' + * + * @param string $table + * @return string + */ + protected function _truncate($table) + { + return 'DELETE FROM '.$table; + } + + // -------------------------------------------------------------------- + + /** + * Delete statement + * + * Generates a platform-specific delete string from the supplied data + * + * @param string $table + * @return string + */ + protected function _delete($table) + { + $this->qb_limit = FALSE; + return parent::_delete($table); + } + + // -------------------------------------------------------------------- + + /** + * LIMIT + * + * Generates a platform-specific LIMIT clause + * + * @param string $sql SQL Query + * @return string + */ + protected function _limit($sql) + { + // Limit clause depends on if Interbase or Firebird + if (stripos($this->version(), 'firebird') !== FALSE) + { + $select = 'FIRST '.$this->qb_limit + .($this->qb_offset > 0 ? ' SKIP '.$this->qb_offset : ''); + } + else + { + $select = 'ROWS ' + .($this->qb_offset > 0 ? $this->qb_offset.' TO '.($this->qb_limit + $this->qb_offset) : $this->qb_limit); + } + + return preg_replace('`SELECT`i', 'SELECT '.$select, $sql); + } + + // -------------------------------------------------------------------- + + /** + * Insert batch statement + * + * Generates a platform-specific insert string from the supplied data. + * + * @param string $table Table name + * @param array $keys INSERT keys + * @param array $values INSERT values + * @return string|bool + */ + protected function _insert_batch($table, $keys, $values) + { + return ($this->db_debug) ? $this->display_error('db_unsupported_feature') : FALSE; + } +} diff --git a/www/system/database/drivers/pdo/subdrivers/pdo_firebird_forge.php b/www/system/database/drivers/pdo/subdrivers/pdo_firebird_forge.php new file mode 100644 index 0000000..2a5fa64 --- /dev/null +++ b/www/system/database/drivers/pdo/subdrivers/pdo_firebird_forge.php @@ -0,0 +1,237 @@ + 'INTEGER', + 'INTEGER' => 'INT64', + 'FLOAT' => 'DOUBLE PRECISION' + ); + + /** + * NULL value representation in CREATE/ALTER TABLE statements + * + * @var string + */ + protected $_null = 'NULL'; + + // -------------------------------------------------------------------- + + /** + * Create database + * + * @param string $db_name + * @return string + */ + public function create_database($db_name) + { + // Firebird databases are flat files, so a path is required + + // Hostname is needed for remote access + empty($this->db->hostname) OR $db_name = $this->hostname.':'.$db_name; + + return parent::create_database('"'.$db_name.'"'); + } + + // -------------------------------------------------------------------- + + /** + * Drop database + * + * @param string $db_name (ignored) + * @return bool + */ + public function drop_database($db_name) + { + if ( ! ibase_drop_db($this->conn_id)) + { + return ($this->db->db_debug) ? $this->db->display_error('db_unable_to_drop') : FALSE; + } + elseif ( ! empty($this->db->data_cache['db_names'])) + { + $key = array_search(strtolower($this->db->database), array_map('strtolower', $this->db->data_cache['db_names']), TRUE); + if ($key !== FALSE) + { + unset($this->db->data_cache['db_names'][$key]); + } + } + + return TRUE; + } + + // -------------------------------------------------------------------- + + /** + * ALTER TABLE + * + * @param string $alter_type ALTER type + * @param string $table Table name + * @param mixed $field Column definition + * @return string|string[] + */ + protected function _alter_table($alter_type, $table, $field) + { + if (in_array($alter_type, array('DROP', 'ADD'), TRUE)) + { + return parent::_alter_table($alter_type, $table, $field); + } + + $sql = 'ALTER TABLE '.$this->db->escape_identifiers($table); + $sqls = array(); + for ($i = 0, $c = count($field); $i < $c; $i++) + { + if ($field[$i]['_literal'] !== FALSE) + { + return FALSE; + } + + if (isset($field[$i]['type'])) + { + $sqls[] = $sql.' ALTER COLUMN '.$this->db->escape_identifiers($field[$i]['name']) + .' TYPE '.$field[$i]['type'].$field[$i]['length']; + } + + if ( ! empty($field[$i]['default'])) + { + $sqls[] = $sql.' ALTER COLUMN '.$this->db->escape_identifiers($field[$i]['name']) + .' SET DEFAULT '.$field[$i]['default']; + } + + if (isset($field[$i]['null'])) + { + $sqls[] = 'UPDATE "RDB$RELATION_FIELDS" SET "RDB$NULL_FLAG" = ' + .($field[$i]['null'] === TRUE ? 'NULL' : '1') + .' WHERE "RDB$FIELD_NAME" = '.$this->db->escape($field[$i]['name']) + .' AND "RDB$RELATION_NAME" = '.$this->db->escape($table); + } + + if ( ! empty($field[$i]['new_name'])) + { + $sqls[] = $sql.' ALTER COLUMN '.$this->db->escape_identifiers($field[$i]['name']) + .' TO '.$this->db->escape_identifiers($field[$i]['new_name']); + } + } + + return $sqls; + } + + // -------------------------------------------------------------------- + + /** + * Process column + * + * @param array $field + * @return string + */ + protected function _process_column($field) + { + return $this->db->escape_identifiers($field['name']) + .' '.$field['type'].$field['length'] + .$field['null'] + .$field['unique'] + .$field['default']; + } + + // -------------------------------------------------------------------- + + /** + * Field attribute TYPE + * + * Performs a data type mapping between different databases. + * + * @param array &$attributes + * @return void + */ + protected function _attr_type(&$attributes) + { + switch (strtoupper($attributes['TYPE'])) + { + case 'TINYINT': + $attributes['TYPE'] = 'SMALLINT'; + $attributes['UNSIGNED'] = FALSE; + return; + case 'MEDIUMINT': + $attributes['TYPE'] = 'INTEGER'; + $attributes['UNSIGNED'] = FALSE; + return; + case 'INT': + $attributes['TYPE'] = 'INTEGER'; + return; + case 'BIGINT': + $attributes['TYPE'] = 'INT64'; + return; + default: return; + } + } + + // -------------------------------------------------------------------- + + /** + * Field attribute AUTO_INCREMENT + * + * @param array &$attributes + * @param array &$field + * @return void + */ + protected function _attr_auto_increment(&$attributes, &$field) + { + // Not supported + } + +} diff --git a/www/system/database/drivers/pdo/subdrivers/pdo_ibm_driver.php b/www/system/database/drivers/pdo/subdrivers/pdo_ibm_driver.php new file mode 100644 index 0000000..43400a4 --- /dev/null +++ b/www/system/database/drivers/pdo/subdrivers/pdo_ibm_driver.php @@ -0,0 +1,244 @@ +dsn)) + { + $this->dsn = 'ibm:'; + + // Pre-defined DSN + if (empty($this->hostname) && empty($this->HOSTNAME) && empty($this->port) && empty($this->PORT)) + { + if (isset($this->DSN)) + { + $this->dsn .= 'DSN='.$this->DSN; + } + elseif ( ! empty($this->database)) + { + $this->dsn .= 'DSN='.$this->database; + } + + return; + } + + $this->dsn .= 'DRIVER='.(isset($this->DRIVER) ? '{'.$this->DRIVER.'}' : '{IBM DB2 ODBC DRIVER}').';'; + + if (isset($this->DATABASE)) + { + $this->dsn .= 'DATABASE='.$this->DATABASE.';'; + } + elseif ( ! empty($this->database)) + { + $this->dsn .= 'DATABASE='.$this->database.';'; + } + + if (isset($this->HOSTNAME)) + { + $this->dsn .= 'HOSTNAME='.$this->HOSTNAME.';'; + } + else + { + $this->dsn .= 'HOSTNAME='.(empty($this->hostname) ? '127.0.0.1;' : $this->hostname.';'); + } + + if (isset($this->PORT)) + { + $this->dsn .= 'PORT='.$this->port.';'; + } + elseif ( ! empty($this->port)) + { + $this->dsn .= ';PORT='.$this->port.';'; + } + + $this->dsn .= 'PROTOCOL='.(isset($this->PROTOCOL) ? $this->PROTOCOL.';' : 'TCPIP;'); + } + } + + // -------------------------------------------------------------------- + + /** + * Show table query + * + * Generates a platform-specific query string so that the table names can be fetched + * + * @param bool $prefix_limit + * @return string + */ + protected function _list_tables($prefix_limit = FALSE) + { + $sql = 'SELECT "tabname" FROM "syscat"."tables" + WHERE "type" = \'T\' AND LOWER("tabschema") = '.$this->escape(strtolower($this->database)); + + if ($prefix_limit === TRUE && $this->dbprefix !== '') + { + $sql .= ' AND "tabname" LIKE \''.$this->escape_like_str($this->dbprefix)."%' " + .sprintf($this->_like_escape_str, $this->_like_escape_chr); + } + + return $sql; + } + + // -------------------------------------------------------------------- + + /** + * Show column query + * + * Generates a platform-specific query string so that the column names can be fetched + * + * @param string $table + * @return array + */ + protected function _list_columns($table = '') + { + return 'SELECT "colname" FROM "syscat"."columns" + WHERE LOWER("tabschema") = '.$this->escape(strtolower($this->database)).' + AND LOWER("tabname") = '.$this->escape(strtolower($table)); + } + + // -------------------------------------------------------------------- + + /** + * Returns an object with field data + * + * @param string $table + * @return array + */ + public function field_data($table) + { + $sql = 'SELECT "colname" AS "name", "typename" AS "type", "default" AS "default", "length" AS "max_length", + CASE "keyseq" WHEN NULL THEN 0 ELSE 1 END AS "primary_key" + FROM "syscat"."columns" + WHERE LOWER("tabschema") = '.$this->escape(strtolower($this->database)).' + AND LOWER("tabname") = '.$this->escape(strtolower($table)).' + ORDER BY "colno"'; + + return (($query = $this->query($sql)) !== FALSE) + ? $query->result_object() + : FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Update statement + * + * Generates a platform-specific update string from the supplied data + * + * @param string $table + * @param array $values + * @return string + */ + protected function _update($table, $values) + { + $this->qb_limit = FALSE; + $this->qb_orderby = array(); + return parent::_update($table, $values); + } + + // -------------------------------------------------------------------- + + /** + * Delete statement + * + * Generates a platform-specific delete string from the supplied data + * + * @param string $table + * @return string + */ + protected function _delete($table) + { + $this->qb_limit = FALSE; + return parent::_delete($table); + } + + // -------------------------------------------------------------------- + + /** + * LIMIT + * + * Generates a platform-specific LIMIT clause + * + * @param string $sql SQL Query + * @return string + */ + protected function _limit($sql) + { + $sql .= ' FETCH FIRST '.($this->qb_limit + $this->qb_offset).' ROWS ONLY'; + + return ($this->qb_offset) + ? 'SELECT * FROM ('.$sql.') WHERE rownum > '.$this->qb_offset + : $sql; + } + +} diff --git a/www/system/database/drivers/pdo/subdrivers/pdo_ibm_forge.php b/www/system/database/drivers/pdo/subdrivers/pdo_ibm_forge.php new file mode 100644 index 0000000..f1bd2c3 --- /dev/null +++ b/www/system/database/drivers/pdo/subdrivers/pdo_ibm_forge.php @@ -0,0 +1,154 @@ + 'INTEGER', + 'INT' => 'BIGINT', + 'INTEGER' => 'BIGINT' + ); + + /** + * DEFAULT value representation in CREATE/ALTER TABLE statements + * + * @var string + */ + protected $_default = FALSE; + + // -------------------------------------------------------------------- + + /** + * ALTER TABLE + * + * @param string $alter_type ALTER type + * @param string $table Table name + * @param mixed $field Column definition + * @return string|string[] + */ + protected function _alter_table($alter_type, $table, $field) + { + if ($alter_type === 'CHANGE') + { + $alter_type = 'MODIFY'; + } + + return parent::_alter_table($alter_type, $table, $field); + } + + // -------------------------------------------------------------------- + + /** + * Field attribute TYPE + * + * Performs a data type mapping between different databases. + * + * @param array &$attributes + * @return void + */ + protected function _attr_type(&$attributes) + { + switch (strtoupper($attributes['TYPE'])) + { + case 'TINYINT': + $attributes['TYPE'] = 'SMALLINT'; + $attributes['UNSIGNED'] = FALSE; + return; + case 'MEDIUMINT': + $attributes['TYPE'] = 'INTEGER'; + $attributes['UNSIGNED'] = FALSE; + return; + default: return; + } + } + + // -------------------------------------------------------------------- + + /** + * Field attribute UNIQUE + * + * @param array &$attributes + * @param array &$field + * @return void + */ + protected function _attr_unique(&$attributes, &$field) + { + if ( ! empty($attributes['UNIQUE']) && $attributes['UNIQUE'] === TRUE) + { + $field['unique'] = ' UNIQUE'; + + // UNIQUE must be used with NOT NULL + $field['null'] = ' NOT NULL'; + } + } + + // -------------------------------------------------------------------- + + /** + * Field attribute AUTO_INCREMENT + * + * @param array &$attributes + * @param array &$field + * @return void + */ + protected function _attr_auto_increment(&$attributes, &$field) + { + // Not supported + } + +} diff --git a/www/system/database/drivers/pdo/subdrivers/pdo_informix_driver.php b/www/system/database/drivers/pdo/subdrivers/pdo_informix_driver.php new file mode 100644 index 0000000..e44dcb8 --- /dev/null +++ b/www/system/database/drivers/pdo/subdrivers/pdo_informix_driver.php @@ -0,0 +1,309 @@ +dsn)) + { + $this->dsn = 'informix:'; + + // Pre-defined DSN + if (empty($this->hostname) && empty($this->host) && empty($this->port) && empty($this->service)) + { + if (isset($this->DSN)) + { + $this->dsn .= 'DSN='.$this->DSN; + } + elseif ( ! empty($this->database)) + { + $this->dsn .= 'DSN='.$this->database; + } + + return; + } + + if (isset($this->host)) + { + $this->dsn .= 'host='.$this->host; + } + else + { + $this->dsn .= 'host='.(empty($this->hostname) ? '127.0.0.1' : $this->hostname); + } + + if (isset($this->service)) + { + $this->dsn .= '; service='.$this->service; + } + elseif ( ! empty($this->port)) + { + $this->dsn .= '; service='.$this->port; + } + + empty($this->database) OR $this->dsn .= '; database='.$this->database; + empty($this->server) OR $this->dsn .= '; server='.$this->server; + + $this->dsn .= '; protocol='.(isset($this->protocol) ? $this->protocol : 'onsoctcp') + .'; EnableScrollableCursors=1'; + } + } + + // -------------------------------------------------------------------- + + /** + * Show table query + * + * Generates a platform-specific query string so that the table names can be fetched + * + * @param bool $prefix_limit + * @return string + */ + protected function _list_tables($prefix_limit = FALSE) + { + $sql = 'SELECT "tabname" FROM "systables" + WHERE "tabid" > 99 AND "tabtype" = \'T\' AND LOWER("owner") = '.$this->escape(strtolower($this->username)); + + if ($prefix_limit === TRUE && $this->dbprefix !== '') + { + $sql .= ' AND "tabname" LIKE \''.$this->escape_like_str($this->dbprefix)."%' " + .sprintf($this->_like_escape_str, $this->_like_escape_chr); + } + + return $sql; + } + + // -------------------------------------------------------------------- + + /** + * Show column query + * + * Generates a platform-specific query string so that the column names can be fetched + * + * @param string $table + * @return string + */ + protected function _list_columns($table = '') + { + if (strpos($table, '.') !== FALSE) + { + sscanf($table, '%[^.].%s', $owner, $table); + } + else + { + $owner = $this->username; + } + + return 'SELECT "colname" FROM "systables", "syscolumns" + WHERE "systables"."tabid" = "syscolumns"."tabid" + AND "systables"."tabtype" = \'T\' + AND LOWER("systables"."owner") = '.$this->escape(strtolower($owner)).' + AND LOWER("systables"."tabname") = '.$this->escape(strtolower($table)); + } + + // -------------------------------------------------------------------- + + /** + * Returns an object with field data + * + * @param string $table + * @return array + */ + public function field_data($table) + { + $sql = 'SELECT "syscolumns"."colname" AS "name", + CASE "syscolumns"."coltype" + WHEN 0 THEN \'CHAR\' + WHEN 1 THEN \'SMALLINT\' + WHEN 2 THEN \'INTEGER\' + WHEN 3 THEN \'FLOAT\' + WHEN 4 THEN \'SMALLFLOAT\' + WHEN 5 THEN \'DECIMAL\' + WHEN 6 THEN \'SERIAL\' + WHEN 7 THEN \'DATE\' + WHEN 8 THEN \'MONEY\' + WHEN 9 THEN \'NULL\' + WHEN 10 THEN \'DATETIME\' + WHEN 11 THEN \'BYTE\' + WHEN 12 THEN \'TEXT\' + WHEN 13 THEN \'VARCHAR\' + WHEN 14 THEN \'INTERVAL\' + WHEN 15 THEN \'NCHAR\' + WHEN 16 THEN \'NVARCHAR\' + WHEN 17 THEN \'INT8\' + WHEN 18 THEN \'SERIAL8\' + WHEN 19 THEN \'SET\' + WHEN 20 THEN \'MULTISET\' + WHEN 21 THEN \'LIST\' + WHEN 22 THEN \'Unnamed ROW\' + WHEN 40 THEN \'LVARCHAR\' + WHEN 41 THEN \'BLOB/CLOB/BOOLEAN\' + WHEN 4118 THEN \'Named ROW\' + ELSE "syscolumns"."coltype" + END AS "type", + "syscolumns"."collength" as "max_length", + CASE "sysdefaults"."type" + WHEN \'L\' THEN "sysdefaults"."default" + ELSE NULL + END AS "default" + FROM "syscolumns", "systables", "sysdefaults" + WHERE "syscolumns"."tabid" = "systables"."tabid" + AND "systables"."tabid" = "sysdefaults"."tabid" + AND "syscolumns"."colno" = "sysdefaults"."colno" + AND "systables"."tabtype" = \'T\' + AND LOWER("systables"."owner") = '.$this->escape(strtolower($this->username)).' + AND LOWER("systables"."tabname") = '.$this->escape(strtolower($table)).' + ORDER BY "syscolumns"."colno"'; + + return (($query = $this->query($sql)) !== FALSE) + ? $query->result_object() + : FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Update statement + * + * Generates a platform-specific update string from the supplied data + * + * @param string $table + * @param array $values + * @return string + */ + protected function _update($table, $values) + { + $this->qb_limit = FALSE; + $this->qb_orderby = array(); + return parent::_update($table, $values); + } + + // -------------------------------------------------------------------- + + /** + * Truncate statement + * + * Generates a platform-specific truncate string from the supplied data + * + * If the database does not support the TRUNCATE statement, + * then this method maps to 'DELETE FROM table' + * + * @param string $table + * @return string + */ + protected function _truncate($table) + { + return 'TRUNCATE TABLE ONLY '.$table; + } + + // -------------------------------------------------------------------- + + /** + * Delete statement + * + * Generates a platform-specific delete string from the supplied data + * + * @param string $table + * @return string + */ + protected function _delete($table) + { + $this->qb_limit = FALSE; + return parent::_delete($table); + } + + // -------------------------------------------------------------------- + + /** + * LIMIT + * + * Generates a platform-specific LIMIT clause + * + * @param string $sql $SQL Query + * @return string + */ + protected function _limit($sql) + { + $select = 'SELECT '.($this->qb_offset ? 'SKIP '.$this->qb_offset : '').'FIRST '.$this->qb_limit.' '; + return preg_replace('/^(SELECT\s)/i', $select, $sql, 1); + } + +} diff --git a/www/system/database/drivers/pdo/subdrivers/pdo_informix_forge.php b/www/system/database/drivers/pdo/subdrivers/pdo_informix_forge.php new file mode 100644 index 0000000..e4202c2 --- /dev/null +++ b/www/system/database/drivers/pdo/subdrivers/pdo_informix_forge.php @@ -0,0 +1,163 @@ + 'INTEGER', + 'INT' => 'BIGINT', + 'INTEGER' => 'BIGINT', + 'REAL' => 'DOUBLE PRECISION', + 'SMALLFLOAT' => 'DOUBLE PRECISION' + ); + + /** + * DEFAULT value representation in CREATE/ALTER TABLE statements + * + * @var string + */ + protected $_default = ', '; + + // -------------------------------------------------------------------- + + /** + * ALTER TABLE + * + * @param string $alter_type ALTER type + * @param string $table Table name + * @param mixed $field Column definition + * @return string|string[] + */ + protected function _alter_table($alter_type, $table, $field) + { + if ($alter_type === 'CHANGE') + { + $alter_type = 'MODIFY'; + } + + return parent::_alter_table($alter_type, $table, $field); + } + + // -------------------------------------------------------------------- + + /** + * Field attribute TYPE + * + * Performs a data type mapping between different databases. + * + * @param array &$attributes + * @return void + */ + protected function _attr_type(&$attributes) + { + switch (strtoupper($attributes['TYPE'])) + { + case 'TINYINT': + $attributes['TYPE'] = 'SMALLINT'; + $attributes['UNSIGNED'] = FALSE; + return; + case 'MEDIUMINT': + $attributes['TYPE'] = 'INTEGER'; + $attributes['UNSIGNED'] = FALSE; + return; + case 'BYTE': + case 'TEXT': + case 'BLOB': + case 'CLOB': + $attributes['UNIQUE'] = FALSE; + if (isset($attributes['DEFAULT'])) + { + unset($attributes['DEFAULT']); + } + return; + default: return; + } + } + + // -------------------------------------------------------------------- + + /** + * Field attribute UNIQUE + * + * @param array &$attributes + * @param array &$field + * @return void + */ + protected function _attr_unique(&$attributes, &$field) + { + if ( ! empty($attributes['UNIQUE']) && $attributes['UNIQUE'] === TRUE) + { + $field['unique'] = ' UNIQUE CONSTRAINT '.$this->db->escape_identifiers($field['name']); + } + } + + // -------------------------------------------------------------------- + + /** + * Field attribute AUTO_INCREMENT + * + * @param array &$attributes + * @param array &$field + * @return void + */ + protected function _attr_auto_increment(&$attributes, &$field) + { + // Not supported + } + +} diff --git a/www/system/database/drivers/pdo/subdrivers/pdo_mysql_driver.php b/www/system/database/drivers/pdo/subdrivers/pdo_mysql_driver.php new file mode 100644 index 0000000..e172145 --- /dev/null +++ b/www/system/database/drivers/pdo/subdrivers/pdo_mysql_driver.php @@ -0,0 +1,374 @@ +dsn)) + { + $this->dsn = 'mysql:host='.(empty($this->hostname) ? '127.0.0.1' : $this->hostname); + + empty($this->port) OR $this->dsn .= ';port='.$this->port; + empty($this->database) OR $this->dsn .= ';dbname='.$this->database; + empty($this->char_set) OR $this->dsn .= ';charset='.$this->char_set; + } + elseif ( ! empty($this->char_set) && strpos($this->dsn, 'charset=', 6) === FALSE) + { + $this->dsn .= ';charset='.$this->char_set; + } + } + + // -------------------------------------------------------------------- + + /** + * Database connection + * + * @param bool $persistent + * @return object + */ + public function db_connect($persistent = FALSE) + { + if (isset($this->stricton)) + { + if ($this->stricton) + { + $sql = 'CONCAT(@@sql_mode, ",", "STRICT_ALL_TABLES")'; + } + else + { + $sql = 'REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( + @@sql_mode, + "STRICT_ALL_TABLES,", ""), + ",STRICT_ALL_TABLES", ""), + "STRICT_ALL_TABLES", ""), + "STRICT_TRANS_TABLES,", ""), + ",STRICT_TRANS_TABLES", ""), + "STRICT_TRANS_TABLES", "")'; + } + + if ( ! empty($sql)) + { + if (empty($this->options[PDO::MYSQL_ATTR_INIT_COMMAND])) + { + $this->options[PDO::MYSQL_ATTR_INIT_COMMAND] = 'SET SESSION sql_mode = '.$sql; + } + else + { + $this->options[PDO::MYSQL_ATTR_INIT_COMMAND] .= ', @@session.sql_mode = '.$sql; + } + } + } + + if ($this->compress === TRUE) + { + $this->options[PDO::MYSQL_ATTR_COMPRESS] = TRUE; + } + + if (is_array($this->encrypt)) + { + $ssl = array(); + empty($this->encrypt['ssl_key']) OR $ssl[PDO::MYSQL_ATTR_SSL_KEY] = $this->encrypt['ssl_key']; + empty($this->encrypt['ssl_cert']) OR $ssl[PDO::MYSQL_ATTR_SSL_CERT] = $this->encrypt['ssl_cert']; + empty($this->encrypt['ssl_ca']) OR $ssl[PDO::MYSQL_ATTR_SSL_CA] = $this->encrypt['ssl_ca']; + empty($this->encrypt['ssl_capath']) OR $ssl[PDO::MYSQL_ATTR_SSL_CAPATH] = $this->encrypt['ssl_capath']; + empty($this->encrypt['ssl_cipher']) OR $ssl[PDO::MYSQL_ATTR_SSL_CIPHER] = $this->encrypt['ssl_cipher']; + + // DO NOT use array_merge() here! + // It re-indexes numeric keys and the PDO_MYSQL_ATTR_SSL_* constants are integers. + empty($ssl) OR $this->options += $ssl; + } + + // Prior to version 5.7.3, MySQL silently downgrades to an unencrypted connection if SSL setup fails + if ( + ($pdo = parent::db_connect($persistent)) !== FALSE + && ! empty($ssl) + && version_compare($pdo->getAttribute(PDO::ATTR_CLIENT_VERSION), '5.7.3', '<=') + && empty($pdo->query("SHOW STATUS LIKE 'ssl_cipher'")->fetchObject()->Value) + ) + { + $message = 'PDO_MYSQL was configured for an SSL connection, but got an unencrypted connection instead!'; + log_message('error', $message); + return ($this->db_debug) ? $this->display_error($message, '', TRUE) : FALSE; + } + + return $pdo; + } + + // -------------------------------------------------------------------- + + /** + * Select the database + * + * @param string $database + * @return bool + */ + public function db_select($database = '') + { + if ($database === '') + { + $database = $this->database; + } + + if (FALSE !== $this->simple_query('USE '.$this->escape_identifiers($database))) + { + $this->database = $database; + $this->data_cache = array(); + return TRUE; + } + + return FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Begin Transaction + * + * @return bool + */ + protected function _trans_begin() + { + $this->conn_id->setAttribute(PDO::ATTR_AUTOCOMMIT, FALSE); + return $this->conn_id->beginTransaction(); + } + + // -------------------------------------------------------------------- + + /** + * Commit Transaction + * + * @return bool + */ + protected function _trans_commit() + { + if ($this->conn_id->commit()) + { + $this->conn_id->setAttribute(PDO::ATTR_AUTOCOMMIT, TRUE); + return TRUE; + } + + return FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Rollback Transaction + * + * @return bool + */ + protected function _trans_rollback() + { + if ($this->conn_id->rollBack()) + { + $this->conn_id->setAttribute(PDO::ATTR_AUTOCOMMIT, TRUE); + return TRUE; + } + + return FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Show table query + * + * Generates a platform-specific query string so that the table names can be fetched + * + * @param bool $prefix_limit + * @return string + */ + protected function _list_tables($prefix_limit = FALSE) + { + $sql = 'SHOW TABLES'; + + if ($prefix_limit === TRUE && $this->dbprefix !== '') + { + return $sql." LIKE '".$this->escape_like_str($this->dbprefix)."%'"; + } + + return $sql; + } + + // -------------------------------------------------------------------- + + /** + * Show column query + * + * Generates a platform-specific query string so that the column names can be fetched + * + * @param string $table + * @return string + */ + protected function _list_columns($table = '') + { + return 'SHOW COLUMNS FROM '.$this->protect_identifiers($table, TRUE, NULL, FALSE); + } + + // -------------------------------------------------------------------- + + /** + * Returns an object with field data + * + * @param string $table + * @return array + */ + public function field_data($table) + { + if (($query = $this->query('SHOW COLUMNS FROM '.$this->protect_identifiers($table, TRUE, NULL, FALSE))) === FALSE) + { + return FALSE; + } + $query = $query->result_object(); + + $retval = array(); + for ($i = 0, $c = count($query); $i < $c; $i++) + { + $retval[$i] = new stdClass(); + $retval[$i]->name = $query[$i]->Field; + + sscanf($query[$i]->Type, '%[a-z](%d)', + $retval[$i]->type, + $retval[$i]->max_length + ); + + $retval[$i]->default = $query[$i]->Default; + $retval[$i]->primary_key = (int) ($query[$i]->Key === 'PRI'); + } + + return $retval; + } + + // -------------------------------------------------------------------- + + /** + * Truncate statement + * + * Generates a platform-specific truncate string from the supplied data + * + * If the database does not support the TRUNCATE statement, + * then this method maps to 'DELETE FROM table' + * + * @param string $table + * @return string + */ + protected function _truncate($table) + { + return 'TRUNCATE '.$table; + } + + // -------------------------------------------------------------------- + + /** + * FROM tables + * + * Groups tables in FROM clauses if needed, so there is no confusion + * about operator precedence. + * + * @return string + */ + protected function _from_tables() + { + if ( ! empty($this->qb_join) && count($this->qb_from) > 1) + { + return '('.implode(', ', $this->qb_from).')'; + } + + return implode(', ', $this->qb_from); + } + +} diff --git a/www/system/database/drivers/pdo/subdrivers/pdo_mysql_forge.php b/www/system/database/drivers/pdo/subdrivers/pdo_mysql_forge.php new file mode 100644 index 0000000..629e0a9 --- /dev/null +++ b/www/system/database/drivers/pdo/subdrivers/pdo_mysql_forge.php @@ -0,0 +1,256 @@ +db->char_set) && ! strpos($sql, 'CHARACTER SET') && ! strpos($sql, 'CHARSET')) + { + $sql .= ' DEFAULT CHARACTER SET = '.$this->db->char_set; + } + + if ( ! empty($this->db->dbcollat) && ! strpos($sql, 'COLLATE')) + { + $sql .= ' COLLATE = '.$this->db->dbcollat; + } + + return $sql; + } + + // -------------------------------------------------------------------- + + /** + * ALTER TABLE + * + * @param string $alter_type ALTER type + * @param string $table Table name + * @param mixed $field Column definition + * @return string|string[] + */ + protected function _alter_table($alter_type, $table, $field) + { + if ($alter_type === 'DROP') + { + return parent::_alter_table($alter_type, $table, $field); + } + + $sql = 'ALTER TABLE '.$this->db->escape_identifiers($table); + for ($i = 0, $c = count($field); $i < $c; $i++) + { + if ($field[$i]['_literal'] !== FALSE) + { + $field[$i] = ($alter_type === 'ADD') + ? "\n\tADD ".$field[$i]['_literal'] + : "\n\tMODIFY ".$field[$i]['_literal']; + } + else + { + if ($alter_type === 'ADD') + { + $field[$i]['_literal'] = "\n\tADD "; + } + else + { + $field[$i]['_literal'] = empty($field[$i]['new_name']) ? "\n\tMODIFY " : "\n\tCHANGE "; + } + + $field[$i] = $field[$i]['_literal'].$this->_process_column($field[$i]); + } + } + + return array($sql.implode(',', $field)); + } + + // -------------------------------------------------------------------- + + /** + * Process column + * + * @param array $field + * @return string + */ + protected function _process_column($field) + { + $extra_clause = isset($field['after']) + ? ' AFTER '.$this->db->escape_identifiers($field['after']) : ''; + + if (empty($extra_clause) && isset($field['first']) && $field['first'] === TRUE) + { + $extra_clause = ' FIRST'; + } + + return $this->db->escape_identifiers($field['name']) + .(empty($field['new_name']) ? '' : ' '.$this->db->escape_identifiers($field['new_name'])) + .' '.$field['type'].$field['length'] + .$field['unsigned'] + .$field['null'] + .$field['default'] + .$field['auto_increment'] + .$field['unique'] + .(empty($field['comment']) ? '' : ' COMMENT '.$field['comment']) + .$extra_clause; + } + + // -------------------------------------------------------------------- + + /** + * Process indexes + * + * @param string $table (ignored) + * @return string + */ + protected function _process_indexes($table) + { + $sql = ''; + + for ($i = 0, $c = count($this->keys); $i < $c; $i++) + { + if (is_array($this->keys[$i])) + { + for ($i2 = 0, $c2 = count($this->keys[$i]); $i2 < $c2; $i2++) + { + if ( ! isset($this->fields[$this->keys[$i][$i2]])) + { + unset($this->keys[$i][$i2]); + continue; + } + } + } + elseif ( ! isset($this->fields[$this->keys[$i]])) + { + unset($this->keys[$i]); + continue; + } + + is_array($this->keys[$i]) OR $this->keys[$i] = array($this->keys[$i]); + + $sql .= ",\n\tKEY ".$this->db->escape_identifiers(implode('_', $this->keys[$i])) + .' ('.implode(', ', $this->db->escape_identifiers($this->keys[$i])).')'; + } + + $this->keys = array(); + + return $sql; + } + +} diff --git a/www/system/database/drivers/pdo/subdrivers/pdo_oci_driver.php b/www/system/database/drivers/pdo/subdrivers/pdo_oci_driver.php new file mode 100644 index 0000000..fef7a9a --- /dev/null +++ b/www/system/database/drivers/pdo/subdrivers/pdo_oci_driver.php @@ -0,0 +1,326 @@ +dsn)) + { + $this->dsn = 'oci:dbname='; + + // Oracle has a slightly different PDO DSN format (Easy Connect), + // which also supports pre-defined DSNs. + if (empty($this->hostname) && empty($this->port)) + { + $this->dsn .= $this->database; + } + else + { + $this->dsn .= '//'.(empty($this->hostname) ? '127.0.0.1' : $this->hostname) + .(empty($this->port) ? '' : ':'.$this->port).'/'; + + empty($this->database) OR $this->dsn .= $this->database; + } + + empty($this->char_set) OR $this->dsn .= ';charset='.$this->char_set; + } + elseif ( ! empty($this->char_set) && strpos($this->dsn, 'charset=', 4) === FALSE) + { + $this->dsn .= ';charset='.$this->char_set; + } + } + + // -------------------------------------------------------------------- + + /** + * Database version number + * + * @return string + */ + public function version() + { + if (isset($this->data_cache['version'])) + { + return $this->data_cache['version']; + } + + $version_string = parent::version(); + if (preg_match('#Release\s(?\d+(?:\.\d+)+)#', $version_string, $match)) + { + return $this->data_cache['version'] = $match[1]; + } + + return FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Show table query + * + * Generates a platform-specific query string so that the table names can be fetched + * + * @param bool $prefix_limit + * @return string + */ + protected function _list_tables($prefix_limit = FALSE) + { + $sql = 'SELECT "TABLE_NAME" FROM "ALL_TABLES"'; + + if ($prefix_limit === TRUE && $this->dbprefix !== '') + { + return $sql.' WHERE "TABLE_NAME" LIKE \''.$this->escape_like_str($this->dbprefix)."%' " + .sprintf($this->_like_escape_str, $this->_like_escape_chr); + } + + return $sql; + } + + // -------------------------------------------------------------------- + + /** + * Show column query + * + * Generates a platform-specific query string so that the column names can be fetched + * + * @param string $table + * @return string + */ + protected function _list_columns($table = '') + { + if (strpos($table, '.') !== FALSE) + { + sscanf($table, '%[^.].%s', $owner, $table); + } + else + { + $owner = $this->username; + } + + return 'SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS + WHERE UPPER(OWNER) = '.$this->escape(strtoupper($owner)).' + AND UPPER(TABLE_NAME) = '.$this->escape(strtoupper($table)); + } + + // -------------------------------------------------------------------- + + /** + * Returns an object with field data + * + * @param string $table + * @return array + */ + public function field_data($table) + { + if (strpos($table, '.') !== FALSE) + { + sscanf($table, '%[^.].%s', $owner, $table); + } + else + { + $owner = $this->username; + } + + $sql = 'SELECT COLUMN_NAME, DATA_TYPE, CHAR_LENGTH, DATA_PRECISION, DATA_LENGTH, DATA_DEFAULT, NULLABLE + FROM ALL_TAB_COLUMNS + WHERE UPPER(OWNER) = '.$this->escape(strtoupper($owner)).' + AND UPPER(TABLE_NAME) = '.$this->escape(strtoupper($table)); + + if (($query = $this->query($sql)) === FALSE) + { + return FALSE; + } + $query = $query->result_object(); + + $retval = array(); + for ($i = 0, $c = count($query); $i < $c; $i++) + { + $retval[$i] = new stdClass(); + $retval[$i]->name = $query[$i]->COLUMN_NAME; + $retval[$i]->type = $query[$i]->DATA_TYPE; + + $length = ($query[$i]->CHAR_LENGTH > 0) + ? $query[$i]->CHAR_LENGTH : $query[$i]->DATA_PRECISION; + if ($length === NULL) + { + $length = $query[$i]->DATA_LENGTH; + } + $retval[$i]->max_length = $length; + + $default = $query[$i]->DATA_DEFAULT; + if ($default === NULL && $query[$i]->NULLABLE === 'N') + { + $default = ''; + } + $retval[$i]->default = $query[$i]->COLUMN_DEFAULT; + } + + return $retval; + } + + // -------------------------------------------------------------------- + + /** + * Insert batch statement + * + * @param string $table Table name + * @param array $keys INSERT keys + * @param array $values INSERT values + * @return string + */ + protected function _insert_batch($table, $keys, $values) + { + $keys = implode(', ', $keys); + $sql = "INSERT ALL\n"; + + for ($i = 0, $c = count($values); $i < $c; $i++) + { + $sql .= ' INTO '.$table.' ('.$keys.') VALUES '.$values[$i]."\n"; + } + + return $sql.'SELECT * FROM dual'; + } + + // -------------------------------------------------------------------- + + /** + * Delete statement + * + * Generates a platform-specific delete string from the supplied data + * + * @param string $table + * @return string + */ + protected function _delete($table) + { + if ($this->qb_limit) + { + $this->where('rownum <= ',$this->qb_limit, FALSE); + $this->qb_limit = FALSE; + } + + return parent::_delete($table); + } + + // -------------------------------------------------------------------- + + /** + * LIMIT + * + * Generates a platform-specific LIMIT clause + * + * @param string $sql SQL Query + * @return string + */ + protected function _limit($sql) + { + if (version_compare($this->version(), '12.1', '>=')) + { + // OFFSET-FETCH can be used only with the ORDER BY clause + empty($this->qb_orderby) && $sql .= ' ORDER BY 1'; + + return $sql.' OFFSET '.(int) $this->qb_offset.' ROWS FETCH NEXT '.$this->qb_limit.' ROWS ONLY'; + } + + return 'SELECT * FROM (SELECT inner_query.*, rownum rnum FROM ('.$sql.') inner_query WHERE rownum < '.($this->qb_offset + $this->qb_limit + 1).')' + .($this->qb_offset ? ' WHERE rnum >= '.($this->qb_offset + 1): ''); + } + +} diff --git a/www/system/database/drivers/pdo/subdrivers/pdo_oci_forge.php b/www/system/database/drivers/pdo/subdrivers/pdo_oci_forge.php new file mode 100644 index 0000000..ad26561 --- /dev/null +++ b/www/system/database/drivers/pdo/subdrivers/pdo_oci_forge.php @@ -0,0 +1,176 @@ +db->escape_identifiers($table); + $sqls = array(); + for ($i = 0, $c = count($field); $i < $c; $i++) + { + if ($field[$i]['_literal'] !== FALSE) + { + $field[$i] = "\n\t".$field[$i]['_literal']; + } + else + { + $field[$i]['_literal'] = "\n\t".$this->_process_column($field[$i]); + + if ( ! empty($field[$i]['comment'])) + { + $sqls[] = 'COMMENT ON COLUMN ' + .$this->db->escape_identifiers($table).'.'.$this->db->escape_identifiers($field[$i]['name']) + .' IS '.$field[$i]['comment']; + } + + if ($alter_type === 'MODIFY' && ! empty($field[$i]['new_name'])) + { + $sqls[] = $sql.' RENAME COLUMN '.$this->db->escape_identifiers($field[$i]['name']) + .' TO '.$this->db->escape_identifiers($field[$i]['new_name']); + } + } + } + + $sql .= ' '.$alter_type.' '; + $sql .= (count($field) === 1) + ? $field[0] + : '('.implode(',', $field).')'; + + // RENAME COLUMN must be executed after MODIFY + array_unshift($sqls, $sql); + return $sql; + } + + // -------------------------------------------------------------------- + + /** + * Field attribute AUTO_INCREMENT + * + * @param array &$attributes + * @param array &$field + * @return void + */ + protected function _attr_auto_increment(&$attributes, &$field) + { + // Not supported - sequences and triggers must be used instead + } + + /** + * Field attribute TYPE + * + * Performs a data type mapping between different databases. + * + * @param array &$attributes + * @return void + */ + protected function _attr_type(&$attributes) + { + switch (strtoupper($attributes['TYPE'])) + { + case 'TINYINT': + $attributes['TYPE'] = 'NUMBER'; + return; + case 'MEDIUMINT': + $attributes['TYPE'] = 'NUMBER'; + return; + case 'INT': + $attributes['TYPE'] = 'NUMBER'; + return; + case 'BIGINT': + $attributes['TYPE'] = 'NUMBER'; + return; + default: return; + } + } +} diff --git a/www/system/database/drivers/pdo/subdrivers/pdo_odbc_driver.php b/www/system/database/drivers/pdo/subdrivers/pdo_odbc_driver.php new file mode 100644 index 0000000..4890988 --- /dev/null +++ b/www/system/database/drivers/pdo/subdrivers/pdo_odbc_driver.php @@ -0,0 +1,229 @@ +dsn)) + { + $this->dsn = 'odbc:'; + + // Pre-defined DSN + if (empty($this->hostname) && empty($this->HOSTNAME) && empty($this->port) && empty($this->PORT)) + { + if (isset($this->DSN)) + { + $this->dsn .= 'DSN='.$this->DSN; + } + elseif ( ! empty($this->database)) + { + $this->dsn .= 'DSN='.$this->database; + } + + return; + } + + // If the DSN is not pre-configured - try to build an IBM DB2 connection string + $this->dsn .= 'DRIVER='.(isset($this->DRIVER) ? '{'.$this->DRIVER.'}' : '{IBM DB2 ODBC DRIVER}').';'; + + if (isset($this->DATABASE)) + { + $this->dsn .= 'DATABASE='.$this->DATABASE.';'; + } + elseif ( ! empty($this->database)) + { + $this->dsn .= 'DATABASE='.$this->database.';'; + } + + if (isset($this->HOSTNAME)) + { + $this->dsn .= 'HOSTNAME='.$this->HOSTNAME.';'; + } + else + { + $this->dsn .= 'HOSTNAME='.(empty($this->hostname) ? '127.0.0.1;' : $this->hostname.';'); + } + + if (isset($this->PORT)) + { + $this->dsn .= 'PORT='.$this->port.';'; + } + elseif ( ! empty($this->port)) + { + $this->dsn .= ';PORT='.$this->port.';'; + } + + $this->dsn .= 'PROTOCOL='.(isset($this->PROTOCOL) ? $this->PROTOCOL.';' : 'TCPIP;'); + } + } + + // -------------------------------------------------------------------- + + /** + * Platform-dependent string escape + * + * @param string + * @return string + */ + protected function _escape_str($str) + { + $this->display_error('db_unsupported_feature'); + } + + // -------------------------------------------------------------------- + + /** + * Determines if a query is a "write" type. + * + * @param string An SQL query string + * @return bool + */ + public function is_write_type($sql) + { + if (preg_match('#^(INSERT|UPDATE).*RETURNING\s.+(\,\s?.+)*$#is', $sql)) + { + return FALSE; + } + + return parent::is_write_type($sql); + } + + // -------------------------------------------------------------------- + + /** + * Show table query + * + * Generates a platform-specific query string so that the table names can be fetched + * + * @param bool $prefix_limit + * @return string + */ + protected function _list_tables($prefix_limit = FALSE) + { + $sql = "SELECT table_name FROM information_schema.tables WHERE table_schema = '".$this->schema."'"; + + if ($prefix_limit !== FALSE && $this->dbprefix !== '') + { + return $sql." AND table_name LIKE '".$this->escape_like_str($this->dbprefix)."%' " + .sprintf($this->_like_escape_str, $this->_like_escape_chr); + } + + return $sql; + } + + // -------------------------------------------------------------------- + + /** + * Show column query + * + * Generates a platform-specific query string so that the column names can be fetched + * + * @param string $table + * @return string + */ + protected function _list_columns($table = '') + { + return 'SELECT column_name FROM information_schema.columns WHERE table_name = '.$this->escape($table); + } +} diff --git a/www/system/database/drivers/pdo/subdrivers/pdo_odbc_forge.php b/www/system/database/drivers/pdo/subdrivers/pdo_odbc_forge.php new file mode 100644 index 0000000..02b6a2a --- /dev/null +++ b/www/system/database/drivers/pdo/subdrivers/pdo_odbc_forge.php @@ -0,0 +1,70 @@ +dsn)) + { + $this->dsn = 'pgsql:host='.(empty($this->hostname) ? '127.0.0.1' : $this->hostname); + + empty($this->port) OR $this->dsn .= ';port='.$this->port; + empty($this->database) OR $this->dsn .= ';dbname='.$this->database; + + if ( ! empty($this->username)) + { + $this->dsn .= ';username='.$this->username; + empty($this->password) OR $this->dsn .= ';password='.$this->password; + } + } + } + + // -------------------------------------------------------------------- + + /** + * Database connection + * + * @param bool $persistent + * @return object + */ + public function db_connect($persistent = FALSE) + { + $this->conn_id = parent::db_connect($persistent); + + if (is_object($this->conn_id) && ! empty($this->schema)) + { + $this->simple_query('SET search_path TO '.$this->schema.',public'); + } + + return $this->conn_id; + } + + // -------------------------------------------------------------------- + + /** + * Insert ID + * + * @param string $name + * @return int + */ + public function insert_id($name = NULL) + { + if ($name === NULL && version_compare($this->version(), '8.1', '>=')) + { + $query = $this->query('SELECT LASTVAL() AS ins_id'); + $query = $query->row(); + return $query->ins_id; + } + + return $this->conn_id->lastInsertId($name); + } + + // -------------------------------------------------------------------- + + /** + * Determines if a query is a "write" type. + * + * @param string An SQL query string + * @return bool + */ + public function is_write_type($sql) + { + if (preg_match('#^(INSERT|UPDATE).*RETURNING\s.+(\,\s?.+)*$#is', $sql)) + { + return FALSE; + } + + return parent::is_write_type($sql); + } + + // -------------------------------------------------------------------- + + /** + * "Smart" Escape String + * + * Escapes data based on type + * + * @param string $str + * @return mixed + */ + public function escape($str) + { + if (is_bool($str)) + { + return ($str) ? 'TRUE' : 'FALSE'; + } + + return parent::escape($str); + } + + // -------------------------------------------------------------------- + + /** + * ORDER BY + * + * @param string $orderby + * @param string $direction ASC, DESC or RANDOM + * @param bool $escape + * @return object + */ + public function order_by($orderby, $direction = '', $escape = NULL) + { + $direction = strtoupper(trim($direction)); + if ($direction === 'RANDOM') + { + if ( ! is_float($orderby) && ctype_digit((string) $orderby)) + { + $orderby = ($orderby > 1) + ? (float) '0.'.$orderby + : (float) $orderby; + } + + if (is_float($orderby)) + { + $this->simple_query('SET SEED '.$orderby); + } + + $orderby = $this->_random_keyword[0]; + $direction = ''; + $escape = FALSE; + } + + return parent::order_by($orderby, $direction, $escape); + } + + // -------------------------------------------------------------------- + + /** + * Show table query + * + * Generates a platform-specific query string so that the table names can be fetched + * + * @param bool $prefix_limit + * @return string + */ + protected function _list_tables($prefix_limit = FALSE) + { + $sql = 'SELECT "table_name" FROM "information_schema"."tables" WHERE "table_schema" = \''.$this->schema."'"; + + if ($prefix_limit === TRUE && $this->dbprefix !== '') + { + return $sql.' AND "table_name" LIKE \'' + .$this->escape_like_str($this->dbprefix)."%' " + .sprintf($this->_like_escape_str, $this->_like_escape_chr); + } + + return $sql; + } + + // -------------------------------------------------------------------- + + /** + * List column query + * + * Generates a platform-specific query string so that the column names can be fetched + * + * @param string $table + * @return string + */ + protected function _list_columns($table = '') + { + return 'SELECT "column_name" + FROM "information_schema"."columns" + WHERE LOWER("table_name") = '.$this->escape(strtolower($table)); + } + + // -------------------------------------------------------------------- + + /** + * Returns an object with field data + * + * @param string $table + * @return array + */ + public function field_data($table) + { + $sql = 'SELECT "column_name", "data_type", "character_maximum_length", "numeric_precision", "column_default" + FROM "information_schema"."columns" + WHERE LOWER("table_name") = '.$this->escape(strtolower($table)); + + if (($query = $this->query($sql)) === FALSE) + { + return FALSE; + } + $query = $query->result_object(); + + $retval = array(); + for ($i = 0, $c = count($query); $i < $c; $i++) + { + $retval[$i] = new stdClass(); + $retval[$i]->name = $query[$i]->column_name; + $retval[$i]->type = $query[$i]->data_type; + $retval[$i]->max_length = ($query[$i]->character_maximum_length > 0) ? $query[$i]->character_maximum_length : $query[$i]->numeric_precision; + $retval[$i]->default = $query[$i]->column_default; + } + + return $retval; + } + + // -------------------------------------------------------------------- + + /** + * Update statement + * + * Generates a platform-specific update string from the supplied data + * + * @param string $table + * @param array $values + * @return string + */ + protected function _update($table, $values) + { + $this->qb_limit = FALSE; + $this->qb_orderby = array(); + return parent::_update($table, $values); + } + + // -------------------------------------------------------------------- + + /** + * Update_Batch statement + * + * Generates a platform-specific batch update string from the supplied data + * + * @param string $table Table name + * @param array $values Update data + * @param string $index WHERE key + * @return string + */ + protected function _update_batch($table, $values, $index) + { + $ids = array(); + foreach ($values as $key => $val) + { + $ids[] = $val[$index]['value']; + + foreach (array_keys($val) as $field) + { + if ($field !== $index) + { + $final[$val[$field]['field']][] = 'WHEN '.$val[$index]['value'].' THEN '.$val[$field]['value']; + } + } + } + + $cases = ''; + foreach ($final as $k => $v) + { + $cases .= $k.' = (CASE '.$val[$index]['field']."\n" + .implode("\n", $v)."\n" + .'ELSE '.$k.' END), '; + } + + $this->where($val[$index]['field'].' IN('.implode(',', $ids).')', NULL, FALSE); + + return 'UPDATE '.$table.' SET '.substr($cases, 0, -2).$this->_compile_wh('qb_where'); + } + + // -------------------------------------------------------------------- + + /** + * Delete statement + * + * Generates a platform-specific delete string from the supplied data + * + * @param string $table + * @return string + */ + protected function _delete($table) + { + $this->qb_limit = FALSE; + return parent::_delete($table); + } + + // -------------------------------------------------------------------- + + /** + * LIMIT + * + * Generates a platform-specific LIMIT clause + * + * @param string $sql SQL Query + * @return string + */ + protected function _limit($sql) + { + return $sql.' LIMIT '.$this->qb_limit.($this->qb_offset ? ' OFFSET '.$this->qb_offset : ''); + } + +} diff --git a/www/system/database/drivers/pdo/subdrivers/pdo_pgsql_forge.php b/www/system/database/drivers/pdo/subdrivers/pdo_pgsql_forge.php new file mode 100644 index 0000000..e5bfee6 --- /dev/null +++ b/www/system/database/drivers/pdo/subdrivers/pdo_pgsql_forge.php @@ -0,0 +1,210 @@ + 'INTEGER', + 'SMALLINT' => 'INTEGER', + 'INT' => 'BIGINT', + 'INT4' => 'BIGINT', + 'INTEGER' => 'BIGINT', + 'INT8' => 'NUMERIC', + 'BIGINT' => 'NUMERIC', + 'REAL' => 'DOUBLE PRECISION', + 'FLOAT' => 'DOUBLE PRECISION' + ); + + /** + * NULL value representation in CREATE/ALTER TABLE statements + * + * @var string + */ + protected $_null = 'NULL'; + + // -------------------------------------------------------------------- + + /** + * Class constructor + * + * @param object &$db Database object + * @return void + */ + public function __construct(&$db) + { + parent::__construct($db); + + if (version_compare($this->db->version(), '9.0', '>')) + { + $this->create_table_if = 'CREATE TABLE IF NOT EXISTS'; + } + } + + // -------------------------------------------------------------------- + + /** + * ALTER TABLE + * + * @param string $alter_type ALTER type + * @param string $table Table name + * @param mixed $field Column definition + * @return string|string[] + */ + protected function _alter_table($alter_type, $table, $field) + { + if (in_array($alter_type, array('DROP', 'ADD'), TRUE)) + { + return parent::_alter_table($alter_type, $table, $field); + } + + $sql = 'ALTER TABLE '.$this->db->escape_identifiers($table); + $sqls = array(); + for ($i = 0, $c = count($field); $i < $c; $i++) + { + if ($field[$i]['_literal'] !== FALSE) + { + return FALSE; + } + + if (version_compare($this->db->version(), '8', '>=') && isset($field[$i]['type'])) + { + $sqls[] = $sql.' ALTER COLUMN '.$this->db->escape_identifiers($field[$i]['name']) + .' TYPE '.$field[$i]['type'].$field[$i]['length']; + } + + if ( ! empty($field[$i]['default'])) + { + $sqls[] = $sql.' ALTER COLUMN '.$this->db->escape_identifiers($field[$i]['name']) + .' SET DEFAULT '.$field[$i]['default']; + } + + if (isset($field[$i]['null'])) + { + $sqls[] = $sql.' ALTER COLUMN '.$this->db->escape_identifiers($field[$i]['name']) + .($field[$i]['null'] === TRUE ? ' DROP NOT NULL' : ' SET NOT NULL'); + } + + if ( ! empty($field[$i]['new_name'])) + { + $sqls[] = $sql.' RENAME COLUMN '.$this->db->escape_identifiers($field[$i]['name']) + .' TO '.$this->db->escape_identifiers($field[$i]['new_name']); + } + + if ( ! empty($field[$i]['comment'])) + { + $sqls[] = 'COMMENT ON COLUMN ' + .$this->db->escape_identifiers($table).'.'.$this->db->escape_identifiers($field[$i]['name']) + .' IS '.$field[$i]['comment']; + } + } + + return $sqls; + } + + // -------------------------------------------------------------------- + + /** + * Field attribute TYPE + * + * Performs a data type mapping between different databases. + * + * @param array &$attributes + * @return void + */ + protected function _attr_type(&$attributes) + { + // Reset field lengths for data types that don't support it + if (isset($attributes['CONSTRAINT']) && stripos($attributes['TYPE'], 'int') !== FALSE) + { + $attributes['CONSTRAINT'] = NULL; + } + + switch (strtoupper($attributes['TYPE'])) + { + case 'TINYINT': + $attributes['TYPE'] = 'SMALLINT'; + $attributes['UNSIGNED'] = FALSE; + return; + case 'MEDIUMINT': + $attributes['TYPE'] = 'INTEGER'; + $attributes['UNSIGNED'] = FALSE; + return; + default: return; + } + } + + // -------------------------------------------------------------------- + + /** + * Field attribute AUTO_INCREMENT + * + * @param array &$attributes + * @param array &$field + * @return void + */ + protected function _attr_auto_increment(&$attributes, &$field) + { + if ( ! empty($attributes['AUTO_INCREMENT']) && $attributes['AUTO_INCREMENT'] === TRUE) + { + $field['type'] = ($field['type'] === 'NUMERIC') + ? 'BIGSERIAL' + : 'SERIAL'; + } + } + +} diff --git a/www/system/database/drivers/pdo/subdrivers/pdo_sqlite_driver.php b/www/system/database/drivers/pdo/subdrivers/pdo_sqlite_driver.php new file mode 100644 index 0000000..93871a9 --- /dev/null +++ b/www/system/database/drivers/pdo/subdrivers/pdo_sqlite_driver.php @@ -0,0 +1,219 @@ +dsn)) + { + $this->dsn = 'sqlite:'; + + if (empty($this->database) && empty($this->hostname)) + { + $this->database = ':memory:'; + } + + $this->database = empty($this->database) ? $this->hostname : $this->database; + } + } + + // -------------------------------------------------------------------- + + /** + * Show table query + * + * Generates a platform-specific query string so that the table names can be fetched + * + * @param bool $prefix_limit + * @return string + */ + protected function _list_tables($prefix_limit = FALSE) + { + $sql = 'SELECT "NAME" FROM "SQLITE_MASTER" WHERE "TYPE" = \'table\''; + + if ($prefix_limit === TRUE && $this->dbprefix !== '') + { + return $sql.' AND "NAME" LIKE \''.$this->escape_like_str($this->dbprefix)."%' " + .sprintf($this->_like_escape_str, $this->_like_escape_chr); + } + + return $sql; + } + + // -------------------------------------------------------------------- + + /** + * Fetch Field Names + * + * @param string $table Table name + * @return array + */ + public function list_fields($table) + { + // Is there a cached result? + if (isset($this->data_cache['field_names'][$table])) + { + return $this->data_cache['field_names'][$table]; + } + + if (($result = $this->query('PRAGMA TABLE_INFO('.$this->protect_identifiers($table, TRUE, NULL, FALSE).')')) === FALSE) + { + return FALSE; + } + + $this->data_cache['field_names'][$table] = array(); + foreach ($result->result_array() as $row) + { + $this->data_cache['field_names'][$table][] = $row['name']; + } + + return $this->data_cache['field_names'][$table]; + } + + // -------------------------------------------------------------------- + + /** + * Returns an object with field data + * + * @param string $table + * @return array + */ + public function field_data($table) + { + if (($query = $this->query('PRAGMA TABLE_INFO('.$this->protect_identifiers($table, TRUE, NULL, FALSE).')')) === FALSE) + { + return FALSE; + } + + $query = $query->result_array(); + if (empty($query)) + { + return FALSE; + } + + $retval = array(); + for ($i = 0, $c = count($query); $i < $c; $i++) + { + $retval[$i] = new stdClass(); + $retval[$i]->name = $query[$i]['name']; + $retval[$i]->type = $query[$i]['type']; + $retval[$i]->max_length = NULL; + $retval[$i]->default = $query[$i]['dflt_value']; + $retval[$i]->primary_key = isset($query[$i]['pk']) ? (int) $query[$i]['pk'] : 0; + } + + return $retval; + } + + // -------------------------------------------------------------------- + + /** + * Replace statement + * + * @param string $table Table name + * @param array $keys INSERT keys + * @param array $values INSERT values + * @return string + */ + protected function _replace($table, $keys, $values) + { + return 'INSERT OR '.parent::_replace($table, $keys, $values); + } + + // -------------------------------------------------------------------- + + /** + * Truncate statement + * + * Generates a platform-specific truncate string from the supplied data + * + * If the database does not support the TRUNCATE statement, + * then this method maps to 'DELETE FROM table' + * + * @param string $table + * @return string + */ + protected function _truncate($table) + { + return 'DELETE FROM '.$table; + } + +} diff --git a/www/system/database/drivers/pdo/subdrivers/pdo_sqlite_forge.php b/www/system/database/drivers/pdo/subdrivers/pdo_sqlite_forge.php new file mode 100644 index 0000000..67fe6ee --- /dev/null +++ b/www/system/database/drivers/pdo/subdrivers/pdo_sqlite_forge.php @@ -0,0 +1,238 @@ +db->version(), '3.3', '<')) + { + $this->_create_table_if = FALSE; + $this->_drop_table_if = FALSE; + } + } + + // -------------------------------------------------------------------- + + /** + * Create database + * + * @param string $db_name (ignored) + * @return bool + */ + public function create_database($db_name) + { + // In SQLite, a database is created when you connect to the database. + // We'll return TRUE so that an error isn't generated + return TRUE; + } + + // -------------------------------------------------------------------- + + /** + * Drop database + * + * @param string $db_name (ignored) + * @return bool + */ + public function drop_database($db_name) + { + // In SQLite, a database is dropped when we delete a file + if (file_exists($this->db->database)) + { + // We need to close the pseudo-connection first + $this->db->close(); + if ( ! @unlink($this->db->database)) + { + return $this->db->db_debug ? $this->db->display_error('db_unable_to_drop') : FALSE; + } + elseif ( ! empty($this->db->data_cache['db_names'])) + { + $key = array_search(strtolower($this->db->database), array_map('strtolower', $this->db->data_cache['db_names']), TRUE); + if ($key !== FALSE) + { + unset($this->db->data_cache['db_names'][$key]); + } + } + + return TRUE; + } + + return $this->db->db_debug ? $this->db->display_error('db_unable_to_drop') : FALSE; + } + + // -------------------------------------------------------------------- + + /** + * ALTER TABLE + * + * @param string $alter_type ALTER type + * @param string $table Table name + * @param mixed $field Column definition + * @return string|string[] + */ + protected function _alter_table($alter_type, $table, $field) + { + if ($alter_type === 'DROP' OR $alter_type === 'CHANGE') + { + // drop_column(): + // BEGIN TRANSACTION; + // CREATE TEMPORARY TABLE t1_backup(a,b); + // INSERT INTO t1_backup SELECT a,b FROM t1; + // DROP TABLE t1; + // CREATE TABLE t1(a,b); + // INSERT INTO t1 SELECT a,b FROM t1_backup; + // DROP TABLE t1_backup; + // COMMIT; + + return FALSE; + } + + return parent::_alter_table($alter_type, $table, $field); + } + + // -------------------------------------------------------------------- + + /** + * Process column + * + * @param array $field + * @return string + */ + protected function _process_column($field) + { + return $this->db->escape_identifiers($field['name']) + .' '.$field['type'] + .$field['auto_increment'] + .$field['null'] + .$field['unique'] + .$field['default']; + } + + // -------------------------------------------------------------------- + + /** + * Field attribute TYPE + * + * Performs a data type mapping between different databases. + * + * @param array &$attributes + * @return void + */ + protected function _attr_type(&$attributes) + { + switch (strtoupper($attributes['TYPE'])) + { + case 'ENUM': + case 'SET': + $attributes['TYPE'] = 'TEXT'; + return; + default: return; + } + } + + // -------------------------------------------------------------------- + + /** + * Field attribute AUTO_INCREMENT + * + * @param array &$attributes + * @param array &$field + * @return void + */ + protected function _attr_auto_increment(&$attributes, &$field) + { + if ( ! empty($attributes['AUTO_INCREMENT']) && $attributes['AUTO_INCREMENT'] === TRUE && stripos($field['type'], 'int') !== FALSE) + { + $field['type'] = 'INTEGER PRIMARY KEY'; + $field['default'] = ''; + $field['null'] = ''; + $field['unique'] = ''; + $field['auto_increment'] = ' AUTOINCREMENT'; + + $this->primary_keys = array(); + } + } + +} diff --git a/www/system/database/drivers/pdo/subdrivers/pdo_sqlsrv_driver.php b/www/system/database/drivers/pdo/subdrivers/pdo_sqlsrv_driver.php new file mode 100644 index 0000000..db10029 --- /dev/null +++ b/www/system/database/drivers/pdo/subdrivers/pdo_sqlsrv_driver.php @@ -0,0 +1,369 @@ +dsn)) + { + $this->dsn = 'sqlsrv:Server='.(empty($this->hostname) ? '127.0.0.1' : $this->hostname); + + empty($this->port) OR $this->dsn .= ','.$this->port; + empty($this->database) OR $this->dsn .= ';Database='.$this->database; + + // Some custom options + + if (isset($this->QuotedId)) + { + $this->dsn .= ';QuotedId='.$this->QuotedId; + $this->_quoted_identifier = (bool) $this->QuotedId; + } + + if (isset($this->ConnectionPooling)) + { + $this->dsn .= ';ConnectionPooling='.$this->ConnectionPooling; + } + + if ($this->encrypt === TRUE) + { + $this->dsn .= ';Encrypt=1'; + } + + if (isset($this->TraceOn)) + { + $this->dsn .= ';TraceOn='.$this->TraceOn; + } + + if (isset($this->TrustServerCertificate)) + { + $this->dsn .= ';TrustServerCertificate='.$this->TrustServerCertificate; + } + + empty($this->APP) OR $this->dsn .= ';APP='.$this->APP; + empty($this->Failover_Partner) OR $this->dsn .= ';Failover_Partner='.$this->Failover_Partner; + empty($this->LoginTimeout) OR $this->dsn .= ';LoginTimeout='.$this->LoginTimeout; + empty($this->MultipleActiveResultSets) OR $this->dsn .= ';MultipleActiveResultSets='.$this->MultipleActiveResultSets; + empty($this->TraceFile) OR $this->dsn .= ';TraceFile='.$this->TraceFile; + empty($this->WSID) OR $this->dsn .= ';WSID='.$this->WSID; + } + elseif (preg_match('/QuotedId=(0|1)/', $this->dsn, $match)) + { + $this->_quoted_identifier = (bool) $match[1]; + } + } + + // -------------------------------------------------------------------- + + /** + * Database connection + * + * @param bool $persistent + * @return object + */ + public function db_connect($persistent = FALSE) + { + if ( ! empty($this->char_set) && preg_match('/utf[^8]*8/i', $this->char_set)) + { + $this->options[PDO::SQLSRV_ENCODING_UTF8] = 1; + } + + $this->conn_id = parent::db_connect($persistent); + + if ( ! is_object($this->conn_id) OR is_bool($this->_quoted_identifier)) + { + return $this->conn_id; + } + + // Determine how identifiers are escaped + $query = $this->query('SELECT CASE WHEN (@@OPTIONS | 256) = @@OPTIONS THEN 1 ELSE 0 END AS qi'); + $query = $query->row_array(); + $this->_quoted_identifier = empty($query) ? FALSE : (bool) $query['qi']; + $this->_escape_char = ($this->_quoted_identifier) ? '"' : array('[', ']'); + + return $this->conn_id; + } + + // -------------------------------------------------------------------- + + /** + * Show table query + * + * Generates a platform-specific query string so that the table names can be fetched + * + * @param bool $prefix_limit + * @return string + */ + protected function _list_tables($prefix_limit = FALSE) + { + $sql = 'SELECT '.$this->escape_identifiers('name') + .' FROM '.$this->escape_identifiers('sysobjects') + .' WHERE '.$this->escape_identifiers('type')." = 'U'"; + + if ($prefix_limit === TRUE && $this->dbprefix !== '') + { + $sql .= ' AND '.$this->escape_identifiers('name')." LIKE '".$this->escape_like_str($this->dbprefix)."%' " + .sprintf($this->_like_escape_str, $this->_like_escape_chr); + } + + return $sql.' ORDER BY '.$this->escape_identifiers('name'); + } + + // -------------------------------------------------------------------- + + /** + * Show column query + * + * Generates a platform-specific query string so that the column names can be fetched + * + * @param string $table + * @return string + */ + protected function _list_columns($table = '') + { + return 'SELECT COLUMN_NAME + FROM INFORMATION_SCHEMA.Columns + WHERE UPPER(TABLE_NAME) = '.$this->escape(strtoupper($table)); + } + + // -------------------------------------------------------------------- + + /** + * Returns an object with field data + * + * @param string $table + * @return array + */ + public function field_data($table) + { + $sql = 'SELECT COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, NUMERIC_PRECISION, COLUMN_DEFAULT + FROM INFORMATION_SCHEMA.Columns + WHERE UPPER(TABLE_NAME) = '.$this->escape(strtoupper($table)); + + if (($query = $this->query($sql)) === FALSE) + { + return FALSE; + } + $query = $query->result_object(); + + $retval = array(); + for ($i = 0, $c = count($query); $i < $c; $i++) + { + $retval[$i] = new stdClass(); + $retval[$i]->name = $query[$i]->COLUMN_NAME; + $retval[$i]->type = $query[$i]->DATA_TYPE; + $retval[$i]->max_length = ($query[$i]->CHARACTER_MAXIMUM_LENGTH > 0) ? $query[$i]->CHARACTER_MAXIMUM_LENGTH : $query[$i]->NUMERIC_PRECISION; + $retval[$i]->default = $query[$i]->COLUMN_DEFAULT; + } + + return $retval; + } + + // -------------------------------------------------------------------- + + /** + * Update statement + * + * Generates a platform-specific update string from the supplied data + * + * @param string $table + * @param array $values + * @return string + */ + protected function _update($table, $values) + { + $this->qb_limit = FALSE; + $this->qb_orderby = array(); + return parent::_update($table, $values); + } + + // -------------------------------------------------------------------- + + /** + * Delete statement + * + * Generates a platform-specific delete string from the supplied data + * + * @param string $table + * @return string + */ + protected function _delete($table) + { + if ($this->qb_limit) + { + return 'WITH ci_delete AS (SELECT TOP '.$this->qb_limit.' * FROM '.$table.$this->_compile_wh('qb_where').') DELETE FROM ci_delete'; + } + + return parent::_delete($table); + } + + // -------------------------------------------------------------------- + + /** + * LIMIT + * + * Generates a platform-specific LIMIT clause + * + * @param string $sql SQL Query + * @return string + */ + protected function _limit($sql) + { + // As of SQL Server 2012 (11.0.*) OFFSET is supported + if (version_compare($this->version(), '11', '>=')) + { + // SQL Server OFFSET-FETCH can be used only with the ORDER BY clause + empty($this->qb_orderby) && $sql .= ' ORDER BY 1'; + + return $sql.' OFFSET '.(int) $this->qb_offset.' ROWS FETCH NEXT '.$this->qb_limit.' ROWS ONLY'; + } + + $limit = $this->qb_offset + $this->qb_limit; + + // An ORDER BY clause is required for ROW_NUMBER() to work + if ($this->qb_offset && ! empty($this->qb_orderby)) + { + $orderby = $this->_compile_order_by(); + + // We have to strip the ORDER BY clause + $sql = trim(substr($sql, 0, strrpos($sql, $orderby))); + + // Get the fields to select from our subquery, so that we can avoid CI_rownum appearing in the actual results + if (count($this->qb_select) === 0 OR strpos(implode(',', $this->qb_select), '*') !== FALSE) + { + $select = '*'; // Inevitable + } + else + { + // Use only field names and their aliases, everything else is out of our scope. + $select = array(); + $field_regexp = ($this->_quoted_identifier) + ? '("[^\"]+")' : '(\[[^\]]+\])'; + for ($i = 0, $c = count($this->qb_select); $i < $c; $i++) + { + $select[] = preg_match('/(?:\s|\.)'.$field_regexp.'$/i', $this->qb_select[$i], $m) + ? $m[1] : $this->qb_select[$i]; + } + $select = implode(', ', $select); + } + + return 'SELECT '.$select." FROM (\n\n" + .preg_replace('/^(SELECT( DISTINCT)?)/i', '\\1 ROW_NUMBER() OVER('.trim($orderby).') AS '.$this->escape_identifiers('CI_rownum').', ', $sql) + ."\n\n) ".$this->escape_identifiers('CI_subquery') + ."\nWHERE ".$this->escape_identifiers('CI_rownum').' BETWEEN '.($this->qb_offset + 1).' AND '.$limit; + } + + return preg_replace('/(^\SELECT (DISTINCT)?)/i','\\1 TOP '.$limit.' ', $sql); + } + + // -------------------------------------------------------------------- + + /** + * Insert batch statement + * + * Generates a platform-specific insert string from the supplied data. + * + * @param string $table Table name + * @param array $keys INSERT keys + * @param array $values INSERT values + * @return string|bool + */ + protected function _insert_batch($table, $keys, $values) + { + // Multiple-value inserts are only supported as of SQL Server 2008 + if (version_compare($this->version(), '10', '>=')) + { + return parent::_insert_batch($table, $keys, $values); + } + + return ($this->db_debug) ? $this->display_error('db_unsupported_feature') : FALSE; + } + +} diff --git a/www/system/database/drivers/pdo/subdrivers/pdo_sqlsrv_forge.php b/www/system/database/drivers/pdo/subdrivers/pdo_sqlsrv_forge.php new file mode 100644 index 0000000..4c9dbe6 --- /dev/null +++ b/www/system/database/drivers/pdo/subdrivers/pdo_sqlsrv_forge.php @@ -0,0 +1,149 @@ + 'SMALLINT', + 'SMALLINT' => 'INT', + 'INT' => 'BIGINT', + 'REAL' => 'FLOAT' + ); + + // -------------------------------------------------------------------- + + /** + * ALTER TABLE + * + * @param string $alter_type ALTER type + * @param string $table Table name + * @param mixed $field Column definition + * @return string|string[] + */ + protected function _alter_table($alter_type, $table, $field) + { + if (in_array($alter_type, array('ADD', 'DROP'), TRUE)) + { + return parent::_alter_table($alter_type, $table, $field); + } + + $sql = 'ALTER TABLE '.$this->db->escape_identifiers($table).' ALTER COLUMN '; + $sqls = array(); + for ($i = 0, $c = count($field); $i < $c; $i++) + { + $sqls[] = $sql.$this->_process_column($field[$i]); + } + + return $sqls; + } + + // -------------------------------------------------------------------- + + /** + * Field attribute TYPE + * + * Performs a data type mapping between different databases. + * + * @param array &$attributes + * @return void + */ + protected function _attr_type(&$attributes) + { + if (isset($attributes['CONSTRAINT']) && strpos($attributes['TYPE'], 'INT') !== FALSE) + { + unset($attributes['CONSTRAINT']); + } + + switch (strtoupper($attributes['TYPE'])) + { + case 'MEDIUMINT': + $attributes['TYPE'] = 'INTEGER'; + $attributes['UNSIGNED'] = FALSE; + return; + case 'INTEGER': + $attributes['TYPE'] = 'INT'; + return; + default: return; + } + } + + // -------------------------------------------------------------------- + + /** + * Field attribute AUTO_INCREMENT + * + * @param array &$attributes + * @param array &$field + * @return void + */ + protected function _attr_auto_increment(&$attributes, &$field) + { + if ( ! empty($attributes['AUTO_INCREMENT']) && $attributes['AUTO_INCREMENT'] === TRUE && stripos($field['type'], 'int') !== FALSE) + { + $field['auto_increment'] = ' IDENTITY(1,1)'; + } + } + +} diff --git a/www/system/database/drivers/postgre/index.html b/www/system/database/drivers/postgre/index.html new file mode 100644 index 0000000..b702fbc --- /dev/null +++ b/www/system/database/drivers/postgre/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

    Directory access is forbidden.

    + + + diff --git a/www/system/database/drivers/postgre/postgre_driver.php b/www/system/database/drivers/postgre/postgre_driver.php new file mode 100644 index 0000000..7fb258a --- /dev/null +++ b/www/system/database/drivers/postgre/postgre_driver.php @@ -0,0 +1,620 @@ +dsn)) + { + return; + } + + $this->dsn === '' OR $this->dsn = ''; + + if (strpos($this->hostname, '/') !== FALSE) + { + // If UNIX sockets are used, we shouldn't set a port + $this->port = ''; + } + + $this->hostname === '' OR $this->dsn = 'host='.$this->hostname.' '; + + if ( ! empty($this->port) && ctype_digit($this->port)) + { + $this->dsn .= 'port='.$this->port.' '; + } + + if ($this->username !== '') + { + $this->dsn .= 'user='.$this->username.' '; + + /* An empty password is valid! + * + * $db['password'] = NULL must be done in order to ignore it. + */ + $this->password === NULL OR $this->dsn .= "password='".$this->password."' "; + } + + $this->database === '' OR $this->dsn .= 'dbname='.$this->database.' '; + + /* We don't have these options as elements in our standard configuration + * array, but they might be set by parse_url() if the configuration was + * provided via string. Example: + * + * postgre://username:password@localhost:5432/database?connect_timeout=5&sslmode=1 + */ + foreach (array('connect_timeout', 'options', 'sslmode', 'service') as $key) + { + if (isset($this->$key) && is_string($this->$key) && $this->$key !== '') + { + $this->dsn .= $key."='".$this->$key."' "; + } + } + + $this->dsn = rtrim($this->dsn); + } + + // -------------------------------------------------------------------- + + /** + * Database connection + * + * @param bool $persistent + * @return resource + */ + public function db_connect($persistent = FALSE) + { + $this->conn_id = ($persistent === TRUE) + ? pg_pconnect($this->dsn) + : pg_connect($this->dsn); + + if ($this->conn_id !== FALSE) + { + if ($persistent === TRUE + && pg_connection_status($this->conn_id) === PGSQL_CONNECTION_BAD + && pg_ping($this->conn_id) === FALSE + ) + { + return FALSE; + } + + empty($this->schema) OR $this->simple_query('SET search_path TO '.$this->schema.',public'); + } + + return $this->conn_id; + } + + // -------------------------------------------------------------------- + + /** + * Reconnect + * + * Keep / reestablish the db connection if no queries have been + * sent for a length of time exceeding the server's idle timeout + * + * @return void + */ + public function reconnect() + { + if (pg_ping($this->conn_id) === FALSE) + { + $this->conn_id = FALSE; + } + } + + // -------------------------------------------------------------------- + + /** + * Set client character set + * + * @param string $charset + * @return bool + */ + protected function _db_set_charset($charset) + { + return (pg_set_client_encoding($this->conn_id, $charset) === 0); + } + + // -------------------------------------------------------------------- + + /** + * Database version number + * + * @return string + */ + public function version() + { + if (isset($this->data_cache['version'])) + { + return $this->data_cache['version']; + } + + if ( ! $this->conn_id OR ($pg_version = pg_version($this->conn_id)) === FALSE) + { + return FALSE; + } + + /* If PHP was compiled with PostgreSQL lib versions earlier + * than 7.4, pg_version() won't return the server version + * and so we'll have to fall back to running a query in + * order to get it. + */ + return isset($pg_version['server']) + ? $this->data_cache['version'] = $pg_version['server'] + : parent::version(); + } + + // -------------------------------------------------------------------- + + /** + * Execute the query + * + * @param string $sql an SQL query + * @return resource + */ + protected function _execute($sql) + { + return pg_query($this->conn_id, $sql); + } + + // -------------------------------------------------------------------- + + /** + * Begin Transaction + * + * @return bool + */ + protected function _trans_begin() + { + return (bool) pg_query($this->conn_id, 'BEGIN'); + } + + // -------------------------------------------------------------------- + + /** + * Commit Transaction + * + * @return bool + */ + protected function _trans_commit() + { + return (bool) pg_query($this->conn_id, 'COMMIT'); + } + + // -------------------------------------------------------------------- + + /** + * Rollback Transaction + * + * @return bool + */ + protected function _trans_rollback() + { + return (bool) pg_query($this->conn_id, 'ROLLBACK'); + } + + // -------------------------------------------------------------------- + + /** + * Determines if a query is a "write" type. + * + * @param string An SQL query string + * @return bool + */ + public function is_write_type($sql) + { + if (preg_match('#^(INSERT|UPDATE).*RETURNING\s.+(\,\s?.+)*$#is', $sql)) + { + return FALSE; + } + + return parent::is_write_type($sql); + } + + // -------------------------------------------------------------------- + + /** + * Platform-dependent string escape + * + * @param string + * @return string + */ + protected function _escape_str($str) + { + return pg_escape_string($this->conn_id, $str); + } + + // -------------------------------------------------------------------- + + /** + * "Smart" Escape String + * + * Escapes data based on type + * + * @param string $str + * @return mixed + */ + public function escape($str) + { + if (is_php('5.4.4') && (is_string($str) OR (is_object($str) && method_exists($str, '__toString')))) + { + return pg_escape_literal($this->conn_id, $str); + } + elseif (is_bool($str)) + { + return ($str) ? 'TRUE' : 'FALSE'; + } + + return parent::escape($str); + } + + // -------------------------------------------------------------------- + + /** + * Affected Rows + * + * @return int + */ + public function affected_rows() + { + return pg_affected_rows($this->result_id); + } + + // -------------------------------------------------------------------- + + /** + * Insert ID + * + * @return string + */ + public function insert_id() + { + $v = pg_version($this->conn_id); + $v = isset($v['server']) ? $v['server'] : 0; // 'server' key is only available since PosgreSQL 7.4 + + $table = (func_num_args() > 0) ? func_get_arg(0) : NULL; + $column = (func_num_args() > 1) ? func_get_arg(1) : NULL; + + if ($table === NULL && $v >= '8.1') + { + $sql = 'SELECT LASTVAL() AS ins_id'; + } + elseif ($table !== NULL) + { + if ($column !== NULL && $v >= '8.0') + { + $sql = 'SELECT pg_get_serial_sequence(\''.$table."', '".$column."') AS seq"; + $query = $this->query($sql); + $query = $query->row(); + $seq = $query->seq; + } + else + { + // seq_name passed in table parameter + $seq = $table; + } + + $sql = 'SELECT CURRVAL(\''.$seq."') AS ins_id"; + } + else + { + return pg_last_oid($this->result_id); + } + + $query = $this->query($sql); + $query = $query->row(); + return (int) $query->ins_id; + } + + // -------------------------------------------------------------------- + + /** + * Show table query + * + * Generates a platform-specific query string so that the table names can be fetched + * + * @param bool $prefix_limit + * @return string + */ + protected function _list_tables($prefix_limit = FALSE) + { + $sql = 'SELECT "table_name" FROM "information_schema"."tables" WHERE "table_schema" = \''.$this->schema."'"; + + if ($prefix_limit !== FALSE && $this->dbprefix !== '') + { + return $sql.' AND "table_name" LIKE \'' + .$this->escape_like_str($this->dbprefix)."%' " + .sprintf($this->_like_escape_str, $this->_like_escape_chr); + } + + return $sql; + } + + // -------------------------------------------------------------------- + + /** + * List column query + * + * Generates a platform-specific query string so that the column names can be fetched + * + * @param string $table + * @return string + */ + protected function _list_columns($table = '') + { + return 'SELECT "column_name" + FROM "information_schema"."columns" + WHERE LOWER("table_name") = '.$this->escape(strtolower($table)); + } + + // -------------------------------------------------------------------- + + /** + * Returns an object with field data + * + * @param string $table + * @return array + */ + public function field_data($table) + { + $sql = 'SELECT "column_name", "data_type", "character_maximum_length", "numeric_precision", "column_default" + FROM "information_schema"."columns" + WHERE LOWER("table_name") = '.$this->escape(strtolower($table)); + + if (($query = $this->query($sql)) === FALSE) + { + return FALSE; + } + $query = $query->result_object(); + + $retval = array(); + for ($i = 0, $c = count($query); $i < $c; $i++) + { + $retval[$i] = new stdClass(); + $retval[$i]->name = $query[$i]->column_name; + $retval[$i]->type = $query[$i]->data_type; + $retval[$i]->max_length = ($query[$i]->character_maximum_length > 0) ? $query[$i]->character_maximum_length : $query[$i]->numeric_precision; + $retval[$i]->default = $query[$i]->column_default; + } + + return $retval; + } + + // -------------------------------------------------------------------- + + /** + * Error + * + * Returns an array containing code and message of the last + * database error that has occurred. + * + * @return array + */ + public function error() + { + return array('code' => '', 'message' => pg_last_error($this->conn_id)); + } + + // -------------------------------------------------------------------- + + /** + * ORDER BY + * + * @param string $orderby + * @param string $direction ASC, DESC or RANDOM + * @param bool $escape + * @return object + */ + public function order_by($orderby, $direction = '', $escape = NULL) + { + $direction = strtoupper(trim($direction)); + if ($direction === 'RANDOM') + { + if ( ! is_float($orderby) && ctype_digit((string) $orderby)) + { + $orderby = ($orderby > 1) + ? (float) '0.'.$orderby + : (float) $orderby; + } + + if (is_float($orderby)) + { + $this->simple_query('SET SEED '.$orderby); + } + + $orderby = $this->_random_keyword[0]; + $direction = ''; + $escape = FALSE; + } + + return parent::order_by($orderby, $direction, $escape); + } + + // -------------------------------------------------------------------- + + /** + * Update statement + * + * Generates a platform-specific update string from the supplied data + * + * @param string $table + * @param array $values + * @return string + */ + protected function _update($table, $values) + { + $this->qb_limit = FALSE; + $this->qb_orderby = array(); + return parent::_update($table, $values); + } + + // -------------------------------------------------------------------- + + /** + * Update_Batch statement + * + * Generates a platform-specific batch update string from the supplied data + * + * @param string $table Table name + * @param array $values Update data + * @param string $index WHERE key + * @return string + */ + protected function _update_batch($table, $values, $index) + { + $ids = array(); + foreach ($values as $key => $val) + { + $ids[] = $val[$index]['value']; + + foreach (array_keys($val) as $field) + { + if ($field !== $index) + { + $final[$val[$field]['field']][] = 'WHEN '.$val[$index]['value'].' THEN '.$val[$field]['value']; + } + } + } + + $cases = ''; + foreach ($final as $k => $v) + { + $cases .= $k.' = (CASE '.$val[$index]['field']."\n" + .implode("\n", $v)."\n" + .'ELSE '.$k.' END), '; + } + + $this->where($val[$index]['field'].' IN('.implode(',', $ids).')', NULL, FALSE); + + return 'UPDATE '.$table.' SET '.substr($cases, 0, -2).$this->_compile_wh('qb_where'); + } + + // -------------------------------------------------------------------- + + /** + * Delete statement + * + * Generates a platform-specific delete string from the supplied data + * + * @param string $table + * @return string + */ + protected function _delete($table) + { + $this->qb_limit = FALSE; + return parent::_delete($table); + } + + // -------------------------------------------------------------------- + + /** + * LIMIT + * + * Generates a platform-specific LIMIT clause + * + * @param string $sql SQL Query + * @return string + */ + protected function _limit($sql) + { + return $sql.' LIMIT '.$this->qb_limit.($this->qb_offset ? ' OFFSET '.$this->qb_offset : ''); + } + + // -------------------------------------------------------------------- + + /** + * Close DB Connection + * + * @return void + */ + protected function _close() + { + pg_close($this->conn_id); + } + +} diff --git a/www/system/database/drivers/postgre/postgre_forge.php b/www/system/database/drivers/postgre/postgre_forge.php new file mode 100644 index 0000000..cf90325 --- /dev/null +++ b/www/system/database/drivers/postgre/postgre_forge.php @@ -0,0 +1,205 @@ + 'INTEGER', + 'SMALLINT' => 'INTEGER', + 'INT' => 'BIGINT', + 'INT4' => 'BIGINT', + 'INTEGER' => 'BIGINT', + 'INT8' => 'NUMERIC', + 'BIGINT' => 'NUMERIC', + 'REAL' => 'DOUBLE PRECISION', + 'FLOAT' => 'DOUBLE PRECISION' + ); + + /** + * NULL value representation in CREATE/ALTER TABLE statements + * + * @var string + */ + protected $_null = 'NULL'; + + // -------------------------------------------------------------------- + + /** + * Class constructor + * + * @param object &$db Database object + * @return void + */ + public function __construct(&$db) + { + parent::__construct($db); + + if (version_compare($this->db->version(), '9.0', '>')) + { + $this->create_table_if = 'CREATE TABLE IF NOT EXISTS'; + } + } + + // -------------------------------------------------------------------- + + /** + * ALTER TABLE + * + * @param string $alter_type ALTER type + * @param string $table Table name + * @param mixed $field Column definition + * @return string|string[] + */ + protected function _alter_table($alter_type, $table, $field) + { + if (in_array($alter_type, array('DROP', 'ADD'), TRUE)) + { + return parent::_alter_table($alter_type, $table, $field); + } + + $sql = 'ALTER TABLE '.$this->db->escape_identifiers($table); + $sqls = array(); + for ($i = 0, $c = count($field); $i < $c; $i++) + { + if ($field[$i]['_literal'] !== FALSE) + { + return FALSE; + } + + if (version_compare($this->db->version(), '8', '>=') && isset($field[$i]['type'])) + { + $sqls[] = $sql.' ALTER COLUMN '.$this->db->escape_identifiers($field[$i]['name']) + .' TYPE '.$field[$i]['type'].$field[$i]['length']; + } + + if ( ! empty($field[$i]['default'])) + { + $sqls[] = $sql.' ALTER COLUMN '.$this->db->escape_identifiers($field[$i]['name']) + .' SET DEFAULT '.$field[$i]['default']; + } + + if (isset($field[$i]['null'])) + { + $sqls[] = $sql.' ALTER COLUMN '.$this->db->escape_identifiers($field[$i]['name']) + .($field[$i]['null'] === TRUE ? ' DROP NOT NULL' : ' SET NOT NULL'); + } + + if ( ! empty($field[$i]['new_name'])) + { + $sqls[] = $sql.' RENAME COLUMN '.$this->db->escape_identifiers($field[$i]['name']) + .' TO '.$this->db->escape_identifiers($field[$i]['new_name']); + } + + if ( ! empty($field[$i]['comment'])) + { + $sqls[] = 'COMMENT ON COLUMN ' + .$this->db->escape_identifiers($table).'.'.$this->db->escape_identifiers($field[$i]['name']) + .' IS '.$field[$i]['comment']; + } + } + + return $sqls; + } + + // -------------------------------------------------------------------- + + /** + * Field attribute TYPE + * + * Performs a data type mapping between different databases. + * + * @param array &$attributes + * @return void + */ + protected function _attr_type(&$attributes) + { + // Reset field lengths for data types that don't support it + if (isset($attributes['CONSTRAINT']) && stripos($attributes['TYPE'], 'int') !== FALSE) + { + $attributes['CONSTRAINT'] = NULL; + } + + switch (strtoupper($attributes['TYPE'])) + { + case 'TINYINT': + $attributes['TYPE'] = 'SMALLINT'; + $attributes['UNSIGNED'] = FALSE; + return; + case 'MEDIUMINT': + $attributes['TYPE'] = 'INTEGER'; + $attributes['UNSIGNED'] = FALSE; + return; + default: return; + } + } + + // -------------------------------------------------------------------- + + /** + * Field attribute AUTO_INCREMENT + * + * @param array &$attributes + * @param array &$field + * @return void + */ + protected function _attr_auto_increment(&$attributes, &$field) + { + if ( ! empty($attributes['AUTO_INCREMENT']) && $attributes['AUTO_INCREMENT'] === TRUE) + { + $field['type'] = ($field['type'] === 'NUMERIC') + ? 'BIGSERIAL' + : 'SERIAL'; + } + } + +} diff --git a/www/system/database/drivers/postgre/postgre_result.php b/www/system/database/drivers/postgre/postgre_result.php new file mode 100644 index 0000000..daf3306 --- /dev/null +++ b/www/system/database/drivers/postgre/postgre_result.php @@ -0,0 +1,182 @@ +num_rows) + ? $this->num_rows + : $this->num_rows = pg_num_rows($this->result_id); + } + + // -------------------------------------------------------------------- + + /** + * Number of fields in the result set + * + * @return int + */ + public function num_fields() + { + return pg_num_fields($this->result_id); + } + + // -------------------------------------------------------------------- + + /** + * Fetch Field Names + * + * Generates an array of column names + * + * @return array + */ + public function list_fields() + { + $field_names = array(); + for ($i = 0, $c = $this->num_fields(); $i < $c; $i++) + { + $field_names[] = pg_field_name($this->result_id, $i); + } + + return $field_names; + } + + // -------------------------------------------------------------------- + + /** + * Field data + * + * Generates an array of objects containing field meta-data + * + * @return array + */ + public function field_data() + { + $retval = array(); + for ($i = 0, $c = $this->num_fields(); $i < $c; $i++) + { + $retval[$i] = new stdClass(); + $retval[$i]->name = pg_field_name($this->result_id, $i); + $retval[$i]->type = pg_field_type($this->result_id, $i); + $retval[$i]->max_length = pg_field_size($this->result_id, $i); + } + + return $retval; + } + + // -------------------------------------------------------------------- + + /** + * Free the result + * + * @return void + */ + public function free_result() + { + if (is_resource($this->result_id)) + { + pg_free_result($this->result_id); + $this->result_id = FALSE; + } + } + + // -------------------------------------------------------------------- + + /** + * Data Seek + * + * Moves the internal pointer to the desired offset. We call + * this internally before fetching results to make sure the + * result set starts at zero. + * + * @param int $n + * @return bool + */ + public function data_seek($n = 0) + { + return pg_result_seek($this->result_id, $n); + } + + // -------------------------------------------------------------------- + + /** + * Result - associative array + * + * Returns the result set as an array + * + * @return array + */ + protected function _fetch_assoc() + { + return pg_fetch_assoc($this->result_id); + } + + // -------------------------------------------------------------------- + + /** + * Result - object + * + * Returns the result set as an object + * + * @param string $class_name + * @return object + */ + protected function _fetch_object($class_name = 'stdClass') + { + return pg_fetch_object($this->result_id, NULL, $class_name); + } + +} diff --git a/www/system/database/drivers/postgre/postgre_utility.php b/www/system/database/drivers/postgre/postgre_utility.php new file mode 100644 index 0000000..3af225f --- /dev/null +++ b/www/system/database/drivers/postgre/postgre_utility.php @@ -0,0 +1,78 @@ +db->display_error('db_unsupported_feature'); + } +} diff --git a/www/system/database/drivers/sqlite/index.html b/www/system/database/drivers/sqlite/index.html new file mode 100644 index 0000000..b702fbc --- /dev/null +++ b/www/system/database/drivers/sqlite/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

    Directory access is forbidden.

    + + + diff --git a/www/system/database/drivers/sqlite/sqlite_driver.php b/www/system/database/drivers/sqlite/sqlite_driver.php new file mode 100644 index 0000000..a061229 --- /dev/null +++ b/www/system/database/drivers/sqlite/sqlite_driver.php @@ -0,0 +1,330 @@ +database, 0666, $error) + : sqlite_open($this->database, 0666, $error); + + isset($error) && log_message('error', $error); + + return $conn_id; + } + + // -------------------------------------------------------------------- + + /** + * Database version number + * + * @return string + */ + public function version() + { + return isset($this->data_cache['version']) + ? $this->data_cache['version'] + : $this->data_cache['version'] = sqlite_libversion(); + } + + // -------------------------------------------------------------------- + + /** + * Execute the query + * + * @param string $sql an SQL query + * @return resource + */ + protected function _execute($sql) + { + return $this->is_write_type($sql) + ? sqlite_exec($this->conn_id, $sql) + : sqlite_query($this->conn_id, $sql); + } + + // -------------------------------------------------------------------- + + /** + * Begin Transaction + * + * @return bool + */ + protected function _trans_begin() + { + return $this->simple_query('BEGIN TRANSACTION'); + } + + // -------------------------------------------------------------------- + + /** + * Commit Transaction + * + * @return bool + */ + protected function _trans_commit() + { + return $this->simple_query('COMMIT'); + } + + // -------------------------------------------------------------------- + + /** + * Rollback Transaction + * + * @return bool + */ + protected function _trans_rollback() + { + return $this->simple_query('ROLLBACK'); + } + + // -------------------------------------------------------------------- + + /** + * Platform-dependant string escape + * + * @param string + * @return string + */ + protected function _escape_str($str) + { + return sqlite_escape_string($str); + } + + // -------------------------------------------------------------------- + + /** + * Affected Rows + * + * @return int + */ + public function affected_rows() + { + return sqlite_changes($this->conn_id); + } + + // -------------------------------------------------------------------- + + /** + * Insert ID + * + * @return int + */ + public function insert_id() + { + return sqlite_last_insert_rowid($this->conn_id); + } + + // -------------------------------------------------------------------- + + /** + * List table query + * + * Generates a platform-specific query string so that the table names can be fetched + * + * @param bool $prefix_limit + * @return string + */ + protected function _list_tables($prefix_limit = FALSE) + { + $sql = "SELECT name FROM sqlite_master WHERE type='table'"; + + if ($prefix_limit !== FALSE && $this->dbprefix != '') + { + return $sql." AND 'name' LIKE '".$this->escape_like_str($this->dbprefix)."%' ".sprintf($this->_like_escape_str, $this->_like_escape_chr); + } + + return $sql; + } + + // -------------------------------------------------------------------- + + /** + * Show column query + * + * Generates a platform-specific query string so that the column names can be fetched + * + * @param string $table + * @return bool + */ + protected function _list_columns($table = '') + { + // Not supported + return FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Returns an object with field data + * + * @param string $table + * @return array + */ + public function field_data($table) + { + if (($query = $this->query('PRAGMA TABLE_INFO('.$this->protect_identifiers($table, TRUE, NULL, FALSE).')')) === FALSE) + { + return FALSE; + } + + $query = $query->result_array(); + if (empty($query)) + { + return FALSE; + } + + $retval = array(); + for ($i = 0, $c = count($query); $i < $c; $i++) + { + $retval[$i] = new stdClass(); + $retval[$i]->name = $query[$i]['name']; + $retval[$i]->type = $query[$i]['type']; + $retval[$i]->max_length = NULL; + $retval[$i]->default = $query[$i]['dflt_value']; + $retval[$i]->primary_key = isset($query[$i]['pk']) ? (int) $query[$i]['pk'] : 0; + } + + return $retval; + } + + // -------------------------------------------------------------------- + + /** + * Error + * + * Returns an array containing code and message of the last + * database error that has occured. + * + * @return array + */ + public function error() + { + $error = array('code' => sqlite_last_error($this->conn_id)); + $error['message'] = sqlite_error_string($error['code']); + return $error; + } + + // -------------------------------------------------------------------- + + /** + * Replace statement + * + * Generates a platform-specific replace string from the supplied data + * + * @param string $table Table name + * @param array $keys INSERT keys + * @param array $values INSERT values + * @return string + */ + protected function _replace($table, $keys, $values) + { + return 'INSERT OR '.parent::_replace($table, $keys, $values); + } + + // -------------------------------------------------------------------- + + /** + * Truncate statement + * + * Generates a platform-specific truncate string from the supplied data + * + * If the database does not support the TRUNCATE statement, + * then this function maps to 'DELETE FROM table' + * + * @param string $table + * @return string + */ + protected function _truncate($table) + { + return 'DELETE FROM '.$table; + } + + // -------------------------------------------------------------------- + + /** + * Close DB Connection + * + * @return void + */ + protected function _close() + { + sqlite_close($this->conn_id); + } + +} diff --git a/www/system/database/drivers/sqlite/sqlite_forge.php b/www/system/database/drivers/sqlite/sqlite_forge.php new file mode 100644 index 0000000..10d5fe6 --- /dev/null +++ b/www/system/database/drivers/sqlite/sqlite_forge.php @@ -0,0 +1,205 @@ +db->database) OR ! @unlink($this->db->database)) + { + return ($this->db->db_debug) ? $this->db->display_error('db_unable_to_drop') : FALSE; + } + elseif ( ! empty($this->db->data_cache['db_names'])) + { + $key = array_search(strtolower($this->db->database), array_map('strtolower', $this->db->data_cache['db_names']), TRUE); + if ($key !== FALSE) + { + unset($this->db->data_cache['db_names'][$key]); + } + } + + return TRUE; + } + + // -------------------------------------------------------------------- + + /** + * ALTER TABLE + * + * @todo implement drop_column(), modify_column() + * @param string $alter_type ALTER type + * @param string $table Table name + * @param mixed $field Column definition + * @return string|string[] + */ + protected function _alter_table($alter_type, $table, $field) + { + if ($alter_type === 'DROP' OR $alter_type === 'CHANGE') + { + // drop_column(): + // BEGIN TRANSACTION; + // CREATE TEMPORARY TABLE t1_backup(a,b); + // INSERT INTO t1_backup SELECT a,b FROM t1; + // DROP TABLE t1; + // CREATE TABLE t1(a,b); + // INSERT INTO t1 SELECT a,b FROM t1_backup; + // DROP TABLE t1_backup; + // COMMIT; + + return FALSE; + } + + return parent::_alter_table($alter_type, $table, $field); + } + + // -------------------------------------------------------------------- + + /** + * Process column + * + * @param array $field + * @return string + */ + protected function _process_column($field) + { + return $this->db->escape_identifiers($field['name']) + .' '.$field['type'] + .$field['auto_increment'] + .$field['null'] + .$field['unique'] + .$field['default']; + } + + // -------------------------------------------------------------------- + + /** + * Field attribute TYPE + * + * Performs a data type mapping between different databases. + * + * @param array &$attributes + * @return void + */ + protected function _attr_type(&$attributes) + { + switch (strtoupper($attributes['TYPE'])) + { + case 'ENUM': + case 'SET': + $attributes['TYPE'] = 'TEXT'; + return; + default: return; + } + } + + // -------------------------------------------------------------------- + + /** + * Field attribute AUTO_INCREMENT + * + * @param array &$attributes + * @param array &$field + * @return void + */ + protected function _attr_auto_increment(&$attributes, &$field) + { + if ( ! empty($attributes['AUTO_INCREMENT']) && $attributes['AUTO_INCREMENT'] === TRUE && stripos($field['type'], 'int') !== FALSE) + { + $field['type'] = 'INTEGER PRIMARY KEY'; + $field['default'] = ''; + $field['null'] = ''; + $field['unique'] = ''; + $field['auto_increment'] = ' AUTOINCREMENT'; + + $this->primary_keys = array(); + } + } + +} diff --git a/www/system/database/drivers/sqlite/sqlite_result.php b/www/system/database/drivers/sqlite/sqlite_result.php new file mode 100644 index 0000000..59516b0 --- /dev/null +++ b/www/system/database/drivers/sqlite/sqlite_result.php @@ -0,0 +1,164 @@ +num_rows) + ? $this->num_rows + : $this->num_rows = @sqlite_num_rows($this->result_id); + } + + // -------------------------------------------------------------------- + + /** + * Number of fields in the result set + * + * @return int + */ + public function num_fields() + { + return @sqlite_num_fields($this->result_id); + } + + // -------------------------------------------------------------------- + + /** + * Fetch Field Names + * + * Generates an array of column names + * + * @return array + */ + public function list_fields() + { + $field_names = array(); + for ($i = 0, $c = $this->num_fields(); $i < $c; $i++) + { + $field_names[$i] = sqlite_field_name($this->result_id, $i); + } + + return $field_names; + } + + // -------------------------------------------------------------------- + + /** + * Field data + * + * Generates an array of objects containing field meta-data + * + * @return array + */ + public function field_data() + { + $retval = array(); + for ($i = 0, $c = $this->num_fields(); $i < $c; $i++) + { + $retval[$i] = new stdClass(); + $retval[$i]->name = sqlite_field_name($this->result_id, $i); + $retval[$i]->type = NULL; + $retval[$i]->max_length = NULL; + } + + return $retval; + } + + // -------------------------------------------------------------------- + + /** + * Data Seek + * + * Moves the internal pointer to the desired offset. We call + * this internally before fetching results to make sure the + * result set starts at zero. + * + * @param int $n + * @return bool + */ + public function data_seek($n = 0) + { + return sqlite_seek($this->result_id, $n); + } + + // -------------------------------------------------------------------- + + /** + * Result - associative array + * + * Returns the result set as an array + * + * @return array + */ + protected function _fetch_assoc() + { + return sqlite_fetch_array($this->result_id); + } + + // -------------------------------------------------------------------- + + /** + * Result - object + * + * Returns the result set as an object + * + * @param string $class_name + * @return object + */ + protected function _fetch_object($class_name = 'stdClass') + { + return sqlite_fetch_object($this->result_id, $class_name); + } + +} diff --git a/www/system/database/drivers/sqlite/sqlite_utility.php b/www/system/database/drivers/sqlite/sqlite_utility.php new file mode 100644 index 0000000..57f685e --- /dev/null +++ b/www/system/database/drivers/sqlite/sqlite_utility.php @@ -0,0 +1,61 @@ +db->display_error('db_unsupported_feature'); + } + +} diff --git a/www/system/database/drivers/sqlite3/index.html b/www/system/database/drivers/sqlite3/index.html new file mode 100644 index 0000000..b702fbc --- /dev/null +++ b/www/system/database/drivers/sqlite3/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

    Directory access is forbidden.

    + + + diff --git a/www/system/database/drivers/sqlite3/sqlite3_driver.php b/www/system/database/drivers/sqlite3/sqlite3_driver.php new file mode 100644 index 0000000..41d9d48 --- /dev/null +++ b/www/system/database/drivers/sqlite3/sqlite3_driver.php @@ -0,0 +1,350 @@ +password) + ? new SQLite3($this->database) + : new SQLite3($this->database, SQLITE3_OPEN_READWRITE | SQLITE3_OPEN_CREATE, $this->password); + } + catch (Exception $e) + { + return FALSE; + } + } + + // -------------------------------------------------------------------- + + /** + * Database version number + * + * @return string + */ + public function version() + { + if (isset($this->data_cache['version'])) + { + return $this->data_cache['version']; + } + + $version = SQLite3::version(); + return $this->data_cache['version'] = $version['versionString']; + } + + // -------------------------------------------------------------------- + + /** + * Execute the query + * + * @todo Implement use of SQLite3::querySingle(), if needed + * @param string $sql + * @return mixed SQLite3Result object or bool + */ + protected function _execute($sql) + { + return $this->is_write_type($sql) + ? $this->conn_id->exec($sql) + : $this->conn_id->query($sql); + } + + // -------------------------------------------------------------------- + + /** + * Begin Transaction + * + * @return bool + */ + protected function _trans_begin() + { + return $this->conn_id->exec('BEGIN TRANSACTION'); + } + + // -------------------------------------------------------------------- + + /** + * Commit Transaction + * + * @return bool + */ + protected function _trans_commit() + { + return $this->conn_id->exec('END TRANSACTION'); + } + + // -------------------------------------------------------------------- + + /** + * Rollback Transaction + * + * @return bool + */ + protected function _trans_rollback() + { + return $this->conn_id->exec('ROLLBACK'); + } + + // -------------------------------------------------------------------- + + /** + * Platform-dependent string escape + * + * @param string + * @return string + */ + protected function _escape_str($str) + { + return $this->conn_id->escapeString($str); + } + + // -------------------------------------------------------------------- + + /** + * Affected Rows + * + * @return int + */ + public function affected_rows() + { + return $this->conn_id->changes(); + } + + // -------------------------------------------------------------------- + + /** + * Insert ID + * + * @return int + */ + public function insert_id() + { + return $this->conn_id->lastInsertRowID(); + } + + // -------------------------------------------------------------------- + + /** + * Show table query + * + * Generates a platform-specific query string so that the table names can be fetched + * + * @param bool $prefix_limit + * @return string + */ + protected function _list_tables($prefix_limit = FALSE) + { + return 'SELECT "NAME" FROM "SQLITE_MASTER" WHERE "TYPE" = \'table\'' + .(($prefix_limit !== FALSE && $this->dbprefix != '') + ? ' AND "NAME" LIKE \''.$this->escape_like_str($this->dbprefix).'%\' '.sprintf($this->_like_escape_str, $this->_like_escape_chr) + : ''); + } + + // -------------------------------------------------------------------- + + /** + * Fetch Field Names + * + * @param string $table Table name + * @return array + */ + public function list_fields($table) + { + // Is there a cached result? + if (isset($this->data_cache['field_names'][$table])) + { + return $this->data_cache['field_names'][$table]; + } + + if (($result = $this->query('PRAGMA TABLE_INFO('.$this->protect_identifiers($table, TRUE, NULL, FALSE).')')) === FALSE) + { + return FALSE; + } + + $this->data_cache['field_names'][$table] = array(); + foreach ($result->result_array() as $row) + { + $this->data_cache['field_names'][$table][] = $row['name']; + } + + return $this->data_cache['field_names'][$table]; + } + + // -------------------------------------------------------------------- + + /** + * Returns an object with field data + * + * @param string $table + * @return array + */ + public function field_data($table) + { + if (($query = $this->query('PRAGMA TABLE_INFO('.$this->protect_identifiers($table, TRUE, NULL, FALSE).')')) === FALSE) + { + return FALSE; + } + + $query = $query->result_array(); + if (empty($query)) + { + return FALSE; + } + + $retval = array(); + for ($i = 0, $c = count($query); $i < $c; $i++) + { + $retval[$i] = new stdClass(); + $retval[$i]->name = $query[$i]['name']; + $retval[$i]->type = $query[$i]['type']; + $retval[$i]->max_length = NULL; + $retval[$i]->default = $query[$i]['dflt_value']; + $retval[$i]->primary_key = isset($query[$i]['pk']) ? (int) $query[$i]['pk'] : 0; + } + + return $retval; + } + + // -------------------------------------------------------------------- + + /** + * Error + * + * Returns an array containing code and message of the last + * database error that has occurred. + * + * @return array + */ + public function error() + { + return array('code' => $this->conn_id->lastErrorCode(), 'message' => $this->conn_id->lastErrorMsg()); + } + + // -------------------------------------------------------------------- + + /** + * Replace statement + * + * Generates a platform-specific replace string from the supplied data + * + * @param string $table Table name + * @param array $keys INSERT keys + * @param array $values INSERT values + * @return string + */ + protected function _replace($table, $keys, $values) + { + return 'INSERT OR '.parent::_replace($table, $keys, $values); + } + + // -------------------------------------------------------------------- + + /** + * Truncate statement + * + * Generates a platform-specific truncate string from the supplied data + * + * If the database does not support the TRUNCATE statement, + * then this method maps to 'DELETE FROM table' + * + * @param string $table + * @return string + */ + protected function _truncate($table) + { + return 'DELETE FROM '.$table; + } + + // -------------------------------------------------------------------- + + /** + * Close DB Connection + * + * @return void + */ + protected function _close() + { + $this->conn_id->close(); + } + +} diff --git a/www/system/database/drivers/sqlite3/sqlite3_forge.php b/www/system/database/drivers/sqlite3/sqlite3_forge.php new file mode 100644 index 0000000..48c5efc --- /dev/null +++ b/www/system/database/drivers/sqlite3/sqlite3_forge.php @@ -0,0 +1,225 @@ +db->version(), '3.3', '<')) + { + $this->_create_table_if = FALSE; + $this->_drop_table_if = FALSE; + } + } + + // -------------------------------------------------------------------- + + /** + * Create database + * + * @param string $db_name + * @return bool + */ + public function create_database($db_name) + { + // In SQLite, a database is created when you connect to the database. + // We'll return TRUE so that an error isn't generated + return TRUE; + } + + // -------------------------------------------------------------------- + + /** + * Drop database + * + * @param string $db_name (ignored) + * @return bool + */ + public function drop_database($db_name) + { + // In SQLite, a database is dropped when we delete a file + if (file_exists($this->db->database)) + { + // We need to close the pseudo-connection first + $this->db->close(); + if ( ! @unlink($this->db->database)) + { + return $this->db->db_debug ? $this->db->display_error('db_unable_to_drop') : FALSE; + } + elseif ( ! empty($this->db->data_cache['db_names'])) + { + $key = array_search(strtolower($this->db->database), array_map('strtolower', $this->db->data_cache['db_names']), TRUE); + if ($key !== FALSE) + { + unset($this->db->data_cache['db_names'][$key]); + } + } + + return TRUE; + } + + return $this->db->db_debug ? $this->db->display_error('db_unable_to_drop') : FALSE; + } + + // -------------------------------------------------------------------- + + /** + * ALTER TABLE + * + * @todo implement drop_column(), modify_column() + * @param string $alter_type ALTER type + * @param string $table Table name + * @param mixed $field Column definition + * @return string|string[] + */ + protected function _alter_table($alter_type, $table, $field) + { + if ($alter_type === 'DROP' OR $alter_type === 'CHANGE') + { + // drop_column(): + // BEGIN TRANSACTION; + // CREATE TEMPORARY TABLE t1_backup(a,b); + // INSERT INTO t1_backup SELECT a,b FROM t1; + // DROP TABLE t1; + // CREATE TABLE t1(a,b); + // INSERT INTO t1 SELECT a,b FROM t1_backup; + // DROP TABLE t1_backup; + // COMMIT; + + return FALSE; + } + + return parent::_alter_table($alter_type, $table, $field); + } + + // -------------------------------------------------------------------- + + /** + * Process column + * + * @param array $field + * @return string + */ + protected function _process_column($field) + { + return $this->db->escape_identifiers($field['name']) + .' '.$field['type'] + .$field['auto_increment'] + .$field['null'] + .$field['unique'] + .$field['default']; + } + + // -------------------------------------------------------------------- + + /** + * Field attribute TYPE + * + * Performs a data type mapping between different databases. + * + * @param array &$attributes + * @return void + */ + protected function _attr_type(&$attributes) + { + switch (strtoupper($attributes['TYPE'])) + { + case 'ENUM': + case 'SET': + $attributes['TYPE'] = 'TEXT'; + return; + default: return; + } + } + + // -------------------------------------------------------------------- + + /** + * Field attribute AUTO_INCREMENT + * + * @param array &$attributes + * @param array &$field + * @return void + */ + protected function _attr_auto_increment(&$attributes, &$field) + { + if ( ! empty($attributes['AUTO_INCREMENT']) && $attributes['AUTO_INCREMENT'] === TRUE && stripos($field['type'], 'int') !== FALSE) + { + $field['type'] = 'INTEGER PRIMARY KEY'; + $field['default'] = ''; + $field['null'] = ''; + $field['unique'] = ''; + $field['auto_increment'] = ' AUTOINCREMENT'; + + $this->primary_keys = array(); + } + } + +} diff --git a/www/system/database/drivers/sqlite3/sqlite3_result.php b/www/system/database/drivers/sqlite3/sqlite3_result.php new file mode 100644 index 0000000..a143fd7 --- /dev/null +++ b/www/system/database/drivers/sqlite3/sqlite3_result.php @@ -0,0 +1,194 @@ +result_id->numColumns(); + } + + // -------------------------------------------------------------------- + + /** + * Fetch Field Names + * + * Generates an array of column names + * + * @return array + */ + public function list_fields() + { + $field_names = array(); + for ($i = 0, $c = $this->num_fields(); $i < $c; $i++) + { + $field_names[] = $this->result_id->columnName($i); + } + + return $field_names; + } + + // -------------------------------------------------------------------- + + /** + * Field data + * + * Generates an array of objects containing field meta-data + * + * @return array + */ + public function field_data() + { + static $data_types = array( + SQLITE3_INTEGER => 'integer', + SQLITE3_FLOAT => 'float', + SQLITE3_TEXT => 'text', + SQLITE3_BLOB => 'blob', + SQLITE3_NULL => 'null' + ); + + $retval = array(); + for ($i = 0, $c = $this->num_fields(); $i < $c; $i++) + { + $retval[$i] = new stdClass(); + $retval[$i]->name = $this->result_id->columnName($i); + + $type = $this->result_id->columnType($i); + $retval[$i]->type = isset($data_types[$type]) ? $data_types[$type] : $type; + + $retval[$i]->max_length = NULL; + } + + return $retval; + } + + // -------------------------------------------------------------------- + + /** + * Free the result + * + * @return void + */ + public function free_result() + { + if (is_object($this->result_id)) + { + $this->result_id->finalize(); + $this->result_id = NULL; + } + } + + // -------------------------------------------------------------------- + + /** + * Result - associative array + * + * Returns the result set as an array + * + * @return array + */ + protected function _fetch_assoc() + { + return $this->result_id->fetchArray(SQLITE3_ASSOC); + } + + // -------------------------------------------------------------------- + + /** + * Result - object + * + * Returns the result set as an object + * + * @param string $class_name + * @return object + */ + protected function _fetch_object($class_name = 'stdClass') + { + // No native support for fetching rows as objects + if (($row = $this->result_id->fetchArray(SQLITE3_ASSOC)) === FALSE) + { + return FALSE; + } + elseif ($class_name === 'stdClass') + { + return (object) $row; + } + + $class_name = new $class_name(); + foreach (array_keys($row) as $key) + { + $class_name->$key = $row[$key]; + } + + return $class_name; + } + + // -------------------------------------------------------------------- + + /** + * Data Seek + * + * Moves the internal pointer to the desired offset. We call + * this internally before fetching results to make sure the + * result set starts at zero. + * + * @param int $n (ignored) + * @return array + */ + public function data_seek($n = 0) + { + // Only resetting to the start of the result set is supported + return ($n > 0) ? FALSE : $this->result_id->reset(); + } + +} diff --git a/www/system/database/drivers/sqlite3/sqlite3_utility.php b/www/system/database/drivers/sqlite3/sqlite3_utility.php new file mode 100644 index 0000000..c829c1f --- /dev/null +++ b/www/system/database/drivers/sqlite3/sqlite3_utility.php @@ -0,0 +1,61 @@ +db->display_error('db_unsupported_feature'); + } + +} diff --git a/www/system/database/drivers/sqlsrv/index.html b/www/system/database/drivers/sqlsrv/index.html new file mode 100644 index 0000000..b702fbc --- /dev/null +++ b/www/system/database/drivers/sqlsrv/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

    Directory access is forbidden.

    + + + diff --git a/www/system/database/drivers/sqlsrv/sqlsrv_driver.php b/www/system/database/drivers/sqlsrv/sqlsrv_driver.php new file mode 100644 index 0000000..05d35a4 --- /dev/null +++ b/www/system/database/drivers/sqlsrv/sqlsrv_driver.php @@ -0,0 +1,543 @@ +scrollable === NULL) + { + $this->scrollable = defined('SQLSRV_CURSOR_CLIENT_BUFFERED') + ? SQLSRV_CURSOR_CLIENT_BUFFERED + : FALSE; + } + } + + // -------------------------------------------------------------------- + + /** + * Database connection + * + * @param bool $pooling + * @return resource + */ + public function db_connect($pooling = FALSE) + { + $charset = in_array(strtolower($this->char_set), array('utf-8', 'utf8'), TRUE) + ? 'UTF-8' : SQLSRV_ENC_CHAR; + + $connection = array( + 'UID' => empty($this->username) ? '' : $this->username, + 'PWD' => empty($this->password) ? '' : $this->password, + 'Database' => $this->database, + 'ConnectionPooling' => ($pooling === TRUE) ? 1 : 0, + 'CharacterSet' => $charset, + 'Encrypt' => ($this->encrypt === TRUE) ? 1 : 0, + 'ReturnDatesAsStrings' => 1 + ); + + // If the username and password are both empty, assume this is a + // 'Windows Authentication Mode' connection. + if (empty($connection['UID']) && empty($connection['PWD'])) + { + unset($connection['UID'], $connection['PWD']); + } + + if (FALSE !== ($this->conn_id = sqlsrv_connect($this->hostname, $connection))) + { + // Determine how identifiers are escaped + $query = $this->query('SELECT CASE WHEN (@@OPTIONS | 256) = @@OPTIONS THEN 1 ELSE 0 END AS qi'); + $query = $query->row_array(); + $this->_quoted_identifier = empty($query) ? FALSE : (bool) $query['qi']; + $this->_escape_char = ($this->_quoted_identifier) ? '"' : array('[', ']'); + } + + return $this->conn_id; + } + + // -------------------------------------------------------------------- + + /** + * Select the database + * + * @param string $database + * @return bool + */ + public function db_select($database = '') + { + if ($database === '') + { + $database = $this->database; + } + + if ($this->_execute('USE '.$this->escape_identifiers($database))) + { + $this->database = $database; + $this->data_cache = array(); + return TRUE; + } + + return FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Execute the query + * + * @param string $sql an SQL query + * @return resource + */ + protected function _execute($sql) + { + return ($this->scrollable === FALSE OR $this->is_write_type($sql)) + ? sqlsrv_query($this->conn_id, $sql) + : sqlsrv_query($this->conn_id, $sql, NULL, array('Scrollable' => $this->scrollable)); + } + + // -------------------------------------------------------------------- + + /** + * Begin Transaction + * + * @return bool + */ + protected function _trans_begin() + { + return sqlsrv_begin_transaction($this->conn_id); + } + + // -------------------------------------------------------------------- + + /** + * Commit Transaction + * + * @return bool + */ + protected function _trans_commit() + { + return sqlsrv_commit($this->conn_id); + } + + // -------------------------------------------------------------------- + + /** + * Rollback Transaction + * + * @return bool + */ + protected function _trans_rollback() + { + return sqlsrv_rollback($this->conn_id); + } + + // -------------------------------------------------------------------- + + /** + * Affected Rows + * + * @return int + */ + public function affected_rows() + { + return sqlsrv_rows_affected($this->result_id); + } + + // -------------------------------------------------------------------- + + /** + * Insert ID + * + * Returns the last id created in the Identity column. + * + * @return string + */ + public function insert_id() + { + return $this->query('SELECT SCOPE_IDENTITY() AS insert_id')->row()->insert_id; + } + + // -------------------------------------------------------------------- + + /** + * Database version number + * + * @return string + */ + public function version() + { + if (isset($this->data_cache['version'])) + { + return $this->data_cache['version']; + } + + if ( ! $this->conn_id OR ($info = sqlsrv_server_info($this->conn_id)) === FALSE) + { + return FALSE; + } + + return $this->data_cache['version'] = $info['SQLServerVersion']; + } + + // -------------------------------------------------------------------- + + /** + * List table query + * + * Generates a platform-specific query string so that the table names can be fetched + * + * @param bool + * @return string $prefix_limit + */ + protected function _list_tables($prefix_limit = FALSE) + { + $sql = 'SELECT '.$this->escape_identifiers('name') + .' FROM '.$this->escape_identifiers('sysobjects') + .' WHERE '.$this->escape_identifiers('type')." = 'U'"; + + if ($prefix_limit === TRUE && $this->dbprefix !== '') + { + $sql .= ' AND '.$this->escape_identifiers('name')." LIKE '".$this->escape_like_str($this->dbprefix)."%' " + .sprintf($this->_escape_like_str, $this->_escape_like_chr); + } + + return $sql.' ORDER BY '.$this->escape_identifiers('name'); + } + + // -------------------------------------------------------------------- + + /** + * List column query + * + * Generates a platform-specific query string so that the column names can be fetched + * + * @param string $table + * @return string + */ + protected function _list_columns($table = '') + { + return 'SELECT COLUMN_NAME + FROM INFORMATION_SCHEMA.Columns + WHERE UPPER(TABLE_NAME) = '.$this->escape(strtoupper($table)); + } + + // -------------------------------------------------------------------- + + /** + * Returns an object with field data + * + * @param string $table + * @return array + */ + public function field_data($table) + { + $sql = 'SELECT COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH, NUMERIC_PRECISION, COLUMN_DEFAULT + FROM INFORMATION_SCHEMA.Columns + WHERE UPPER(TABLE_NAME) = '.$this->escape(strtoupper($table)); + + if (($query = $this->query($sql)) === FALSE) + { + return FALSE; + } + $query = $query->result_object(); + + $retval = array(); + for ($i = 0, $c = count($query); $i < $c; $i++) + { + $retval[$i] = new stdClass(); + $retval[$i]->name = $query[$i]->COLUMN_NAME; + $retval[$i]->type = $query[$i]->DATA_TYPE; + $retval[$i]->max_length = ($query[$i]->CHARACTER_MAXIMUM_LENGTH > 0) ? $query[$i]->CHARACTER_MAXIMUM_LENGTH : $query[$i]->NUMERIC_PRECISION; + $retval[$i]->default = $query[$i]->COLUMN_DEFAULT; + } + + return $retval; + } + + // -------------------------------------------------------------------- + + /** + * Error + * + * Returns an array containing code and message of the last + * database error that has occurred. + * + * @return array + */ + public function error() + { + $error = array('code' => '00000', 'message' => ''); + $sqlsrv_errors = sqlsrv_errors(SQLSRV_ERR_ERRORS); + + if ( ! is_array($sqlsrv_errors)) + { + return $error; + } + + $sqlsrv_error = array_shift($sqlsrv_errors); + if (isset($sqlsrv_error['SQLSTATE'])) + { + $error['code'] = isset($sqlsrv_error['code']) ? $sqlsrv_error['SQLSTATE'].'/'.$sqlsrv_error['code'] : $sqlsrv_error['SQLSTATE']; + } + elseif (isset($sqlsrv_error['code'])) + { + $error['code'] = $sqlsrv_error['code']; + } + + if (isset($sqlsrv_error['message'])) + { + $error['message'] = $sqlsrv_error['message']; + } + + return $error; + } + + // -------------------------------------------------------------------- + + /** + * Update statement + * + * Generates a platform-specific update string from the supplied data + * + * @param string $table + * @param array $values + * @return string + */ + protected function _update($table, $values) + { + $this->qb_limit = FALSE; + $this->qb_orderby = array(); + return parent::_update($table, $values); + } + + // -------------------------------------------------------------------- + + /** + * Truncate statement + * + * Generates a platform-specific truncate string from the supplied data + * + * If the database does not support the TRUNCATE statement, + * then this method maps to 'DELETE FROM table' + * + * @param string $table + * @return string + */ + protected function _truncate($table) + { + return 'TRUNCATE TABLE '.$table; + } + + // -------------------------------------------------------------------- + + /** + * Delete statement + * + * Generates a platform-specific delete string from the supplied data + * + * @param string $table + * @return string + */ + protected function _delete($table) + { + if ($this->qb_limit) + { + return 'WITH ci_delete AS (SELECT TOP '.$this->qb_limit.' * FROM '.$table.$this->_compile_wh('qb_where').') DELETE FROM ci_delete'; + } + + return parent::_delete($table); + } + + // -------------------------------------------------------------------- + + /** + * LIMIT + * + * Generates a platform-specific LIMIT clause + * + * @param string $sql SQL Query + * @return string + */ + protected function _limit($sql) + { + // As of SQL Server 2012 (11.0.*) OFFSET is supported + if (version_compare($this->version(), '11', '>=')) + { + // SQL Server OFFSET-FETCH can be used only with the ORDER BY clause + empty($this->qb_orderby) && $sql .= ' ORDER BY 1'; + + return $sql.' OFFSET '.(int) $this->qb_offset.' ROWS FETCH NEXT '.$this->qb_limit.' ROWS ONLY'; + } + + $limit = $this->qb_offset + $this->qb_limit; + + // An ORDER BY clause is required for ROW_NUMBER() to work + if ($this->qb_offset && ! empty($this->qb_orderby)) + { + $orderby = $this->_compile_order_by(); + + // We have to strip the ORDER BY clause + $sql = trim(substr($sql, 0, strrpos($sql, $orderby))); + + // Get the fields to select from our subquery, so that we can avoid CI_rownum appearing in the actual results + if (count($this->qb_select) === 0 OR strpos(implode(',', $this->qb_select), '*') !== FALSE) + { + $select = '*'; // Inevitable + } + else + { + // Use only field names and their aliases, everything else is out of our scope. + $select = array(); + $field_regexp = ($this->_quoted_identifier) + ? '("[^\"]+")' : '(\[[^\]]+\])'; + for ($i = 0, $c = count($this->qb_select); $i < $c; $i++) + { + $select[] = preg_match('/(?:\s|\.)'.$field_regexp.'$/i', $this->qb_select[$i], $m) + ? $m[1] : $this->qb_select[$i]; + } + $select = implode(', ', $select); + } + + return 'SELECT '.$select." FROM (\n\n" + .preg_replace('/^(SELECT( DISTINCT)?)/i', '\\1 ROW_NUMBER() OVER('.trim($orderby).') AS '.$this->escape_identifiers('CI_rownum').', ', $sql) + ."\n\n) ".$this->escape_identifiers('CI_subquery') + ."\nWHERE ".$this->escape_identifiers('CI_rownum').' BETWEEN '.($this->qb_offset + 1).' AND '.$limit; + } + + return preg_replace('/(^\SELECT (DISTINCT)?)/i','\\1 TOP '.$limit.' ', $sql); + } + + // -------------------------------------------------------------------- + + /** + * Insert batch statement + * + * Generates a platform-specific insert string from the supplied data. + * + * @param string $table Table name + * @param array $keys INSERT keys + * @param array $values INSERT values + * @return string|bool + */ + protected function _insert_batch($table, $keys, $values) + { + // Multiple-value inserts are only supported as of SQL Server 2008 + if (version_compare($this->version(), '10', '>=')) + { + return parent::_insert_batch($table, $keys, $values); + } + + return ($this->db_debug) ? $this->display_error('db_unsupported_feature') : FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Close DB Connection + * + * @return void + */ + protected function _close() + { + sqlsrv_close($this->conn_id); + } + +} diff --git a/www/system/database/drivers/sqlsrv/sqlsrv_forge.php b/www/system/database/drivers/sqlsrv/sqlsrv_forge.php new file mode 100644 index 0000000..01547e8 --- /dev/null +++ b/www/system/database/drivers/sqlsrv/sqlsrv_forge.php @@ -0,0 +1,149 @@ + 'SMALLINT', + 'SMALLINT' => 'INT', + 'INT' => 'BIGINT', + 'REAL' => 'FLOAT' + ); + + // -------------------------------------------------------------------- + + /** + * ALTER TABLE + * + * @param string $alter_type ALTER type + * @param string $table Table name + * @param mixed $field Column definition + * @return string|string[] + */ + protected function _alter_table($alter_type, $table, $field) + { + if (in_array($alter_type, array('ADD', 'DROP'), TRUE)) + { + return parent::_alter_table($alter_type, $table, $field); + } + + $sql = 'ALTER TABLE '.$this->db->escape_identifiers($table).' ALTER COLUMN '; + $sqls = array(); + for ($i = 0, $c = count($field); $i < $c; $i++) + { + $sqls[] = $sql.$this->_process_column($field[$i]); + } + + return $sqls; + } + + // -------------------------------------------------------------------- + + /** + * Field attribute TYPE + * + * Performs a data type mapping between different databases. + * + * @param array &$attributes + * @return void + */ + protected function _attr_type(&$attributes) + { + if (isset($attributes['CONSTRAINT']) && strpos($attributes['TYPE'], 'INT') !== FALSE) + { + unset($attributes['CONSTRAINT']); + } + + switch (strtoupper($attributes['TYPE'])) + { + case 'MEDIUMINT': + $attributes['TYPE'] = 'INTEGER'; + $attributes['UNSIGNED'] = FALSE; + return; + case 'INTEGER': + $attributes['TYPE'] = 'INT'; + return; + default: return; + } + } + + // -------------------------------------------------------------------- + + /** + * Field attribute AUTO_INCREMENT + * + * @param array &$attributes + * @param array &$field + * @return void + */ + protected function _attr_auto_increment(&$attributes, &$field) + { + if ( ! empty($attributes['AUTO_INCREMENT']) && $attributes['AUTO_INCREMENT'] === TRUE && stripos($field['type'], 'int') !== FALSE) + { + $field['auto_increment'] = ' IDENTITY(1,1)'; + } + } + +} diff --git a/www/system/database/drivers/sqlsrv/sqlsrv_result.php b/www/system/database/drivers/sqlsrv/sqlsrv_result.php new file mode 100644 index 0000000..1d0272f --- /dev/null +++ b/www/system/database/drivers/sqlsrv/sqlsrv_result.php @@ -0,0 +1,193 @@ +scrollable = $driver_object->scrollable; + } + + // -------------------------------------------------------------------- + + /** + * Number of rows in the result set + * + * @return int + */ + public function num_rows() + { + // sqlsrv_num_rows() doesn't work with the FORWARD and DYNAMIC cursors (FALSE is the same as FORWARD) + if ( ! in_array($this->scrollable, array(FALSE, SQLSRV_CURSOR_FORWARD, SQLSRV_CURSOR_DYNAMIC), TRUE)) + { + return parent::num_rows(); + } + + return is_int($this->num_rows) + ? $this->num_rows + : $this->num_rows = sqlsrv_num_rows($this->result_id); + } + + // -------------------------------------------------------------------- + + /** + * Number of fields in the result set + * + * @return int + */ + public function num_fields() + { + return @sqlsrv_num_fields($this->result_id); + } + + // -------------------------------------------------------------------- + + /** + * Fetch Field Names + * + * Generates an array of column names + * + * @return array + */ + public function list_fields() + { + $field_names = array(); + foreach (sqlsrv_field_metadata($this->result_id) as $offset => $field) + { + $field_names[] = $field['Name']; + } + + return $field_names; + } + + // -------------------------------------------------------------------- + + /** + * Field data + * + * Generates an array of objects containing field meta-data + * + * @return array + */ + public function field_data() + { + $retval = array(); + foreach (sqlsrv_field_metadata($this->result_id) as $i => $field) + { + $retval[$i] = new stdClass(); + $retval[$i]->name = $field['Name']; + $retval[$i]->type = $field['Type']; + $retval[$i]->max_length = $field['Size']; + } + + return $retval; + } + + // -------------------------------------------------------------------- + + /** + * Free the result + * + * @return void + */ + public function free_result() + { + if (is_resource($this->result_id)) + { + sqlsrv_free_stmt($this->result_id); + $this->result_id = FALSE; + } + } + + // -------------------------------------------------------------------- + + /** + * Result - associative array + * + * Returns the result set as an array + * + * @return array + */ + protected function _fetch_assoc() + { + return sqlsrv_fetch_array($this->result_id, SQLSRV_FETCH_ASSOC); + } + + // -------------------------------------------------------------------- + + /** + * Result - object + * + * Returns the result set as an object + * + * @param string $class_name + * @return object + */ + protected function _fetch_object($class_name = 'stdClass') + { + return sqlsrv_fetch_object($this->result_id, $class_name); + } + +} diff --git a/www/system/database/drivers/sqlsrv/sqlsrv_utility.php b/www/system/database/drivers/sqlsrv/sqlsrv_utility.php new file mode 100644 index 0000000..001107d --- /dev/null +++ b/www/system/database/drivers/sqlsrv/sqlsrv_utility.php @@ -0,0 +1,77 @@ +db->display_error('db_unsupported_feature'); + } + +} diff --git a/www/system/database/index.html b/www/system/database/index.html new file mode 100644 index 0000000..b702fbc --- /dev/null +++ b/www/system/database/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

    Directory access is forbidden.

    + + + diff --git a/www/system/fonts/index.html b/www/system/fonts/index.html new file mode 100644 index 0000000..b702fbc --- /dev/null +++ b/www/system/fonts/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

    Directory access is forbidden.

    + + + diff --git a/www/system/fonts/texb.ttf b/www/system/fonts/texb.ttf new file mode 100644 index 0000000000000000000000000000000000000000..383c88b86b7c17e2e284732af48b2bfc359647ae GIT binary patch literal 143830 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 z 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 n`i '', + 'img_path' => '', + 'img_url' => '', + 'img_width' => '150', + 'img_height' => '30', + 'font_path' => '', + 'expiration' => 7200, + 'word_length' => 8, + 'font_size' => 16, + 'img_id' => '', + 'pool' => '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', + 'colors' => array( + 'background' => array(255,255,255), + 'border' => array(153,102,102), + 'text' => array(204,153,153), + 'grid' => array(255,182,182) + ) + ); + + foreach ($defaults as $key => $val) + { + if ( ! is_array($data) && empty($$key)) + { + $$key = $val; + } + else + { + $$key = isset($data[$key]) ? $data[$key] : $val; + } + } + + if ($img_path === '' OR $img_url === '' + OR ! is_dir($img_path) OR ! is_really_writable($img_path) + OR ! extension_loaded('gd')) + { + return FALSE; + } + + // ----------------------------------- + // Remove old images + // ----------------------------------- + + $now = microtime(TRUE); + + $current_dir = @opendir($img_path); + while ($filename = @readdir($current_dir)) + { + if (in_array(substr($filename, -4), array('.jpg', '.png')) + && (str_replace(array('.jpg', '.png'), '', $filename) + $expiration) < $now) + { + @unlink($img_path.$filename); + } + } + + @closedir($current_dir); + + // ----------------------------------- + // Do we have a "word" yet? + // ----------------------------------- + + if (empty($word)) + { + $word = ''; + $pool_length = strlen($pool); + $rand_max = $pool_length - 1; + + // PHP7 or a suitable polyfill + if (function_exists('random_int')) + { + try + { + for ($i = 0; $i < $word_length; $i++) + { + $word .= $pool[random_int(0, $rand_max)]; + } + } + catch (Exception $e) + { + // This means fallback to the next possible + // alternative to random_int() + $word = ''; + } + } + } + + if (empty($word)) + { + // Nobody will have a larger character pool than + // 256 characters, but let's handle it just in case ... + // + // No, I do not care that the fallback to mt_rand() can + // handle it; if you trigger this, you're very obviously + // trying to break it. -- Narf + if ($pool_length > 256) + { + return FALSE; + } + + // We'll try using the operating system's PRNG first, + // which we can access through CI_Security::get_random_bytes() + $security = get_instance()->security; + + // To avoid numerous get_random_bytes() calls, we'll + // just try fetching as much bytes as we need at once. + if (($bytes = $security->get_random_bytes($pool_length)) !== FALSE) + { + $byte_index = $word_index = 0; + while ($word_index < $word_length) + { + // Do we have more random data to use? + // It could be exhausted by previous iterations + // ignoring bytes higher than $rand_max. + if ($byte_index === $pool_length) + { + // No failures should be possible if the + // first get_random_bytes() call didn't + // return FALSE, but still ... + for ($i = 0; $i < 5; $i++) + { + if (($bytes = $security->get_random_bytes($pool_length)) === FALSE) + { + continue; + } + + $byte_index = 0; + break; + } + + if ($bytes === FALSE) + { + // Sadly, this means fallback to mt_rand() + $word = ''; + break; + } + } + + list(, $rand_index) = unpack('C', $bytes[$byte_index++]); + if ($rand_index > $rand_max) + { + continue; + } + + $word .= $pool[$rand_index]; + $word_index++; + } + } + } + + if (empty($word)) + { + for ($i = 0; $i < $word_length; $i++) + { + $word .= $pool[mt_rand(0, $rand_max)]; + } + } + elseif ( ! is_string($word)) + { + $word = (string) $word; + } + + // ----------------------------------- + // Determine angle and position + // ----------------------------------- + $length = strlen($word); + $angle = ($length >= 6) ? mt_rand(-($length-6), ($length-6)) : 0; + $x_axis = mt_rand(6, (360/$length)-16); + $y_axis = ($angle >= 0) ? mt_rand($img_height, $img_width) : mt_rand(6, $img_height); + + // Create image + // PHP.net recommends imagecreatetruecolor(), but it isn't always available + $im = function_exists('imagecreatetruecolor') + ? imagecreatetruecolor($img_width, $img_height) + : imagecreate($img_width, $img_height); + + // ----------------------------------- + // Assign colors + // ---------------------------------- + + is_array($colors) OR $colors = $defaults['colors']; + + foreach (array_keys($defaults['colors']) as $key) + { + // Check for a possible missing value + is_array($colors[$key]) OR $colors[$key] = $defaults['colors'][$key]; + $colors[$key] = imagecolorallocate($im, $colors[$key][0], $colors[$key][1], $colors[$key][2]); + } + + // Create the rectangle + ImageFilledRectangle($im, 0, 0, $img_width, $img_height, $colors['background']); + + // ----------------------------------- + // Create the spiral pattern + // ----------------------------------- + $theta = 1; + $thetac = 7; + $radius = 16; + $circles = 20; + $points = 32; + + for ($i = 0, $cp = ($circles * $points) - 1; $i < $cp; $i++) + { + $theta += $thetac; + $rad = $radius * ($i / $points); + $x = ($rad * cos($theta)) + $x_axis; + $y = ($rad * sin($theta)) + $y_axis; + $theta += $thetac; + $rad1 = $radius * (($i + 1) / $points); + $x1 = ($rad1 * cos($theta)) + $x_axis; + $y1 = ($rad1 * sin($theta)) + $y_axis; + imageline($im, $x, $y, $x1, $y1, $colors['grid']); + $theta -= $thetac; + } + + // ----------------------------------- + // Write the text + // ----------------------------------- + + $use_font = ($font_path !== '' && file_exists($font_path) && function_exists('imagettftext')); + if ($use_font === FALSE) + { + ($font_size > 5) && $font_size = 5; + $x = mt_rand(0, $img_width / ($length / 3)); + $y = 0; + } + else + { + ($font_size > 30) && $font_size = 30; + $x = mt_rand(0, $img_width / ($length / 1.5)); + $y = $font_size + 2; + } + + for ($i = 0; $i < $length; $i++) + { + if ($use_font === FALSE) + { + $y = mt_rand(0 , $img_height / 2); + imagestring($im, $font_size, $x, $y, $word[$i], $colors['text']); + $x += ($font_size * 2); + } + else + { + $y = mt_rand($img_height / 2, $img_height - 3); + imagettftext($im, $font_size, $angle, $x, $y, $colors['text'], $font_path, $word[$i]); + $x += $font_size; + } + } + + // Create the border + imagerectangle($im, 0, 0, $img_width - 1, $img_height - 1, $colors['border']); + + // ----------------------------------- + // Generate the image + // ----------------------------------- + $img_url = rtrim($img_url, '/').'/'; + + if (function_exists('imagejpeg')) + { + $img_filename = $now.'.jpg'; + imagejpeg($im, $img_path.$img_filename); + } + elseif (function_exists('imagepng')) + { + $img_filename = $now.'.png'; + imagepng($im, $img_path.$img_filename); + } + else + { + return FALSE; + } + + $img = ' '; + ImageDestroy($im); + + return array('word' => $word, 'time' => $now, 'image' => $img, 'filename' => $img_filename); + } +} diff --git a/www/system/helpers/cookie_helper.php b/www/system/helpers/cookie_helper.php new file mode 100644 index 0000000..eccd2f3 --- /dev/null +++ b/www/system/helpers/cookie_helper.php @@ -0,0 +1,113 @@ +input->set_cookie($name, $value, $expire, $domain, $path, $prefix, $secure, $httponly); + } +} + +// -------------------------------------------------------------------- + +if ( ! function_exists('get_cookie')) +{ + /** + * Fetch an item from the COOKIE array + * + * @param string + * @param bool + * @return mixed + */ + function get_cookie($index, $xss_clean = NULL) + { + is_bool($xss_clean) OR $xss_clean = (config_item('global_xss_filtering') === TRUE); + $prefix = isset($_COOKIE[$index]) ? '' : config_item('cookie_prefix'); + return get_instance()->input->cookie($prefix.$index, $xss_clean); + } +} + +// -------------------------------------------------------------------- + +if ( ! function_exists('delete_cookie')) +{ + /** + * Delete a COOKIE + * + * @param mixed + * @param string the cookie domain. Usually: .yourdomain.com + * @param string the cookie path + * @param string the cookie prefix + * @return void + */ + function delete_cookie($name, $domain = '', $path = '/', $prefix = '') + { + set_cookie($name, '', '', $domain, $path, $prefix); + } +} diff --git a/www/system/helpers/date_helper.php b/www/system/helpers/date_helper.php new file mode 100644 index 0000000..eca1fc0 --- /dev/null +++ b/www/system/helpers/date_helper.php @@ -0,0 +1,742 @@ +format('j-n-Y G:i:s'), '%d-%d-%d %d:%d:%d', $day, $month, $year, $hour, $minute, $second); + + return mktime($hour, $minute, $second, $month, $day, $year); + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('mdate')) +{ + /** + * Convert MySQL Style Datecodes + * + * This function is identical to PHPs date() function, + * except that it allows date codes to be formatted using + * the MySQL style, where each code letter is preceded + * with a percent sign: %Y %m %d etc... + * + * The benefit of doing dates this way is that you don't + * have to worry about escaping your text letters that + * match the date codes. + * + * @param string + * @param int + * @return int + */ + function mdate($datestr = '', $time = '') + { + if ($datestr === '') + { + return ''; + } + elseif (empty($time)) + { + $time = now(); + } + + $datestr = str_replace( + '%\\', + '', + preg_replace('/([a-z]+?){1}/i', '\\\\\\1', $datestr) + ); + + return date($datestr, $time); + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('standard_date')) +{ + /** + * Standard Date + * + * Returns a date formatted according to the submitted standard. + * + * As of PHP 5.2, the DateTime extension provides constants that + * serve for the exact same purpose and are used with date(). + * + * @todo Remove in version 3.1+. + * @deprecated 3.0.0 Use PHP's native date() instead. + * @link http://www.php.net/manual/en/class.datetime.php#datetime.constants.types + * + * @example date(DATE_RFC822, now()); // default + * @example date(DATE_W3C, $time); // a different format and time + * + * @param string $fmt = 'DATE_RFC822' the chosen format + * @param int $time = NULL Unix timestamp + * @return string + */ + function standard_date($fmt = 'DATE_RFC822', $time = NULL) + { + if (empty($time)) + { + $time = now(); + } + + // Procedural style pre-defined constants from the DateTime extension + if (strpos($fmt, 'DATE_') !== 0 OR defined($fmt) === FALSE) + { + return FALSE; + } + + return date(constant($fmt), $time); + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('timespan')) +{ + /** + * Timespan + * + * Returns a span of seconds in this format: + * 10 days 14 hours 36 minutes 47 seconds + * + * @param int a number of seconds + * @param int Unix timestamp + * @param int a number of display units + * @return string + */ + function timespan($seconds = 1, $time = '', $units = 7) + { + $CI =& get_instance(); + $CI->lang->load('date'); + + is_numeric($seconds) OR $seconds = 1; + is_numeric($time) OR $time = time(); + is_numeric($units) OR $units = 7; + + $seconds = ($time <= $seconds) ? 1 : $time - $seconds; + + $str = array(); + $years = floor($seconds / 31557600); + + if ($years > 0) + { + $str[] = $years.' '.$CI->lang->line($years > 1 ? 'date_years' : 'date_year'); + } + + $seconds -= $years * 31557600; + $months = floor($seconds / 2629743); + + if (count($str) < $units && ($years > 0 OR $months > 0)) + { + if ($months > 0) + { + $str[] = $months.' '.$CI->lang->line($months > 1 ? 'date_months' : 'date_month'); + } + + $seconds -= $months * 2629743; + } + + $weeks = floor($seconds / 604800); + + if (count($str) < $units && ($years > 0 OR $months > 0 OR $weeks > 0)) + { + if ($weeks > 0) + { + $str[] = $weeks.' '.$CI->lang->line($weeks > 1 ? 'date_weeks' : 'date_week'); + } + + $seconds -= $weeks * 604800; + } + + $days = floor($seconds / 86400); + + if (count($str) < $units && ($months > 0 OR $weeks > 0 OR $days > 0)) + { + if ($days > 0) + { + $str[] = $days.' '.$CI->lang->line($days > 1 ? 'date_days' : 'date_day'); + } + + $seconds -= $days * 86400; + } + + $hours = floor($seconds / 3600); + + if (count($str) < $units && ($days > 0 OR $hours > 0)) + { + if ($hours > 0) + { + $str[] = $hours.' '.$CI->lang->line($hours > 1 ? 'date_hours' : 'date_hour'); + } + + $seconds -= $hours * 3600; + } + + $minutes = floor($seconds / 60); + + if (count($str) < $units && ($days > 0 OR $hours > 0 OR $minutes > 0)) + { + if ($minutes > 0) + { + $str[] = $minutes.' '.$CI->lang->line($minutes > 1 ? 'date_minutes' : 'date_minute'); + } + + $seconds -= $minutes * 60; + } + + if (count($str) === 0) + { + $str[] = $seconds.' '.$CI->lang->line($seconds > 1 ? 'date_seconds' : 'date_second'); + } + + return implode(', ', $str); + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('days_in_month')) +{ + /** + * Number of days in a month + * + * Takes a month/year as input and returns the number of days + * for the given month/year. Takes leap years into consideration. + * + * @param int a numeric month + * @param int a numeric year + * @return int + */ + function days_in_month($month = 0, $year = '') + { + if ($month < 1 OR $month > 12) + { + return 0; + } + elseif ( ! is_numeric($year) OR strlen($year) !== 4) + { + $year = date('Y'); + } + + if (defined('CAL_GREGORIAN')) + { + return cal_days_in_month(CAL_GREGORIAN, $month, $year); + } + + if ($year >= 1970) + { + return (int) date('t', mktime(12, 0, 0, $month, 1, $year)); + } + + if ($month == 2) + { + if ($year % 400 === 0 OR ($year % 4 === 0 && $year % 100 !== 0)) + { + return 29; + } + } + + $days_in_month = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); + return $days_in_month[$month - 1]; + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('local_to_gmt')) +{ + /** + * Converts a local Unix timestamp to GMT + * + * @param int Unix timestamp + * @return int + */ + function local_to_gmt($time = '') + { + if ($time === '') + { + $time = time(); + } + + return mktime( + gmdate('G', $time), + gmdate('i', $time), + gmdate('s', $time), + gmdate('n', $time), + gmdate('j', $time), + gmdate('Y', $time) + ); + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('gmt_to_local')) +{ + /** + * Converts GMT time to a localized value + * + * Takes a Unix timestamp (in GMT) as input, and returns + * at the local value based on the timezone and DST setting + * submitted + * + * @param int Unix timestamp + * @param string timezone + * @param bool whether DST is active + * @return int + */ + function gmt_to_local($time = '', $timezone = 'UTC', $dst = FALSE) + { + if ($time === '') + { + return now(); + } + + $time += timezones($timezone) * 3600; + + return ($dst === TRUE) ? $time + 3600 : $time; + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('mysql_to_unix')) +{ + /** + * Converts a MySQL Timestamp to Unix + * + * @param int MySQL timestamp YYYY-MM-DD HH:MM:SS + * @return int Unix timstamp + */ + function mysql_to_unix($time = '') + { + // We'll remove certain characters for backward compatibility + // since the formatting changed with MySQL 4.1 + // YYYY-MM-DD HH:MM:SS + + $time = str_replace(array('-', ':', ' '), '', $time); + + // YYYYMMDDHHMMSS + return mktime( + substr($time, 8, 2), + substr($time, 10, 2), + substr($time, 12, 2), + substr($time, 4, 2), + substr($time, 6, 2), + substr($time, 0, 4) + ); + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('unix_to_human')) +{ + /** + * Unix to "Human" + * + * Formats Unix timestamp to the following prototype: 2006-08-21 11:35 PM + * + * @param int Unix timestamp + * @param bool whether to show seconds + * @param string format: us or euro + * @return string + */ + function unix_to_human($time = '', $seconds = FALSE, $fmt = 'us') + { + $r = date('Y', $time).'-'.date('m', $time).'-'.date('d', $time).' '; + + if ($fmt === 'us') + { + $r .= date('h', $time).':'.date('i', $time); + } + else + { + $r .= date('H', $time).':'.date('i', $time); + } + + if ($seconds) + { + $r .= ':'.date('s', $time); + } + + if ($fmt === 'us') + { + return $r.' '.date('A', $time); + } + + return $r; + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('human_to_unix')) +{ + /** + * Convert "human" date to GMT + * + * Reverses the above process + * + * @param string format: us or euro + * @return int + */ + function human_to_unix($datestr = '') + { + if ($datestr === '') + { + return FALSE; + } + + $datestr = preg_replace('/\040+/', ' ', trim($datestr)); + + if ( ! preg_match('/^(\d{2}|\d{4})\-[0-9]{1,2}\-[0-9]{1,2}\s[0-9]{1,2}:[0-9]{1,2}(?::[0-9]{1,2})?(?:\s[AP]M)?$/i', $datestr)) + { + return FALSE; + } + + sscanf($datestr, '%d-%d-%d %s %s', $year, $month, $day, $time, $ampm); + sscanf($time, '%d:%d:%d', $hour, $min, $sec); + isset($sec) OR $sec = 0; + + if (isset($ampm)) + { + $ampm = strtolower($ampm); + + if ($ampm[0] === 'p' && $hour < 12) + { + $hour += 12; + } + elseif ($ampm[0] === 'a' && $hour === 12) + { + $hour = 0; + } + } + + return mktime($hour, $min, $sec, $month, $day, $year); + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('nice_date')) +{ + /** + * Turns many "reasonably-date-like" strings into something + * that is actually useful. This only works for dates after unix epoch. + * + * @deprecated 3.1.3 Use DateTime::createFromFormat($input_format, $input)->format($output_format); + * @param string The terribly formatted date-like string + * @param string Date format to return (same as php date function) + * @return string + */ + function nice_date($bad_date = '', $format = FALSE) + { + if (empty($bad_date)) + { + return 'Unknown'; + } + elseif (empty($format)) + { + $format = 'U'; + } + + // Date like: YYYYMM + if (preg_match('/^\d{6}$/i', $bad_date)) + { + if (in_array(substr($bad_date, 0, 2), array('19', '20'))) + { + $year = substr($bad_date, 0, 4); + $month = substr($bad_date, 4, 2); + } + else + { + $month = substr($bad_date, 0, 2); + $year = substr($bad_date, 2, 4); + } + + return date($format, strtotime($year.'-'.$month.'-01')); + } + + // Date Like: YYYYMMDD + if (preg_match('/^\d{8}$/i', $bad_date, $matches)) + { + return DateTime::createFromFormat('Ymd', $bad_date)->format($format); + } + + // Date Like: MM-DD-YYYY __or__ M-D-YYYY (or anything in between) + if (preg_match('/^(\d{1,2})-(\d{1,2})-(\d{4})$/i', $bad_date, $matches)) + { + return date($format, strtotime($matches[3].'-'.$matches[1].'-'.$matches[2])); + } + + // Any other kind of string, when converted into UNIX time, + // produces "0 seconds after epoc..." is probably bad... + // return "Invalid Date". + if (date('U', strtotime($bad_date)) === '0') + { + return 'Invalid Date'; + } + + // It's probably a valid-ish date format already + return date($format, strtotime($bad_date)); + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('timezone_menu')) +{ + /** + * Timezone Menu + * + * Generates a drop-down menu of timezones. + * + * @param string timezone + * @param string classname + * @param string menu name + * @param mixed attributes + * @return string + */ + function timezone_menu($default = 'UTC', $class = '', $name = 'timezones', $attributes = '') + { + $CI =& get_instance(); + $CI->lang->load('date'); + + $default = ($default === 'GMT') ? 'UTC' : $default; + + $menu = ''; + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('timezones')) +{ + /** + * Timezones + * + * Returns an array of timezones. This is a helper function + * for various other ones in this library + * + * @param string timezone + * @return string + */ + function timezones($tz = '') + { + // Note: Don't change the order of these even though + // some items appear to be in the wrong order + + $zones = array( + 'UM12' => -12, + 'UM11' => -11, + 'UM10' => -10, + 'UM95' => -9.5, + 'UM9' => -9, + 'UM8' => -8, + 'UM7' => -7, + 'UM6' => -6, + 'UM5' => -5, + 'UM45' => -4.5, + 'UM4' => -4, + 'UM35' => -3.5, + 'UM3' => -3, + 'UM2' => -2, + 'UM1' => -1, + 'UTC' => 0, + 'UP1' => +1, + 'UP2' => +2, + 'UP3' => +3, + 'UP35' => +3.5, + 'UP4' => +4, + 'UP45' => +4.5, + 'UP5' => +5, + 'UP55' => +5.5, + 'UP575' => +5.75, + 'UP6' => +6, + 'UP65' => +6.5, + 'UP7' => +7, + 'UP8' => +8, + 'UP875' => +8.75, + 'UP9' => +9, + 'UP95' => +9.5, + 'UP10' => +10, + 'UP105' => +10.5, + 'UP11' => +11, + 'UP115' => +11.5, + 'UP12' => +12, + 'UP1275' => +12.75, + 'UP13' => +13, + 'UP14' => +14 + ); + + if ($tz === '') + { + return $zones; + } + + return isset($zones[$tz]) ? $zones[$tz] : 0; + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('date_range')) +{ + /** + * Date range + * + * Returns a list of dates within a specified period. + * + * @param int unix_start UNIX timestamp of period start date + * @param int unix_end|days UNIX timestamp of period end date + * or interval in days. + * @param mixed is_unix Specifies whether the second parameter + * is a UNIX timestamp or a day interval + * - TRUE or 'unix' for a timestamp + * - FALSE or 'days' for an interval + * @param string date_format Output date format, same as in date() + * @return array + */ + function date_range($unix_start = '', $mixed = '', $is_unix = TRUE, $format = 'Y-m-d') + { + if ($unix_start == '' OR $mixed == '' OR $format == '') + { + return FALSE; + } + + $is_unix = ! ( ! $is_unix OR $is_unix === 'days'); + + // Validate input and try strtotime() on invalid timestamps/intervals, just in case + if ( ( ! ctype_digit((string) $unix_start) && ($unix_start = @strtotime($unix_start)) === FALSE) + OR ( ! ctype_digit((string) $mixed) && ($is_unix === FALSE OR ($mixed = @strtotime($mixed)) === FALSE)) + OR ($is_unix === TRUE && $mixed < $unix_start)) + { + return FALSE; + } + + if ($is_unix && ($unix_start == $mixed OR date($format, $unix_start) === date($format, $mixed))) + { + return array(date($format, $unix_start)); + } + + $range = array(); + + $from = new DateTime(); + $from->setTimestamp($unix_start); + + if ($is_unix) + { + $arg = new DateTime(); + $arg->setTimestamp($mixed); + } + else + { + $arg = (int) $mixed; + } + + $period = new DatePeriod($from, new DateInterval('P1D'), $arg); + foreach ($period as $date) + { + $range[] = $date->format($format); + } + + /* If a period end date was passed to the DatePeriod constructor, it might not + * be in our results. Not sure if this is a bug or it's just possible because + * the end date might actually be less than 24 hours away from the previously + * generated DateTime object, but either way - we have to append it manually. + */ + if ( ! is_int($arg) && $range[count($range) - 1] !== $arg->format($format)) + { + $range[] = $arg->format($format); + } + + return $range; + } +} diff --git a/www/system/helpers/directory_helper.php b/www/system/helpers/directory_helper.php new file mode 100644 index 0000000..0d3f205 --- /dev/null +++ b/www/system/helpers/directory_helper.php @@ -0,0 +1,101 @@ + 0) && is_dir($source_dir.$file)) + { + $filedata[$file] = directory_map($source_dir.$file, $new_depth, $hidden); + } + else + { + $filedata[] = $file; + } + } + + closedir($fp); + return $filedata; + } + + return FALSE; + } +} diff --git a/www/system/helpers/download_helper.php b/www/system/helpers/download_helper.php new file mode 100644 index 0000000..a9bea94 --- /dev/null +++ b/www/system/helpers/download_helper.php @@ -0,0 +1,158 @@ + 0) + ? @rmdir($path) + : TRUE; + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('get_filenames')) +{ + /** + * Get Filenames + * + * Reads the specified directory and builds an array containing the filenames. + * Any sub-folders contained within the specified path are read as well. + * + * @param string path to source + * @param bool whether to include the path as part of the filename + * @param bool internal variable to determine recursion status - do not use in calls + * @return array + */ + function get_filenames($source_dir, $include_path = FALSE, $_recursion = FALSE) + { + static $_filedata = array(); + + if ($fp = @opendir($source_dir)) + { + // reset the array and make sure $source_dir has a trailing slash on the initial call + if ($_recursion === FALSE) + { + $_filedata = array(); + $source_dir = rtrim(realpath($source_dir), DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR; + } + + while (FALSE !== ($file = readdir($fp))) + { + if (is_dir($source_dir.$file) && $file[0] !== '.') + { + get_filenames($source_dir.$file.DIRECTORY_SEPARATOR, $include_path, TRUE); + } + elseif ($file[0] !== '.') + { + $_filedata[] = ($include_path === TRUE) ? $source_dir.$file : $file; + } + } + + closedir($fp); + return $_filedata; + } + + return FALSE; + } +} + +// -------------------------------------------------------------------- + +if ( ! function_exists('get_dir_file_info')) +{ + /** + * Get Directory File Information + * + * Reads the specified directory and builds an array containing the filenames, + * filesize, dates, and permissions + * + * Any sub-folders contained within the specified path are read as well. + * + * @param string path to source + * @param bool Look only at the top level directory specified? + * @param bool internal variable to determine recursion status - do not use in calls + * @return array + */ + function get_dir_file_info($source_dir, $top_level_only = TRUE, $_recursion = FALSE) + { + static $_filedata = array(); + $relative_path = $source_dir; + + if ($fp = @opendir($source_dir)) + { + // reset the array and make sure $source_dir has a trailing slash on the initial call + if ($_recursion === FALSE) + { + $_filedata = array(); + $source_dir = rtrim(realpath($source_dir), DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR; + } + + // Used to be foreach (scandir($source_dir, 1) as $file), but scandir() is simply not as fast + while (FALSE !== ($file = readdir($fp))) + { + if (is_dir($source_dir.$file) && $file[0] !== '.' && $top_level_only === FALSE) + { + get_dir_file_info($source_dir.$file.DIRECTORY_SEPARATOR, $top_level_only, TRUE); + } + elseif ($file[0] !== '.') + { + $_filedata[$file] = get_file_info($source_dir.$file); + $_filedata[$file]['relative_path'] = $relative_path; + } + } + + closedir($fp); + return $_filedata; + } + + return FALSE; + } +} + +// -------------------------------------------------------------------- + +if ( ! function_exists('get_file_info')) +{ + /** + * Get File Info + * + * Given a file and path, returns the name, path, size, date modified + * Second parameter allows you to explicitly declare what information you want returned + * Options are: name, server_path, size, date, readable, writable, executable, fileperms + * Returns FALSE if the file cannot be found. + * + * @param string path to file + * @param mixed array or comma separated string of information returned + * @return array + */ + function get_file_info($file, $returned_values = array('name', 'server_path', 'size', 'date')) + { + if ( ! file_exists($file)) + { + return FALSE; + } + + if (is_string($returned_values)) + { + $returned_values = explode(',', $returned_values); + } + + foreach ($returned_values as $key) + { + switch ($key) + { + case 'name': + $fileinfo['name'] = basename($file); + break; + case 'server_path': + $fileinfo['server_path'] = $file; + break; + case 'size': + $fileinfo['size'] = filesize($file); + break; + case 'date': + $fileinfo['date'] = filemtime($file); + break; + case 'readable': + $fileinfo['readable'] = is_readable($file); + break; + case 'writable': + $fileinfo['writable'] = is_really_writable($file); + break; + case 'executable': + $fileinfo['executable'] = is_executable($file); + break; + case 'fileperms': + $fileinfo['fileperms'] = fileperms($file); + break; + } + } + + return $fileinfo; + } +} + +// -------------------------------------------------------------------- + +if ( ! function_exists('get_mime_by_extension')) +{ + /** + * Get Mime by Extension + * + * Translates a file extension into a mime type based on config/mimes.php. + * Returns FALSE if it can't determine the type, or open the mime config file + * + * Note: this is NOT an accurate way of determining file mime types, and is here strictly as a convenience + * It should NOT be trusted, and should certainly NOT be used for security + * + * @param string $filename File name + * @return string + */ + function get_mime_by_extension($filename) + { + static $mimes; + + if ( ! is_array($mimes)) + { + $mimes = get_mimes(); + + if (empty($mimes)) + { + return FALSE; + } + } + + $extension = strtolower(substr(strrchr($filename, '.'), 1)); + + if (isset($mimes[$extension])) + { + return is_array($mimes[$extension]) + ? current($mimes[$extension]) // Multiple mime types, just give the first one + : $mimes[$extension]; + } + + return FALSE; + } +} + +// -------------------------------------------------------------------- + +if ( ! function_exists('symbolic_permissions')) +{ + /** + * Symbolic Permissions + * + * Takes a numeric value representing a file's permissions and returns + * standard symbolic notation representing that value + * + * @param int $perms Permissions + * @return string + */ + function symbolic_permissions($perms) + { + if (($perms & 0xC000) === 0xC000) + { + $symbolic = 's'; // Socket + } + elseif (($perms & 0xA000) === 0xA000) + { + $symbolic = 'l'; // Symbolic Link + } + elseif (($perms & 0x8000) === 0x8000) + { + $symbolic = '-'; // Regular + } + elseif (($perms & 0x6000) === 0x6000) + { + $symbolic = 'b'; // Block special + } + elseif (($perms & 0x4000) === 0x4000) + { + $symbolic = 'd'; // Directory + } + elseif (($perms & 0x2000) === 0x2000) + { + $symbolic = 'c'; // Character special + } + elseif (($perms & 0x1000) === 0x1000) + { + $symbolic = 'p'; // FIFO pipe + } + else + { + $symbolic = 'u'; // Unknown + } + + // Owner + $symbolic .= (($perms & 0x0100) ? 'r' : '-') + .(($perms & 0x0080) ? 'w' : '-') + .(($perms & 0x0040) ? (($perms & 0x0800) ? 's' : 'x' ) : (($perms & 0x0800) ? 'S' : '-')); + + // Group + $symbolic .= (($perms & 0x0020) ? 'r' : '-') + .(($perms & 0x0010) ? 'w' : '-') + .(($perms & 0x0008) ? (($perms & 0x0400) ? 's' : 'x' ) : (($perms & 0x0400) ? 'S' : '-')); + + // World + $symbolic .= (($perms & 0x0004) ? 'r' : '-') + .(($perms & 0x0002) ? 'w' : '-') + .(($perms & 0x0001) ? (($perms & 0x0200) ? 't' : 'x' ) : (($perms & 0x0200) ? 'T' : '-')); + + return $symbolic; + } +} + +// -------------------------------------------------------------------- + +if ( ! function_exists('octal_permissions')) +{ + /** + * Octal Permissions + * + * Takes a numeric value representing a file's permissions and returns + * a three character string representing the file's octal permissions + * + * @param int $perms Permissions + * @return string + */ + function octal_permissions($perms) + { + return substr(sprintf('%o', $perms), -3); + } +} diff --git a/www/system/helpers/form_helper.php b/www/system/helpers/form_helper.php new file mode 100644 index 0000000..8746045 --- /dev/null +++ b/www/system/helpers/form_helper.php @@ -0,0 +1,1055 @@ +config->site_url($CI->uri->uri_string()); + } + // If an action is not a full URL then turn it into one + elseif (strpos($action, '://') === FALSE) + { + $action = $CI->config->site_url($action); + } + + $attributes = _attributes_to_string($attributes); + + if (stripos($attributes, 'method=') === FALSE) + { + $attributes .= ' method="post"'; + } + + if (stripos($attributes, 'accept-charset=') === FALSE) + { + $attributes .= ' accept-charset="'.strtolower(config_item('charset')).'"'; + } + + $form = '
    \n"; + + if (is_array($hidden)) + { + foreach ($hidden as $name => $value) + { + $form .= ''."\n"; + } + } + + // Add CSRF field if enabled, but leave it out for GET requests and requests to external websites + if ($CI->config->item('csrf_protection') === TRUE && strpos($action, $CI->config->base_url()) !== FALSE && ! stripos($form, 'method="get"')) + { + // Prepend/append random-length "white noise" around the CSRF + // token input, as a form of protection against BREACH attacks + if (FALSE !== ($noise = $CI->security->get_random_bytes(1))) + { + list(, $noise) = unpack('c', $noise); + } + else + { + $noise = mt_rand(-128, 127); + } + + // Prepend if $noise has a negative value, append if positive, do nothing for zero + $prepend = $append = ''; + if ($noise < 0) + { + $prepend = str_repeat(" ", abs($noise)); + } + elseif ($noise > 0) + { + $append = str_repeat(" ", $noise); + } + + $form .= sprintf( + '%s%s%s', + $prepend, + $CI->security->get_csrf_token_name(), + $CI->security->get_csrf_hash(), + $append, + "\n" + ); + } + + return $form; + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('form_open_multipart')) +{ + /** + * Form Declaration - Multipart type + * + * Creates the opening portion of the form, but with "multipart/form-data". + * + * @param string the URI segments of the form destination + * @param array a key/value pair of attributes + * @param array a key/value pair hidden data + * @return string + */ + function form_open_multipart($action = '', $attributes = array(), $hidden = array()) + { + if (is_string($attributes)) + { + $attributes .= ' enctype="multipart/form-data"'; + } + else + { + $attributes['enctype'] = 'multipart/form-data'; + } + + return form_open($action, $attributes, $hidden); + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('form_hidden')) +{ + /** + * Hidden Input Field + * + * Generates hidden fields. You can pass a simple key/value string or + * an associative array with multiple values. + * + * @param mixed $name Field name + * @param string $value Field value + * @param bool $recursing + * @return string + */ + function form_hidden($name, $value = '', $recursing = FALSE) + { + static $form; + + if ($recursing === FALSE) + { + $form = "\n"; + } + + if (is_array($name)) + { + foreach ($name as $key => $val) + { + form_hidden($key, $val, TRUE); + } + + return $form; + } + + if ( ! is_array($value)) + { + $form .= '\n"; + } + else + { + foreach ($value as $k => $v) + { + $k = is_int($k) ? '' : $k; + form_hidden($name.'['.$k.']', $v, TRUE); + } + } + + return $form; + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('form_input')) +{ + /** + * Text Input Field + * + * @param mixed + * @param string + * @param mixed + * @return string + */ + function form_input($data = '', $value = '', $extra = '') + { + $defaults = array( + 'type' => 'text', + 'name' => is_array($data) ? '' : $data, + 'value' => $value + ); + + return '\n"; + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('form_password')) +{ + /** + * Password Field + * + * Identical to the input function but adds the "password" type + * + * @param mixed + * @param string + * @param mixed + * @return string + */ + function form_password($data = '', $value = '', $extra = '') + { + is_array($data) OR $data = array('name' => $data); + $data['type'] = 'password'; + return form_input($data, $value, $extra); + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('form_upload')) +{ + /** + * Upload Field + * + * Identical to the input function but adds the "file" type + * + * @param mixed + * @param string + * @param mixed + * @return string + */ + function form_upload($data = '', $value = '', $extra = '') + { + $defaults = array('type' => 'file', 'name' => ''); + is_array($data) OR $data = array('name' => $data); + $data['type'] = 'file'; + + return '\n"; + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('form_textarea')) +{ + /** + * Textarea field + * + * @param mixed $data + * @param string $value + * @param mixed $extra + * @return string + */ + function form_textarea($data = '', $value = '', $extra = '') + { + $defaults = array( + 'name' => is_array($data) ? '' : $data, + 'cols' => '40', + 'rows' => '10' + ); + + if ( ! is_array($data) OR ! isset($data['value'])) + { + $val = $value; + } + else + { + $val = $data['value']; + unset($data['value']); // textareas don't use the value attribute + } + + return '\n"; + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('form_multiselect')) +{ + /** + * Multi-select menu + * + * @param string + * @param array + * @param mixed + * @param mixed + * @return string + */ + function form_multiselect($name = '', $options = array(), $selected = array(), $extra = '') + { + $extra = _attributes_to_string($extra); + if (stripos($extra, 'multiple') === FALSE) + { + $extra .= ' multiple="multiple"'; + } + + return form_dropdown($name, $options, $selected, $extra); + } +} + +// -------------------------------------------------------------------- + +if ( ! function_exists('form_dropdown')) +{ + /** + * Drop-down Menu + * + * @param mixed $data + * @param mixed $options + * @param mixed $selected + * @param mixed $extra + * @return string + */ + function form_dropdown($data = '', $options = array(), $selected = array(), $extra = '') + { + $defaults = array(); + + if (is_array($data)) + { + if (isset($data['selected'])) + { + $selected = $data['selected']; + unset($data['selected']); // select tags don't have a selected attribute + } + + if (isset($data['options'])) + { + $options = $data['options']; + unset($data['options']); // select tags don't use an options attribute + } + } + else + { + $defaults = array('name' => $data); + } + + is_array($selected) OR $selected = array($selected); + is_array($options) OR $options = array($options); + + // If no selected state was submitted we will attempt to set it automatically + if (empty($selected)) + { + if (is_array($data)) + { + if (isset($data['name'], $_POST[$data['name']])) + { + $selected = array($_POST[$data['name']]); + } + } + elseif (isset($_POST[$data])) + { + $selected = array($_POST[$data]); + } + } + + $extra = _attributes_to_string($extra); + + $multiple = (count($selected) > 1 && stripos($extra, 'multiple') === FALSE) ? ' multiple="multiple"' : ''; + + $form = '\n"; + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('form_checkbox')) +{ + /** + * Checkbox Field + * + * @param mixed + * @param string + * @param bool + * @param mixed + * @return string + */ + function form_checkbox($data = '', $value = '', $checked = FALSE, $extra = '') + { + $defaults = array('type' => 'checkbox', 'name' => ( ! is_array($data) ? $data : ''), 'value' => $value); + + if (is_array($data) && array_key_exists('checked', $data)) + { + $checked = $data['checked']; + + if ($checked == FALSE) + { + unset($data['checked']); + } + else + { + $data['checked'] = 'checked'; + } + } + + if ($checked == TRUE) + { + $defaults['checked'] = 'checked'; + } + else + { + unset($defaults['checked']); + } + + return '\n"; + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('form_radio')) +{ + /** + * Radio Button + * + * @param mixed + * @param string + * @param bool + * @param mixed + * @return string + */ + function form_radio($data = '', $value = '', $checked = FALSE, $extra = '') + { + is_array($data) OR $data = array('name' => $data); + $data['type'] = 'radio'; + + return form_checkbox($data, $value, $checked, $extra); + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('form_submit')) +{ + /** + * Submit Button + * + * @param mixed + * @param string + * @param mixed + * @return string + */ + function form_submit($data = '', $value = '', $extra = '') + { + $defaults = array( + 'type' => 'submit', + 'name' => is_array($data) ? '' : $data, + 'value' => $value + ); + + return '\n"; + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('form_reset')) +{ + /** + * Reset Button + * + * @param mixed + * @param string + * @param mixed + * @return string + */ + function form_reset($data = '', $value = '', $extra = '') + { + $defaults = array( + 'type' => 'reset', + 'name' => is_array($data) ? '' : $data, + 'value' => $value + ); + + return '\n"; + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('form_button')) +{ + /** + * Form Button + * + * @param mixed + * @param string + * @param mixed + * @return string + */ + function form_button($data = '', $content = '', $extra = '') + { + $defaults = array( + 'name' => is_array($data) ? '' : $data, + 'type' => 'button' + ); + + if (is_array($data) && isset($data['content'])) + { + $content = $data['content']; + unset($data['content']); // content is not an attribute + } + + return '\n"; + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('form_label')) +{ + /** + * Form Label Tag + * + * @param string The text to appear onscreen + * @param string The id the label applies to + * @param mixed Additional attributes + * @return string + */ + function form_label($label_text = '', $id = '', $attributes = array()) + { + + $label = ''.$label_text.''; + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('form_fieldset')) +{ + /** + * Fieldset Tag + * + * Used to produce
    text. To close fieldset + * use form_fieldset_close() + * + * @param string The legend text + * @param array Additional attributes + * @return string + */ + function form_fieldset($legend_text = '', $attributes = array()) + { + $fieldset = '\n"; + if ($legend_text !== '') + { + return $fieldset.''.$legend_text."\n"; + } + + return $fieldset; + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('form_fieldset_close')) +{ + /** + * Fieldset Close Tag + * + * @param string + * @return string + */ + function form_fieldset_close($extra = '') + { + return '
    '.$extra; + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('form_close')) +{ + /** + * Form Close Tag + * + * @param string + * @return string + */ + function form_close($extra = '') + { + return ''.$extra; + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('form_prep')) +{ + /** + * Form Prep + * + * Formats text so that it can be safely placed in a form field in the event it has HTML tags. + * + * @deprecated 3.0.0 An alias for html_escape() + * @param string|string[] $str Value to escape + * @return string|string[] Escaped values + */ + function form_prep($str) + { + return html_escape($str, TRUE); + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('set_value')) +{ + /** + * Form Value + * + * Grabs a value from the POST array for the specified field so you can + * re-populate an input field or textarea. If Form Validation + * is active it retrieves the info from the validation class + * + * @param string $field Field name + * @param string $default Default value + * @param bool $html_escape Whether to escape HTML special characters or not + * @return string + */ + function set_value($field, $default = '', $html_escape = TRUE) + { + $CI =& get_instance(); + + $value = (isset($CI->form_validation) && is_object($CI->form_validation) && $CI->form_validation->has_rule($field)) + ? $CI->form_validation->set_value($field, $default) + : $CI->input->post($field, FALSE); + + isset($value) OR $value = $default; + return ($html_escape) ? html_escape($value) : $value; + } +} + +// ------------------------------------------------------------------------ + +if ( ! function_exists('set_select')) +{ + /** + * Set Select + * + * Let's you set the selected value of a
    ', + 'heading_row_start' => '', + 'heading_previous_cell' => '', + 'heading_title_cell' => '', + 'heading_next_cell' => '', + 'heading_row_end' => '', + 'week_row_start' => '', + 'week_day_cell' => '', + 'week_row_end' => '', + 'cal_row_start' => '', + 'cal_cell_start' => '', + 'cal_cell_end_today' => '', + 'cal_cell_end_other' => '', + 'cal_row_end' => '', + 'table_close' => '
    <<{heading}>>
    {week_day}
    ', + 'cal_cell_start_today' => '', + 'cal_cell_start_other' => '', + 'cal_cell_content' => '{day}', + 'cal_cell_content_today' => '{day}', + 'cal_cell_no_content' => '{day}', + 'cal_cell_no_content_today' => '{day}', + 'cal_cell_blank' => ' ', + 'cal_cell_other' => '{day}', + 'cal_cell_end' => '
    ' + ); + } + + // -------------------------------------------------------------------- + + /** + * Parse Template + * + * Harvests the data within the template {pseudo-variables} + * used to display the calendar + * + * @return CI_Calendar + */ + public function parse_template() + { + $this->replacements = $this->default_template(); + + if (empty($this->template)) + { + return $this; + } + + if (is_string($this->template)) + { + $today = array('cal_cell_start_today', 'cal_cell_content_today', 'cal_cell_no_content_today', 'cal_cell_end_today'); + + foreach (array('table_open', 'table_close', 'heading_row_start', 'heading_previous_cell', 'heading_title_cell', 'heading_next_cell', 'heading_row_end', 'week_row_start', 'week_day_cell', 'week_row_end', 'cal_row_start', 'cal_cell_start', 'cal_cell_content', 'cal_cell_no_content', 'cal_cell_blank', 'cal_cell_end', 'cal_row_end', 'cal_cell_start_today', 'cal_cell_content_today', 'cal_cell_no_content_today', 'cal_cell_end_today', 'cal_cell_start_other', 'cal_cell_other', 'cal_cell_end_other') as $val) + { + if (preg_match('/\{'.$val.'\}(.*?)\{\/'.$val.'\}/si', $this->template, $match)) + { + $this->replacements[$val] = $match[1]; + } + elseif (in_array($val, $today, TRUE)) + { + $this->replacements[$val] = $this->replacements[substr($val, 0, -6)]; + } + } + } + elseif (is_array($this->template)) + { + $this->replacements = array_merge($this->replacements, $this->template); + } + + return $this; + } + +} diff --git a/www/system/libraries/Cart.php b/www/system/libraries/Cart.php new file mode 100644 index 0000000..4c51e7a --- /dev/null +++ b/www/system/libraries/Cart.php @@ -0,0 +1,567 @@ +CI =& get_instance(); + + // Are any config settings being passed manually? If so, set them + $config = is_array($params) ? $params : array(); + + // Load the Sessions class + $this->CI->load->driver('session', $config); + + // Grab the shopping cart array from the session table + $this->_cart_contents = $this->CI->session->userdata('cart_contents'); + if ($this->_cart_contents === NULL) + { + // No cart exists so we'll set some base values + $this->_cart_contents = array('cart_total' => 0, 'total_items' => 0); + } + + log_message('info', 'Cart Class Initialized'); + } + + // -------------------------------------------------------------------- + + /** + * Insert items into the cart and save it to the session table + * + * @param array + * @return bool + */ + public function insert($items = array()) + { + // Was any cart data passed? No? Bah... + if ( ! is_array($items) OR count($items) === 0) + { + log_message('error', 'The insert method must be passed an array containing data.'); + return FALSE; + } + + // You can either insert a single product using a one-dimensional array, + // or multiple products using a multi-dimensional one. The way we + // determine the array type is by looking for a required array key named "id" + // at the top level. If it's not found, we will assume it's a multi-dimensional array. + + $save_cart = FALSE; + if (isset($items['id'])) + { + if (($rowid = $this->_insert($items))) + { + $save_cart = TRUE; + } + } + else + { + foreach ($items as $val) + { + if (is_array($val) && isset($val['id'])) + { + if ($this->_insert($val)) + { + $save_cart = TRUE; + } + } + } + } + + // Save the cart data if the insert was successful + if ($save_cart === TRUE) + { + $this->_save_cart(); + return isset($rowid) ? $rowid : TRUE; + } + + return FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Insert + * + * @param array + * @return bool + */ + protected function _insert($items = array()) + { + // Was any cart data passed? No? Bah... + if ( ! is_array($items) OR count($items) === 0) + { + log_message('error', 'The insert method must be passed an array containing data.'); + return FALSE; + } + + // -------------------------------------------------------------------- + + // Does the $items array contain an id, quantity, price, and name? These are required + if ( ! isset($items['id'], $items['qty'], $items['price'], $items['name'])) + { + log_message('error', 'The cart array must contain a product ID, quantity, price, and name.'); + return FALSE; + } + + // -------------------------------------------------------------------- + + // Prep the quantity. It can only be a number. Duh... also trim any leading zeros + $items['qty'] = (float) $items['qty']; + + // If the quantity is zero or blank there's nothing for us to do + if ($items['qty'] == 0) + { + return FALSE; + } + + // -------------------------------------------------------------------- + + // Validate the product ID. It can only be alpha-numeric, dashes, underscores or periods + // Not totally sure we should impose this rule, but it seems prudent to standardize IDs. + // Note: These can be user-specified by setting the $this->product_id_rules variable. + if ( ! preg_match('/^['.$this->product_id_rules.']+$/i', $items['id'])) + { + log_message('error', 'Invalid product ID. The product ID can only contain alpha-numeric characters, dashes, and underscores'); + return FALSE; + } + + // -------------------------------------------------------------------- + + // Validate the product name. It can only be alpha-numeric, dashes, underscores, colons or periods. + // Note: These can be user-specified by setting the $this->product_name_rules variable. + if ($this->product_name_safe && ! preg_match('/^['.$this->product_name_rules.']+$/i'.(UTF8_ENABLED ? 'u' : ''), $items['name'])) + { + log_message('error', 'An invalid name was submitted as the product name: '.$items['name'].' The name can only contain alpha-numeric characters, dashes, underscores, colons, and spaces'); + return FALSE; + } + + // -------------------------------------------------------------------- + + // Prep the price. Remove leading zeros and anything that isn't a number or decimal point. + $items['price'] = (float) $items['price']; + + // We now need to create a unique identifier for the item being inserted into the cart. + // Every time something is added to the cart it is stored in the master cart array. + // Each row in the cart array, however, must have a unique index that identifies not only + // a particular product, but makes it possible to store identical products with different options. + // For example, what if someone buys two identical t-shirts (same product ID), but in + // different sizes? The product ID (and other attributes, like the name) will be identical for + // both sizes because it's the same shirt. The only difference will be the size. + // Internally, we need to treat identical submissions, but with different options, as a unique product. + // Our solution is to convert the options array to a string and MD5 it along with the product ID. + // This becomes the unique "row ID" + if (isset($items['options']) && count($items['options']) > 0) + { + $rowid = md5($items['id'].serialize($items['options'])); + } + else + { + // No options were submitted so we simply MD5 the product ID. + // Technically, we don't need to MD5 the ID in this case, but it makes + // sense to standardize the format of array indexes for both conditions + $rowid = md5($items['id']); + } + + // -------------------------------------------------------------------- + + // Now that we have our unique "row ID", we'll add our cart items to the master array + // grab quantity if it's already there and add it on + $old_quantity = isset($this->_cart_contents[$rowid]['qty']) ? (int) $this->_cart_contents[$rowid]['qty'] : 0; + + // Re-create the entry, just to make sure our index contains only the data from this submission + $items['rowid'] = $rowid; + $items['qty'] += $old_quantity; + $this->_cart_contents[$rowid] = $items; + + return $rowid; + } + + // -------------------------------------------------------------------- + + /** + * Update the cart + * + * This function permits the quantity of a given item to be changed. + * Typically it is called from the "view cart" page if a user makes + * changes to the quantity before checkout. That array must contain the + * product ID and quantity for each item. + * + * @param array + * @return bool + */ + public function update($items = array()) + { + // Was any cart data passed? + if ( ! is_array($items) OR count($items) === 0) + { + return FALSE; + } + + // You can either update a single product using a one-dimensional array, + // or multiple products using a multi-dimensional one. The way we + // determine the array type is by looking for a required array key named "rowid". + // If it's not found we assume it's a multi-dimensional array + $save_cart = FALSE; + if (isset($items['rowid'])) + { + if ($this->_update($items) === TRUE) + { + $save_cart = TRUE; + } + } + else + { + foreach ($items as $val) + { + if (is_array($val) && isset($val['rowid'])) + { + if ($this->_update($val) === TRUE) + { + $save_cart = TRUE; + } + } + } + } + + // Save the cart data if the insert was successful + if ($save_cart === TRUE) + { + $this->_save_cart(); + return TRUE; + } + + return FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Update the cart + * + * This function permits changing item properties. + * Typically it is called from the "view cart" page if a user makes + * changes to the quantity before checkout. That array must contain the + * rowid and quantity for each item. + * + * @param array + * @return bool + */ + protected function _update($items = array()) + { + // Without these array indexes there is nothing we can do + if ( ! isset($items['rowid'], $this->_cart_contents[$items['rowid']])) + { + return FALSE; + } + + // Prep the quantity + if (isset($items['qty'])) + { + $items['qty'] = (float) $items['qty']; + // Is the quantity zero? If so we will remove the item from the cart. + // If the quantity is greater than zero we are updating + if ($items['qty'] == 0) + { + unset($this->_cart_contents[$items['rowid']]); + return TRUE; + } + } + + // find updatable keys + $keys = array_intersect(array_keys($this->_cart_contents[$items['rowid']]), array_keys($items)); + // if a price was passed, make sure it contains valid data + if (isset($items['price'])) + { + $items['price'] = (float) $items['price']; + } + + // product id & name shouldn't be changed + foreach (array_diff($keys, array('id', 'name')) as $key) + { + $this->_cart_contents[$items['rowid']][$key] = $items[$key]; + } + + return TRUE; + } + + // -------------------------------------------------------------------- + + /** + * Save the cart array to the session DB + * + * @return bool + */ + protected function _save_cart() + { + // Let's add up the individual prices and set the cart sub-total + $this->_cart_contents['total_items'] = $this->_cart_contents['cart_total'] = 0; + foreach ($this->_cart_contents as $key => $val) + { + // We make sure the array contains the proper indexes + if ( ! is_array($val) OR ! isset($val['price'], $val['qty'])) + { + continue; + } + + $this->_cart_contents['cart_total'] += ($val['price'] * $val['qty']); + $this->_cart_contents['total_items'] += $val['qty']; + $this->_cart_contents[$key]['subtotal'] = ($this->_cart_contents[$key]['price'] * $this->_cart_contents[$key]['qty']); + } + + // Is our cart empty? If so we delete it from the session + if (count($this->_cart_contents) <= 2) + { + $this->CI->session->unset_userdata('cart_contents'); + + // Nothing more to do... coffee time! + return FALSE; + } + + // If we made it this far it means that our cart has data. + // Let's pass it to the Session class so it can be stored + $this->CI->session->set_userdata(array('cart_contents' => $this->_cart_contents)); + + // Woot! + return TRUE; + } + + // -------------------------------------------------------------------- + + /** + * Cart Total + * + * @return int + */ + public function total() + { + return $this->_cart_contents['cart_total']; + } + + // -------------------------------------------------------------------- + + /** + * Remove Item + * + * Removes an item from the cart + * + * @param int + * @return bool + */ + public function remove($rowid) + { + // unset & save + unset($this->_cart_contents[$rowid]); + $this->_save_cart(); + return TRUE; + } + + // -------------------------------------------------------------------- + + /** + * Total Items + * + * Returns the total item count + * + * @return int + */ + public function total_items() + { + return $this->_cart_contents['total_items']; + } + + // -------------------------------------------------------------------- + + /** + * Cart Contents + * + * Returns the entire cart array + * + * @param bool + * @return array + */ + public function contents($newest_first = FALSE) + { + // do we want the newest first? + $cart = ($newest_first) ? array_reverse($this->_cart_contents) : $this->_cart_contents; + + // Remove these so they don't create a problem when showing the cart table + unset($cart['total_items']); + unset($cart['cart_total']); + + return $cart; + } + + // -------------------------------------------------------------------- + + /** + * Get cart item + * + * Returns the details of a specific item in the cart + * + * @param string $row_id + * @return array + */ + public function get_item($row_id) + { + return (in_array($row_id, array('total_items', 'cart_total'), TRUE) OR ! isset($this->_cart_contents[$row_id])) + ? FALSE + : $this->_cart_contents[$row_id]; + } + + // -------------------------------------------------------------------- + + /** + * Has options + * + * Returns TRUE if the rowid passed to this function correlates to an item + * that has options associated with it. + * + * @param string $row_id = '' + * @return bool + */ + public function has_options($row_id = '') + { + return (isset($this->_cart_contents[$row_id]['options']) && count($this->_cart_contents[$row_id]['options']) !== 0); + } + + // -------------------------------------------------------------------- + + /** + * Product options + * + * Returns the an array of options, for a particular product row ID + * + * @param string $row_id = '' + * @return array + */ + public function product_options($row_id = '') + { + return isset($this->_cart_contents[$row_id]['options']) ? $this->_cart_contents[$row_id]['options'] : array(); + } + + // -------------------------------------------------------------------- + + /** + * Format Number + * + * Returns the supplied number with commas and a decimal point. + * + * @param float + * @return string + */ + public function format_number($n = '') + { + return ($n === '') ? '' : number_format( (float) $n, 2, '.', ','); + } + + // -------------------------------------------------------------------- + + /** + * Destroy the cart + * + * Empties the cart and kills the session + * + * @return void + */ + public function destroy() + { + $this->_cart_contents = array('cart_total' => 0, 'total_items' => 0); + $this->CI->session->unset_userdata('cart_contents'); + } + +} diff --git a/www/system/libraries/Driver.php b/www/system/libraries/Driver.php new file mode 100644 index 0000000..7dd66ec --- /dev/null +++ b/www/system/libraries/Driver.php @@ -0,0 +1,342 @@ +load_driver($child); + } + + /** + * Load driver + * + * Separate load_driver call to support explicit driver load by library or user + * + * @param string Driver name (w/o parent prefix) + * @return object Child class + */ + public function load_driver($child) + { + // Get CodeIgniter instance and subclass prefix + $prefix = config_item('subclass_prefix'); + + if ( ! isset($this->lib_name)) + { + // Get library name without any prefix + $this->lib_name = str_replace(array('CI_', $prefix), '', get_class($this)); + } + + // The child will be prefixed with the parent lib + $child_name = $this->lib_name.'_'.$child; + + // See if requested child is a valid driver + if ( ! in_array($child, $this->valid_drivers)) + { + // The requested driver isn't valid! + $msg = 'Invalid driver requested: '.$child_name; + log_message('error', $msg); + show_error($msg); + } + + // Get package paths and filename case variations to search + $CI = get_instance(); + $paths = $CI->load->get_package_paths(TRUE); + + // Is there an extension? + $class_name = $prefix.$child_name; + $found = class_exists($class_name, FALSE); + if ( ! $found) + { + // Check for subclass file + foreach ($paths as $path) + { + // Does the file exist? + $file = $path.'libraries/'.$this->lib_name.'/drivers/'.$prefix.$child_name.'.php'; + if (file_exists($file)) + { + // Yes - require base class from BASEPATH + $basepath = BASEPATH.'libraries/'.$this->lib_name.'/drivers/'.$child_name.'.php'; + if ( ! file_exists($basepath)) + { + $msg = 'Unable to load the requested class: CI_'.$child_name; + log_message('error', $msg); + show_error($msg); + } + + // Include both sources and mark found + include_once($basepath); + include_once($file); + $found = TRUE; + break; + } + } + } + + // Do we need to search for the class? + if ( ! $found) + { + // Use standard class name + $class_name = 'CI_'.$child_name; + if ( ! class_exists($class_name, FALSE)) + { + // Check package paths + foreach ($paths as $path) + { + // Does the file exist? + $file = $path.'libraries/'.$this->lib_name.'/drivers/'.$child_name.'.php'; + if (file_exists($file)) + { + // Include source + include_once($file); + break; + } + } + } + } + + // Did we finally find the class? + if ( ! class_exists($class_name, FALSE)) + { + if (class_exists($child_name, FALSE)) + { + $class_name = $child_name; + } + else + { + $msg = 'Unable to load the requested driver: '.$class_name; + log_message('error', $msg); + show_error($msg); + } + } + + // Instantiate, decorate and add child + $obj = new $class_name(); + $obj->decorate($this); + $this->$child = $obj; + return $this->$child; + } + +} + +// -------------------------------------------------------------------------- + +/** + * CodeIgniter Driver Class + * + * This class enables you to create drivers for a Library based on the Driver Library. + * It handles the drivers' access to the parent library + * + * @package CodeIgniter + * @subpackage Libraries + * @category Libraries + * @author EllisLab Dev Team + * @link + */ +class CI_Driver { + + /** + * Instance of the parent class + * + * @var object + */ + protected $_parent; + + /** + * List of methods in the parent class + * + * @var array + */ + protected $_methods = array(); + + /** + * List of properties in the parent class + * + * @var array + */ + protected $_properties = array(); + + /** + * Array of methods and properties for the parent class(es) + * + * @static + * @var array + */ + protected static $_reflections = array(); + + /** + * Decorate + * + * Decorates the child with the parent driver lib's methods and properties + * + * @param object + * @return void + */ + public function decorate($parent) + { + $this->_parent = $parent; + + // Lock down attributes to what is defined in the class + // and speed up references in magic methods + + $class_name = get_class($parent); + + if ( ! isset(self::$_reflections[$class_name])) + { + $r = new ReflectionObject($parent); + + foreach ($r->getMethods() as $method) + { + if ($method->isPublic()) + { + $this->_methods[] = $method->getName(); + } + } + + foreach ($r->getProperties() as $prop) + { + if ($prop->isPublic()) + { + $this->_properties[] = $prop->getName(); + } + } + + self::$_reflections[$class_name] = array($this->_methods, $this->_properties); + } + else + { + list($this->_methods, $this->_properties) = self::$_reflections[$class_name]; + } + } + + // -------------------------------------------------------------------- + + /** + * __call magic method + * + * Handles access to the parent driver library's methods + * + * @param string + * @param array + * @return mixed + */ + public function __call($method, $args = array()) + { + if (in_array($method, $this->_methods)) + { + return call_user_func_array(array($this->_parent, $method), $args); + } + + throw new BadMethodCallException('No such method: '.$method.'()'); + } + + // -------------------------------------------------------------------- + + /** + * __get magic method + * + * Handles reading of the parent driver library's properties + * + * @param string + * @return mixed + */ + public function __get($var) + { + if (in_array($var, $this->_properties)) + { + return $this->_parent->$var; + } + } + + // -------------------------------------------------------------------- + + /** + * __set magic method + * + * Handles writing to the parent driver library's properties + * + * @param string + * @param array + * @return mixed + */ + public function __set($var, $val) + { + if (in_array($var, $this->_properties)) + { + $this->_parent->$var = $val; + } + } + +} diff --git a/www/system/libraries/Email.php b/www/system/libraries/Email.php new file mode 100644 index 0000000..6a8bda7 --- /dev/null +++ b/www/system/libraries/Email.php @@ -0,0 +1,2470 @@ + '1 (Highest)', + 2 => '2 (High)', + 3 => '3 (Normal)', + 4 => '4 (Low)', + 5 => '5 (Lowest)' + ); + + /** + * mbstring.func_overload flag + * + * @var bool + */ + protected static $func_overload; + + // -------------------------------------------------------------------- + + /** + * Constructor - Sets Email Preferences + * + * The constructor can be passed an array of config values + * + * @param array $config = array() + * @return void + */ + public function __construct(array $config = array()) + { + $this->charset = config_item('charset'); + $this->initialize($config); + $this->_safe_mode = ( ! is_php('5.4') && ini_get('safe_mode')); + + isset(self::$func_overload) OR self::$func_overload = (extension_loaded('mbstring') && ini_get('mbstring.func_overload')); + + log_message('info', 'Email Class Initialized'); + } + + // -------------------------------------------------------------------- + + /** + * Initialize preferences + * + * @param array $config + * @return CI_Email + */ + public function initialize(array $config = array()) + { + $this->clear(); + + foreach ($config as $key => $val) + { + if (isset($this->$key)) + { + $method = 'set_'.$key; + + if (method_exists($this, $method)) + { + $this->$method($val); + } + else + { + $this->$key = $val; + } + } + } + + $this->charset = strtoupper($this->charset); + $this->_smtp_auth = isset($this->smtp_user[0], $this->smtp_pass[0]); + + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Initialize the Email Data + * + * @param bool + * @return CI_Email + */ + public function clear($clear_attachments = FALSE) + { + $this->_subject = ''; + $this->_body = ''; + $this->_finalbody = ''; + $this->_header_str = ''; + $this->_replyto_flag = FALSE; + $this->_recipients = array(); + $this->_cc_array = array(); + $this->_bcc_array = array(); + $this->_headers = array(); + $this->_debug_msg = array(); + + $this->set_header('Date', $this->_set_date()); + + if ($clear_attachments !== FALSE) + { + $this->_attachments = array(); + } + + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Set FROM + * + * @param string $from + * @param string $name + * @param string $return_path = NULL Return-Path + * @return CI_Email + */ + public function from($from, $name = '', $return_path = NULL) + { + if (preg_match('/\<(.*)\>/', $from, $match)) + { + $from = $match[1]; + } + + if ($this->validate) + { + $this->validate_email($this->_str_to_array($from)); + if ($return_path) + { + $this->validate_email($this->_str_to_array($return_path)); + } + } + + // prepare the display name + if ($name !== '') + { + // only use Q encoding if there are characters that would require it + if ( ! preg_match('/[\200-\377]/', $name)) + { + // add slashes for non-printing characters, slashes, and double quotes, and surround it in double quotes + $name = '"'.addcslashes($name, "\0..\37\177'\"\\").'"'; + } + else + { + $name = $this->_prep_q_encoding($name); + } + } + + $this->set_header('From', $name.' <'.$from.'>'); + + isset($return_path) OR $return_path = $from; + $this->set_header('Return-Path', '<'.$return_path.'>'); + + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Set Reply-to + * + * @param string + * @param string + * @return CI_Email + */ + public function reply_to($replyto, $name = '') + { + if (preg_match('/\<(.*)\>/', $replyto, $match)) + { + $replyto = $match[1]; + } + + if ($this->validate) + { + $this->validate_email($this->_str_to_array($replyto)); + } + + if ($name !== '') + { + // only use Q encoding if there are characters that would require it + if ( ! preg_match('/[\200-\377]/', $name)) + { + // add slashes for non-printing characters, slashes, and double quotes, and surround it in double quotes + $name = '"'.addcslashes($name, "\0..\37\177'\"\\").'"'; + } + else + { + $name = $this->_prep_q_encoding($name); + } + } + + $this->set_header('Reply-To', $name.' <'.$replyto.'>'); + $this->_replyto_flag = TRUE; + + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Set Recipients + * + * @param string + * @return CI_Email + */ + public function to($to) + { + $to = $this->_str_to_array($to); + $to = $this->clean_email($to); + + if ($this->validate) + { + $this->validate_email($to); + } + + if ($this->_get_protocol() !== 'mail') + { + $this->set_header('To', implode(', ', $to)); + } + + $this->_recipients = $to; + + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Set CC + * + * @param string + * @return CI_Email + */ + public function cc($cc) + { + $cc = $this->clean_email($this->_str_to_array($cc)); + + if ($this->validate) + { + $this->validate_email($cc); + } + + $this->set_header('Cc', implode(', ', $cc)); + + if ($this->_get_protocol() === 'smtp') + { + $this->_cc_array = $cc; + } + + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Set BCC + * + * @param string + * @param string + * @return CI_Email + */ + public function bcc($bcc, $limit = '') + { + if ($limit !== '' && is_numeric($limit)) + { + $this->bcc_batch_mode = TRUE; + $this->bcc_batch_size = $limit; + } + + $bcc = $this->clean_email($this->_str_to_array($bcc)); + + if ($this->validate) + { + $this->validate_email($bcc); + } + + if ($this->_get_protocol() === 'smtp' OR ($this->bcc_batch_mode && count($bcc) > $this->bcc_batch_size)) + { + $this->_bcc_array = $bcc; + } + else + { + $this->set_header('Bcc', implode(', ', $bcc)); + } + + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Set Email Subject + * + * @param string + * @return CI_Email + */ + public function subject($subject) + { + $subject = $this->_prep_q_encoding($subject); + $this->set_header('Subject', $subject); + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Set Body + * + * @param string + * @return CI_Email + */ + public function message($body) + { + $this->_body = rtrim(str_replace("\r", '', $body)); + + /* strip slashes only if magic quotes is ON + if we do it with magic quotes OFF, it strips real, user-inputted chars. + + NOTE: In PHP 5.4 get_magic_quotes_gpc() will always return 0 and + it will probably not exist in future versions at all. + */ + if ( ! is_php('5.4') && get_magic_quotes_gpc()) + { + $this->_body = stripslashes($this->_body); + } + + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Assign file attachments + * + * @param string $file Can be local path, URL or buffered content + * @param string $disposition = 'attachment' + * @param string $newname = NULL + * @param string $mime = '' + * @return CI_Email + */ + public function attach($file, $disposition = '', $newname = NULL, $mime = '') + { + if ($mime === '') + { + if (strpos($file, '://') === FALSE && ! file_exists($file)) + { + $this->_set_error_message('lang:email_attachment_missing', $file); + return FALSE; + } + + if ( ! $fp = @fopen($file, 'rb')) + { + $this->_set_error_message('lang:email_attachment_unreadable', $file); + return FALSE; + } + + $file_content = stream_get_contents($fp); + $mime = $this->_mime_types(pathinfo($file, PATHINFO_EXTENSION)); + fclose($fp); + } + else + { + $file_content =& $file; // buffered file + } + + $this->_attachments[] = array( + 'name' => array($file, $newname), + 'disposition' => empty($disposition) ? 'attachment' : $disposition, // Can also be 'inline' Not sure if it matters + 'type' => $mime, + 'content' => chunk_split(base64_encode($file_content)), + 'multipart' => 'mixed' + ); + + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Set and return attachment Content-ID + * + * Useful for attached inline pictures + * + * @param string $filename + * @return string + */ + public function attachment_cid($filename) + { + for ($i = 0, $c = count($this->_attachments); $i < $c; $i++) + { + if ($this->_attachments[$i]['name'][0] === $filename) + { + $this->_attachments[$i]['multipart'] = 'related'; + $this->_attachments[$i]['cid'] = uniqid(basename($this->_attachments[$i]['name'][0]).'@'); + return $this->_attachments[$i]['cid']; + } + } + + return FALSE; + } + + // -------------------------------------------------------------------- + + /** + * Add a Header Item + * + * @param string + * @param string + * @return CI_Email + */ + public function set_header($header, $value) + { + $this->_headers[$header] = str_replace(array("\n", "\r"), '', $value); + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Convert a String to an Array + * + * @param string + * @return array + */ + protected function _str_to_array($email) + { + if ( ! is_array($email)) + { + return (strpos($email, ',') !== FALSE) + ? preg_split('/[\s,]/', $email, -1, PREG_SPLIT_NO_EMPTY) + : (array) trim($email); + } + + return $email; + } + + // -------------------------------------------------------------------- + + /** + * Set Multipart Value + * + * @param string + * @return CI_Email + */ + public function set_alt_message($str) + { + $this->alt_message = (string) $str; + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Set Mailtype + * + * @param string + * @return CI_Email + */ + public function set_mailtype($type = 'text') + { + $this->mailtype = ($type === 'html') ? 'html' : 'text'; + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Set Wordwrap + * + * @param bool + * @return CI_Email + */ + public function set_wordwrap($wordwrap = TRUE) + { + $this->wordwrap = (bool) $wordwrap; + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Set Protocol + * + * @param string + * @return CI_Email + */ + public function set_protocol($protocol = 'mail') + { + $this->protocol = in_array($protocol, $this->_protocols, TRUE) ? strtolower($protocol) : 'mail'; + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Set Priority + * + * @param int + * @return CI_Email + */ + public function set_priority($n = 3) + { + $this->priority = preg_match('/^[1-5]$/', $n) ? (int) $n : 3; + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Set Newline Character + * + * @param string + * @return CI_Email + */ + public function set_newline($newline = "\n") + { + $this->newline = in_array($newline, array("\n", "\r\n", "\r")) ? $newline : "\n"; + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Set CRLF + * + * @param string + * @return CI_Email + */ + public function set_crlf($crlf = "\n") + { + $this->crlf = ($crlf !== "\n" && $crlf !== "\r\n" && $crlf !== "\r") ? "\n" : $crlf; + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Get the Message ID + * + * @return string + */ + protected function _get_message_id() + { + $from = str_replace(array('>', '<'), '', $this->_headers['Return-Path']); + return '<'.uniqid('').strstr($from, '@').'>'; + } + + // -------------------------------------------------------------------- + + /** + * Get Mail Protocol + * + * @return mixed + */ + protected function _get_protocol() + { + $this->protocol = strtolower($this->protocol); + in_array($this->protocol, $this->_protocols, TRUE) OR $this->protocol = 'mail'; + return $this->protocol; + } + + // -------------------------------------------------------------------- + + /** + * Get Mail Encoding + * + * @return string + */ + protected function _get_encoding() + { + in_array($this->_encoding, $this->_bit_depths) OR $this->_encoding = '8bit'; + + foreach ($this->_base_charsets as $charset) + { + if (strpos($this->charset, $charset) === 0) + { + $this->_encoding = '7bit'; + } + } + + return $this->_encoding; + } + + // -------------------------------------------------------------------- + + /** + * Get content type (text/html/attachment) + * + * @return string + */ + protected function _get_content_type() + { + if ($this->mailtype === 'html') + { + return empty($this->_attachments) ? 'html' : 'html-attach'; + } + elseif ($this->mailtype === 'text' && ! empty($this->_attachments)) + { + return 'plain-attach'; + } + + return 'plain'; + } + + // -------------------------------------------------------------------- + + /** + * Set RFC 822 Date + * + * @return string + */ + protected function _set_date() + { + $timezone = date('Z'); + $operator = ($timezone[0] === '-') ? '-' : '+'; + $timezone = abs($timezone); + $timezone = floor($timezone/3600) * 100 + ($timezone % 3600) / 60; + + return sprintf('%s %s%04d', date('D, j M Y H:i:s'), $operator, $timezone); + } + + // -------------------------------------------------------------------- + + /** + * Mime message + * + * @return string + */ + protected function _get_mime_message() + { + return 'This is a multi-part message in MIME format.'.$this->newline.'Your email application may not support this format.'; + } + + // -------------------------------------------------------------------- + + /** + * Validate Email Address + * + * @param string + * @return bool + */ + public function validate_email($email) + { + if ( ! is_array($email)) + { + $this->_set_error_message('lang:email_must_be_array'); + return FALSE; + } + + foreach ($email as $val) + { + if ( ! $this->valid_email($val)) + { + $this->_set_error_message('lang:email_invalid_address', $val); + return FALSE; + } + } + + return TRUE; + } + + // -------------------------------------------------------------------- + + /** + * Email Validation + * + * @param string + * @return bool + */ + public function valid_email($email) + { + if (function_exists('idn_to_ascii') && strpos($email, '@')) + { + list($account, $domain) = explode('@', $email, 2); + $domain = is_php('5.4') + ? idn_to_ascii($domain, 0, INTL_IDNA_VARIANT_UTS46) + : idn_to_ascii($domain); + $email = $account.'@'.$domain; + } + + return (bool) filter_var($email, FILTER_VALIDATE_EMAIL); + } + + // -------------------------------------------------------------------- + + /** + * Clean Extended Email Address: Joe Smith + * + * @param string + * @return string + */ + public function clean_email($email) + { + if ( ! is_array($email)) + { + return preg_match('/\<(.*)\>/', $email, $match) ? $match[1] : $email; + } + + $clean_email = array(); + + foreach ($email as $addy) + { + $clean_email[] = preg_match('/\<(.*)\>/', $addy, $match) ? $match[1] : $addy; + } + + return $clean_email; + } + + // -------------------------------------------------------------------- + + /** + * Build alternative plain text message + * + * Provides the raw message for use in plain-text headers of + * HTML-formatted emails. + * If the user hasn't specified his own alternative message + * it creates one by stripping the HTML + * + * @return string + */ + protected function _get_alt_message() + { + if ( ! empty($this->alt_message)) + { + return ($this->wordwrap) + ? $this->word_wrap($this->alt_message, 76) + : $this->alt_message; + } + + $body = preg_match('/\(.*)\<\/body\>/si', $this->_body, $match) ? $match[1] : $this->_body; + $body = str_replace("\t", '', preg_replace('#\n"; + } + + return $r; + } + + // -------------------------------------------------------------------- + + /** + * Executes the Method + * + * @param object + * @return mixed + */ + protected function _execute($m) + { + $methName = $m->method_name; + + // Check to see if it is a system call + $system_call = (strpos($methName, 'system') === 0); + + if ($this->xss_clean === FALSE) + { + $m->xss_clean = FALSE; + } + + //------------------------------------- + // Valid Method + //------------------------------------- + + if ( ! isset($this->methods[$methName]['function'])) + { + return new XML_RPC_Response(0, $this->xmlrpcerr['unknown_method'], $this->xmlrpcstr['unknown_method']); + } + + //------------------------------------- + // Check for Method (and Object) + //------------------------------------- + + $method_parts = explode('.', $this->methods[$methName]['function']); + $objectCall = ! empty($method_parts[1]); + + if ($system_call === TRUE) + { + if ( ! is_callable(array($this, $method_parts[1]))) + { + return new XML_RPC_Response(0, $this->xmlrpcerr['unknown_method'], $this->xmlrpcstr['unknown_method']); + } + } + elseif (($objectCall && ! is_callable(array($method_parts[0], $method_parts[1]))) + OR ( ! $objectCall && ! is_callable($this->methods[$methName]['function'])) + ) + { + return new XML_RPC_Response(0, $this->xmlrpcerr['unknown_method'], $this->xmlrpcstr['unknown_method']); + } + + //------------------------------------- + // Checking Methods Signature + //------------------------------------- + + if (isset($this->methods[$methName]['signature'])) + { + $sig = $this->methods[$methName]['signature']; + for ($i = 0, $c = count($sig); $i < $c; $i++) + { + $current_sig = $sig[$i]; + + if (count($current_sig) === count($m->params)+1) + { + for ($n = 0, $mc = count($m->params); $n < $mc; $n++) + { + $p = $m->params[$n]; + $pt = ($p->kindOf() === 'scalar') ? $p->scalarval() : $p->kindOf(); + + if ($pt !== $current_sig[$n+1]) + { + $pno = $n+1; + $wanted = $current_sig[$n+1]; + + return new XML_RPC_Response(0, + $this->xmlrpcerr['incorrect_params'], + $this->xmlrpcstr['incorrect_params'] . + ': Wanted '.$wanted.', got '.$pt.' at param '.$pno.')'); + } + } + } + } + } + + //------------------------------------- + // Calls the Function + //------------------------------------- + + if ($objectCall === TRUE) + { + if ($method_parts[0] === 'this' && $system_call === TRUE) + { + return call_user_func(array($this, $method_parts[1]), $m); + } + elseif ($this->object === FALSE) + { + return get_instance()->{$method_parts[1]}($m); + } + + return $this->object->{$method_parts[1]}($m); + } + + return call_user_func($this->methods[$methName]['function'], $m); + } + + // -------------------------------------------------------------------- + + /** + * Server Function: List Methods + * + * @param mixed + * @return object + */ + public function listMethods($m) + { + $v = new XML_RPC_Values(); + $output = array(); + + foreach ($this->methods as $key => $value) + { + $output[] = new XML_RPC_Values($key, 'string'); + } + + foreach ($this->system_methods as $key => $value) + { + $output[] = new XML_RPC_Values($key, 'string'); + } + + $v->addArray($output); + return new XML_RPC_Response($v); + } + + // -------------------------------------------------------------------- + + /** + * Server Function: Return Signature for Method + * + * @param mixed + * @return object + */ + public function methodSignature($m) + { + $parameters = $m->output_parameters(); + $method_name = $parameters[0]; + + if (isset($this->methods[$method_name])) + { + if ($this->methods[$method_name]['signature']) + { + $sigs = array(); + $signature = $this->methods[$method_name]['signature']; + + for ($i = 0, $c = count($signature); $i < $c; $i++) + { + $cursig = array(); + $inSig = $signature[$i]; + for ($j = 0, $jc = count($inSig); $j < $jc; $j++) + { + $cursig[]= new XML_RPC_Values($inSig[$j], 'string'); + } + $sigs[] = new XML_RPC_Values($cursig, 'array'); + } + + return new XML_RPC_Response(new XML_RPC_Values($sigs, 'array')); + } + + return new XML_RPC_Response(new XML_RPC_Values('undef', 'string')); + } + + return new XML_RPC_Response(0, $this->xmlrpcerr['introspect_unknown'], $this->xmlrpcstr['introspect_unknown']); + } + + // -------------------------------------------------------------------- + + /** + * Server Function: Doc String for Method + * + * @param mixed + * @return object + */ + public function methodHelp($m) + { + $parameters = $m->output_parameters(); + $method_name = $parameters[0]; + + if (isset($this->methods[$method_name])) + { + $docstring = isset($this->methods[$method_name]['docstring']) ? $this->methods[$method_name]['docstring'] : ''; + + return new XML_RPC_Response(new XML_RPC_Values($docstring, 'string')); + } + + return new XML_RPC_Response(0, $this->xmlrpcerr['introspect_unknown'], $this->xmlrpcstr['introspect_unknown']); + } + + // -------------------------------------------------------------------- + + /** + * Server Function: Multi-call + * + * @param mixed + * @return object + */ + public function multicall($m) + { + // Disabled + return new XML_RPC_Response(0, $this->xmlrpcerr['unknown_method'], $this->xmlrpcstr['unknown_method']); + + $parameters = $m->output_parameters(); + $calls = $parameters[0]; + + $result = array(); + + foreach ($calls as $value) + { + $m = new XML_RPC_Message($value[0]); + $plist = ''; + + for ($i = 0, $c = count($value[1]); $i < $c; $i++) + { + $m->addParam(new XML_RPC_Values($value[1][$i], 'string')); + } + + $attempt = $this->_execute($m); + + if ($attempt->faultCode() !== 0) + { + return $attempt; + } + + $result[] = new XML_RPC_Values(array($attempt->value()), 'array'); + } + + return new XML_RPC_Response(new XML_RPC_Values($result, 'array')); + } + + // -------------------------------------------------------------------- + + /** + * Multi-call Function: Error Handling + * + * @param mixed + * @return object + */ + public function multicall_error($err) + { + $str = is_string($err) ? $this->xmlrpcstr["multicall_${err}"] : $err->faultString(); + $code = is_string($err) ? $this->xmlrpcerr["multicall_${err}"] : $err->faultCode(); + + $struct['faultCode'] = new XML_RPC_Values($code, 'int'); + $struct['faultString'] = new XML_RPC_Values($str, 'string'); + + return new XML_RPC_Values($struct, 'struct'); + } + + // -------------------------------------------------------------------- + + /** + * Multi-call Function: Processes method + * + * @param mixed + * @return object + */ + public function do_multicall($call) + { + if ($call->kindOf() !== 'struct') + { + return $this->multicall_error('notstruct'); + } + elseif ( ! $methName = $call->me['struct']['methodName']) + { + return $this->multicall_error('nomethod'); + } + + list($scalar_value, $scalar_type) = array(reset($methName->me), key($methName->me)); + $scalar_type = $scalar_type === $this->xmlrpcI4 ? $this->xmlrpcInt : $scalar_type; + + if ($methName->kindOf() !== 'scalar' OR $scalar_type !== 'string') + { + return $this->multicall_error('notstring'); + } + elseif ($scalar_value === 'system.multicall') + { + return $this->multicall_error('recursion'); + } + elseif ( ! $params = $call->me['struct']['params']) + { + return $this->multicall_error('noparams'); + } + elseif ($params->kindOf() !== 'array') + { + return $this->multicall_error('notarray'); + } + + list($b, $a) = array(reset($params->me), key($params->me)); + + $msg = new XML_RPC_Message($scalar_value); + for ($i = 0, $numParams = count($b); $i < $numParams; $i++) + { + $msg->params[] = $params->me['array'][$i]; + } + + $result = $this->_execute($msg); + + if ($result->faultCode() !== 0) + { + return $this->multicall_error($result); + } + + return new XML_RPC_Values(array($result->value()), 'array'); + } + +} diff --git a/www/system/libraries/Zip.php b/www/system/libraries/Zip.php new file mode 100644 index 0000000..f8f95fe --- /dev/null +++ b/www/system/libraries/Zip.php @@ -0,0 +1,532 @@ +now = time(); + log_message('info', 'Zip Compression Class Initialized'); + } + + // -------------------------------------------------------------------- + + /** + * Add Directory + * + * Lets you add a virtual directory into which you can place files. + * + * @param mixed $directory the directory name. Can be string or array + * @return void + */ + public function add_dir($directory) + { + foreach ((array) $directory as $dir) + { + if ( ! preg_match('|.+/$|', $dir)) + { + $dir .= '/'; + } + + $dir_time = $this->_get_mod_time($dir); + $this->_add_dir($dir, $dir_time['file_mtime'], $dir_time['file_mdate']); + } + } + + // -------------------------------------------------------------------- + + /** + * Get file/directory modification time + * + * If this is a newly created file/dir, we will set the time to 'now' + * + * @param string $dir path to file + * @return array filemtime/filemdate + */ + protected function _get_mod_time($dir) + { + // filemtime() may return false, but raises an error for non-existing files + $date = file_exists($dir) ? getdate(filemtime($dir)) : getdate($this->now); + + return array( + 'file_mtime' => ($date['hours'] << 11) + ($date['minutes'] << 5) + $date['seconds'] / 2, + 'file_mdate' => (($date['year'] - 1980) << 9) + ($date['mon'] << 5) + $date['mday'] + ); + } + + // -------------------------------------------------------------------- + + /** + * Add Directory + * + * @param string $dir the directory name + * @param int $file_mtime + * @param int $file_mdate + * @return void + */ + protected function _add_dir($dir, $file_mtime, $file_mdate) + { + $dir = str_replace('\\', '/', $dir); + + $this->zipdata .= + "\x50\x4b\x03\x04\x0a\x00\x00\x00\x00\x00" + .pack('v', $file_mtime) + .pack('v', $file_mdate) + .pack('V', 0) // crc32 + .pack('V', 0) // compressed filesize + .pack('V', 0) // uncompressed filesize + .pack('v', self::strlen($dir)) // length of pathname + .pack('v', 0) // extra field length + .$dir + // below is "data descriptor" segment + .pack('V', 0) // crc32 + .pack('V', 0) // compressed filesize + .pack('V', 0); // uncompressed filesize + + $this->directory .= + "\x50\x4b\x01\x02\x00\x00\x0a\x00\x00\x00\x00\x00" + .pack('v', $file_mtime) + .pack('v', $file_mdate) + .pack('V',0) // crc32 + .pack('V',0) // compressed filesize + .pack('V',0) // uncompressed filesize + .pack('v', self::strlen($dir)) // length of pathname + .pack('v', 0) // extra field length + .pack('v', 0) // file comment length + .pack('v', 0) // disk number start + .pack('v', 0) // internal file attributes + .pack('V', 16) // external file attributes - 'directory' bit set + .pack('V', $this->offset) // relative offset of local header + .$dir; + + $this->offset = self::strlen($this->zipdata); + $this->entries++; + } + + // -------------------------------------------------------------------- + + /** + * Add Data to Zip + * + * Lets you add files to the archive. If the path is included + * in the filename it will be placed within a directory. Make + * sure you use add_dir() first to create the folder. + * + * @param mixed $filepath A single filepath or an array of file => data pairs + * @param string $data Single file contents + * @return void + */ + public function add_data($filepath, $data = NULL) + { + if (is_array($filepath)) + { + foreach ($filepath as $path => $data) + { + $file_data = $this->_get_mod_time($path); + $this->_add_data($path, $data, $file_data['file_mtime'], $file_data['file_mdate']); + } + } + else + { + $file_data = $this->_get_mod_time($filepath); + $this->_add_data($filepath, $data, $file_data['file_mtime'], $file_data['file_mdate']); + } + } + + // -------------------------------------------------------------------- + + /** + * Add Data to Zip + * + * @param string $filepath the file name/path + * @param string $data the data to be encoded + * @param int $file_mtime + * @param int $file_mdate + * @return void + */ + protected function _add_data($filepath, $data, $file_mtime, $file_mdate) + { + $filepath = str_replace('\\', '/', $filepath); + + $uncompressed_size = self::strlen($data); + $crc32 = crc32($data); + $gzdata = self::substr(gzcompress($data, $this->compression_level), 2, -4); + $compressed_size = self::strlen($gzdata); + + $this->zipdata .= + "\x50\x4b\x03\x04\x14\x00\x00\x00\x08\x00" + .pack('v', $file_mtime) + .pack('v', $file_mdate) + .pack('V', $crc32) + .pack('V', $compressed_size) + .pack('V', $uncompressed_size) + .pack('v', self::strlen($filepath)) // length of filename + .pack('v', 0) // extra field length + .$filepath + .$gzdata; // "file data" segment + + $this->directory .= + "\x50\x4b\x01\x02\x00\x00\x14\x00\x00\x00\x08\x00" + .pack('v', $file_mtime) + .pack('v', $file_mdate) + .pack('V', $crc32) + .pack('V', $compressed_size) + .pack('V', $uncompressed_size) + .pack('v', self::strlen($filepath)) // length of filename + .pack('v', 0) // extra field length + .pack('v', 0) // file comment length + .pack('v', 0) // disk number start + .pack('v', 0) // internal file attributes + .pack('V', 32) // external file attributes - 'archive' bit set + .pack('V', $this->offset) // relative offset of local header + .$filepath; + + $this->offset = self::strlen($this->zipdata); + $this->entries++; + $this->file_num++; + } + + // -------------------------------------------------------------------- + + /** + * Read the contents of a file and add it to the zip + * + * @param string $path + * @param bool $archive_filepath + * @return bool + */ + public function read_file($path, $archive_filepath = FALSE) + { + if (file_exists($path) && FALSE !== ($data = file_get_contents($path))) + { + if (is_string($archive_filepath)) + { + $name = str_replace('\\', '/', $archive_filepath); + } + else + { + $name = str_replace('\\', '/', $path); + + if ($archive_filepath === FALSE) + { + $name = preg_replace('|.*/(.+)|', '\\1', $name); + } + } + + $this->add_data($name, $data); + return TRUE; + } + + return FALSE; + } + + // ------------------------------------------------------------------------ + + /** + * Read a directory and add it to the zip. + * + * This function recursively reads a folder and everything it contains (including + * sub-folders) and creates a zip based on it. Whatever directory structure + * is in the original file path will be recreated in the zip file. + * + * @param string $path path to source directory + * @param bool $preserve_filepath + * @param string $root_path + * @return bool + */ + public function read_dir($path, $preserve_filepath = TRUE, $root_path = NULL) + { + $path = rtrim($path, '/\\').DIRECTORY_SEPARATOR; + if ( ! $fp = @opendir($path)) + { + return FALSE; + } + + // Set the original directory root for child dir's to use as relative + if ($root_path === NULL) + { + $root_path = str_replace(array('\\', '/'), DIRECTORY_SEPARATOR, dirname($path)).DIRECTORY_SEPARATOR; + } + + while (FALSE !== ($file = readdir($fp))) + { + if ($file[0] === '.') + { + continue; + } + + if (is_dir($path.$file)) + { + $this->read_dir($path.$file.DIRECTORY_SEPARATOR, $preserve_filepath, $root_path); + } + elseif (FALSE !== ($data = file_get_contents($path.$file))) + { + $name = str_replace(array('\\', '/'), DIRECTORY_SEPARATOR, $path); + if ($preserve_filepath === FALSE) + { + $name = str_replace($root_path, '', $name); + } + + $this->add_data($name.$file, $data); + } + } + + closedir($fp); + return TRUE; + } + + // -------------------------------------------------------------------- + + /** + * Get the Zip file + * + * @return string (binary encoded) + */ + public function get_zip() + { + // Is there any data to return? + if ($this->entries === 0) + { + return FALSE; + } + + return $this->zipdata + .$this->directory."\x50\x4b\x05\x06\x00\x00\x00\x00" + .pack('v', $this->entries) // total # of entries "on this disk" + .pack('v', $this->entries) // total # of entries overall + .pack('V', self::strlen($this->directory)) // size of central dir + .pack('V', self::strlen($this->zipdata)) // offset to start of central dir + ."\x00\x00"; // .zip file comment length + } + + // -------------------------------------------------------------------- + + /** + * Write File to the specified directory + * + * Lets you write a file + * + * @param string $filepath the file name + * @return bool + */ + public function archive($filepath) + { + if ( ! ($fp = @fopen($filepath, 'w+b'))) + { + return FALSE; + } + + flock($fp, LOCK_EX); + + for ($result = $written = 0, $data = $this->get_zip(), $length = self::strlen($data); $written < $length; $written += $result) + { + if (($result = fwrite($fp, self::substr($data, $written))) === FALSE) + { + break; + } + } + + flock($fp, LOCK_UN); + fclose($fp); + + return is_int($result); + } + + // -------------------------------------------------------------------- + + /** + * Download + * + * @param string $filename the file name + * @return void + */ + public function download($filename = 'backup.zip') + { + if ( ! preg_match('|.+?\.zip$|', $filename)) + { + $filename .= '.zip'; + } + + get_instance()->load->helper('download'); + $get_zip = $this->get_zip(); + $zip_content =& $get_zip; + + force_download($filename, $zip_content); + } + + // -------------------------------------------------------------------- + + /** + * Initialize Data + * + * Lets you clear current zip data. Useful if you need to create + * multiple zips with different data. + * + * @return CI_Zip + */ + public function clear_data() + { + $this->zipdata = ''; + $this->directory = ''; + $this->entries = 0; + $this->file_num = 0; + $this->offset = 0; + return $this; + } + + // -------------------------------------------------------------------- + + /** + * Byte-safe strlen() + * + * @param string $str + * @return int + */ + protected static function strlen($str) + { + return (self::$func_overload) + ? mb_strlen($str, '8bit') + : strlen($str); + } + + // -------------------------------------------------------------------- + + /** + * Byte-safe substr() + * + * @param string $str + * @param int $start + * @param int $length + * @return string + */ + protected static function substr($str, $start, $length = NULL) + { + if (self::$func_overload) + { + // mb_substr($str, $start, null, '8bit') returns an empty + // string on PHP 5.3 + isset($length) OR $length = ($start >= 0 ? self::strlen($str) - $start : -$start); + return mb_substr($str, $start, $length, '8bit'); + } + + return isset($length) + ? substr($str, $start, $length) + : substr($str, $start); + } +} diff --git a/www/system/libraries/index.html b/www/system/libraries/index.html new file mode 100644 index 0000000..b702fbc --- /dev/null +++ b/www/system/libraries/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

    Directory access is forbidden.

    + + +

    DMP1cplQT97ERJ#qc$^=#$tP3ux47STE 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�sCs0QHa37c`G{e{xE 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 literal 0 HcmV?d00001 diff --git a/www/assets/img/plant.png b/www/assets/img/plant.png new file mode 100644 index 0000000000000000000000000000000000000000..8c6a3e82042ca2881a2687663614a08dcec0a8a6 GIT binary patch literal 71806 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%0A7lm1J@bke3t-|SRFP`hZ?7p_HzsG{H^S=RD zEk~p&SAGrVMAqM)#)}r_qs@gEEQ2i;*2ms}$)_*O$*^H3$v%G>O?%|Nm_v;ZUckiN za5$AUpNcuZ>YvH`cbLZKE?aE;ssv{%RD}STjIyQbS*`)_7h%4z1wd1B^jKJsHXbsKFPO$(P2=~b@y>-2 zxz4hpyJTThPAzQ74z5};wE4G%Z*D$~yAB^X>;zlOe`?{%KbXeL%XKgKn^w?=U40Gc6+FCBx=V0z7^(5f~O<)q86v)oHo;CDx1N_w z0FG+z#~S%D9hY^uWn)(?li|&#@iUlZwcDh5-DR7XE|YYN&Hw8%X%lC&3JE`_Q%(+ruKaEE$VEgvVGt$_?7Fu~c_8*G;R?Na{uUP)yn3 zJ$f2Hg*kL8fr%FmQPjA{5-9q+fS37h!z@5d;*oHWRo$|UZig5C^2DhMcdn6FIL`o}b9WE`rIw&tAGYnmXbwD2>UwAFt>97j-uVl__{HVl>vg}~&eMCA?S1hA zLM~kalMgOH1Y<+J%$XdP=Vk^NMCiq@}H2V6!I zPoqwlRa8`Q4G>^DEEXb*3ExvYRqUB!>lEN*NuK>`y}wT(?!5}XOLf1`Spa_4JTn>l zYB8XZ)&o6z1@Y`9hdE3FP-k)+Yk-{t3zNjNF8$C#4;Epx7^Qvu1@IJBbs}gYFfDXANV}B}iWzy!}DFO&o^8HBO zla)ik7_AE3M~dB}Yvy2AICMbgd}V0CL3Up<`TXk4BVL%9>9=G8p4+j13}&IVVZ+X4 zYo)|Z+4cM*+J4gx`ksY3d8`LaYG73hXQk+AiLh?FRj?LnrBz@zR7;3ednnoS;;<@S zGH3-arL>%65c;FbJuDBZ5@)KqV@Dg< zsbgW`m$lRO^hhdnCu_!9LVzF-;8o|DNaCL9&*ctuS-RCvrx@ov8_$Pz4tjQIqwMT6?7E=oTm38xK*E$H9db=V(>V^zOxg%kRG z1E%2sXB7?ja_`CkA@DiojJ$RNk-Q>6_u@%`<5oFJjP=>(K4te_CfBUM?|fVhHVA|% zQs<$F^I-jcCag(cH59$K6cEh<2r_wnmdvVH(SD97(1L#!Ba)m2$OZsyKG#Aw@5NlT z&|Yr|f*&`0(y(F2Za0sjBi7k9QaQpB>X;UWmo(J$sqBh@O3>4_xNGEk(X;VnlC!5CS9FO&1+HMUb= z*aMA8fEVlDQvIAVd8Ts*l6IgKY9Rn6VC%Ic@(gCe+OP!VYOo*u_j_=>NxW^reQ}P7O)Fi1^fgny@Ib2mj4EPQ96w{%=fzt5s zk}NB@^g0MQfpd-lUG-r(X4cG2F(C@rq`-bh&NT=CgTu_QGE?g}3Smj$JOfJ6*y|2# z_0j186zj8tEkG-bd(`XuV=*1p{mvE_UK20yp9qM~X!m~EQSS^HUF3w2q?k)e}FRk^Px zq-E{5CDG0*F4#R#2(t!b8xZVWfz~a7bAMQ@iFcnR1C&IxPdxn)AQoEmo`>~oyB%}k zY18Du;zr$*3AQH6=KsAkeVgx^qUB4M_cm2kpEi8ruoGh6gt^pw^DLcB_WRTL?rFT- z`{1d7Gxh|&lu~92fB{Ca7qJhXx+tJajVofg58EiUDv>X*VVsKngD@8T`HqC2*!7Ea zZB{_55=U-nnRv;KMI1*G$6KKFP`r?&lK!uPfvSP~$?JP#-3zQ$gSsC5eOq96XU^h2 zW%tQuTP&=?79Ca|3&2B!x%(~Ps`)Ox_DWez;Jw_vbxzJ(=DqfvCMMM=^P3KTIP8Sj zCJB4@EIhUx0VM!WXoHw!6;O$GD~-_Tst-)0>IT96v9vTI-A!xYTzTL??Xv|=GIS^; ziT&{QHFDn47Qa`vyv~vRQXor}9Y??d3t3tEAxvW@daYTdmX(jfmpUG;txOtvhIOnqA4~LyF+c^u5>GP-Y%>4ipl}xH895ul+ z+8N;SWR{?(+NmqBP=XUWoA|3UA*$80S23Xg4Xar3bV#ggr><9Z9CL-A-@||#Qw6qu zUx}1eXt6v`p1)_K3jCae>M&Ly`)-NA6~TJ3^RMm~FRW;lH&+5&7(-(@_jTB>1c71| z`(^DzU;4~Cg%`5#Yv94=je?jm@UUUS4$oSX%%9s9n6Qa8!B19X&XO@Ml}wxw*1_u< zY)N)|jRip*7MoC6UW)>9s=|fkMpXD!A{Ka2JwsT&1D?EZ_)Fll8g)N zGGTQ;rVdD|Z1!->>at;A;yGaa5mI4Sx2>aa-F09cHHz!vvgM0VW+4G`A_0q|Df zCxZ4>Fwx^Gh=&QQxc8aNKPw+*z&VTGTmyt+{9bjKS%?KqH5e32n!g5~@oZev&9+;T zVXG2&|L_&Vh8?SY-!vW+0Vb;IK~;^Y)fo%D^s11mDV?=q?teccCYjCv65xk~ROkbO zO;JtxSmV8Z@@E27k%ov-!8ul{tYp{~r~u+^=vjl}Fc027dtz}Z z0M3-Sp%U0*&u9;P0Nr@8XGp4Zt=T=3jq?NNJX(tsb?<}B6$}{m3FaGM^7i2;h7CJ* zd%{H*U9{r?lPV^3B_ic@KDDS~6`O`wfvY&Xr%VargaJDatya;=aV$zNgN4XEeHfMB zp!O3%#sy*}ZaHGFj}4sPj#M#Ol`@L`s_->h7~8}0B5HtfQvkS%_ak{b7TDT_7D6oK z9D{(Z0^S_32Mz2#$qox=v3e0!vk!Om6+fz3VP9&!Yuv}}z4r|tF>Khe+g(7qd1o=< ztAxAaI9rGb+{@y(R)*H+)QZkyTP)C31k0mBKwi=-$hq;Y34^r2aFLeRk zsk4r-EPPa;yUnUNe?h#-nWt+~p=s;BD#BCWjL6Lc+b7$y<5v#F3tzGPlZ048Y%%sr zsq#iaOby=C)d4DAV>!jB^x=_+09o4Na}f8X65>;pZpmRgRd^^l*FaT$S?4Nk!9GQv zvo)A%x+ZU!#%qS37&h$4?TQ7A{KPcA>EeqoHhr^d;s@x~>CAbnm3bsb!Rvl&0RjY8 zvTXaR^f*J8;Hof}mo%$XPZd+47#R@Y!g}Pe5DAlE_sXDQoU`Iwvr1OE7HCpkkX4zw zQZ$BOUsOX&*0d6W6#}?QtaY7x)m!iWw)!EdXVVh)Q{ruXKbu~?)dPTV?mw^b;QG7S zxvstNnrcYd@=RWa(P4Plu%oorwC~}|^Y%vd!Bat}>#4b>z-l@>tPC7b(>u-*a5j}p z^a!k6Ef8eMdV6y6$^j|4Zs6eJQV0OJB-o2+z6?8O9s}gD2BjO-pzO1P>l-1aCw)A*D0u!lWNu?im3P~odYCh(pY z(Fr{}D>znCsI)}@zjJKF*(>MF_StKBZ-E#uCnefpnSECEt5FlX1qd?yDxPSAxu}MY za&8dYweGVd&JoD{(s#vG_f-~blqIL5t*FJY_MgS?Av<# zJI-fzu(xU7dNGx|=j_!Sj$1VWEvkejYm!68pDSS8+NGHp0U4Kp5LcV zdZwihr}o?I^MkD176t}c zGfu^5^%^~uut*R<73ALEHGt9jcR#p*j!#|~lItuJV`EI-JdMAe#tWwLxx<$X8+K^6 zc?K_^#%E09(bKrl_}r_e@$09=#G_W#{e;ItJnIRvXAF|#)X}YURE~fu1MdGV(76T* zq$%ge5@;g|u&U|^(0LOqEWnOwKVcD7Qp}jAEF5aI?@ofRVG=zSRjJg61hd14MJr^I z10pS8y=EM&bJCyJVlWw-XJ!Y!U|kQ+b6|nO5?_0;k;M64@6!%=!ggN0zX2T?cHT?@ zSK$4~^8W@%9soO+aiA|~y~@k6i!3Jt4mdup!O5^NO1Sp$A) zw*}q`bly=k>9fxV@jw&<*t-OPs=S-^@9Y@YJUQ1YInQ?wwzC67qZMD-SS&%g27b5Lxu zuL1C+^bWjmLV@M}aNv@2#>GQh7CKgy=NMa*yx&^5~~sR zphu*{*-DqO7dxX;|9~X5oTeh%{D%?%zrmteg2ILyVBl!H|8EX|AM)U z_R0bp&Y!AGI7;q&!z8ZT81k z2phuym?CLrw21bI0=bM$ zDFSE!wosb|$og|!;A;UXrpKyIv(DrC+!SyPp-Nbl0-o2T^41F3=Qef;@M7&Ea<|>{ z7eLZV6t9gd%ZA@JjW3?Y{g=-+@u%NizW?FncU!JWOP2kl?wB5cctz8&VZ$_2^3@Y4 zdDi;HQw}KcN+t_tVu78ESeS@8 z5RXPq;&U*Zk(YeQTB-wnQ?mVlq3TSAUK2jHGKB+}yh@?|{>To{Qumctal|xmAONG6 z^8x{YRS3|lyeY7y;XMI7mhZ!!Ew6IS(_>*mczt4O6>MJ-&w>Jun+lsO*rL8dY1d$8 z6kxH=^LYz6x%D(2f-8m8{&0EyrkM2=zGnISJ%;ZXHtf)?slWdCG=6FVCA-!KP6eEq za)6Pl4Ye%w+QRyF+2V7Sy~8q_T`LOx0lNG6CHP0Bb<28e99xMA$6mCyRT{3SDIa?)&^M3oNI=y#&IV zS)~RkWz? zyo_N`Nx+ODse+ZV08Uw5?;<|ODxTPRQjC+ww)BhxyB~7keyN7@F3{}-*nNoZJC&Tz zUJwxCnpo@tjC+}V&SD_gy;Q`tD#pH70x;Nh*(Gd^S`2ye27UOlfs%~`_8X@07Hn5W zJZ#vo?W~Cw-eQ|CFy82!JTY)-b1CoE5sYqV$wt5o9ww za8wZM>*F~n@A_2Zn7zh@UWsoC-itMGU#Ywd@B1pZs!!5H=g6&lB+?JbI}Y|6-ZKRQ zDE6S=0!jTdmW_Q-xk8DY-$brKA^$G~{Ok%aXPvJ#=xG%?AGdn#xtImjPEyHlE1i5l zVqw~0!_EY2xm(}8%@%9<5};c3c%yssRacRtwpiCX7`Na@QfMUF^-Vv49Ixq;0)$?zBvj&04u|%P)Bd zPF7Ay+n2w`l>%(##AYBar zJveNfR}B^c^49B&E%4aDZ9<0D_2`+AHCw{YcM7tf$zg#ixu*(YM!oGOV;dlh=lUEs zCZgq+Ty1&%uNP+G`X_7xZ(yY9rnFA1x5AvT+d@ts8oq7V8EmZr?h(`YvuQkiVJ{EF zm@vS?B;zAG7;H6JoRwAzPR_}gkgds9DPTgdK?(>Z=Qo*?_nbeAt$U@^42UpwS3v8W zcx?z0aX1R(D%D_*y;C|XEWbzf*?|CciY>ik)7jf8AFnJJ+ed@2^<)=Vr_6?f`b?o-}TsO+~ktK#YkJ%0|lZY%~VQev9~xK(U~cMUA20r1PvlVJ3EK&%p} zt8@Q&x+IDjW2(n%(ZCA3Dyvs%-4)M74@4A@F4(I`3+H(H@72}*R53RcF^@!8uhOwV zAlIvDnA~7_y;TRibzx6ldx9tN^)t9LeA=+H$nGtdJr0 zA@VsTh0O%8Jgtz(>k;syz!eaeatC5Ua@AS!0=iqY_c_aHRcB?ZDplZskVr{514sRN zvqCFLutgCdszPnGdnPLE)(cDlIg&ifdfY_r#e!J(XI34P$?^37%&MYE#{L$u@LA6v z{r>DOE459MYZG{Cx(e5w#y?Ku9Vc}1&KP+m!_Hp&nu{*F=pNeulZc8c$ZMV!1q6tJ zSiJ#$zCfQuSH%7oa9Qo@urigb1ij9<5hf~KZ5j8_CJ=&W+{BSguqeEJh?(%3_#U>AZEXGA7JYmo0<=>zN8G7o*QVVR$+ zLW^Ai>@s84tZ)6DT>|h@cN{Hr)1>CFv%LSBg)M2L_3C&o0c*pC4Le%k{SDgyle)z! z*sEIc6i*>Q2nYZGxX#Gtz1`rdvWVj^f*DG}fmN~U1X+oziMyCN00D zg>NodM(de#;qV>9h8>yRavI+@jW;cefG17kZ>I6P)A){yFTS`$fJv0;P%B_oVWScv zy+&wJRo5I`r7BQW;pYc1nQrE=qB<4KVZ(7m>bfc+IB(St@ce}8tmrE_uT0Dg(D_S! zMSTY7wb_L^70zk}S8UY?MQot7CyjZNK z0^5KsUC)5<=CzM3K%@zkT{Mk5FaK}vT?@m84LfZ6$m;K#Oyk$4@$hLpc^aQQjW3x% z$*VwCmj^Yb7onVL4XplwtA=ANXS8+-1)OrO@I~OP+?f=Zpp#h9gRDRSUD|3njUw2P z{(AK1!*g~jd{6_|AJ7f#JizOP#1i>Eudj*%w>1DLtm~BpD^v++RUpw*0QN#xDx6|5 zk_sR(u*Py{6yRn+uE0)w?Lk$64gnVIt=3`ZxdD*Y52p#N-Dn!0J&ngq8HA7w4kRYGbCIJ#)QLBB0afT}v6X7m0o z>~c&M^Y>U2z!zI9;DT5gehvn6{zdFJbK(Vl*JJj57WPTbYl^Y*Wbav(5ny+U2Dn^0 z1IrdjWnGjR*!DU_!vQ5AV5olvGI=)Gv)F40SpY5z&<^PE)LINpJp*gdlgYCe4R!XK zE}L_5*)q@Ft7AsmYY$vrzuNF4!-gH2J%3?FHugKyxZN}!FpW=}#^+AsXO{)S`wtVC zcuJeh(XiE=r`@2O*n0Bb?Y31q-~usuS7#yw{Nz^U7(F&YIb)B7P$L9;Quoq(&n3hHoY=QL~8FsQE0^9MbO|0Au zB^_U&D@{Ckae&LeSFx)1N_`oFVO`$nrHi?gt{2p#H8}!oD;9*Ktim7!~!-fITqraVhaGI03W+oyz9ZPztZ_oRWX)h z?-@V^j7rByz+oi%N}ImQ1>!UPXI1HLA@_)ta9a&vRmgj4-`D%{P7JM*VZ*ky#(4Z7 zwr}0gKL70fK6CpC<R2s?3Sy)&X42`!#|-QjD74GUWnB7D{~J~r^# zrV;e#)A;Ra{4wUT{C(L$a!e|GF)bjL8xiSN4B;f0^DG7vRM}^{|LZ{wlEM_gPtahAm^iel8+{hU;V4?Y>u5iwAXYSe0toVFgbKV4cOY*!JgL%NW39*s!>@ zPSle9<^d+{_9uFlA51j4<}g8VR~8tU4@+wU5;Sz3QG} zVX@-e4=le(C1V%oepLzR>ibE2p7jP&=hTz6U!M~zVcptiD?i2ht@VAmDLdZu#CgT= zGsA`*iM{l&KuHvscpXK7SRRGiCQH&RWQE6ioh0b$n|=aK*ju?%p*y=;+pwG;z)K~) zuz{t6!5Ym~`2A`?SP{lTsnS>VnstndeepU3LtKXv*ze@rcPjK(#phLS6Towi6w9QV z3o5}j!0&0q^h{J2<^6&?>v>l9sF#!s>`msj`UG9E0wdOa)D|dzH~h!2VMk)?W_;H> z4q&p4vjE~D9FI})oO$1Ml;upUC%T??2AL=`{045@2%=^1s)+I7#_Q%Wc;_$fMG0P5yx7<1>3x&VwMwApj$gI=5eQU z$gDhntvO=pj}&New%UER*CWZWtC6x`P5STdcEG+DPh+q3pk!xxzm+Mr#JoG>;A*e0 z#H`0~v*DA54Z{tm@f)lE-(?!#G>s2T7F)0=Y#JRAhX^d%5p&iB4RI!@(v`r$FFO@JX z$+>U5UOAq;J!>YY#M!(q!qov-5&e^5+_xT!#2Wjt+^$0IDaJ4=fi*8&RRznpKIUG> zXtx7SE!5KzU+;SeprmcD<*U49_@iON{>{!eUc2@*Zh<+>^CL&im@wyPt=J1$4FNnK z!*UE+uqW&77Gs6ak_)ZLSILb-FcF^8s71>&C+sms5tb^-Vp;o^VV9mV34Mrb;sGti z9`y3@p5%JZbOC-cwvtO%vhfxRn2dAiF)jVRgD^2w+}ErUC<~BQ#IxK#2gv{d$vAdE zSC3V4oq848zNLhvWyF$SSxBh;{h?{xe;S{82$OKz-j^ZX6KdG7bKTyz&4>51a){`d zc=WjEY%NLc>M$&9Wm#Z%9rpA_6zHf(2e}6@tm)}*TOkXXW_C#0w#F?lVQU`*4WCYA2l$6!*sw|t@q4DArqR4 zMO$o1GA2VsmnY~FVHLVa*qbz31Pf8HH>_n<{wU22mQ;!$)52EBUN0Qhl+OYxQQ@oV zFlH(6S$4iG$L9eL7}q4)CE2PXQ_P~5Po>Ve>IiIowg~5*1S8>v9xcUK1uVUACaVNe zRds!d@#g(qa$Z_*j@DxRhd~;L4I4J>(5)>5S|{(VlFkp>U06+~5y@~sCyQE>Zt1{? zS7~86v1|YfrS{rS%)OYDRdTGHifT-z7$gfkZ1Y_U?5K(p>s)%>p%u7^ur!J_vcdo? ze`TBdG8xNDcfxV`DOOdjbZ=y{^DYOwM|pRjH}u-L(i@C5s^InYMnf7z?N3 zuwCm=P{H1iP+7pq3oy&mKXe**AAV!lup_lcPUGTjzmyMg2UNaALag!x1n{uetT?^` zL2I?jVyu=`c%%m?R-!Fy3{F<>ok?U0jOQB@jBjvz=PHeQ!Ib*9L zV6iwr%wuM}-|$$#8h92EV6#;C&MK2Lq&)Oc~D-r{|N08SSs}OdI^}eyrQ*i*2 zRjS-GHZ1}6HPiTh%%zRPh7CJ9`C^#!P=yoV01Xwtj>_44IVaYN&gu`szQVM)IVb()QUJF4yLZNQfy7m`DJWOq|XhY<;uPLHUg9_ z#)BmfTM4^~IOz->-mw^lVt^N`3W_mXEU`2T=1(ywtn9kiAW8yATEDm3F*J3>URpUe z>up?X8kb;hGS;dIK5u#bZOcS@^=Uj0SLURA!ZbcFBWMrlf0#Bx&oq`dC!VSxjyUkVd|>(yhEU{);W#qwBKC5Ou8QN4CN zaN)5GDioqt)K)H$1y;(IK-O|tnf#t&(U?YuCswB3FW@>SmIIA~>T29;eK<)an0iXg zFz%Zja!eU}L#dn3Gi{yzm@{E@GIWcAY+R=+R{Oe(y}B$g?zgl6lJ<9NQ1)WXRRgV2 z*>_=<)_(djKjsCb+-4eg#oW^U7Q;UcJ4fvsr}3O={NgmeF!-JCo5tnKGgTsA$VasE ztaph8V4}_7N;lE>41uMQv16=SEij>)`?1xg<=j*vW?rrI)QaCa9_5rRC%&Ih8FRuA zfKy4}BLGy318%Kzn*`%g9RMOh-M%(Wsj;%oyi7a8N^pjAud{0x?QEkNF(3Nvmc&Iqns|Wgp{LZ>>&iZ|C=KP2<-w=VpD}mfwBqG;VSnjL9}^O62n?@EQWEcqP=8#ROft zRb3(zBM58Lvp;<+_g%qmc(HtTj1~jq?Qj462>6JW3IjaUrMk;{$Id_;6Ctw_J|R}( zEN96Q2xPfPDj``lVN}c$V0S$3uRXxEaXfWg)eneWqaL7H>cP9PRef3L#=581s?0mE zlYa|h;aRH@;%3{|TULTMUq1V<)A-;rKi+s@N*ZJGQ42$Jo#CT~onzLXiLac-Ll$td zjs5jBeid_f@6!rQB49=37+90Fat6H^7i;j=PwK35sS<``ilTj7dlx!SB121zCvogB zm><;{m#tzg;1J0lKw!UNICD!vJv)vSi1!jo&NC>hHPQ&-U7V zrtzQ!jNEkirD5l|ePCe}AHU`IKC}Ru*KYHr;{+y2OlBYx5Tot0;k>OfVt|+M_H=N@ z-Vo9HwMtfANjM_Q;W8Zx#S8(w%sTIbp;EsQRgLw^kS(T)CAh)?MJyRM0xG<7sX(0q zww_9DGQe35T+c`kBX<0No#(-nhZVRqnazOL66lJt3T$C zU`}pbAIs*f2dflnStnt3&LWy61-#XL0?!|^ z?jx0#QQ)h*GFGk#Aj!_B)vKn6`@MoU4P-eOR?i!df34h&D$ZSjoj+rh02kvNc#KRn zu6@7lUcI${um9a*{JUXj`g63q`rIYmoH#(quwjQ|e}!Pe>tO+tZIm&q<4h`95v715 z=wHj^cPwC(4FF-afwvmOW!P$z{r>KD6Q$LQXNNdvYvRt}qHk6*W3R5Ov@Ifx4a*mS zU|kA$Zb)(fEK9Jp0JH7L_Ce3QBbobsFIuKRu~iCQ$-Sn+EfB0-an5g~LaqkiXMgwL zf(Z|1!kjQxON9`N0kZl^o&Nn6H^1F99(+iXa059%KaF3;99thY>|C~%SMtA42Qb-| zSz%6;t&yZ8&0U-UItGlwEBjq z1VyWN37eb&9v)F(&^l+Hwu%LWl5;Oqhgo4PQzQ%&VfG3EII8-mceWk_*s~%m47Llq z8#TKRig>F`g(&OvL8;WPI8<$O##sQ>~Hlb(mM`efiig=)Mefe_#%1y-xT zUd2_ zy4Nq7#&=BP6EW+a3>$W?+5doFB7DI`7hQBsb4C2Hhdt~#cQ!drT4`8B!4C@+WMg8_ z(7k#XxJg?$>kQphInw>s5^e){6Tal^o9d#g1k6A{pkjA`ShGB(;S$j^NrLIfTO1n% z+oSGR7UD}}KQeT?fh5k6CER8)Z%JGW7;KpJUJiisEVk9>OJ(D=^}jo?#oL(5au%<_ z_?^vrAI2=2_Jf#3)V8sIna1;{@%z(w-84QGbLi$8!ygSB_HROJcf#CzYHdxZ@LrhP zI<#Ip*Ib^*7Vi0>i!Z+Tk530Mi8wgMt}v%p#boViQ&>)4HB$q$_C)V^`iZ$1$E}*Q z^?4^5eh(t1fdS#1RLN+>0ejo_fYbUq6z~Ms44$KsoZo{0IV!=G0f*?ZgIqTye5USi z)dIn~{?>10vd>9;HU~eG1nB5NL^c3O5{znw9lFZ|NcG#a^1GVUe3RGywrSi9S1tAL zttHC-!!-UJvo^zub#%er*UoZ zeBEOLC+!(KHi0$9ltgKA6~ksKqfxd+Yrl$o(JX>E1*~;1v(h%8t^?|JEud&5K& z0WPg_baj8O?|Dm=RrPc##{F9eXsO-jv++#!Y$#KxT_1B>vHk5dz7=!6$sHDea--E` z`L>0UZp_Hr7pA41%a%C%rPFx$03^eP{kuJ91xmgabExx=VNs3^m_$Uj*d$+r z+g8ohyjAr!VI8ZCm@xvI{y3Z0*N&lx6)Y`Qfkrg|PcP-d01Ti1vIO!n***h;aMK9KcU z#r&~kX=_2SE=ArUzmpbl(g4VxVJ>ZKP5drc-fIc6S1f;DumF(u`S&f9^rMC!8aC`I z)|&hM`;ZDBjP1mtN*i*On=>rph&&z z=sj~*A0GtRD|S75V6D_%`_LA|b<41m!&R>-uRl{EEaT?2Yp#yz^5wM#M9%M?p$1m2 zwU0@6*sycKK5CzU{ZFRxGLT9AD6AsZATGKck7oAz?bN{PxWLvOVGhkoNVR0TcUF^b z7OU~~YA*|iXvOtC33|ZJRj?9HlVCq0p$Is?uc}SFem&N2F%YSw>Y2D(634-SsZuRw z<*Z2@hZ5Lhl`+hJz@t^D`am@96M(pq=p%Z8sDb`Dr8Eq=_!7hinEaRL*ydWtv`#j4bOuonvO zRN}B$zZ5I!l(m!ZCt(Q2hgF?e;Aa=SIb5U_Kp_B4fdwxF;y_)jc(<8T!19fTc_@G z`;p(UCa>hIx-EwS@X7(@NCDjtt)GC4<3N?lCrfBNy*B4 z8X?{>d;5?AAY>a2ndGoS5MV;}7D~jqd%c3#?-u9$d$RKE-n3MiqpG+)JHqx;J#S2J zrT=UT@4RywKQWD$AJLrIs)gQwxzeZYQ%k!2o8iBPorU(a36%VN|KiSF?|Rqc-jRgu zLODr%KRLhQtyNl~s>04U7mok;G~~i~Z}*i|W0^s%N~?ZN>^k?s3K5FcwNxFtHBbUb3=v{24r) zx-EzUbV9w#jZv(UQa0|-WlNBK%QT*cxvHlLwcYv<=Ek=D7f<8q%RYP#=IWo;81OeS z$M4sjj~fNvs)WuT{%zP9W-V9ii4!P!lJ(~42<1fB2{kE28uzKZ1CP@7n#HjRvah0^MTM3M;2MWu(VXNqfs;+hJB7Jq3^YBW^Bhvm%fz(U3Rh3T3SlP3x z83t6W{FOqkanFW%EMI@EEg-h*urMB5!p@O(e_8h*Yhc;mE9=+SA(sMM#=Z}~6xfpV z1v*Ei4@FsFpUvy%FaQ4GG+uZJ^J4=a-#Lv(V6JHRhShrwkbE;{0k`!vzkK+&VaIIk zS$H=NrfB>})3_gIaYNINvnr<^;kH#vdasdO4=fZFu0*dYVj3Erl59Vz_l^D73X-Y0 zG93-Jnq<_uSAJ_<=Zu)1gwina?kUDfBnMcjV?}_C0sQ1uZ$fs}p{v)bb1rM(d|2JNSxbU!fUroiI%~GsHxt}}ous>dwr+)4(ej|yn26K78r~AN)3D#hxC9C(72d6{=*iknLLPuBwcd zsd+Mix3x$X>m#4!PWd2tl{Dz)1L-AFJZv2UsUdSHni zzjuDvbJACFZP!g~OR4qWsCaMpRq9T3ap z+O~gN)y!>iI2AfAccrOge!>DwF2@jV8+P(6FTljI7M^K>ge}zBs@L8#jkiwY1=ILb z%wfuqog`r5t=iRhlvYJ#1qI?n09z8CIhSm#uvEjg{(FTS8>_rfOp%umTnP}XWTLKy zqX70w_D6Dim^O%43J$S)R#N>1TC2m$4XO?(W?(oXjK-3j*|Do!iR9dOmY5s^6qP(n zMVzzZFhc!x&E0-jW!pR5ws$*#o}k6zcER(sdX{ttxspQ>*N@dskzA7zNfU;LJ^(s_Au4jc- zudU?XXXlc!VxI0!uRvT0Q?cH^HEXeBfH@}I*OwOeiQ?9?c?I@r1GVp7valmca9pbQ(9roDBZqZ9 zOO;fGau{&P&aqe^f_;}UGdm6w7XdNr?Wo3xtS40o0H$g%D_)gQAIh;R*{lTN^*O$5 z`P?ThtH4)cF5|syp{ub>!o!B0>%in5%joU%Fei04VA7=Of8|^OCJ_yYZQqZGoAu6~ zCAxaQ=~eq=0usCxxnhqLOTZj-pKQny4q2Hhx?}Qsx3Jub>Htr#OSS4ctbjyySQ!RJ z5M-TtpjpIw3hY>_s;soS2oRhEz^wr=W$jNU&xeweN5>jk=cwPub#m)2_J$q%(2>O? zmIZ)(73M~LjVWopJpOJP&&M1yf7bve!-jtV1%sqkhBEV6nnf>j`_8e9u}b7vXpz_6Nbgi{tE7*n$BbYbCGlg^0je z6|7Hkz^D?_Q!91rd=_x^+`im4lCz^)L|9VoFz!<&?XD_!dau8~yE?W4TY?^B zpZXGEOX1b}TpKNsuZ3rdv=;84K8^35#{Y-8jQ8({Um7+nY^{^`EzSkTL^+gg z|F2fo+tB8bN(-+cAS)47Wznqja1yIgAXX~sC8Dx?p1Q?$S!;mEcdcV7WRz5e z5T-~9V@2Ng`miSM3?A}eRT|zovR3QW0W}e}3gEKjC2%i9WaB{qC<7fptTAN~$KmxI zV*4LqkZORTs$?!;Y#9h+qlDwsC}jWodl}GTXu#e!4p!w+5iC!IEy&is+e#jv1Kv!p zslDEB%lW4L#^pF#U8iBgPNKC|3*UvAjXdjtiRx?{`7WFlIK;}Gb*lxLNG(UxujVtf z8fO*`LrJC=!wD&Hl>~r_iixpvY<)iyNAFdmsB^%Wj$X8`m$_$vN2vy{?~~oY{iwnh z)d4ZgIeRRU6)t1|Sv8c5h?%hvOERv7^*3PmzG3H~is!EXt_6$=_J)mG{z$7TcSl@`b?~`k1Q}QdIOE*1W0qDvDr45l0Q`q!!Db(t_SAS(yBFvd) z;+WQ;KxtjD>LUdVs@NYmz`{zH%-E|xk%_bPbZt}*8IKuLVI|cVQL#0dT-Ou;r-=X# z#q4>&)&jAr^E5k8R^=IBw@_f+uQ&U_62SWs;a+6UVh)S(Z1&s83y65?G%lRR9S>##6bfj&%hk^d`E?}8A|}c21FdY zRr%sM<$@~(qm-&`|G*@~ddgUi)ypvfd@(euIzoXYFUPN zz>I>4{67-%YlO;X})mbxt~zwgVMVQj;?4oyb8X_&lu8oxe` z@4?wwFfiKJDq{R|jEg%l@93OSAfU53433fJFj$*wKG;vfd*#Ab z9G1Og8uy>Z&u;OZ+u;zJOAhq!PwI+_uJB{^6}lrUTRmIJfa_#Ft1?Fcq$++_$)xuV z#$paU9gb*IIyfNEa>&&ImHlei+6M+^ykzJi?w=YsCZ)J)U4O;0D8NzzteY2pw9ZWt zj^6?~)j2;sP`19q0HFugEWpBmWuv2SGmZO-q{xu2t*7xQC zm`mpWb&Ky_xPX}fOo)>`3ZTLg_#%^{nrtHpi53&Gc0BzycA>i(_xs;BJ7ercA>bg1 zeYVa+5)Q^lwfG-%VJp38($)@Snqu*bdVN-~51VMeF|iv}rsM zbF%9Dme-#*jn{9nox7Z*lX6m+j-xKMQsII`_C-m!XYl0N=vfnc-%ElLIgU{pxYV;VS{i$hOG>zZDTwQSanEr;HrFOH0Df#_r{KxLSi!mp{Mi=h~A_z_*FgdAp z{+`~2r#`DRCOl!Y)UECr%fM)RD^a!=6zgeiw#rtG_1O2k{2GYudy1(nti*cNcw&62 zi*JEn`4dTsPTVl)8131aj) zQ2kJtl5d2KQF%31uFh_dF)IQPC)m|6{r!-jm0KY`3jyLlK<{pV{YwOx0=!9Jb(kY2 zaetaexYA8~X1R=rZ5ZP28%%ULmXA6gI;RtEz&t>b4rrsr~XA{Y97>PtdMc zGEIVUv)G@$qqTJpF(A`Bdez6q>u6lS!!aO$iB;q58qby2qJkyJTIZz+thFkK)=9W^ z8NL}t_N)4r}C>u{Ye22YONP*@W{7G~)|OA*%vf=#L9_09HLD5uGTfBQ7vIDFKwbJTu% z8aG+}zbV#!F8ng$r(vJv%LDx%KWmeObB1665`3)`5FldZqo~S@-gX1W#qu>QCWz%! zY!k+^z({f!8I=Q}7>@`rQX!k_FeO&9u?1$DCAzBXlLBl|b*`7Ekz;9# zSU^SXFAHf!8zEZ2wzX)#5k?4S*tucvSnm0?-F#s{*47$ZK5$`BnB9FE-!y>9=?5MA zWm*z+$6CvgdFr$lBf)5Mi)AQ?H|t{wihY;eUT!%BR_PX#!OnwX7p%nLDwwV6fJ6pH z5?RfIunyKXw`E7HXW4S-jOpyV-FW9QHWj{MHB$f})>H$6% z>14~m1!D#*N4N$ER$?M^UfBTzeeao5!jZCbqWY%*TrAE41Ci2XD-;yzpzQVWQ9XPz zwD_FI##o(jGh!X8Yv6Y*?V18E=$GL4-m%WF)qJuFW^bLOT)OkXO2kzY&OWKy`rTHA z&_X$n#@y+3*sycKTA!O%D&LY`e_|S+GK~jg4rMat{CAge+i86KH13O;VQe7hSp%4y zc?^pOQrKs!c@X9b zgJHwY6}#ayzH%Brv@jrT{C4oWZ&=2&54sa0lym%GB>En6#2(wC6gREv8x}^|Oxzi| z0oqzJe6x*R_z92e?N~V!{r;=m0CdMy9R~{N^6nB~HdJzDe~#GoVqqpL^wR%^cdRhL zfYKT%@O#-XAd;ZNQPw#q#=ZeOPsA$y-R=Ihj-}tHb%;@EqBL!lTaP(%*g0tTKixYp z9=hYTh|USfDxQHEl~~GF%S=)p(7k7hU}peZrk$H ztW-LBE%RhZQ=TP*!0%VhpNI0V(pmA!G<&)bfv`HZ*L&Y+do zwhFJ0J>jH4!D&`sAHZZgXMYgDQ;%R9mNQ^Z2;l0ns`MDpxeWa(f8C{c-K!@%E7*RU z3443|sN-a^_nY6%#Mv=tYQ10Ji>W2&oB=#>mGvP~_fQfJzEAcnVq1|a9qW3h0PsT) zOfYp>kaMp-#iMlh!nFwoW@h8@rvbsZ=bzr8rM1k2XVyz*zoq^JbV6u4eqNw@-T3WQjpCiUA00$mVL3309qc(OCZwe~7% z7!YIZ9SBghG*Ma)kX9P}tHg=Fdm4X&IT7&BmhH3&yp>V@;1SImw{;jZWv!I6B`~(C ziVMaReA=x^xi_J{J~Y_EhOeB)#~cB$-LL&UeC?_MOoknZQSpSW)=rNJi&;R$3g6_; z;dsJpR@F#_UqRwIA5~5Y=RC2}-0FajNDm|hfFQt?VqPG?X%5~u3=|~-G`!=ql7@=_ zj1WwoDkZm^b^kkxEn9!DgR*X-;Ptz~syV z9&jACa{QiFiVD|Q&eMwB7uaRF)nHUSjS}SmivT?tx_s3GCCPDqH2@F*KUc=Pel@`O ztP_&0rio=A_d;^6KVauY%xQ?-jH7k9{buF7-^-B-%94mt1sZC zu_^CaSculB?3Mwh^RQ^~&F?p$blx;B6rVkR8N*J$HJ0to)A+gW^#*=Fc46ucVhv1u zBW9WS$L_O+t4%zyygsMKQeb80J)-@Q1jy+B_O1nEx2*eaHvp*n z-Zh2n57Up?HGbdfp;O5HzS+j9#qnQnHQN8LwE&aN%ChwhX?X%)5nNC-s{Y3oM|2Qt zVB`kNe$_E0o(OAT_K%?}vfd9{r0*671SRbrcmZa;o###C@tDQUeq)P!t=;$k&oo}M zZ0j8-;iL}6v*diAHYj!l|Bo=!!Jzu3}k;;Zy6;72ZK4v zV)YzJF?oP_|;oh*r_=Cwk{!V6+5lV z@b^yRPFp;0e=&_8!JLnBP;23&8{?`?)rOrudokuj=;w%Q()!HY@CbhUEek{P+SO}+ zwT!z>;|nnNv$^eZpWh05tH!=*`TU8p0ZdLFSUAe5^n)#cln5AJWLsGWP4=Mc`PK^Rz&YSJ4vzjmh~g0_+JK79|Im7VFrp-^|WE$bN&h zSLlDYUE3X8RTR)`KM+xfUEi-CSho9^X?!>A5Qz%eym)aS*FC`V+)9{R?7!tJJY!6k zC&pU%gSRP+n^W&w%@A6+S*^Q z-_5q5!fPC8og1%u20;+y0bmAH`u*|FfntV0n2=2vCK1Lbay$&2HI}4lPuyV|PngD+ z8{cj3|IcYW6mzL@Z~uf@*89l^oFCe8wM5AW91!3PJ6yX4PG90`3o(BD^7p-_@wjQc zY#Kj0jbFm7Ufk@>%fD}(#($W`mrdjOm>ch%NE^W9%mFI~tro1~-G=3}Ku&?3h~3{i8%>j@{@RiP|LZhvZ|vU-7Y60!)A(X?3~fbwyF*wt zpT96Bw;EI9FkzoKjbB)Ra%1>j-M#;3%Q(?Cl3&k$@KOWp0Khx*MoVqi&d%yTvfkc$ zANoEg=(f{4xIXETb&R!~SApFhsIT~_4j_R5d+Iz{l{z&55&*lOOCli2>MLV`4Xcar zE_ev8kbO@Clvx!+)_u`S(X-w;6}%@A>s?gDZx`5Y30mS{%j5X*W#!p}l9n^_pQiDp z(|FPHo!1ezq*3Rea!Aj6TkYOsOnbuu_L-PNJ9j%1cYZJ?1I+X*M7Gdo?5j{A6do2{$ zy~V;n1w4G!n36`3UyLg&CK^y_)fX*}->M(}5;HA+9n49M@0!LlG3Og>tmTBXYKNAe za!+zzF2yM69d>kfqXk&EN}YEPU^48an&&9@!^T)E{0v@B>V+9L`2stuRl22XVO6`V z^+MLG?o5D77C^1Q*33x6;d`?Fy_3#CN6$hP5%t;{IOkSUZvju%W#N@500MOXB_%-D zGeSxPuV>1#UIK`mwWPQ1DFgu>1;{bVzuk7p1n#9=EVEz8-Oc# zS`y+Q;3PTwX`nkiDB;f#5^@g|2 zL|$hMf~q#@#n-IT;f$ChyLyi?3(7HCP2|=q@!k;@*cBqoVOlvRC2)OIGd|U;hV|3& z7_(^C;JW2!z0X+3rj8xXXO-AmyQVEfv(XE=Hm*$mU4M4HjjJyJrZx6^`vPLxdH>+z zXxG+Oug_k9&p(XmY0owMtp$|a6Qj@1Vb~|Zt{5A@WY}qc*dwZ{5RM(t{d54oOgIUL zRh<>D*Y+OWs<^`L0i=4hSSxcC>hgrYyxfgSfSGl^;p_`z9*S|!EKxBfaMoX!LatkZ zod?9gMuD!>Nn)D-FAYw{F8Qq}uj&WK`kQVI zI~Z%#C$#pCRe>}1e+8O6P!|QTDycUjiLdfq)c4eREXKXmdZe__&UY>Ew>kH`<=oz7 zOjUdAV=#B(-8n(~)GDj~&%)%~{tP^)zd4OJo=H1ALOJIilXB4Sryu~@M(@LNYz20x zqmb2i?_8N;Z6;tUV=r~zub$Tluc{)4<jt)_qgI{#q2+A-Mw-NdC?lc0OAlohO}XH^BfVgGt%X_tPQ&76U4g1l>p&rWnpN z8LM5^#n%E2>+Sa2%EB>&IJ#mScV7+EgCal+kSR4*I1aW7cBMMZn04L~VV@YNE5ZG= z1k-xCdTZZGfYqzeqHh521Z@G|&3(~2(Y6xf3&)gn#(<^PSLTv4fO%-l&g(HZdu;hk zUx*XZF?bsrp`2mI4Q@P!r8)p85$C}|39Q4gm3N|kGty<(V@;|9xLCf0N)EL?8wG*U z4$S?(3;+UL)*c3su&yb3nM%qvv}K> zuTP(S8s-kdcR!)~*ZMkr%QSulbJM=Y%DwAMJ=udX8Ma>#5pjYZxbPalvHT5dMcXHj zTKOhSA+~oaEVraje9aChQI$E&L2g_AtA48rHj1$h3BJTTlg3v7v1gF1Rs$BWDde0L zNC$?~hze)R8c%8)(#Q_NEI-vC?oe%SHZXW?X4w=}W72QHwb*_+Q~ zP%?nYux){eAs|qoJG^dj>Y&+XXL^Wex56?XpT6%YjBquOm(T7(>Or7YQqQ00s`IV%MC7d-^2Y z{+zPPpCZ7F1*kw+5_RuctWpu6+RA5Xy>{N~JSRW3IGmedPM$sE^eD~(`}Jvj9%g-& zlW2_@xis)R4q!5DSinj4tU(g1Ugf+LfU!QK)JRp%%I@kjJH&A&v7)vFyI9BJe*cO9 zIBJ_-f~OT;Qm^;tw?LQTTFn%#-?G9U1%6m6Qjw$fEs0}e_lZ?4R$#03TA{B^$#8Qh zDm2rYuYC`$l)-O}1W#%x;cT{BFHF^SPw4*b1{V_pm<$^hWJ@9v=!{YEoGDw4d(!tT z*)hYHPPalYh3q2`>vo(1lMV}qB{QW93-E_S^b z2&v9>X8U0E7`pnxnEb8)C6B=z$~kZOPRmDWjRIf0k7w?RY5e0fz8`ZUZ5`9lRUEqt z)7)#h7AKL7XzdSvUd)eYtc@)1VJDSMf#bj-m(noYgO^=8UWuD3A5Ot zes%3hqqXVomxLbncwl`g_?}Z9}ZmtukCdC&ns?f7axX zRsW;_K(NH-EM|a(!jjmolKwByIW(#i805Mp*dZ^gBFh6GMF1)5x~!R_#(=zk8jqaD zuP*;@0OC~(AUO|v1>vr{fQxTgz({K{*u=jsSl(;Q$om#x^1+3bxokDh-+ytmX-qZ$ zW`BjbBXm1&Ell>H1+?980d@@tejH9_&z=TITZrjr$un_AgOmYGhMj4kMd@E8hb6F7 zVlB|pGZSk-(kEkD&Qt-0NO^ES(RhqQ-#5lPhZfsV9Of!2>mLQ2Oe19*=Ewr13h4A8 zq(9ya9nNE5Nh#wpO_;{IU1MQ6esB3q3-MfU`OYr(_V?L1r1KZ>@s{QNE0&R$IlX=U zYRhM@yKJi^NInEt_U3u(0%)#xj?O19oyJ!!=dE3brWf(cUpkHdyf9NI(OR>} zRvvuQX*}g@V@(Dy8Fo6&%dr4r{azqetzH-)5vD+``mIvjEVgYi4Qn8f4M&FH{#o0% z_EVkvNN*p@5ohRfX=}d=uB!h6aeP)N1@Jp#Tc4@Md1mZba+nY=X}cOg2IRNSTbPec zNxA}Z>vMPB0%X)RuB&ZxVFNua4D`3F`}f{w5GXllhu`-7 zznR8QFJNqUVU+3u9Bws@U!2ARj$q&4y8Qd1X*>e6wEa7AWzuZ}D6I$2esh1mcL7;H zJAlcsVTTJs)MQk}ic{sBc&qaMH>@UoJ%GraL&##a-1oVufpg$h7_sjs2b`$)Rq}3i zSg38lBjC%pGiStdUNUrfu$O?mEo;Xrn))zaa#%MDP_U{a1VJUBb7L;Rl@0RVyEw@A zEUZCuY_FfjZKrXY6EsKs#=9E4w~#*o<4?$`H;` z*oDh)w)~;KM0{tt22I`fiI@{@_fsv~l6Rl8T*CoOh7H??MFhdrO0|NAE4&u>R@kHl zR?P`lrP`BN<*whi*cvOR!g6eVE(-{_uowlUerqM)veH%v$F2Zo6riYkf|c=R!rEj3 zpctc41fcbFV;~q3>l#|^4ix(Yhb>v>KxJ{w*S~ee;;`GlzmGXd_HLM)zO_~S(@)r3 z@n5HL-z`817LfJ%n5$~uhbyb-THehyR_9|=j{R#}f|3SiTB7njg8Q}cv#s>__6u`$ zs=I~_oV1*l=Pt*5?=8<$)3>?P04BqR9Su{Wm<84(&toD~bw*z`k;#4(_*FgYMA<$Z zlVK~5vi><%IKgtL*0Go13g45Zw-^ggZ$>dyYK30|Ku_hsFd@DOL&CsUpUA8jx8#7o zLI9a3FbDz075mbEH!mRMLkkdj=*syu7Nu1MwS>wWo}hW+4a+_~X3Ouj+?z`mre#yL zWaR<1P|D*L;IoZ=YiOiyIvFm_j;vlL%@y_8Ixzm?<~nT-07 z)b5JW=^dv6hN}FUu?}96tEyxHc(@1xI90*QC}xC(m4KLvZgtK*1d|l`eRUryX6k** z>)$<%Z^oQ(d(!PM79Vw|Ex*?sdDD1#4X*5Q)!zq=HELaWzkQ4C{wwBC%kM4QZ|p`3 zp|s@H2M4#&n3>GItE^)$W{bNI@eLkBP! zHf#&qkCRn@d)gO0#m>6@uD{1tsKo(2J>735cNW16^kE?7Y*mRWTX`1(J|YZCl&SJ^ zJs^&w*BAk~P@45yjLoP5_$k3W#-uQYNeR|f<9DlISy-z8#T0#bVG(|ES?!+$d;c9~#{}4=#%5RC*o5wRlI5QORjyv{_&#=Us4Wlw;*FT*wBF~C- zr#8rk5B@EB&nB=?-JNGoqS-Rwr*NH2iyh2d-mM4waZJYNQ%;=stOoi*+{`m+0+eK1 zOxzo*CVpji)!ghh3uvP5yU~Ea=zkX87y%Ga-EJeA-c{kO`%s;Un*lYdtMVW~N=f!N zvK*852iad2$Kci-hOrrj?TNZ1M-2j7aLm!YhyVt={}E{Gh&w{};CjJa>&x*>=lMlA zSJm=b*i5$lBm*v{6aT#B`za&;Ww>r&7ugKc{QUm&S@Qlqw*!-(JAjS}g#H%S<;j!9 znK>QbyZ`?U`{#IlKeqq;(tUeBhr<*|Lcybg8@-GH&^Jd~K4>V6$P zm+G1~b4}K5U2-Yj^aQ^DQ0lTLF`@r-gN4 zYN!mrL;xVFxQQD2MGl;Wa;^|p>3}d1YiTk|R#i;TS+TZg=ARLC8^md6v_e>=kP2rs z!?eI`uOr_Cjj?ZQbyX)|uaRe_gNGKk;F)UR3D1}B{_b^p|30?(m`nNZCz$mn%QHLv z9<@AXqUU!!{QM5C^E_t$$!xqgg~`5R2O7VP>s*j$m;FZfXWQ5L%l(4`TlpMrY8I{G z(Yf5zB$-VBe`f#wS9c)wZs-!uU7JL{6I;E5#PBR~-K zsObg(FtNA|H?=OJDh&{DusSZq#&q1&T3PivK!BVIv1FaRS|_>(4A7`!?Bciqt|UAJ ztKvd{OjCq0Un6jM>+(IgZ$KRCi9%1u`#HlQGgsmlah(MFT2Bn7)BfrG@0ss1OO@Yi z*886wOue-K{bvt9U-R(uOSl$Do6qn?t@b?+KVSRs^Huxr4|ZU&J`e0Yd;yO_HE-Bi zk`1~vyYKt>i~anb+5evF&B~{@;96#$*#tuWxr`wyH_0{o9QTb;DaNF%?3}!J#4JP% zMKtqu%Bn|^w+G9>dWASNv>p?y?qPrc@ZpyzuZ4wYG6{Ow@?8bWA~sCTA~Ul}m0Zgz zv{q2S?h8xIjrOHFUAxfGy3TZ%AKBT4AIEi*x^I4s-m3>YfOz}PX1o>G`7WPq)|;%u z40p`lFH=tbukk3?<9Mwuti((E`|$#J;wZ@93am!&#_@jr?|zP#eLlOhL>C}6MeL?P z+LZX8CBHM-c6KZNK5%hH+~WPYcUHip?7rA-UslD4s03NI&ts)bhwkSSg?HA_P$K{) zno%7Gw~ZWogYRzxXvup8?o>DCD3o)QYTv*^XDdix3=$CcFalvOwgjUF!`wK=E~7f@ z@`V5%l8l7+j?2HWJMY=6ikJso~+$^1E&&Ng>x%K(n%y@7)&WHuQus%P#f7JbEpgWUia&G}j0h6*~OEmBR zbbiASj^x2UlUtKDT>@tWb{-G_)C4obm=ZQ?RFy3Xyr}`+$;UGQ2H|W0p47}(9#58w&K3?%jd$Uk%V?qdPy?(qG-Tsio?waPImyH5b)3`?SBxY>0am~rK! z5yQaFsRzdy&6>vn3`N_?$fC1Ze*_FviS#f|G}Esq+6N5FF`ygTF;Fv%V^BhHUECv9 zndF`=Rr;K1`nR6T4C%~d(QkT%7|NMD^4+*D-Tehzi>5g??Kx--l8eod&s1gos5vJE zNPsw3EP8HOPShGAjh@9VSnrr4^nkpFECkt--T%|kVX55ieXB}zR zfhy7u*`TTF%kLX>C`ILEFlAF$>7rN%GicY~tCBw1axUqFwUBB8HT;9T>3<+x+9hvCZW_p8x};{W1)oRXRnDTzdw1HpJncD{`z#D@Y}9t8waHf|JTI zDJ#?9L=6%wag?zdn_w^)ee04YqmWV58%C+y9=Ej#V8N6sqrX|VWydUSIN!xLQ=Kvr zAV>kJCfE+u(tw>W2)mVO{s(dVip9C;cFaz=Q=sefVe)`M}bnU1+Gq%ls;dO;YHsQd7M?$ZOo5HW|f0vRS|ryA{Lg!(!GL&|9? zM~K8dndQ4PC**sUeY`CICf|;?>@!JIV=8v^LW z!qrJ^#PKN>t(zHf1kha1oJ@#Kg)r7x|BE|-m_IMwa@U4-ld1SET=$QOWY#D1@)5+< zW*0E>B3_>8dO7F6!p%h4pTr{#kY776FmEAFT2+4ya}Tmj8ME6zzEfA=IYXJet88nC zdu;_w%F6P9#W~T2ys#6%^94o#CR8;C8{k%5hK{)TUj)M3z?=nd*_o*;iR{poL&x8H zz-V-HUo*|q*5#bjb6uy|jJPF_O@XqJcvjni#rS1BYD_nQ!FL{(|J~qt|M0{+a(p*t zIB9Bpyz8*c`*!eiIq&b^S(j-u&ey~JX)=0DA<)O#Rv-ZrgY=bX3 zX5&M|`n9KFuq|LxR(8&s00#;fCyXa;{NMilWIX<40Vh*V{g0AhD{3+D{Jy{U?99t|;ZYvR{QS$q&pY;IzhGxguEf1- zf<-BuT->>8Se!WBFU6#PB+W@C|Y_Q8F?RwXeMFjk> zJ$r8GpVx6Yr5Ilf0J2IrGNG`do{TsX36WiNWFdY&7AU^rnz!qyx^h?>s##phQtHz2 zUWXb|zlT2d3mAHFbXm%6E?QLDh4bOf;Kt6aWy0n6Nz;Gy+7Y$vfuwnZAmk@KzdZLX zffkb+>4snMe_8^$O_8*~l(hSdqrEqcfBjl*{l!%r?f^L5sasA8b>=<|X%EdcW6Y%0 zdNlTZnOPgO+dp^^f@<L8lg{|?#@UhvEH2nB-w~=oZbHYW@KYm;6+2N3X+CU9(()9 z!Y$MVAnPX9%S0+7gT7UVI*bl~DSv%;iYERe*wtw_T>AzeHv%B#Hk=R0JQo?O;~ain zk;%oe(c38<9sJo58mmV)yKS57cHjN0+svN% zIAQ;ameSh{*B0q{x7*+K{gWoXUyJU(`f#a-Q*+JdLw#5)!YFSf(QvrHA4J_*z46PH`>OC+Uwjla*Ize1IGd6ye~bGB`$q{#y7tMh&rRyzdga#j^_J9W{it@yNJ zM74^wJ$B1y-)uE(@bPOfJv=fmB^W)$Y8C;XOnO(X&a{|ks$Zlx@@O<*_KpoDx&Tou zRi32cqVkIcl@Ub0Y1`DW*@z3>GC zkpG6oA^N{wHU{C|SI6p2jPA=Bd`riKo!H+D9H|K1ylgN$>^9wdxej_)p@sq`qPilD=J{FoC{rQZeb9`Ud z?T<{=YX$w^^8BM5#Vfk|cw`pxQJ>)Qm9Q6;G5)swl(k#Cg9GyH4boKhOr+o?{|vXE zLRwlIq=iH#W~~V>om~0L)Au1LBRf~TwDNtx1KB&}Qpb5#KC3{4)NZ}nc*b|M!;!gi z0XS9mMt!f2wm#}%KQPE z!^XF>WStH;^L+80QoeL?ul>D!CF?L-Tur2w2Q6E&UWAzI*RQL@pB9n-&_-h_lvZLV z_&k@_wuC0|8$U|r8_X$(yJC(Fl>bk?peyM7Q*Y(8Mc&s2nu@opr3?!e{{ZuMKhU+j z?8e@I=4bW8uT|8Uy)JJoP1fXwJ~WH~w~jQDEuEbw*Iv;GQ02oHuDr4&cI0*w7chW-!%pXE`4 z;_GZPr{9S7J-D`FT%co|wVePGh3$nb3Fp4@wRTMievwbG!W~llJ}d{GZ$7NSo&U@X zGyczypk4Zi?<{gBEqIZ*qqP5Aq;3C`&a$3+ZWixq4j6gasXkiJw_jimJ>$YX-~CV~ zdx&IBIGn&Vh!DE0kYaf)nAqfl`t~usMuBNV@4lXM(p;#99~vD&J409O`)!N>wCg)_ zZTyH^lhD3I2VRcB1XKwFj!1ZPm--A~O>_TQd*uzVkGamf&7|#HaZ(KEh)~Eok;PZq z_jm{!f%i?n0gaq|nOc`5>z&RisCX!DEqwPamtXgGEik+e6QpSbh&6?aR`mVQojNK! z;8u5N!VejuRMgNL_M1?dzW-6s$+T*b*?$G~O!G_`F`9{EZQ1t9bJXr6b^L|Q0@`{o zvlc8GXl}(#Knk6Tf7X0qS%J)7p!_Z)?PxTYXGNi)UWSoV86%=M5o~NBuVF=PybPBo zD1AnC?NxYPUzkHut$@!d;bNU`J4!$!TMunaTNuU5=};K8B!Pfh&QwR2Q`C+v31iQ$yBf@v^dEOiHs3haQK z?KMLk74QRIEZ%9-rTTz0mAzKp`aYQwF zOu&nwEE{Q^j!kPu{t(Y51rNOld{>FI8`K)+>J?>zWP-4LJv>!-i@4`iJ6DOn>hXUn z67(wbKR~*)RTgz0iQfD=;62tTnP{!8LL`Q~ozfziQ4kbO(f1dAo63{E$TgmN&{cRO zq763@HBCKVjr@b%)hfys>9>jXI8n3p$8OGz3FKQ9$OWIX&8?o^39CLrvJ6) ziiz$d0_*JPWoxz>S4(%pq9X5zK-CY*CEY~Zi9Q{E&&SzVb!g=A=KQNT32jZx!bVKP zolUF$qiua9cWTlc+~o$EIBL!#d18k5x!z0|1=TEz6gY4|UWKl)K3u~49ULS+Q~Btj zcAOdKlH$Dc(vX0^@i_#pqN9CMXo`3cr*8=2VIWO_frY|wYAgRHXvTMyd(kS}S#nAz z`uT=?Tw;~oT`s#6Q^>-iYuVffD_;-URxyV_J6+FV2a1I$-7rw;pD`Z&2~m#iGK|QH zRBybY>Rc!=;kXm?Alr3d7~L92_=`r>R|w^jAu?~Mzm8-8zV?i6AhAhde;(r0Jv}?U zDM_BJGxK-{UTweDVkf3eJKWf&l56nMC*8#`mcDlt%k6a!9+(O51NR;Uw!~|B(H!iH z)m|R|(U|h*c%caod~I$Tr1V!GIbp9@5fw z=dbgW$p8^NWiVy11|t9>LrctN3RrPXJW$0?P#^B$<%xOtmsn~2#e}A%W8HLub9z@{gHQ{_&HvH(ey{vz>&cfEweDmmB78Fz zGAI=-=P{dlhMIuxh-qnXaR?p}OEeKfBf>Ut*wHYGT;kLnr+pnC>X+qmN-k_<}+x?L?m3-Sk}`xeF-F=>kKl>t%=Kg)u6|MPrhls$}s z2z8nz6=f3;XiXj}Kkin%0&GJEFTVclisRlixwHPuARyp3`Q*R1P-n9@t(nIT9Mh8u zE-9*>WErMTd!-vf_{C6P)!0P|*>_bkBTyC@_{aUakzzP~B?Gi))=Jm0MFOfKxnx#~+_9<{CFc1#h3dR6^?k zBn?OSbMC0JSxW12*1=BEqx&s}jEw!51JZdr-@_3h9^zOt{lGe%9vd)59~ldFK0+{; zLzN5BpD`n1Lq~LrzQR07oUyBMzX_E6EEu#p#>Mt2Ui^qO31@%$rj#=zFx`=LIKyUR z!)4OzlJZMx#;kpF!kdW`&O57Q+y%89q8>ub9mvOzY=GXwk!GwcgTVGbu$CpZzk=dR zz^G4R<2=bsg&|!EdyGpgHKm3-2o++Qdk74Kb57k6-XUbIR2|^bdD5q^g^=lSVL?kO zB-h}Xr;;p>G$>tQ0jK*qLt9fsoVTEma$O3Z{Gq#@9Ph089RXz1^2;JFl*eHOLkyP_geMN|lS~SaWf$ zG=R&f-d}KBR_#=BIr5=tSe>0UWQy5SS3i@Ea)(|^o-s~LJL-8~u+_IN;ZI|Q%&mR} zR)@rTj&i2D5p{Zz$WW(~@@-W}>{RC*`~Xhs8Jg{L<#5kFC<4jvX(UsU@J(L!IxZ0? z7Y_(uvQ?#2W(Tf8@WJh*a-UNL9i75tJ|!wgf2tSd4l8(G!7^WuH5^a)j2UlG1*BLP zZ~^Vs?-2m!bYB*~GUzw}#H@DAg9!1Gzy&Fu%&2!kma@(56=xhC0te;%VgX_>N2}mB z{W0>6Wm94+smEd7vy{;~<09MlTh@4-8a72-E=0vbwKrG1{Q|3)Mq3xs)|_-+4Sld3 zB2y2UzpXNWIa}*3Dg7|_N~vT@1s!AguT_*HNEyS^9+75)M0XrP0eDyaay=t1E!_5v z^V!qqTzNqL52!%2@_PqlAAsM!VWV0mJl2!!#QO~P+-IiLMCgY3{Z5bC>jJMUn$$fc zNvO^i023N-ZD1Vu8)ps4I8{~uX(W*YdIVDb>y3Oo1N0t(T+{HYK`8a>|I)Ex^47Nl zc{8oS$V&HSHSbXzmd7+Am*N^~rK3go>GdKBcchnWpKl}+g9B&bo3+m9f z_yF#yQ>oKVG~TZDKYe@0P}7ck(!McoxdNX$*y$}|$u5x?Jb9rHWk|-*%nl-#ni{7^ z3TFbAbFNn`|8vGQG`4C5@*HtDTAYC^S-S(0ZSY!;e1vCrN$<45WrSP_nZYRIe%ILP zQ!f7r?$N|`Z*O-~-&GLZ5Fg+JGF`_X)r!!(2atE@@IvxYz{R|!YuYY;vUuB8cAF1?2DW=W!p-8Mk>kIv>U1sB+N*ryl z33B1y|I6FR6$D?Zu}nL0NI76XK~Si8za`RQhE+>^yo46b}?Mqxf7Jc^p#j81S1g@C1lCFGMhc6m{cF+v@?f|?I(0B&un?8;$*hs zhN_qEp42!UI61@2On;zB2u?_Vr)fCog*bC0uh7 zezD%JDsT6`IQ6{XHwHt3X3e<7JxF{>KJ=hLUbj8c~!60deS10qGWL zkdnIlpzr(LKkj$W^Z2Md=d8W=>h)V|6QQM{L`FIcRX}mY(2a!FgDOlYZpr!go=}eosEu-g|)96&PED?2w3d(?s(i$SCg=E zapJLn-{J9bas^*Qkd&;CtA&+=jR(Tg#?IbZnrW@3feB%6EzNXWSe;MZRo>>Fy|N$1 zM%Pb6&&toiO5B=BRt6#EBLN6F*?3qWe4HGe-6edanNI0SfPce3=4C>hzT)8^&GdIu zcht2I@-7$~gfNdVw-uiNKSETThhJD&R8)WqA;8Bk#LLIe%P+{yFD@Y@B*Djr`1de@ z)iBn!5;_XE{;dW6C(U%v!^2gAm)G0do5x#_#|2}@%P%f2&dVpjDb;ecRnb$L4?b`~M{DuIKA&!>eQC?&68D0)n%>0Wak$A&;@K@NmKC zxwts~hl^VGTs&Od@42`lyoinF_ig|n57ih?u~pu%Hs zZ!IA%$A42$NLWFLPvjOqzoN)Z5g}0pIeBq@IdOSWMLyyGe5>GM<>_SO?D3y(t^em+ z#sBqNSRI^P!O99Y7<(@p>suHXC&cNoCG7wAy~zEq^!|No{lD);{(t?J7i@+X7ViHg z?Em}-Xb}9*|Eezd&wrKQ#u;cl2B>x?O&vP~X*;VZ+|={=u{=ifO7Gi#+lIS$W%-v7 z9m+Eo6|+8vPPu3b-528b`ug()Aql#)pU^(!H;WA(o}u?es+UZU&z*byo9P?}I_84v zu!*_XkJN*p(nk?2vD~_=qx*qr3%i{uEsw{%-Fik3#@%0dO}D5JLXhPPc^%zNNfmA! zGGE6;$52NRbCdmqG+}oA&2qwW^m5E0^DxK0DdsUFco{rpH}VDLkvhN?aFt?nR^N;w zs&45hVK2?gimD&wi@USfUY?Vra(wM5zWt}zT2fZz^ec*`dsz@b$Pa~+w5*kR_DQ~8s@%Sw zNmk8#Ubqe>-_-P%FV}f}gJK*0F4c&Jw?-j8Kg`sloECd{ef(*reUf3++07p)Q_p5T zgN~(I6oPMX%C%^!l;m`wa1nT+$Ai9DR_6I%B<_VJXV93t7t{xwqX&(yUQi+jOLZJ1 zK17-4J)`dMmqp^Aeir@t`Bez|G$Vmi#xdX&sHEs0`+f))QZKx2Kkq6gBS<=fLQv2Y zE>#ad#%NtT{e*&jv=a|Pcy!Vq&KsDRDT^p4DYxs!_xA}ETgu7F$%i$U_wqfft1cnm z_K_OYrTzPnvk>stY|`!>B?j1HEIHC!3%lMcv?3SQ+$VrU&N(#meP65||Fq(DJ4fL3 z3&d5J2U?f~)oK+lbf_{n2?VFWH#FZXJ>(!jgBDk>@j zocaaU&fCI885xrppupLG&pl}jpWD^%J+cD1#e7@$#ZbQeU2(uBCTZyh9kVz?#wz0y z*=G}fEbfTA{wqH>w>V8o+##)Ft~$o{uOf>$`jUu83M_J#^o`$MwjpBh=RX2rqMXG%H@b#;#!x$n>~w*i)Qt^kB9=`zq#ETtQzhByTwK% zcO=fi&c0Z6|69R>gVmbL)ul!sDzEYY8%MoqmpIyM83&tIN6{#97oFV1@^*D45LndSY(KLIxCX zm6m{+Zi(=EPFJ@RO-hiGa4L!5Z8sKTsPV!vmtp3;jK)u$TRQD=oT4^>W%J|=QnMVD zdw)eM;)(~DYs0HLuga4_8BPe6-UUm~EuFv2vSaa-_mrzeQ7a&!;};K7@l&bRB5o-_ zALnVv?P8np*?YKY)g)6dSxfBTq`FXBipX%S7>*z@mbL;>5Vf>f- z`TxAwwB(J3pz!O9m$u$KV9gCSVP<8OHLbAidOq{{xl3O|&ma zy3P1&q|2;G8RVXxhr;A47hrky67!b6E0UN()WhUt^=Du9bEEh7_j5@Ju1b-^@1d;S z%A}yiU(V5720~gCVOKA->Bn*2Hr)e?6e_hl>OLp#!vMb+{KX0hxLvRs*ZDF)^@J<9iR8~O5TtP)fIcWzp{%s@`=h4!bH|sN>jn)K? zGLFAu{$dW(yU!4(7RRhhJQ+lY|1eeQ#Z}+;`i1f7oc}q62&{~Ex?-^8Fu7;Iv+@)h zS8d9+MFn|(8PJrC=`Q$dY@fp7fU_y|krPnFDzgV?^?4qJ5fEJva-66i6KMVSl3e89 zm(;Mu_cEZ?X;-mddVqO-F!Ltd+877!#GR@P>R$OJz-A|M6&VA^DZ<#ui8ZqZyPh=a z8jrz|pXgDALnRc+bm z*ic{YB^l%yS79CkTM>HqG_pJ z(|p%Ny_D-@a2;?f5>%&Jfr^WJCmr|O?1UN)$x{Z}g!F8KI>e21_zxQ&%7bEqB%IyAudLBu%2p;S&y@S5lBepJs{}zsIM?-ZiDhRsF4h*%2(} z{@gltHp=cG3^t@sNJ9ZljA$-Y)UmKte0Y4YMpt{ZGh##))=dD@U+$4w%6XcTN<7{m z!3oC)SH1)}Ta}bp{4yE9?rSmuAGHe&xMia=qi&s^w=wS+;cJGm(LNzM|CJP?IQxK- zj1pmcFUc!#u02kcM$&7vk>2I7*;m8vZ2HC11AAGTE_l7{5}aTrh}kN zOoer1)~$uxg{*X3AlV+%jm6|PNEL9 zGrjGXP;653eZO1s#tz%RGrs0g21^4&Bskbz3wrb5 zz>9=x#Q*d_MTKeBdBh?*av{YayULB`+DG-F@Eo~;|H}e_r;9-xqZdZP^AQoZQU@~` zx?-Ic^j7al*+WZ9U?mwX?%~X;(>au=!*w623Tm#s<+zlTlpFt}B6m>!xDgJY296w9 zhUi~pD!lDb3uD8?Npn26QQG3bLa|Hd^?$p`Y8hp>c%9?>@fd;yi1k4ee%R<|Bcw-0e>?L4r!C}Uwc$gPMW<;HGj6fXRrbGLzMEKxJ}(sXk9R>tzx}{x53Ba)8q3* zHm@t{sNpjsp0%sks;)k3VLaujo^4oAL=HnPv_5edc%mukwfyDh_)*ulNOyoGfM+V2 zCy}*^TPFxH;)@4G-cJGIog}?<`Le_J5|e|9O!+Y3mllx&iA@V?@arhHL{6>wf^#BT zYR04ZP-Ipr^CJOBj9z`9pW}9kl!&1F^2?>thAF9Tl~a*D4zH4r97a`1PY+hZUPUad z;mxE>%qS_LmbGcA_i%weXZkg1zu(TS;->*U7^@oJ8GVSP3lalX*Esw&x(FMaPYFe; z4sIXSc(3_YswVK5wf8FBIMq)rwR!nEMpcIA->DnDOrc;wetOmlU>FecC}+u4uh?*_ zzp6Qm+@(m2_3!%uH}oj!*;ovKcs1IVH6k1SG14!5*ja`0!VG_^UDY>Y)-_MbL%H?rff_xg_IV9hx; zdVo_hc$EVUX(A}ZYF#GA&t8-8*i&=UIJM=;pfT>m{1BpcrE4(dQWJJVb`@~QPpy2U zL8jy7t6fRL^jz|qUS1l(1*aQnd5`6debW6i7x>1#C&OZf*Q+9Rpzt#vMx-CicP2gu zKHoR?uS5~6`te24#+JFfk-+CpF6^TSKdcvMvO@~ko`nMgsey)|hBeBC9GEVu7Ngwh zlz!s)o|o%kIvIp|rz@ldDcsc2>Hjup>c4`0NI)db(QFO!zMg#e1B#%tY$QPTup%BR z5|S@rw1}ZTOPX5&>K}D@E07DB6M}>{ zCQA1B=ePZ>1;&oNXV+)knp*s;h3nTB`W;iD0G3uK)T z)M(JTR2$JgO-6YcFg#pSQ#A=x&GAPslU{0-1KtUSku&zGg}%8ecAAe=TAD6NQ<9jm z0h2%-R_VOGivb2iL86f+l_>1xX!}&y;rrEvMqik8xUVO&1Ib>#-g>%iONM?M5v`Iu zO2{%|aLMF-!2YJ)=NDb0#s3u0GHze1)b~RBn&ljct)sI&8 zyQ|X9F&3Bp2}sRPsa1=hwFNluaK=)!06RhO9b1~vgWgPe?vZ!)(uSeq%gZUyY3L4q zwf>Bm^?Ut2;EpI5onr%#D!G)9V^q;fnm1f3>7>vp_{er90|9ZwkA%g?>LG{hI#%>pggT>5gLf5`T-$=b%>1ZMHLR#q5Q6YW_;To8CKW~agH}+hF z9N(nO5`g3vRU05M_$~(>$3fQFc~x>c$)SXO;lG)xg1$V}3|VY?si+~)!pc}~Tm~sL z9o;swZ@Dqulb$N&yD9T;-xOr}$O$w@%O6p=&|O}j!ilwm3Tyx9IMt}qabGE2#^phA z$U;u9GVIraza(<_wqKYy2lFGrfteEt5+zhEfDQKQ9~_w4gM5#R)=&Je(_xx+!B%dISEHk6lSx8K< zbg;s)FH5nzsHmt;;J5o<&-3`}HpfTR$YKUl*euJ}bZ~wugdl0QYx^rbiYrOh5wlTV z2cL(!Ng&JQ;owDZ%a{5KZq2K2NFe?tXBDD$2x`r@Ps+Az zML!S_Y?=PD#Epb&1RSrg_fZg)HiEJ6|Y2e6(g8Mgoq|CTX5BDo#ST)B> z#avITgUIaoStFGKlZKnXy`z@-$$uqfz?)aj$;mm~Sglzz90eh5$>!CphwZ(;Avw}I z_^sPN^OEL9%Ci$dj|~tMUnbr=3~rfJd!+HooBh`dH`0#r?DwxuFvC8Cdr-wdMF+_7 zahe59{pjfEPO;I4_Snp@Tc<8QCB7;o=*cWgO;9!*_R6!LohDAuR1I=0tp!$kI-(@3SA-|wHtain#yq2oBAX|y#gWvsm{ zY6F@<(%d-RkdNF#24zx06w;vLuu5 zW2MLRZs1~G87Z&EIqEji>&-XoEg^~6IiW@-3Dxn)!iZGhChpud!lA%f<0-y$bSw?N zvyT}EiF_aXd1x}$0lBMs%v@!Hxyg3YL)JWWo!87hX@}SMNDUK=C4jOrYFkobx})-4 zl3+p!`?EjLDj>>0OCX{%+SuBPfMVAZj_B!;5XuV_5y@@{5#g;`G>#6Vycuj>2Tj-@u8x&6)#@1clV|Qhlhs`D2ciWP*PPo z{iw}a;xrQ)C%p0&zGo3iQ4B|~F>~$CfeKJCAOCH`q(ZI!nHBncpt|3M!sM<8iK-LwX``&c#8uA0;b?8_exffRbD zGDlu2aOV8sGF~I*n8hAV3pM`0VzE3m8=vWAm%bJ5)(NP2NeJ#al0iGzypZRYw_ff> z#XbQhsXoA?rlz)>20$F$!R^k&!^67*qV|V0c+hp%%*dIr2UWcUki#1`-@)3mSwN@+ zjCq$Yb(iWFe*X<3e;r#hCA>ot8{~?q()tw5yoLvM83(g+C&pTL4kVG!DI^e-h)3cU~R+AP&cmV{^J~1(| zwAiph!Youmv;acbz9JXcPWW26BzlkL^Fx3ry&$8n->fGk=+p*v=P#u1jWiMz@aRQT z0=TnOZ6*((G7{h#F~Buy+S%Bw#AT)@>p|xBw^hfZ55-OEEldU*qyqL_3q_pnmL`aE zG@9W-jfSzeoAlYJrmM~YD?t3YisfbgphFCm5j9LSxPw5cd4Z-kD4X;Fu%JdvyK*)9 zN5Q0ssT)Y=(%WWe#UA|m{Xyo);E5SSQS+&$3v&_(YAYitfnu9!49@cpIl#bkcl zzxK09Jq>b!RS7cgjImTb)&WsG_+GnSQ~o3bxi!vVx?YL7eJbpT=kCxQO~DUV=I@bQ zMEaUwQR3a*e9uC%m7*%|_htE3POI@k;dYv;d0L?e*qdD=SG5J{SvW5!j|0p={N?b7yb7jWKBSSNchccM4T3M3K;$s{2dlFA-mAv`C5{ zA=E+(sy85_sfzq8 z3$;8ALa*kNp44295v)^qJ&|Q!7JX62&(zek z2W*ejydEDKsk!@Bg^&^dGyBzovrx3IlE6y_ciT(tenE-N8#C#(84aXQ`Ird{}05BkG+tF{~1R8ab z8HxN>yIQ>@vou^W_&`9-4S2-b3((0D1}C6MfV>Y-yY|5X{iSR?g0nKb&3fQ?;l5Fv zbZmBMyKH#S<8Kg-Di#mYnkD~v{yY^=&GK7&0Nn{B3=9ByO;qc@mD`j=Uo-)-fT7OL z^{E>Y?Pbq8Z%c`tg~|*0kzySwZJ-3D5DALw6b=Hw5`;QW935f@Tu%?jr~x86k1@C=g8fo=GCzUz$UfmK*^Nd z+1dHo;d@bcLS{E8m8ZWJVznckFx*Qm5tkWv*CtB)0NU`X6hc(i-T)z@`x%IbkK4kq ztRSU9P>wq9ZYn;#A`_FETBjKr=&XhpE;t`q>m1wk2k676q9R-mk4g3Kb6ZqU%i}F( zf8=89bSH4VsGs7a@TdyJg5b4OYQYVEK4ktmycAMK4Z|~ zhAsgAs?+z0A+8?d#Y7d_?icVb49IY2ar@vP6!)u37{|bwEBtpwWp6jp>*5vQH|AYJ z#^|l%AzNsGU$*Z~5sy*_EKA6W#)k|lO)&&EVv?{yewuiL?P1;p^(N{gFeqTNsDVK< z7YBxt<;-aO#?a13GhHigj9HZB9ZTECW#&zGQ8spVE`njFPT4uWD1&q%9(5ihY51PX^^^%X5^gFs8-ce49l&^qYZ^px}O2=W0l%!-E5NFFr3|12vltZ~Q zwY9&)W3=-v8#wu~oDfc(J2%fmeRd3N4JThYyB`83#hPNR6JeMJQb-zEIksFK)f5C? z!AmPNuu>I|BD-C6Ud1_=a%Tom;x(&3jPC5@pJ0QdGa;zAa!D1Nb-$JDZ;l{~&>~ z)@;yP9`M2X`N^mL=l}#8g8Fin{!A4c1qD+Yr8e&A8lB@kl%S zR!K}|SQRmpHGLmv+pgu|ag3KS+m2>|xeSrGid~KS^>u%2Iq>L@Y_U%}HOi51*Fv-h zmHF_JtoyeoA4V}9&sfxx#=jU7LfTtQNHzu*PKd4Q7=$A{$eb!EFRp5D`YG!(nhgzq z+B}I<*VmZUuUGaEBbgh{3%YKb+#f~-inX&pJFXBy(RMQD4!LXq6%L3k@c{W8=zrsV zA$8S{lOZJ4cD66B85SB8ZvlMGKn=f)uHvD9(IzYUV!B4La^i8nDz8c5y&MR|JjPlT zECp@B62{jXn&IeaFiK$Pyo z7KM<-Hs}x^-cS1>9dvvcmam2z&Vn~0rvGv|Ax9^2+MWu7kY<9*S;H8*vd#)eSYTD zsS8nDF;ia6AZ=ChW`rUGr*=yKQV4~Ai%=VA|NdHg<_JKA@8c~B1`?+-I3OnLjI4(t z?#db(B}YIJHG|fh!tQezXyBt>CpH+l@raiXmjYacqRx`I&s<>C#P=;Pw=9%1P5GTbd=#iYvD!_A^+dV{0wxmhd zn5}+&Gr&a^@Iw@(55>ORhx(aR=yFkPl$4a6Yu}5PNUEx;+N^(CDH21JBL)D{$(#jl zym2uX{arZ_fPm0OBOmF>RCAbQ<^6A%cf_l*rMgs5tKMIj9ud2_xtaIDX(TUtWTpEy zU~`7pFBJpb(0&U^UP!D?=G48s0AR$OD$LwNkijjQl^9nE0esNO2clH+#Nh)>#zG6U zU)zXCX~dMr<71f1-%~@B!@9AEGlOW@yPUWsSZ8MSkwW3RPo6w+uc(*^THNZ9m1UAo zWevnjk@v+>bNIM&Q;2}0WZ!*%e^`H z!qDM&EwEn*0&ReRBc~5zJH89usV@9sj;Z*QLY)&NmqBWw02k>a+e?EDZ)&+YEtXV( zSlZZc-h;E<6Cb@zCZNBFFH^31HGh6h^em0+I&I-|wJvr}{=sW3^-K_BCty;m0Upf% z_v+Di)y?{%PIWjt(^%q1Q)ESifrjs-9W`7o=mRhTYOtZXH3>STCPwe>IhPFmwzgaN zsYe*@Z@a~;N_aaP(oRec+?xvfEbYIuhYICMOg;oa#_xNp96)v3p2~I8$1go1+`@O?!?2(pzjJnkw`FM;Jy9p zo6*-g|0vlGzC?nBhaX>Z?Q8X+9ukUQeL*Zb=Ao+rc2g2#!LfBISZwz-NJe$kIG|}m z2b>9rC&AP1ARgTxERlBa&1fRCe)WlrvvEgYf0>k16^$;y44MR`-E9aw;-my_d1FNz zO>tL^4VwNYj2(x+#)6z-F6$`|oit|l^*9)!u)q3?WXM2Cg`gcOgb8d+J|YkFSV;9w zG#c)mB%+Aoc{!>=D;F@m zvo3$U0wzh$5tt0_x{Upq5d?Z=oEf5d@|KA(T>TreL$eN_e-TU|kbv4}rV7AZR-G!) zbg*yf(o16J#U~Wg_LrcIoRnE<*p7nNO{&DN>MwzCKMF<$q;iL%7{c}Ku~9&LEq@5j zt1!D>YvWdW_wV1YwgevPpav8a=Sg_(K`k+v*bZ3Vrhwl5Xr(rjvY-8;?ec{$4v2W@ z&+R(`H!*^_!PoR&YfY5{(!Xyvh5Z8Yu}rXXllU@752ssiU=v^h(KX*+1OJl%ItF%Q zAP6o0A~aGy;lo3+nr_b20CtYL^q9yl3k<%1iVm9(h^+euDVzVC#6x1EZm@zzh3({OoNS&75T3x(Fq|u{}=GZKBFO z#}8n~aH1Kw9D%Y}#Ko&ti$9E4e^iP}`@mVLgI84Wf>{Y@>T~^4(`=))ahF6%%A5`F zYr$Qw$mP~)CDnkVE~~lCOs)+E`m#EvT#Y^U=MsA8#aw&0A_*4o3fXxReScAv39f)N zWo4pxBzZpG)80||eB-Uv+%py_QUJ0Iex4Zi#YL;>feX-9VH$wBJOUlRb=$zedPzx1 zrF>?TUZUnqG8yHCY{f%0h0v+-THmdX2M0Te-15}!7lUc+WKukob)t116M=B(RZnBg zRFw)~L33%?Rf808yT3D0FzSnzotYovzMpEf*4dV16vB0SsdP}1h>Y&tmy~!QmT-%0 z=0bM)y|Tv)!6u$spr-_t6@eitsr4bNsG#vY^^rpBS6{^0QF>CyMKxNAC{Ubr*Bt+$ zA9oo2xS=kf7Uvr-r~|cd0O<+>u9jt2W2vy#AY}=D4~oKU|D9#~UVu>q;d&ENQ!i(5 zpcIUG4f8^X90}Y&zx~?XclY{k#IQE(J|`|wwqU@gaJZtpnn^kZhQ@-&a{dzv!^uJ| z_M)yyet++~W!r51bL#9B3a>b1A#;Kb@#Mm-_SHl|S>Jn~pV7*;_jXC0L4?LeUyaGp zid=_-q1V7|xEMy{fneyMQENQh%TwZd2NDJh3x zCkGA5@jJ`IOHl%9(~Z7}98(~NU_rFHdfogJYC7w|!rN<1^9YE4S_4fH2=ddRR!J-! z?B#|QT*Y{5m)~~GU!WH`q-w3?K)rr7^1xc>?BsHPf4{Te_P0S66F6J3ex-JUF!)L0 zh|icD?Wd@x7a_0p*cKJgoG&9+AJ73Xw~zqn2ulK=t-6pxnW0wz=1+Fih$3?U_~2b> zKj0Mrh8Mc7k>3FoT!FKG)1$eIs}7gD74Rr#c;X#njZq-Dm$3p|!mlgoTX*ygrKE+N zpD8i;l&VRyoUkWlORKG|wFe-!{j66F2}pd7@yz*SkUiR=>!8Dd$O{Tn0o`VKn2e~& zAo=Q8&B8uNcDW5kzu-r1`T8c!@}u!$I{{^u5BK_N-`7ev9TGIkb#fE!vKb`aQUJ-N zgyv?^EOGmJ#HUX3x3DUQ6U>XV3*R>u@ZVd%$PKqr6~6()#zW^?wnp}lUy~@x2bqG3 zwF577W#cV~K>SFP2rP4zCic4T>{kU$@6z_+5%6)wylZ3HUUPKA3PxaVaf(w zxr%|nWMUDGPWcqhqg`2Znp;gE9Zz!}$lGS3GM=W%Xn{U8I*yh^8^h^RxF)DVmOzzl zLwZ%ryl~p~%KF4=d}j<8fkIe61C2WGrJ?d>$<5=(osxlQd;}V_7qUpBbz@oD*YwNW zEa&^(yV-#60R4D}YZC8H?u0U=krGgxozZt4W&-4`K(hK10LXNe4!eJ@w#sZb@|MH} zTxZv05AGEpy-^0L;K3SzrG=1cf=mF^Esrh*<&s9b=dqy4a08d}iJcR5msOCWqPx$( z7aNf!WG3Gt2Dx{Sc{^ypLz9$s85!p06ZH@LR(`xMeEDrX++82pp?8rX_>7hSFzFzW zAm#l_kU)jZR8(pGl(@@qfi25SRGa7J*V|2>ag6dCk6@&8EK~mA1*=Aixegu$@og1@ z!byPPK+wtjhR>B^)4E@+ec4KDF_~b%tL3`;TtpTA++8%@;{?$1S!*~so*S?8e~=aO zoRWdzECo9O(urN(I#Hc+E8wzwA&>ictuN&F0A?-N7R5N|3KYHV<10KZVtX*zRFwpr zYVbgx=Yt8Ll4(o*xg80SD|HlRofVp$#nP*Jlql<0Bf~D^wfj#%L$Nc?;yOr3E^6I+ zt3*gGj|k~xK@ahANip;k09CP5OFJCrY0Zp+(DTx`Envb>%5w{vabOwFV3Ob(i#+d$ z|8<6vC4JW#Bi3AqiId{oM-k`ISN!IvlP8gYx9bjUw5qgO>lU1s)G1>o)+V-(b|+4< zT_$9fC^etpu`z5>>~FwyDdR>~(&}BOLOz3=7D^xA5GK=e*{jnA|2%gFpB2dJVD{y8 z`OcN!V$?LKkFUtp9d(v_FQrZ^6+~DHfZk}Dw7=;pP%Xz+T?;5OFU|T5F^?e_5n~eo zxUv(-y?g5SZ9lw^q}nLU@5X*$BcLz=h!GeT{1&rTD`@!yU_uC~)r7+s0R<(6WHy#& zK77!2S^1u&xOH9NH(xm<_O$)dR-O_Wh!hao=Scfidiq4J{Qyh0o~xo1Ii`u{v<_^f z1D&tUZ@0~);}gX{*M@ouPC)1QD;|PcH2g)lsCJ;+<}9x0x_sz6FoEcz`K4ugK?!fN zL5!J%*;^ar2U>TXKlpzJ6PNT+jIyhIfbLlV<`~Tfwr9;R0?X=sYtz9%FDbI+pm>82 z_4AdHPoj~peJqni)^`Pd-@3H8PvW+nG{Cd3Pjr5}Ukqn0=cr5uy_ZKml-_K6aV_5c z=poI{N9zLSXdUP~KzuH6nN-h4gF(@N>=4N^fFEn!owwK|W0(J}@IC_bOK!dqC{g-K ze{O{@L=C!AeA4+Ln%@Bn9>)ST09_yFv6=>PE>Y10ce;xX3@Z+o)OV%Ogy8G{+(HFSyzN5(o9oBGf(Zb1_o5nOCdo2U~ z*AoE$>~{cDmj1G18h&vXZOiVQ1@Sj6Y^|ip1|2u+=FK{4g9gPhtN_ z$DE%F7@{ps;65k_CZR>}m~a^8feQq<~1ht>k!nJYI5 z2+Qy)q6O@_m&5YalWk@AKx{;5Gb`7}9lp@HGZSV}$IEd&6Afaa-E#)%Jf-5h@7u*v zY0n?NhK%UJ@Gx))Y+!(;z`K>|HWwopWs`Sj8${6Q-;6ziGYQA*U_@k-h%w-v0XQkI zVA$vazSbFXfU?C~;NsXC=D~nnkx5NuljPd7p==)}(z5Iq*m~G#?<~-@2>OE_$n&#g zbS;@%;qgjHU42(x52!NH3`E|HFY&6*nWW#%_gNy@Db8IT0%O6PD^6 z;`eL9fxm(ZO&(np$K=3+i3=Rv_Z6(AZzOW5{56HOFR4g!zhCB zz#5m*Ym#0c6Rm?^*{!ZgX>NFcn-pa{%`0A-f2N=2t^nB2+W{y8nR`~3oOpndf&@^G*2OwdJl4Lgq6ud7 zh=8N-o}|OwYAxZ8zvQk?sS5_LJk}?hLQ5OQchZ4x4ZhAIG$y5 zF6jS#1Dzo-f?ZwWA|0@|UI2 zyTFE%8jx$(!Tr$p#w}31S2VGR)_wS36f>Rr?AZX88s+BXEDWYMWy_4jCSpg}2`MH( zLM>*4oh58Hm*$^P;HM3plJ?!S?g0Uo^cY}b(rO~Xb9z`VtT7CK1)G4f{2J&xbR~(p z?C`b{m;mqH#I)5r1loJSU{4ggJTZ>Z%sRwN<%*Z*sDZ!g0J3fvt+0!75*Yq@=!2)q zmtJOssCo#CoL->T)TMiOB50z-tluNh7)jFeTzvOf_XE{WJoS7{S;I{H(ZOvWg~m7ovGhLlnO zn9`q$06swl;HvP-Xw`s-bHLQ?&O97K#T|{8an2pr4dSD$h<$&{8r5@31j8%xJ3@J+ z-)%-tHGLVF@SOoLf0OLr^~aZvG@Qnrq;wxE3)g@YE~KC_jj8(6{fggez1G)#%s8y2 zjsqLT90WS$k)Un0Vp6$Ws093VjS84nSzflpiKr0gmhl*Y08$kSJfyh8V2P6?sN<{D zBv3;p0Qc8Ah2T(91D+2$HfGw4gq?oO3eujvm)DYO1OROvP-?O9G)x4UgRrgnjD|m; z7#PIRH+U4p+-aj%Vc!sF^~;2W!6Hzx2vYe|5=>dHPTd=4{ulxa>kMepED~L~dT+4Y zDlByrdYbOwq{68p+q%yRp>Gau-#BgHfYAd^o1Yd8c#gU8Eu)oD6uvTC~^+diAUHHgO+?T;Kl&cRq3s_$oYJs%iMRNb2IGH}1q zd8LycF~*#VywHw^xJugWdbBqa)wBDv??DrenMLPik8 zX(^X+V^PfzyjE;xh${JT4H#C;*uw`(_b4RfumnWMp{DoBodW61smxVi(D|HbGvBDB zmt#;akbe5>$w)9lfm*IIeXD^*v0KWI0_DhD`XdU|#$oua&C}dSn{AZ#JKd&70>Utx zwJ`H!{OLWS_d)D=FyWKkaj`_vGSqh_`*}_Ra~uW=pRAoaSjKszwYUmyrn!_FR``7d5Tkg& z_>Yq4XK|xwFdJ&$-MhOyJWv1_8Do7%8CW3gyj_@0?DfiC1@Y$Aryy`|jd{04nN(qN zqn=VvPIM;(Fjs}aTK9Ox&$_g2X0gViIrKajwzcZ8aNxh4Qkxl4_;$Ge3hLd$(?)>7 zO1=Zd01a&0RAy-BeA4nKEbWFsK=WU(m~keCL!M8pD`&j{HU=RMNt^d@GaJ7RLE<+n zd$g$O%yG$+Tsc$)c9jN6JQsk-i=9S9=GRy&qNnqjgKeaF5^vF3lB>tMlK|L01>jUX zz^RQiUoi{U4T`ZYoCIh(Xsx}pps4{_Ph)!EANxb9+s4|;icH;(Nu=>o3SiRIBki0c zNVu!uggZL(=`CV&l?ZGX=tD8>Fl&Xl55hB=!~eP9B*A<49a|TGc@a)6BwK5K)DinP zpTWp0N=W9V{SPEYU7*%$<;O^Xj9CKkPWm|<7qxE+Xc4;j^rG<0=X{x_+Br+F2A&)R z346a}1Ie}MQT8_2I3eKI)_!R1;il?S z`@GmBU#$Rn6+0DSU^iDl&E?>cuW=1b%3EC`cPB7EUk65UNn6;G*mAAD5O(|q`DO{X zQRR@FAfZT~vVZ~>=oh$IH2bNA@B6{gaWp(A_45-6FINUrE0)DqvEKl5ehvh{t(&mh zQxCmx&62^?shda!7>-_II(NO~wl4vHq@Xrh35HnBz!)UiWmXNka*%r#q$GsU*z#~6 zY6;wh;TR~qnB=m0A?F~=OrhSJx0-|75vHZPUIiG9IOG_!B(fO>=XPF^U;6dEcw}uV zjIsU}q00}93^9et11hrEp_8$8bZjp_>5YkntrtV(RtuA$WSQ+-R3fdC7ckU$3hVpO z{2yyoa5;2s_n<;YN9Tf0bdcbO5~u69mpNJ&Ag@_WRi($;@w~kM?&_G!g<)yJ@JLy7 zyt2JGrHDxt7+cut zQdU>*dfrSI8zYq+Vwd)Hru0m(&&%Xw$wF{HNqu%jJ0kf&7p0IWi7Ji;QMNpa1xoCLiNV-=c0&3>l0j>T(c!F(rKG}sQhbjE6 zf{GH3K5_-VjXQ0KD$zGMi~rDfGcdDx>JGB>nC2v{{k8ebtTyfu7Jc{%uSIZQdd;lH ztE*5xlr)jOc?OJx$rRu}HX+23bNC$7IR>+!tyxPR02pjtQ}#%x5`Z;rZ_Z^k8hdV* z5U&!Dfn^SVxK-Ki%b8N!Csk^hilQwo$RD^r**?PhBfZ%#xDW@+3BG1T{-lU_;Olu=HDAtE24cxv}Ap`%;KAR)pgt=#fH@ zSi%j=%3C?p!Fx%ScTES;7Zmm#Bs2*bNdoCWq4)NTE?B!dL6)CXQd_ zA+y<0ewAe!`J#5ygHPA6U^MJ-%-9555Wc17n(FFDQk+Xi`ZDRfR?VTMx@;toUq&6uBZ!>~ zd%-jlFk>#ew_{_h#N>9z#yJt@L*@ij%Hl?c;83*Dk{e)O*qn zP_`8*GW){GLlNJG8z4=7GSyAh!4q%&F{;>iQHSoa#}Cbxm9gz~6e_0Q-)@4kcCLFKUA; z-J{BXS&Xs=6Oi8?{Hfh;d2vk=WAhVCzEBP`GIQ#!r&tcrs8c5Mky-^ID13nXQU^%y zQGDc3WEI!CxQYW#KlU$c9_yHzjsrxXy52+KOK);&YV(oYJgYD7R9|7rDGyiJH!i#!t}~RUvPuV7!+#WP~a@ zC!%-Ah-A%Q&S(C9;;pl3hjZZg=y_WJ`InW^u3$j16Cg#2BjL%@U8GeK?cD8MHseg+T3{z(&Ix> zcly#&<`X6MX(fDQIQ@&qj~~~78>BzM4ePp43$6jry6lOy25i5AI&FmR=9_(5#eTE@ zNLE`9wC{PqA3v4x_&BlG=ho?6zy(P+&;#Wo&z)f5btib(n13P6Dx%g~H?9oaF4|T7 zrOFT;o6UT>n?^Kg^ZLO9(;5p;6wu3r|NrAyUPzQw$Re9x|U zm>Ch`F3uG*uj6ZyW&dMgv)b@d2AAE*E*g_MTgovcRHcqpHaw++;yQl@f7PXac+VK% z#V72|pHA%70?mty)+Aq~yZ5wm$l2(XQQe(35KglHW&GXKsG|Evv0)NVMY(&5Fuf70 z$Vxmr_n9|dw!-*S4{urbR^O>6v2t3tt7W&8cP;hGk4-!I(ZeX6JG>pJha|h>TPb!E zcDr2stAm?s$KpYzrL!?$5rsXsI+oqk1>eV%5<>+;+b=Q&BiK@kZf{DRIM>Q(^CU1v z4X(9b@cI*^R6ac{uoiK2*J|O94y+${P3lb7{5Nr_-vBNZ$T`k%S?4E;G2F?OG*wk$ z%46=iT|q#pG0zFY^hCH)y0YQ)G6 zjUAC7`2HY@m0hkK*jY);1XjM`p@zB&mLU@db-z)V6AC{lowO7A91n$FX1xx;kcwlHRMOpGO1>za<8K zRvroPZ9A@J&RD0bZ#uPM)?A%8wHt3ccuv~8M0xj~V_(W0e7xcH-fHswD7Z8N9xOqu(QzenPH$46 z$j;c%@QaYafBPQ5F8Ee@uZ@d?sls35KK^>jnNLzK9|SJ1ya=J(3 z4)*|leSS_KNa^ArN31?uFeG0tc$Kj2Mixv9x?$<+>N+?RB^$W%>sw(O_c$@T(8CVP zWVAeaY}m}DztXv=Tlj4UB-KmaKwUrP3Q_9((s;rzAibk7L!}WO4(cHYdiL6{F7Rh= zf@#uw^QJEHmJz(`Px#mKhO%=rIkhJrdy1dFWzOvB>8YN=Z}s_)O-KBRVXbt<-Bd$2 zj%QgL@lD&^-q{H}1ivukFd0kKEf^3PjL}>^tJJi( z34Y%Kc+AyeJLWdP2*tP=KuG;?iqs|^l?yq1YVmPrC_|SHV&QwmK|`1sa&!QHIm zFW@&Wn7#OrIO6X{9LcE_-{R~+NjgFu_m_777bnrxH3%vs1R{yI;3$4FOE8j&o*Zc2NPewbLbWfE*<#$`=7XWrzA7H_#pgY zciNNX^J-Mxpf;b*UmeOw{C4o?&+74K(fYupP%`=p+rNv7B`q?gma;WVxj_dE^;UpuB{Xcuz*EI3jLCCh;%dg+P+xKN{e(mjLz}1E4 z_kTFVZCkRhI9B#{2+;MaP}fJDdhpPQEeehK2jV3_(b^ zPMiF^GX6(*_4~h%KAoLyE?-=|e%rUU8>epQ0M$Tq=Csh&SGT>rzrX&Qy1ixk>eWHF zf<7|*Tz~Z5OAQHbNCv-f37Em(yni46>xA&=X71cmlqd*ZcdN?-=FvKYRJ0I zwK}}5A{kb4ps5N5hAn%&mKHq)o*J@mXWH56{~rR683_j^n4FTFvmLdz-?mO_a1#F9 z3r<`wB!G#lcCwo9txrq!*Z%x;u$f(dWmx*Oxu;fGDVynkOL^1W*PQkoJnzWhu>4fk z)?4?#e*Jp)tj;6QEga=+T6opYviCv$r_e_V3A@WQDp_8{LjT-Tg_I$s{xK-r`jyll^$ z)SGvK>$tuN{CfO*=Z#%A*4=RTV&Z!HVebLZ!4^PpJbe9i^XHXy@%8ope*woibe-A5a zSFB$By75Ovz4V`r_e6dtyqR_5>PF+gzL!0r20onLzWmYGjTLvVT)p}=qUO(h-4DOl z9l0m?`|FM0$@@b-HB?y5fCP~N*C(5Lt2ncx`{MPcmmhh3?#4pHf4OsocN=|McdX9R z?Bsnh9!NrFIOg_o^G)%j|JQ&a(%t)3`dGbxVd=@)$;QC)zGc5fS>~HhH~gpD+-9lM zfkxBMFUPCAoeiG?8$y-ZM?|6kNm=lk8a^X7_HC+8I9c)j^^?3iVcMI|Ja zGdMU+R|bbN!;k+E-!L?=K+I!MaD$`@D;6@?Ci;Dls2N@w63*4d@7LMoHNML|BDQfQ;&L3y1?*?e3Tc zL4sJdM@uxI2I(-bK%JJI7&@h!7)=nts+1`!Z2*x?phYu6)R%`(C{j~HRJ~7PB{KqA zwb~vF9O;QAl%6&vpi)(pWH7~J0v#ZkOzG{0&8I?CnwQ6G=a`|$bO>q-QA?s4q&hMJ zEkOEcpIc!)9O)0xoX_X?d-jtamh&OFl7}mphJZ>D}wz~}^r`(3UE5jfFTd_0~Y0w}YM!5-gq7a3Z zE|s90E3}5a+$P*GCMBB;N3%{znLtVUf2gjnMB6A1{^fQ+D(fUrH&#ky9Apxp{hG7?F5joeqS87fTLrD=>L@lnG@vY~*e5TY;(t!XOm zsOaO${H#|HM2-{7s{^91!oyXE!?^RJH;};!Q0dfxfihV250=Y{b?l&WJ@cl*^$K`)t4)P2rhzaX7k{7BI6f)CCN&Y!&!spuOjyk4vQ@M^t%kJjn8 zK71X{efjBlXN)gOZta^Nx%2eyjOczdfB(Y7#+;+;-#)um_`Ton>dzfIyK__i)KJdF zQSqlRyKa>+p1-(uJ1Qj}FRUK@Hc~y@v1j7M4%fsM{&{7B{?%(lZ%&oW*8dt?+;C$q z;W{}vdvKv~^ZS~T)oa7kLtS$5rBi#0D|cTVIM$m(c86P_^>AdZz7!yXS8&CfR DAY^E# literal 0 HcmV?d00001 diff --git a/www/assets/img/subscribe-bg.jpg b/www/assets/img/subscribe-bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..cef1cea39d39f030c1761e1bbb59f7b700f95968 GIT binary patch literal 28486 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 literal 0 HcmV?d00001 diff --git a/www/assets/img/tab-slide-1.png b/www/assets/img/tab-slide-1.png new file mode 100644 index 0000000000000000000000000000000000000000..a9367a0cc3a6f9e7762426145eafe40e2a1338b9 GIT binary patch literal 7194 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 literal 0 HcmV?d00001 diff --git a/www/assets/img/tab-slide-2.png b/www/assets/img/tab-slide-2.png new file mode 100644 index 0000000000000000000000000000000000000000..6aa8e809a618f95c674c0ee2b7e2906d5b2f5f81 GIT binary patch literal 8069 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